Obsah:

Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+: 6 kroků (s obrázky)
Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+: 6 kroků (s obrázky)

Video: Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+: 6 kroků (s obrázky)

Video: Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+: 6 kroků (s obrázky)
Video: Arduino uno 02 2xDC motor pasovy pohon 2024, Červenec
Anonim
Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+
Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+

Přehled

Tento Instructable se zaměří na to, jak dát mrtvé Roombě nový mozek (Raspberry Pi), oči (webová kamera) a způsob, jak vše ovládat z webového prohlížeče.

Existuje mnoho hacků Roomba, které umožňují ovládání přes sériové rozhraní. Neměl jsem to štěstí, že jsem narazil na Roombu, která má aktuální firmware nebo funkční základní desku. Buď je Roomba příliš stará, nebo je Roomba mrtvá. Roombu, kterou jsem použil pro tento projekt, jsem našel v místním výhodném obchodě za 5 $. Stále měla slušnou baterii, ale mrtvou základní desku. (Webkameru jsem také našel ve stejném obchodě se šetrností za zhruba 5 $). Z původní Roomby používám pouze motory, podvozek a baterii. Pro tento projekt nemusíte používat robot Roomba. Pokud chcete, můžete použít různé motory, kola a podvozky. Jen mám chuť proměnit kus harampádí v něco použitelného.

Pro toto sestavení jsem použil Raspberry Pi Model 3 A+ a ovladač motoru Riorand. Používám kód z Dexter Industries Browser Controlled Robot, který jsem upravil. Verze Dexter Industries nastavuje Pi jako server websocket, který vám umožňuje ovládat jejich robota (platforma brick pi) ze souboru html klienta, na kterém běží jiný počítač.

Změnil jsem kód pomocí pinů GPIO a přidal jsem způsob, jakým se Pi vypne po kliknutí na tlačítko / po stisknutí klávesy Escape v prohlížeči. Také jsem provedl některé změny na kontrolní webové stránce, abych umožnil prohlížení pohybového proudu prostřednictvím rámce iframe a ovládání robota na jedné stránce. Nastavil jsem Pi se statickou IP na hostování souboru klienta, abych se mohl připojit pomocí jakéhokoli počítače nebo zařízení v mé síti.

Dokumentuji zde tento proces v naději, že ukážu, jak vytvořit jednoduchého, levného základního robota.

Použité díly

Raspberry Pi 3 A+ (Adafruit Link) 30 dolarů

Ovladač duálního ovladače Riorand H-Bridge (Amazon Link) 22 $

12V baterie pro motory (Amazon Link) 19 $

5V baterie pro Raspberry Pi (Amazon Link) 10 $

8 GB karta Micro SD (Amazon Link) 5 $

Propojovací vodiče (Amazon Link) 7 $

Roomba řady 500

. Všechno dohromady necelých 100 $.

Krok 1: Nainstalujte si Raspbian a nastavte statickou IP adresu

Nainstalujte si Raspbian a nastavte statickou IP adresu
Nainstalujte si Raspbian a nastavte statickou IP adresu

Použil jsem Raspbian Stretch Lite. Neviděl jsem potřebu plochy, ale můžete si nainstalovat verzi pro počítače, pokud dáváte přednost.

Budu předpokládat, že už víte, jak nainstalovat Raspbian. Pokud potřebujete pomoc, průvodce Raspberry Pi Foundation najdete zde.

Jakmile máte Raspbian v provozu, přihlaste se a spusťte program raspi-config.

pi@raspberrypi: ~ $ sudo raspi-config

Nastavte si WiFi připojení v raspi-config

Vybrat

2 Možnosti sítě

Vybrat

N2 Wi-fi

Vyberte zemi, zadejte své SSID a zadejte své heslo

Nastavte SSH v raspi-config

Jakmile jsem provedl počáteční konfiguraci, použil jsem SSH k nastavení všeho bez hlavy. (To můžete přeskočit, pokud používáte monitor. Bylo pro mě snazší provádět změny v kódu, aniž bych musel robota zastavit a zapojit do monitoru.)

Zpět do hlavní nabídky raspi-config

Vybrat

5 Možnosti rozhraní

Vybrat

P2 SSH

Vybrat

Ano

Zpět v hlavní nabídce raspi-config vyberte

Ověřte, že jste připojeni k vaší síti

pi@raspberrypi: ~ $ ifconfig

Měli byste obdržet výstup podobný tomuto. (Poznamenejte si IP adresu; můžete ji potřebovat později. Např. 192.168.1.18)

wlan0: flags = 4163 mtu 1500

inet 192.168.1.18 síťová maska 255.255.255.0 vysílání 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 vynecháno 0 překročení 0 rámeček 0 TX pakety 30530 bajtů 39740576 (37,8 MiB) Chyby TX 0 vynechány 0 překročeny 0 nosiče 0 kolize 0

Ověřte, že se můžete dostat na internet.

pi@raspberrypi: ~ $ ping google.com

Měli byste obdržet výstup podobný tomuto.

PING google.com (216.58.194.110) 56 (84) bytů dat.

64 bytů z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 čas = 18,2 ms 64 bytů z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 času = 19,4 ms 64 bytů z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 čas = 23,6 ms 64 bytů z dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 time = 30,2 ms ^C --- statistika ping google.com --- 4 odeslané pakety, 4 přijaté, 0% ztráta paketu, čas 3004ms rtt min/avg/max/mdev = 18,209/ 22,901/30,267/4,715 ms

Nastavte statickou IP

Abyste se mohli trvale připojovat k robotovi pomocí stejné adresy ve vaší síti, budete chtít nastavit statickou IP.

Získejte svou aktuální síťovou adresu, např.192.168.1.18

Používám adresu, která byla automaticky přiřazena DHCP, když se Pi připojil k mé síti. Můžete to změnit na cokoli chcete, pokud to odpovídá vaší síti a není v konfliktu s jinými přiřazenými adresami.

Otevřete dhcp.conf v textovém editoru. (Používám nano)

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

Přejděte dolů na #Example static IP configuration a změňte následující řádky.

#rozhraní eth0

#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

Změňte tak, aby odpovídal vaší síti, a odstraňte # na začátku každého řádku.

Příklad:

rozhraní wlan0

static ip_address = 192.168.1.18 static routers = 192.168.1.1 static domain_name_servers = 192.168.1.1 8.8.8.8

Uložit a odejít.

Restartujte a připojte se k Pi přes SSH

pi@raspberrypi: ~ $ sudo restart

Připojte se z jiného počítače pomocí SSH. Uživatelé Windows mohou používat PuTTY nebo Windows Subsystem pro Linux (Windows10).

ian@počítač: ~ $ ssh [email protected]

Zadejte heslo (výchozí je malina).

heslo [email protected]:

Nyní byste měli být na příkazovém řádku vašeho Pi.

pi@raspberrypi: ~ $

Krok 2: Nainstalujte a nakonfigurujte Motion

Nainstalujte a nakonfigurujte pohyb
Nainstalujte a nakonfigurujte pohyb

Motion je program používaný v mnoha projektech bezpečnostních kamer / webových kamer. Motion má spoustu funkcí. Nastavujeme však jednoduše streamování videa z webové kamery na port 8081.

Otestujte svou webovou kameru

Připojte webovou kameru a zobrazte seznam připojených zařízení USB (po připojení bude pravděpodobně nutné restartovat).

pi@raspberrypi: ~ $ lsusb

Měli byste získat podobný výstup. Všimněte 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

Pokud se váš fotoaparát nezobrazí, je možné, že není kompatibilní nebo budete muset nainstalovat další ovladače.

Nainstalujte si Motion

Aktualizujte balíčky.

pi@raspberrypi: ~ $ sudo apt-get update

Nainstalujte si Motion.

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

Jakmile je Motion nainstalován, upravte konfigurační soubor.

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

Následující řádky změňte tak, aby odpovídaly níže.

zapnutý démon

šířka 640 výška 480 snímků za sekundu 100 výstup_obrázky vypnuto ffmpeg_output_movies vypnuto text_right stream_port 8081 stream_quality 100 stream_localhost vypnuto webcontrol_localhost vypnuto

Spusťte Motion Daemon při spuštění

Otevřete soubor/etc/default/motion.

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

Změnit

start_motion_daemon = ano

Uložte soubor a ukončete

Restartujte

pi@raspberrypi: ~ $ sudo restart

Poté, co se Pi restartuje, otevřete prohlížeč a ověřte, že video streamujete do prohlížeče na portu 8081

Příklad:

192.168.1.18:8081

Odstraňování problémů s Motion Daemon

Při zkoušení různých možností v souboru motion.conf jsem narazil na problémy se spuštěním démona pohybu.

Pokud spustíte pohyb před pohybovým démonem v Raspian Stretch, pravděpodobně narazíte na problémy s jeho pozdějším spuštěním při spuštění. Spuštěním „sudo motion“bez konfigurace démona, aby to udělal, se nejprve vytvoří adresář/var/log/motion bez udělení oprávnění k zápisu uživateli.

Krok 3: Nainstalujte si Apache a nastavte webovou ovládací stránku

Nainstalujte Apache a nastavte webovou ovládací stránku
Nainstalujte Apache a nastavte webovou ovládací stránku

Apache je webový server pro webovou stránku ovládání robota. Chystáme se nahradit výchozí soubor Apache index.html souborem staženým z github. Rovněž změníte několik řádků kódu, aby se zobrazil pohybový video stream, a přiřadíte, kam poslat příkazy k ovládání robota.

Nainstalujte si Apache a Git

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

Jakmile jsou nainstalovány apache a git, stáhněte si soubory.

pi@raspberrypi: ~ $ git clone

Otevřete adresář roombarobot.

pi@raspberrypi: ~ $ cd roombarobot

Nahraďte soubor index.html ve složce/var/www/html souborem index.html v/home/pi/roombarobot

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

Upravte soubor index.html

Otevřete soubor index.html v textovém editoru.

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

Vyhledejte tyto dva řádky

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

Změňte „YOURIPADDRESS“na statickou IP adresu, kterou jste nastavili v kroku 1, a soubor uložte.

Příklad:

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

Na jiném počítači otevřete prohlížeč a zadejte IP adresu vašeho Pi. Měli byste vidět ovládací webovou stránku s rámečkem vlevo, streamování videa z vaší webové kamery a tlačítka pro ovládání webu vpravo.

Krok 4: Nastavení a testování kódu

Nastavte a otestujte kód
Nastavte a otestujte kód

Tento kód je napsán v pythonu a vyžaduje knihovnu tornád. Kód používá knihovnu k nastavení serveru pro naslouchání příkazů z řídicí webové stránky prostřednictvím webových soketů na portu 9093.

Nainstalujte si PIP a knihovnu Tornado

Nainstalujte pip

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

Nainstalujte si knihovnu tornado

pi@raspberrypi: ~ $ sudo pip install tornado

Spusťte program Roombabot a otestujte připojení

Spusťte program roombabot.py

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

Po spuštění byste v terminálu měli vidět „Připraveno“. Otevřete v prohlížeči ovládací webovou stránku a klikněte na připojit. Poté klikněte na libovolné směrové tlačítko na stránce. Můžete také použít klávesy se šipkami na klávesnici.

V terminálu byste měli vidět podobný výstup.

Připraven

připojení otevřeno … připojení otevřeno … přijato: u 8 Spuštění připojení vpřed otevřeno … přijato: l 6 Otáčení Připojení vlevo otevřeno … přijato: d 2 Spuštěno Zpětné připojení otevřeno … přijato: r 4 Otočení doprava

