Obsah:

Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+: 6 krokov (s obrázkami)
Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+: 6 krokov (s obrázkami)

Video: Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+: 6 krokov (s obrázkami)

Video: Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+: 6 krokov (s obrázkami)
Video: Arduino uno 02 2xDC motor pasovy pohon 2024, December
Anonim
Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prehliadačom s Raspberry Pi Model 3 A+

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

Nainštalujte Raspbian a nastavte statickú adresu IP
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

Nainštalujte a nakonfigurujte pohyb
Nainštalujte a nakonfigurujte pohyb

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

Nainštalujte Apache a nastavte webovú stránku ovládania
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

Nastavte a vyskúšajte kód
Nastavte a vyskúšajte 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

zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie
zhromaždenie

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í

Spustenie kódu Python pri zavádzaní / dokončení
Spustenie kódu Python pri zavádzaní / dokončení
Spustenie kódu Python pri zavádzaní / dokončení
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: