Obsah:
- Krok 1: Nainštalujte Raspbian a nastavte statickú adresu IP
- Krok 2: Nainštalujte a nakonfigurujte Motion
- Krok 3: Nainštalujte Apache a nastavte webovú stránku ovládania
- Krok 4: Nastavte a otestujte kód
- Krok 5: Zostavenie
- Krok 6: Spustenie kódu Python pri zavádzaní / dokončení
Video: Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+: 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Prehľad
Tento návod sa zameria na to, ako dať mŕtvej Roombe nový mozog (Raspberry Pi), oči (webová kamera) a spôsob, ako ovládať všetko z webového prehliadača.
Existuje veľa hackov Roomba, ktoré umožňujú ovládanie prostredníctvom sériového rozhrania. Nemal som to šťastie, že som narazil na Roombu, ktorá má aktuálny firmvér alebo funkčnú základnú dosku. Buď je Roomba príliš stará alebo je Roomba mŕtva. Roombu, ktorú som použil na tento projekt, som našiel v miestnom obchode so zmiešaným tovarom za 5 dolárov. Stále mala slušnú batériu, ale vybitú základnú dosku. (Webovú kameru som našiel aj v tom istom obchode so šetrnosťou za približne 5 dolárov). Z pôvodnej Roomby používam iba motory, podvozok a batériu. Na tento projekt nemusíte používať robot Roomba. Ak chcete, môžete použiť rôzne motory, kolesá a podvozky. Mám chuť premeniť kus haraburdu na niečo použiteľné.
Na túto zostavu som použil Raspberry Pi Model 3 A+ a ovládač motora Riorand. Používam kód z robotom ovládaného prehliadačom Dexter Industries, ktorý som upravil. Verzia Dexter Industries nastavuje Pi ako server websocket, ktorý vám umožňuje ovládať ich robota (platforma tehlového pi) z html súboru klienta, na ktorom beží iný počítač.
Zmenil som kód pomocou pinov GPIO a pridal som spôsob, akým sa Pi vypne po kliknutí na tlačidlo / po stlačení klávesu Escape v prehliadači. Tiež som vykonal niekoľko zmien na riadiacej webovej stránke, aby bolo možné prezerať pohybový prúd prostredníctvom rámca iframe a súčasne ovládať robota na jednej stránke. Nastavil som Pi so statickou IP na hosťovanie súboru klienta, aby som sa mohol pripojiť pomocou akéhokoľvek počítača alebo zariadenia v mojej sieti.
Dokumentujem tu tento proces v nádeji, že vám ukážem, ako vytvoriť jednoduchého, lacného základného robota.
Použité diely
Raspberry Pi 3 A+ (Adafruit Link) 30 dolárov
Ovládač dvojitého motora Riorand H-Bridge (Amazon Link) 22 dolárov
12V batéria pre motory (Amazon Link) 19 dolárov
5V batéria pre Raspberry Pi (Amazon Link) 10 dolárov
8 GB karta Micro SD (Amazon Link) 5 dolárov
Prepojovacie vodiče (Amazon Link) 7 dolárov
Roomba 500 séria
. Všetko dohromady necelých 100 dolárov.
Krok 1: Nainštalujte Raspbian a nastavte statickú adresu IP
Použil som Raspbian Stretch Lite. Nevidel som potrebu pracovnej plochy, ale ak chcete, môžete si nainštalovať počítačovú verziu.
Budem predpokladať, že už viete, ako nainštalovať Raspbian. Ak potrebujete pomoc, sprievodcu nadáciou Raspberry Pi nájdete tu.
Keď máte Raspbian v prevádzke, prihláste sa a spustite program raspi-config.
pi@raspberrypi: ~ $ sudo raspi-config
Nastavte svoje WiFi pripojenie v raspi-config
Vyberte
2 Možnosti siete
Vyberte
Wi-Fi N2
Vyberte krajinu, zadajte SSID a zadajte prístupové heslo
Nastavte SSH v raspi-config
Keď som urobil počiatočnú konfiguráciu, pomocou SSH som všetko nastavil bez hlavy. (Toto môžete preskočiť, ak používate monitor. Pre mňa bolo jednoduchšie vykonať zmeny v kóde bez toho, aby som musel zastaviť robota a zapojiť ho do monitora.)
Späť v hlavnom menu raspi-config
Vyberte
5 Možnosti rozhrania
Vyberte
P2 SSH
Vyberte
Áno
Vráťte sa do hlavnej ponuky raspi-config
Overte, či ste pripojení k svojej sieti
pi@raspberrypi: ~ $ ifconfig
Mali by ste dostať výstup podobný tomuto. (Poznamenajte si IP adresu; možno ju budete potrebovať neskôr. Napr. 192.168.1.18)
wlan0: flags = 4163 mtu 1500
inet 192.168.1.18 maska siete 255.255.255.0 broadcast 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda prefixlen 64 scopeid 0x20 ether b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) RX packets 44396 bytes 5847726 (5,5 MiB) Chyby RX 0 vypadnuté 0 prebehnutie 0 rámec 0 TX pakety 30530 bajtov 39740576 (37,8 MiB) Chyby TX 0 vypadnuté 0 prebehnutie 0 kolízia nosnej 0
Overte, že sa môžete dostať na internet.
pi@raspberrypi: ~ $ ping google.com
Mali by ste dostať výstup podobný tomuto.
PING google.com (216.58.194.110) 56 (84) bajtov údajov.
64 bajtov z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 čas = 18,2 ms 64 bajtov z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 čas = 19,4 ms 64 bajtov z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 čas = 23,6 ms 64 bajtov z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 time = 30,2 ms ^C --- google.com ping statistics --- 4 pakety odoslané, 4 prijaté, 0% strata paketu, čas 3004ms rtt min/avg/max/mdev = 18,209/ 22,901/30,267/4,715 ms
Nastavte statickú IP
Aby ste sa mohli konzistentne pripojiť k svojmu robotovi pomocou rovnakej adresy vo vašej sieti, budete chcieť nastaviť statickú IP adresu.
Získajte svoju aktuálnu sieťovú adresu, napr. 192.168.1.18
Používam adresu, ktorá bola automaticky priradená DHCP, keď sa Pi pripojil k mojej sieti. Môžete to zmeniť na čokoľvek, pokiaľ sa to zhoduje s vašou sieťou a nie je v rozpore s inými priradenými adresami.
Otvorte dhcp.conf v textovom editore. (Používam nano)
pi@raspberrypi: ~ $ sudo nano /etc/dhcpcd.conf
Posuňte zobrazenie nadol na #Priklad statickej konfigurácie IP a zmeňte nasledujúce riadky.
#rozhranie et0
#static ip_address = 192.168.11.13 #static routery = 192.168.11.1 #static domain_name_servers = 192.168.11.1 8.8.8.8
Zmeňte tak, aby zodpovedal vašej sieti, a odstráňte # na začiatku každého riadka.
Príklad:
rozhranie wlan0
static ip_address = 192.168.1.18 static routery = 192.168.1.1 static domain_name_servers = 192.168.1.1 8.8.8.8
Uložiť a ukončiť.
Reštartujte počítač a pripojte sa k Pi prostredníctvom SSH
pi@raspberrypi: ~ $ sudo reštart
Pripojte sa z iného počítača pomocou SSH. Používatelia systému Windows môžu používať PuTTY alebo Subsystém Windows pre Linux (Windows10).
ian@počítač: ~ $ ssh [email protected]
Zadajte svoje heslo (predvolené je malina).
heslo [email protected]:
Teraz by ste mali byť na príkazovom riadku vášho Pi.
pi@raspberrypi: ~ $
Krok 2: Nainštalujte a nakonfigurujte Motion
Motion je program, ktorý sa používa v mnohých projektoch bezpečnostných kamier / webových kamier. Motion má mnoho funkcií. Nastavujeme však jednoduché streamovanie videa z webovej kamery na port 8081.
Otestujte svoju webovú kameru
Pripojte webovú kameru a vytvorte zoznam pripojených zariadení USB (po pripojení bude možno potrebné reštartovať).
pi@raspberrypi: ~ $ lsusb
Mali by ste získať podobný výstup. Všimnite si Logitech C210.
Bus 001 Device 002: ID 046d: 0819 Logitech, Inc. Webcam C210
Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub
Ak sa váš fotoaparát nezobrazuje, je možné, že nie je kompatibilný alebo budete musieť nainštalovať ďalšie ovládače.
Nainštalujte Motion
Aktualizujte balíky.
pi@raspberrypi: ~ $ sudo apt-get update
Nainštalujte Motion.
pi@raspberrypi: ~ $ sudo apt -get install motion -y
Akonáhle je Motion nainštalovaný, upravte konfiguračný súbor.
pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf
Nasledujúce riadky zmeňte tak, aby zodpovedali nižšie.
démon na
šírka 640 výška 480 snímková frekvencia 100 výstup_obrázky vypnuté ffmpeg_output_movies vypnuté text_right stream_port 8081 stream_quality 100 stream_localhost vypnutý webcontrol_localhost vypnutý
Spustite Motion Daemon pri spustení
Otvorte súbor/etc/default/motion.
pi@raspberrypi: ~ $ sudo nano/etc/default/motion
Zmeniť na
start_motion_daemon = áno
Uložte súbor a ukončite ho
Reštartovať
pi@raspberrypi: ~ $ sudo reštart
Po reštarte počítača Pi otvorte prehliadač a overte, či do neho streamujete video na porte 8081
Príklad:
192.168.1.18:8081
Riešenie problémov s Motion Daemon
Pri skúšaní rôznych možností v súbore motion.conf som narazil na problémy so spustením démona pohybu pri zavádzaní.
Ak spustíte pohyb pred pohybovým démonom v Raspian Stretch, pravdepodobne narazíte na problémy s jeho spustením neskôr pri štarte. Spustením „sudo motion“bez konfigurácie démona sa najskôr vytvorí adresár/var/log/motion bez udelenia povolenia na zápis používateľovi.
Krok 3: Nainštalujte Apache a nastavte webovú stránku ovládania
Apache je webový server pre webovú stránku ovládania robota. Chystáme sa nahradiť predvolený súbor Apache index.html súborom stiahnutým z github. Tiež zmeníte niekoľko riadkov kódu, aby sa zobrazil pohybový videostream, a priradíte, kam sa majú odoslať príkazy na ovládanie robota.
Nainštalujte si Apache a Git
pi@raspberrypi: ~ $ sudo apt -get install apache2 git -y
Akonáhle sú nainštalované apache a git, stiahnite si súbory.
pi@raspberrypi: ~ $ git clone
Otvorte adresár roombarobot.
pi@raspberrypi: ~ $ cd roombarobot
Nahraďte súbor index.html v priečinku/var/www/html súborom index.html v priečinku/home/pi/roombarobot
pi@raspberrypi: ~/roombarobot $ sudo cp index.html/var/www/html
Upravte súbor index.html
Otvorte súbor index.html v textovom editore.
pi@raspberrypi: ~/roombarobot $ sudo nano /var/www/html/index.html
Nájdite tieto dva riadky
var host = "ws: // YOURIPADDRESS: 9093/ws";
Zmeňte „YOURIPADDRESS“na statickú adresu IP, ktorú ste nastavili v kroku 1, a súbor uložte.
Príklad:
var host = "ws: //192.168.1.18: 9093/ws";
Na inom počítači otvorte prehliadač a zadajte IP adresu svojho Pi. Mali by ste vidieť kontrolnú webovú stránku s rámčekom vľavo, streamovanie videa z webovej kamery a tlačidlá ovládania webu vpravo.
Krok 4: Nastavte a otestujte kód
Tento kód je napísaný v jazyku python a vyžaduje knižnicu tornád. Kód používa knižnicu na nastavenie servera na počúvanie príkazov z riadiacej webovej stránky prostredníctvom webových zásuviek na porte 9093.
Nainštalujte PIP a knižnicu Tornado
Nainštalujte pip
pi@raspberrypi: ~ $ sudo apt-get install python-pip
Nainštalujte si knižnicu tornado
pi@raspberrypi: ~ $ sudo pip install tornado
Spustite program Roombabot a otestujte pripojenie
Spustite program roombabot.py
pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py
Po spustení by ste na termináli mali vidieť „Pripravené“. V prehliadači otvorte ovládaciu webovú stránku a kliknite na tlačidlo Pripojiť. Potom kliknite na ľubovoľné smerové tlačidlo na stránke. Môžete tiež použiť klávesy so šípkami na klávesnici.
V termináli by ste mali vidieť podobný výstup.
Pripravený
pripojenie otvorené … pripojenie otvorené … prijaté: u 8 Beží Vpred otvorené spojenie otvorené … prijaté: l 6 Otáčanie Ľavé pripojenie otvorené … prijaté: d 2 Beží Spätné pripojenie otvorené … prijaté: r 4 Otáčanie doprava
Program zastavíte stlačením klávesov ctrl+c.
Akonáhle skončíte s testovaním, vypnite Pi.
pi@raspberrypi: ~ $ sudo poweroff
Ploštice
Zaznamenal som problém s tlačidlom vypnutia na ovládacej webovej stránke. Niekedy tlačidlo kliknutia nerobí nič, keď naň kliknete alebo naň klepnete. Nedokázal som prísť na to, čo to spôsobuje, ale existuje riešenie. Ak chcete vypnúť robota a tlačidlo vypnutia nefunguje, znova načítajte stránku, kliknite / klepnite na tlačidlo pripojenia a potom kliknite / klepnite na tlačidlo vypnutia. Malo by sa vypnúť.
Krok 5: Zostavenie
Ako už bolo spomenuté, na tento projekt nemusíte používať robot Roomba. Všetko s dvoma motormi, dvoma kolesami a rámom by fungovalo. Rozobral som Roombu a odstránil všetko okrem modulov kolies a batérie.
Moduly kolies
Kolesá a motory modelu Roomba sú uložené spoločne v odnímateľnom module. Každý modul má modrý vonkajší kryt obsahujúci motor, prevodovku, koleso, pružinu zavesenia a dosku rozhrania.
Doska rozhrania
Každá doska rozhrania vedie šesť káblov. Existujú dva vodiče (červený [+], čierny [-]), ktoré otáčajú motor, jeden dátový vodič pre snímač s Hallovým efektom, jeden vodič pre spúšťač kolies, jeden 5V vodič a jeden vodič GND na napájanie senzora. Na prístup k doske rozhrania budete musieť modul rozobrať. Odstránil som všetko späť k motoru a k motoru som spájkoval nové [+] a [-] vodiče (pozri fotografie). Je na vás, či chcete senzory zachovať alebo nie.
Závesné pružiny
Akonáhle odstránite vákuovú časť, hmotnosť robota Roomba sa odhodí. Ak pružiny neodstránite, robot Roomba bude sedieť šikmo. Pôvodne som ich odstránil, ale potom som ich pridal späť, keď som zistil, že je ťažké prevrátiť koberec. Vrátením pružiny späť sa problém vyriešil.
Zapojenie motorov k ovládaču motora
Motory stoja oproti sebe. To znamená, že na to, aby ste Roombu poháňali dopredu, jeden motor sa bude musieť otáčať dopredu, zatiaľ čo druhý sa bude otáčať dozadu. Veľa som o tom nerozmýšľal, kým som všetko zapojil. Nakoniec som len napísal kód o tom, ako som pôvodne zapojil motory. Bola to šťastná nehoda, pretože kedykoľvek sa Raspberry Pi zapne/vypne, na piny GPIO je výstup napätia. Ako mám veci zapojené, Roomba sa točí, kým sa Raspberry Pi nenaštartuje (asi tridsať sekúnd) a točí sa pri vypnutí, kým sa neodpojí napájanie. Ak je zapojený inak, potenciálne by sa valil dopredu / dozadu, čo by bolo dráždivé. Plánujem to nakoniec opraviť jednoduchým prepínačom pre ovládač motora.
Zapojenie motorov a batérie do ovládača motora
Napájanie - - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - - - -Roomba batéria [+]
Motor 2- - - - - - - - - - - - - - - - Čierny - - - - - - - - - - - - - - - - Ľavý motor [-] Motor 2- - - - - - - - - - - - - - - - - Červená - - - - - - - - - - - - - - - - - Ľavý motor [+] Motor 1- - - - - - - - - - - - - - - - - Černý - - - - - - - - - - - - - - Pravý motor [-] Motor 1- - - - - - - - - - - - - - - - Červený - - - - - - - - - - - - - - - - Pravý motor [+] GND- - - - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - - -Roomba batéria [-]
Pripojenie ovládača motora k Raspberry Pi
Kolíky ovládača motora Farba drôtu (pozri fotografie) Kolíky Raspberry Pi
GND- - - - - - - - - - - - - - - - - - - Black - - - - - - - - - - - - - - - - - GND PWM 2- - - - - - - - - - - - - - - - - - Modrá - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - - - Zelená - - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - - - Žltá - - - - - - - - - - - - - - GPIO 24 DIR 1- - - - - - - - - - - - - - - - - Oranžová - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5V
Montáž elektroniky
Nie je veľa toho, čo je potrebné dať dohromady. Roombu som vyzliekol z podvozku. Po odstránení krytu môžete existujúce plastové stojky jednoducho odrezať a vyvŕtať otvory na montáž elektroniky. Existujú existujúce porty na vedenie káblov z motorov. Ak používate štandardnú batériu Roomba, už je k dispozícii výrez pre prístup k pólom batérie.
Batérie
Pre Raspberry Pi a ovládač motora som použil samostatné batérie. Batéria Pi je iba 5V batéria, ktorá sa používa na posilnenie mobilných telefónov. Na ovládanie motora som použil pôvodnú batériu Roomba, ktorá sa dodáva s ním. Svorky batérie nie sú označené, takže je najlepšie skontrolovať napätie voltmetrom predtým, ako ho zapojíte do ovládača motora. Na pripevnenie vodičov k batérii Roomba som použil štyri neodymové magnety (viď fotografie). Dva z magnetov som pripájal na vodiče a ďalšie dva som prilepil na svorky batérie. Spájkovanie demagnetizuje magnety. Povlak zvonku sa však stále môže prichytiť k magnetom na svorkách a viesť elektrický prúd. Vďaka tomu je pripojenie a odpojenie batérie hračkou.
Testovanie
Akonáhle budete mať všetko pohromade, overte, či máte všetko správne zapojené, položte na niečo robota (aby sa neodvalil) a zapnite ho.
Prihláste sa a spustite program roombabot.py
pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py
Prejdite na stránku ovládania webu a vyskúšajte si to. Ak je všetko správne zapojené, kolesá by sa pri kliknutí na tlačidlá / stlačení klávesov so šípkami mali otáčať v príslušnom smere (nezabudnite kliknúť na tlačidlo Pripojiť).
Krok 6: Spustenie kódu Python pri zavádzaní / dokončení
Posledná vec, ktorú musíme urobiť, je povedať Raspbianovi, aby pri štarte spustil program python. Za týmto účelom vytvoríme skript a naplánujeme jeho spustenie pri reštarte pomocou programu crontab.
Vytvorte skript
Vytvorte nový súbor skriptu s názvom startrobot.sh v používateľskom adresári pi
pi@raspberrypi: ~ $ sudo nano startrobot.sh
Skopírujte nasledujúce riadky do súboru
#!/bin/sh
#startrobot.sh cd /cd /home /pi /roombarobot sudo python roombabot.py cd /
Uložte súbor a ukončite ho
Vykonajte spustiteľný súbor startrobot.sh
pi@raspberrypi: ~ $ sudo chmod 755 startrobot.sh
Vyskúšajte to (zastavte stlačením ctrl + c)
pi@raspberrypi: ~ $ sh startrobot.sh
Upravte súbor crontab
pi@raspberrypi: ~ $ sudo crontab -e
Do spodnej časti súboru pridajte nasledujúci riadok
# m h dom mon dow príkaz
@reboot sh /home/pi/startrobot.sh
Uložiť a ukončiť
Program roombabot.py by sa teraz mal spustiť po reštarte Pi alebo napájaní.
Dokončenie
V tomto mieste by ste mali mať funkčného robota, ktorého môžete ovládať pomocou prehliadača z akéhokoľvek zariadenia vo vašej sieti. Od pôvodného zostavenia a nastavenia siete VPN som to posunul o niečo ďalej, aby som mal prístup k robotovi, keď budem mimo domu. V budúcnosti plánujem vykonať ďalšie zmeny. Plánujem, aby bol autonómny a prípadne sledoval pohyb, pričom budem môcť prevziať ovládanie, kedykoľvek budem chcieť.
Odporúča:
DIY Arduino ovládaný vajíčkový robot: 12 krokov (s obrázkami)
DIY Arduino ovládaný vajíčkový robot: V tomto návode vám ukážem, ako si vytvoriť vlastný Egg-Bot ovládaný pomocou Arduina. Chcel som to urobiť predtým, ale myslel som si, že je to pre mňa príliš ťažké, ale mýlil som sa. Je ľahké ho postaviť, takže ho určite zvládne každý
Železničný model ovládaný touchpadom na prenosnom počítači Rozhranie PS/2 Arduino: 14 krokov
Železničný model ovládaný touchpadom na prenosnom počítači Rozhranie PS/2 Arduino: Touchpad prenosného počítača je jedným zo skvelých zariadení, ktoré sa dá použiť ako vstup pre projekty mikrokontrolérov. Dnes teda implementujme toto zariadenie s mikrokontrolérom Arduino na ovládanie modelovej železnice. Pomocou touchpadu PS/2 budeme môcť ovládať 3 t
Robot na streamovanie videa Raspberry Pi ovládaný cez WiFi: 8 krokov (s obrázkami)
Robot na streamovanie videa Raspberry Pi ovládaný Wifi: Rozmýšľali ste niekedy o vybudovaní skvelého robota s kamerou? Prišli ste na správne miesto, ukážem vám krok za krokom, ako postaviť tohto robota. S týmto môžete v noci vyraziť na lov duchov ovládaním a sledovaním videa na vašom
Wi-Servo: Servomotory riadené prehliadačom Wi-Fi (s Arduino + ESP8266): 5 krokov
Wi-Servo: Servomotory riadené prehliadačom Wi-Fi (s Arduino + ESP8266): Tento návod ukazuje, ako diaľkovo ovládať niektoré servomotory v sieti Wi-Fi pomocou bežného internetového prehliadača (napríklad Firefox). Toto môže byť použité v niekoľkých aplikáciách: hračky, roboty, drony, natáčanie/nakláňanie kamery atď. Motory boli
Detská opatrovateľka Arduino s prehliadačom Java: 8 krokov (s obrázkami)
Detská opatrovateľka Arduino s prehliadačom Java: Postavte viacsenzorovú jednotku na báze Arduina, ktorá bude sledovať podmienky v miestnosti. Táto jednotka dokáže vnímať vlhkosť, teplotu, pohyb a zvuk. Pripojený je prehliadač založený na jave, ktorý prijíma sériové údaje z arduina