Program zastavíte stisknutím ctrl+c.

Jakmile skončíte s testováním napájení Pi.

pi@raspberrypi: ~ $ sudo poweroff

Hmyz

Zaznamenal jsem problém s tlačítkem pro vypnutí na ovládací webové stránce. Někdy tlačítko pro vypnutí nic nedělá, když na něj kliknete nebo klepnete. Nebyl jsem schopen přijít na to, co to způsobuje, ale existuje řešení. Pokud chcete vypnout robota a tlačítko vypnutí nefunguje, znovu načtěte stránku, klikněte / klepněte na tlačítko připojení a poté klikněte / klepněte na tlačítko vypnutí. Mělo by se vypnout.

Krok 5: Montáž

Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění
Shromáždění

Jak již bylo zmíněno dříve, pro tento projekt nemusíte používat robot Roomba. Cokoliv se dvěma motory, dvěma koly a rámem by fungovalo. Rozebral jsem Roombu a vyjmul vše kromě modulů kol a baterie.

Kolové moduly

Kola a motory robota Roomba jsou uloženy společně v odnímatelném modulu. Každý modul má modré vnější pouzdro obsahující motor, převodovku, kolo, závěsnou pružinu a desku rozhraní.

Deska rozhraní

Každá deska rozhraní má šest vodičů, které k ní vedou. K otáčení motoru slouží dva vodiče (červený [+], černý [-]), jeden datový vodič pro snímač s Hallovým efektem, jeden vodič pro spínač spouštění kola, jeden vodič 5 V a jeden vodič GND k napájení snímače. Pro přístup k desce rozhraní budete muset modul rozebrat. Odstranil jsem vše zpět do motoru a připájel nové [+] a [-] vodiče k motoru (viz fotografie). Je na vás, zda chcete senzory zachovat nebo ne.

Závěsné pružiny

Jakmile podtlakovou část odstraníte, váha Roomby se odhodí. Pokud pružiny neodstraníte, bude Roomba sedět šikmo. Původně jsem je odstranil, ale pak jsem je přidal zpět, když jsem zjistil, že je těžké převalit koberec. Nasazení pružiny zpět problém vyřešilo.

Zapojení motorů do ovladače motoru

Motory směřují od sebe. To znamená, že aby se motor Roomba mohl pohybovat dopředu, jeden motor se bude muset otáčet dopředu, zatímco druhý se bude otáčet dozadu. Moc jsem o tom nepřemýšlel, dokud jsem vše nezapojil. Nakonec jsem jen napsal kód kolem toho, jak jsem původně zapojil motory. Byla to šťastná nehoda, protože kdykoli se Raspberry Pi zapne/vypne, na piny GPIO je výstup napětí. Jak mám věci zapojené, Roomba se točí, dokud se Raspberry Pi nespustí (asi třicet sekund) a točí se při vypnutí, dokud není odpojeno napájení. Pokud by bylo zapojeno jinak, potenciálně by se valilo dopředu / dozadu, což by bylo dráždivé. Mám v plánu to nakonec opravit jednoduchým spínačem pro ovladač motoru.

Zapojení motorů a baterie do ovladače motoru

Napájení - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - - - -Romba baterie [+]

Motor 2- - - - - - - - - - - - - - - - Černý - - - - - - - - - - - - - - - Levý motor [-] Motor 2- - - - - - - - - - - - - - - - Červená- - - - - - - - - - - - - - - - Levý motor [+] Motor 1- - - - - - - - - - - - - - - - - Černý - - - - - - - - - - - - - - Pravý motor [-] Motor 1- - - - - - - - - - - - - - - - Červený - - - - - - - - - - - - - - - Pravý motor [+] GND- - - - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - - -Roomba baterie [-]

Zapojení ovladače motoru k Raspberry Pi

Piny ovladače motoru Barva drátu (viz fotografie) Piny Raspberry Pi

GND- - - - - - - - - - - - - - - - - - Černá - - - - - - - - - - - - - - - - - GND PWM 2- - - - - - - - - - - - - - - - - Modrá - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - - - Zelená - - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - - - Žlutá - - - - - - - - - - - - - - GPIO 24 DIR 1- - - - - - - - - - - - - - - - - Oranžová - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5V

Montáž elektroniky

Není toho mnoho, co by dalo dohromady všechno. Stáhl jsem roombu z podvozku. Po sejmutí krytu můžete snadno odříznout stávající plastové podpěry a vyvrtat otvory pro montáž elektroniky. Existují existující porty pro vedení kabelů z motorů. Pokud používáte běžnou baterii Roomba, již existuje výřez pro přístup ke svorkám baterie.

Baterie

Použil jsem samostatné baterie pro Raspberry Pi a ovladač motoru. Baterie Pi je pouze 5V baterie, která slouží k posílení mobilních telefonů. Jako ovladač motoru jsem použil originální baterii Roomba, která byla dodána s ní. Svorky baterie nejsou označeny, takže je nejlepší zkontrolovat napětí pomocí voltmetru, než jej zapojíte do ovladače motoru. K připevnění vodičů k baterii Roomba jsem použil čtyři neodymové magnety (viz fotografie). Dva magnety jsem připájel k vodičům a další dva jsem přilepil na svorky baterie. Pájení magnety demagnetizuje. Povlak na vnější straně se však stále může přichytit k magnetům na svorkách a vést elektrický proud. Díky tomu je připojení a odpojení baterie hračka.

Testování

Jakmile budete mít vše pohromadě, ověřte, že máte vše správně zapojené, na něčem svého robota podepřete (aby se nerozutálelo) a zapněte jej.

Přihlaste se a spusťte program roombabot.py

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

Přejděte na stránku webového ovládání a vyzkoušejte si to. Pokud je vše správně zapojeno, kola by se měla při kliknutí na tlačítka / stisknutí kláves se šipkami otáčet v odpovídajícím směru (nezapomeňte kliknout na připojit).

Krok 6: Spuštění kódu Pythonu při spuštění / dokončení

Spuštění kódu Pythonu při spuštění / dokončení
Spuštění kódu Pythonu při spuštění / dokončení
Spuštění kódu Pythonu při spuštění / dokončení
Spuštění kódu Pythonu při spuštění / dokončení

Poslední věc, kterou musíme udělat, je říct Raspbianovi, aby spustil program python při spuštění. Za tímto účelem vytvoříme skript a naplánujeme jeho spuštění při restartu pomocí crontab.

Vytvořte skript

Vytvořte nový soubor skriptu s názvem startrobot.sh v uživatelském adresáři pi

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Zkopírujte do souboru následující řádky

#!/bin/sh

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

Uložte soubor a ukončete

Vytvořte spustitelný soubor startrobot.sh

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

Vyzkoušejte to (stisknutím ctrl + c zastavte)

pi@raspberrypi: ~ $ sh startrobot.sh

Upravte soubor crontab

pi@raspberrypi: ~ $ sudo crontab -e

Přidejte následující řádek do spodní části souboru

# m h dom mon dow příkaz

@reboot sh /home/pi/startrobot.sh

Uložit a odejít

Program roombabot.py by se nyní měl spustit, když je Pi restartován nebo vypnut.

Dokončení

V tomto okamžiku byste měli mít funkčního robota, kterého můžete ovládat pomocí prohlížeče z jakéhokoli zařízení ve vaší síti. Od původního sestavení a nastavení VPN jsem to vzal trochu dále, abych měl přístup k robotovi, když jsem mimo domov. V budoucnu hodlám provést další změny. Plánuji, aby to bylo autonomní a případně sledoval pohyb, a přitom stále mohl převzít ovládání, když budu chtít.

Doporučuje: