Sisukord:
- Samm: installige Raspbian ja seadistage staatiline IP -aadress
- Samm: installige ja konfigureerige Motion
- Samm: installige Apache ja seadistage veebijuhtimise leht
- Samm: seadistage ja katsetage koodi
- Samm: kokkupanek
- Samm: Pythoni koodi käivitamine alglaadimisel / lõpetamisel
Video: Brauseri juhitav Roomba robot Raspberry Pi mudeliga 3 A+: 6 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Ü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
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
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
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
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
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
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:
Arduino juhitav kahejalgne robot: 13 sammu (koos piltidega)
Arduino juhitav kahejalgne robot: Mind on alati huvitanud robotid, eriti selline, mis üritab jäljendada inimeste tegevust. See huvi ajendas mind proovima kavandada ja arendada kahejalgset robotit, mis võiks jäljendada inimeste kõndimist ja jooksmist. Selles juhendis näitan teile
WiFi-juhitav robot, kasutades Wemos D1 ESP8266, Arduino IDE ja rakendust Blynk: 11 sammu (koos piltidega)
WiFi-juhitav robot, kasutades Wemos D1 ESP8266, Arduino IDE ja rakendust Blynk: Selles õpetuses näitan teile, kuidas teha nutitelefonist juhitavat WiFi-juhitavat robotpaaki, kasutades rakendust Blynk. Selles projektis kasutati ESP8266 Wemos D1 plaati, kuid saab kasutada ka teisi plaadimudeleid (NodeMCU, Firebeetle jne) ja pr
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja samm-mootoritega): 11 sammu (koos piltidega)
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja Stepper Motorsiga): see juhendab, kuidas kavandada kaugjuhtimisega kaherattaline robot-rover WiFi-võrgu kaudu, kasutades ESP8266 WiFi-mooduliga ühendatud Arduino Unot ja kaks samm -mootorit. Robotit saab juhtida tavaliste Interneti -kulmude kaudu
Wi-Servo: WiFi-brauseri juhitavad servomootorid (koos Arduino + ESP8266-ga): 5 sammu
Wi-Servo: WiFi-brauseri juhitavad servomootorid (koos Arduino + ESP8266-ga): see juhend näitab, kuidas juhtida mõnda servomootorit eemalt wi-fi-võrgus, kasutades tavalist Interneti-brauserit (näiteks Firefox). Seda võib kasutada mitmetes rakendustes: mänguasjad, robotid, droonid, kaamera panoraam/kallutus jne. Mootorid olid
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: 9 sammu (koos piltidega)
Roomblock: platvorm ROS -i navigeerimise õppimiseks koos Roomba, Raspberry Pi ja RPLIDARiga: mis see on? &Quot; Roomblock " on robotplatvorm, mis koosneb Roombast, Raspberry Pi 2 -st, lasersensorist (RPLIDAR) ja mobiilpatareist. Paigaldusraami saab valmistada 3D -printeritega. ROS -navigatsioonisüsteem võimaldab teha ruumide kaarti ja kasutada i