Sisukord:

Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)
Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)

Video: Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)

Video: Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Brauseri juhitav Roomba robot koos Raspberry Pi mudeliga 3 A+
Brauseri juhitav Roomba robot koos Raspberry Pi mudeliga 3 A+
Brauseri juhitav Roomba robot koos Raspberry Pi mudeliga 3 A+
Brauseri juhitav Roomba robot koos Raspberry Pi mudeliga 3 A+

Ülevaade

See juhendab keskendub sellele, kuidas anda surnud Roombale uus aju (Raspberry Pi), silmad (veebikaamera) ja viis, kuidas kõike veebibrauserist juhtida.

Seal on palju Roomba häkke, mis võimaldavad juhtida jadaliidese kaudu. Mul pole olnud õnne kohtuda Roombaga, millel on praegune püsivara või töötav emaplaat. Kas Roomba on liiga vana või Roomba on surnud. Leidsin Roomba, mida ma selle projekti jaoks kasutasin, kohalikust säästupoodide sooduskastist 5 dollari eest. Sellel oli ikka korralik aku, aga surnud emaplaat. (Veebikaamera leidsin ka samas säästupoodist umbes 5 dollari eest). Algsest Roombast kasutan ainult mootoreid, šassii ja akut. Selle projekti jaoks ei pea te Roomba kasutama. Soovi korral võite kasutada erinevaid mootoreid, rattaid ja šassii. Ma lihtsalt soovin muuta rämpsu millekski kasutatavaks.

Selle ehituse jaoks kasutasin Raspberry Pi mudelit 3 A+ ja Riorandi mootorikontrollerit. Kasutan Dexter Industries Browser Controlled Roboti koodi, mida ma muutsin. Dexter Industriesi versioon seab Pi veebipesa serveriks, mis võimaldab teil juhtida nende robotit (telliskiviplatvorm) kliendi html -failist, mis töötab teises arvutis.

Olen muutnud koodi GPIO nööpnõelte abil ja lisanud viisi, kuidas Pi lülitub välja nupule klõpsamisel / kui brauseris põgenemisnuppu vajutatakse. Tegin ka mõningaid muudatusi juhtveebilehel, et võimaldada liikumisvoo vaatamist läbi iframe'i, juhtides samal ajal robotit ühe lehe piires. Seadistasin Pi -le staatilise IP -aadressiga kliendifaili hostimise, et saaksin ühenduse luua mis tahes võrgus oleva arvuti või seadmega.

Dokumenteerin siin protsessi lootuses näidata, kuidas luua lihtsat ja odavat baasrobotit.

Kasutatud osad

Vaarika Pi 3 A+ (Adafruit Link) 30 dollarit

Riorand kahe mootoriga juhi kontroller H-sild (Amazon Link) 22 dollarit

12 V aku mootoritele (Amazon Link) 19 dollarit

5 V aku Raspberry Pi jaoks (Amazon Link) 10 dollarit

8 GB Micro SD -kaart (Amazon Link) 5 dollarit

Jumper Traadid (Amazon Link) 7 dollarit

Roomba 500 seeria

. Kõik kokku veidi alla 100 dollari.

Samm: installige Raspbian ja seadistage staatiline IP -aadress

Installige Raspbian ja seadistage staatiline IP -aadress
Installige Raspbian ja seadistage staatiline IP -aadress

Kasutasin Raspbian Stretch Lite'i. Ma ei näinud töölaua jaoks vajadust, kuid soovi korral võite installida töölaua versiooni.

Eeldan, et teate juba Raspbiani installimist. Kui vajate abi, leiate Sihtasutuse Raspberry Pi juhendi siit.

Kui olete Raspbiani käivitanud, logige sisse ja käivitage programm raspi-config.

pi@raspberrypi: ~ $ sudo raspi-config

Seadistage oma WiFi-ühendus raspi-config

Valige

2 Võrguvalikud

Valige

N2 WiFi

Valige riik, sisestage oma SSID ja sisestage parool

Seadistage SSH raspi-config

Kui tegin esialgse konfiguratsiooni, kasutasin SSH -d, et seadistada kõik peata. (Kui kasutate kuvarit, võite selle vahele jätta. Mul oli lihtsam koodi muuta ilma robotit peatamata ja monitoriga ühendamata.)

Tagasi raspi-config peamenüüsse

Valige

5 Liidesevalikud

Valige

P2 SSH

Valige

Jah

Tagasi raspi-config peamenüüs valige

Veenduge, et olete oma võrguga ühendatud

pi@raspberrypi: ~ $ ifconfig

Te peaksite saama sarnase väljundi. (Pange tähele IP -aadressi; seda võib hiljem vaja minna. Nt.192.168.1.18)

wlan0: lipud = 4163 mtu 1500

inet 192.168.1.18 võrgumask 255.255.255.0 saade 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda eesliide 64 ulatus 0x20 eeter b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) RX paketid 44396 baiti 5847726 (5,5 MiB) RX -vead 0 langenud 0 ülelaadimist 0 kaadrit 0 TX -paketid 30530 baiti 39740576 (37,8 MiB) TX -vead 0 langenud 0 ületamist 0 vedaja 0 kokkupõrget 0

Veenduge, et pääsete Internetti.

pi@raspberrypi: ~ $ ping google.com

Te peaksite saama sarnase väljundi.

PING google.com (216.58.194.110) 56 (84) baiti andmeid.

64 baiti saidilt dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 aeg = 18,2 ms 64 baiti dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 aega = 19,4 ms 64 baiti saidilt dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 aeg = 23,6 ms 64 baiti dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 aeg = 30,2 ms ^C --- google.com pingistatistika --- 4 edastatud paketti, 4 vastuvõetud, 0% pakettide kadu, aeg 3004 ms rtt min/avg/max/mdev = 18,209/ 22,901/30,267/4,715 ms

Seadistage staatiline IP

Selleks, et saaksite oma robotiga järjekindlalt ühenduse luua, kasutades sama võrguaadressi, peate seadistama staatilise IP.

Hankige oma praegune võrguaadress, nt.192.168.1.18

Ma kasutan aadressi, mille DHCP määras automaatselt, kui Pi minu võrku ühendas. Saate selle muuta mis tahes meelepäraseks, kui see sobib teie võrguga ega ole vastuolus teiste määratud aadressidega.

Avage tekstiredaktoris dhcp.conf. (Kasutan nano)

pi@raspberrypi: ~ $ sudo nano /etc/dhcpcd.conf

Kerige alla valikule #Example staatiline IP -konfiguratsioon ja muutke järgmisi ridu.

#liides eth0

#static ip_address = 192.168.11.13 #static ruuterid = 192.168.11.1 #static domain_name_servers = 192.168.11.1 8.8.8.8

Muutke oma võrguga sobivaks ja eemaldage iga rea algusest #.

Näide:

liides wlan0

staatiline ip_address = 192.168.1.18 staatilised ruuterid = 192.168.1.1 staatiline domeeninime_serverid = 192.168.1.1 8.8.8.8

Salvesta ja välju.

Taaskäivitage ja ühendage Pi -ga SSH kaudu

pi@raspberrypi: ~ $ sudo reboot

Ühendage teisest arvutist SSH abil. Windowsi kasutajad saavad kasutada PuTTY -d või Windowsi allsüsteemi Linuxile (Windows10).

ian@arvuti: ~ $ ssh [email protected]

Sisestage oma parool (vaikimisi on vaarikas).

[email protected] parool:

Nüüd peaksite olema Pi käsureal.

pi@vaarika: ~ $

Samm: installige ja konfigureerige Motion

Liikumise installimine ja seadistamine
Liikumise installimine ja seadistamine

Motion on programm, mida kasutatakse paljudes turvakaamerate / veebikaamerate projektides. Liikumisel on palju funktsioone. Siiski seadistame selle lihtsalt video voogesitamiseks veebikaamerast porti 8081.

Testige oma veebikaamerat

Ühendage oma veebikaamera ja loetlege ühendatud USB -seadmed (pärast ühendamist peate võib -olla taaskäivitama).

pi@raspberrypi: ~ $ lsusb

Peaksite saama sarnase väljundi. Pange tähele Logitech C210.

Buss 001 Seade 002: ID 046d: 0819 Logitech, Inc. Veebikaamera C210

Siin 001 Seade 001: ID 1d6b: 0002 Linux Foundation 2.0 juurekeskus

Kui teie kaamerat ei kuvata, ei pruugi see ühilduda või peate installima täiendavad draiverid.

Installige Motion

Uuenda pakette.

pi@raspberrypi: ~ $ sudo apt-get update

Installige Motion.

pi@raspberrypi: ~ $ sudo apt -get install motion -y

Kui Motion on installitud, muutke konfiguratsioonifaili.

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

Muutke järgmised read järgmiselt.

deemon peal

laius 640 kõrgus 480 kaadrisagedus 100 väljundpilti välja ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost off webcontrol_localhost off

Käivitage Motion Daemon käivitamisel

Avage fail/etc/default/motion.

pi@raspberrypi: ~ $ sudo nano/etc/default/motion

Muutu

start_motion_daemon = jah

Salvestage fail ja väljuge

Taaskäivitage

pi@raspberrypi: ~ $ sudo reboot

Pärast Pi taaskäivitamist avage brauser ja kontrollige, kas teil on video voogesitus pordi 8081 brauserisse

Näide:

192.168.1.18:8081

Motion Daemoni tõrkeotsing

Mul tekkis probleeme liikumisdeemoni käivitamisel käivitamisel, kui proovisin failis motion.conf erinevaid võimalusi.

Kui alustate liikumist enne Raspian Stretchi liikumisdemonit, tekib tõenäoliselt probleeme selle käivitamisega hiljem käivitamisel. "Sudo motion" käivitamine ilma deemonit seda seadistamata loob kõigepealt kataloogi/var/log/motion, andmata kasutajale kirjutamisluba.

Samm: installige Apache ja seadistage veebijuhtimise leht

Installige Apache ja seadistage veebikontrolli leht
Installige Apache ja seadistage veebikontrolli leht

Apache on roboti juhtimislehe veebiserver. Asendame vaikimisi Apache index.html faili githubist alla laaditud failiga. Samuti muudate liikuvat videovoogu kuvamiseks paar rida koodi ja määrate, kuhu roboti juhtimiseks käsud saata.

Installige Apache ja Git

pi@raspberrypi: ~ $ sudo apt -get install apache2 git -y

Kui apache ja git on installitud, laadige failid alla.

pi@raspberrypi: ~ $ git kloon

Avage roombaroboti kataloog.

pi@raspberrypi: ~ $ cd roombarobot

Asendage fail index.html kataloogis/var/www/html failiga index.html kataloogis/home/pi/roombarobot

pi@raspberrypi: ~/roombarobot $ sudo cp index.html/var/www/html

Muutke faili index.html

Avage tekstiredaktoriga fail index.html.

pi@raspberrypi: ~/roombarobot $ sudo nano /var/www/html/index.html

Leidke need kaks rida

var host = "ws: // YOURIPADDRESS: 9093/ws";

Muutke "YOURIPADDRESS" 1. etapis seadistatud staatiliseks IP -aadressiks ja salvestage fail.

Näide:

var host = "ws: //192.168.1.18: 9093/ws";

Avage teises arvutis brauser ja sisestage oma Pi IP -aadress. Te peaksite nägema juhtimisveebilehte, mille vasakul pool on kast, teie veebikaamerast voogesitatav video ja paremal veebi juhtnupud.

Samm: seadistage ja katsetage koodi

Seadistage ja katsetage koodi
Seadistage ja katsetage koodi

See kood on kirjutatud pythonis ja nõuab tornaado raamatukogu. Kood kasutab teeki serveri seadistamiseks, et kuulata juhtveebilehelt käske portide 9093 veebipistikute kaudu.

Installige PIP ja Tornado raamatukogu

Paigaldage pip

pi@raspberrypi: ~ $ sudo apt-get install python-pip

Installige tornaado raamatukogu

pi@raspberrypi: ~ $ sudo pip install tornaado

Käivitage Roombaboti programm ja kontrollige ühendust

Käivitage programm roombabot.py

pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py

Pärast käivitamist peaksite terminalis nägema "Valmis". Avage brauseris juhtimise veebisait ja klõpsake nuppu Ühenda. Seejärel klõpsake mis tahes suunanuppu lehel. Võite kasutada ka klaviatuuri nooleklahve.

Te peaksite terminalis nägema sarnast väljundit.

Valmis

ühendus avatud… ühendus avatud… vastuvõetud: u 8 Jooksev edasisuunaline ühendus avatud… vastu võetud: l 6 Pöördumine vasakule avatud ühendus… vastu võetud: d 2 Jooksev tagurpidiühendus avatud… vastu võetud: r 4 paremale pööramine

Programmi peatamiseks vajutage klahvikombinatsiooni ctrl+c.

Kui olete lõpetanud Pi toite väljalülitamise testimise.

pi@raspberrypi: ~ $ sudo väljalülitus

Vead

Olen märganud probleemi juhtimise veebisaidi väljalülitusnupuga. Mõnikord ei tee väljalülitusnupp selle klõpsamisel ega puudutamisel midagi. Ma ei ole suutnud aru saada, mis seda põhjustab, kuid lahendus on olemas. Kui soovite roboti välja lülitada ja väljalülitusnupp ei tööta, laadige leht uuesti, klõpsake / puudutage ühenduse nuppu ja seejärel klõpsake / puudutage väljalülitusnuppu. See peaks välja lülitama.

Samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

Nagu varem mainitud, ei pea te selle projekti jaoks Roomba kasutama. Kõik, millel on kaks mootorit, kaks ratast ja raami, toimiks. Võtsin Roomba lahti ja eemaldasin kõik peale rattamoodulite ja aku.

Ratta moodulid

Roomba rattad ja mootorid on koos eemaldatava mooduliga. Igal moodulil on sinine väliskorpus, mis sisaldab mootorit, käigukasti, ratast, vedrustust ja liideseplaati.

Liidese juhatus

Igal liidese plaadil on kuus juhtmest. Mootorit pöörlevad kaks juhtmest (punane [+], must [-]), üks andmesidejuhe hall -efekti anduri jaoks, üks juht ratta kukkumise lüliti jaoks, üks 5 V juhe ja üks GND -juhe anduri toiteks. Liideseplaadile pääsemiseks peate mooduli lahti võtma. Eemaldasin kõik mootorisse tagasi ja jootsin mootori külge uued [+] ja [-] juhtmed (vt fotod). Teie otsustada, kas soovite andureid säilitada või mitte.

Vedrustusvedrud

Kui eemaldate vaakumosa, visatakse Roomba kaal alla. Kui te ei eemalda vedrusid, istub Roomba viltu. Eemaldasin need algselt, kuid lisasin need siis tagasi, kui leidsin, et vaibal on raske ümber pöörata. Vedru tagasi panemine lahendas probleemi.

Mootorite ühendamine mootorikontrolleriga

Mootorid on üksteisest eemale suunatud. See tähendab, et Roomba edasiliikumiseks peab üks mootor pöörlema edasi, teine aga tagasi. Ma ei mõelnud sellele palju enne, kui olin kõik kokku pannud. Lõpuks kirjutasin lihtsalt koodi ümber selle, kuidas ma algselt mootorid ühendasin. See oli õnnelik õnnetus, sest alati, kui Raspberry Pi sisse/välja lülitub, on GPIO tihvtidele pinge. Nii nagu mul on juhtmed ühendatud, Roomba keerutab, kuni Raspberry Pi on käivitunud (umbes kolmkümmend sekundit) ja pöörleb väljalülitamisel kuni toite eemaldamiseni. Kui see oleks teisiti ühendatud, rulluks see potentsiaalselt edasi / tagasi, mis oleks ärritav. Kavatsen selle lõpuks parandada mootori kontrolleri lihtsa lülitiga.

Mootorite ja aku ühendamine mootorikontrolleriga

Toide - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - -Roomba aku [+]

Mootor 2- - - - - - - - - - - - - - - - Must - - - - - - - - - - - - - - Vasak mootor [-] Mootor 2- - - - - - - - - - - - - - - punane - - - - - - - - - - - - - - Vasak mootor [+] Mootor 1- - - - - - - - - - - - - - - Must - - - - - - - - - - - - - -Õige mootor [-] Mootor 1- - - - - - - - - - - - - - - - - Punane - - - - - - - - - - - - - - Õige mootor [+] GND- - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - Roomba aku [-]

Mootori kontrolleri ühendamine Raspberry Pi -ga

Mootorikontrolleri tihvtid Traadi värv (vt fotod) Raspberry Pi tihvtid

GND- - - - - - - - - - - - - - - - - Must - - - - - - - - - - - - - - - GND PWM 2- - - - - - - - - - - - - - - - - - - - - sinine - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - - roheline - - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - Kollane - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - oranž - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - punane - - - - - - - - - - - - - - -5V

Elektroonika paigaldamine

Kõike kokku pannes pole palju vaja. Võtsin roomba selle šassii alla. Kui kate on eemaldatud, saate hõlpsalt olemasolevad plastist eraldusjooned ära lõigata ja puurida auke elektroonika paigaldamiseks. Mootorite kaablite juhtimiseks on olemas olemasolevad pordid. Kui kasutate Roomba varuakut, on aku klemmidele juurdepääsuks juba väljalülitus.

Patareid

Kasutasin Raspberry Pi ja mootorikontrolleri jaoks eraldi akusid. Pi aku on vaid 5 V aku, mida kasutatakse mobiiltelefonide võimendamiseks. Mootorikontrolleri jaoks kasutasin originaal Roomba akut, mis oli sellega kaasas. Aku klemmid ei ole märgistatud, seega on kõige parem kontrollida pinget voltmeetriga, enne kui ühendate selle mootorikontrolleriga. Juhtmete kinnitamiseks Roomba aku külge kasutasin nelja neodüümmagnetit (vt fotod). Jootsin kaks magnetit juhtmete külge ja ülejäänud kaks jäin aku klemmide külge. Jootmine demagnetiseerib magnetid. Välimine kate võib siiski klemmide magnetite külge kinnituda ja elektrit juhtida. See muudab aku ühendamise ja lahtiühendamise kookiks.

Testimine

Kui kõik on kokku pandud, kontrollige, kas kõik on õigesti ühendatud, toetage robot millegi peale (nii et see ei veereks ära) ja lülitage see sisse.

Logige sisse ja käivitage programm roombabot.py

pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py

Minge veebikontrolli lehele ja proovige seda. Kui kõik on õigesti ühendatud, peaksid rattad nuppude klõpsamisel / nooleklahvide vajutamisel pöörlema vastavas suunas (ärge unustage klõpsata ühendamiseks).

Samm: Pythoni koodi käivitamine alglaadimisel / lõpetamisel

Pythoni koodi käivitamine käivitamisel / lõpetamisel
Pythoni koodi käivitamine käivitamisel / lõpetamisel
Pythoni koodi käivitamine käivitamisel / lõpetamisel
Pythoni koodi käivitamine käivitamisel / lõpetamisel

Viimane asi, mida peame tegema, on öelda Raspbianile, et see käivitaks käivitusprogrammi. Selleks teeme skripti ja ajastame selle käivitamiseks taaskäivitamisel, kasutades crontabi.

Loo skript

Looge pi kasutajate kataloogi uus skriptifail nimega startrobot.sh

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Kopeerige faili järgmised read

#!/bin/sh

#startrobot.sh cd /cd /home /pi /roombarobot sudo python roombabot.py cd /

Salvestage fail ja väljuge

Muutke fail startrobot.sh käivitatavaks

pi@raspberrypi: ~ $ sudo chmod 755 startrobot.sh

Testige seda (peatamiseks vajutage klahvikombinatsiooni ctrl + c)

pi@raspberrypi: ~ $ sh startrobot.sh

Muutke crontab -faili

pi@raspberrypi: ~ $ sudo crontab -e

Lisage faili lõppu järgmine rida

# m h dom mon dow käsk

@reboot sh /home/pi/startrobot.sh

Salvesta ja välju

Programm roombabot.py peaks nüüd käivituma, kui Pi taaskäivitatakse või käivitatakse.

Lõpetamine

Sel hetkel peaks teil olema funktsionaalne robot, mida saate brauseri abil juhtida mis tahes võrgu seadmest. Olen sellest VPN -i esialgsest ehitamisest ja seadistamisest veidi kaugemale jõudnud, et pääseda robotile juurde, kui olen kodust eemal. Kavatsen tulevikus teha mõned täiendavad muudatused. Kavatsen muuta selle autonoomseks ja võimaluse korral jälgida liikumist, kuid saan siiski juhtimisseadmed üle võtta, kui tahan.

Soovitan: