Obsah:
- Krok 1: Nainstalujte si Raspbian a nastavte statickou IP adresu
- Krok 2: Nainstalujte a nakonfigurujte Motion
- Krok 3: Nainstalujte si Apache a nastavte webovou ovládací stránku
- Krok 4: Nastavení a testování kódu
- Krok 5: Montáž
- Krok 6: Spuštění kódu Pythonu při spuštění / dokončení
Video: Robot Roomba ovládaný prohlížečem s Raspberry Pi Model 3 A+: 6 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
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
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
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
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
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áž
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í
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:
Klávesnicí ovládaný model železničního rozvržení V2.5 - Rozhraní PS/2: 12 kroků
Klávesnicí ovládaný model železničního rozvržení V2.5 | Rozhraní PS/2: Pomocí mikrokontrolérů Arduino existuje mnoho způsobů ovládání rozvržení modelové železnice. Klávesnice má velkou výhodu v tom, že má spoustu kláves a přidává mnoho funkcí. Zde se podívejme, jak můžeme začít s jednoduchým uspořádáním s lokomotivou a
Jak vytvořit dálkově ovládaný 3D tištěný samovyvažovací robot: 9 kroků (s obrázky)
Jak vytvořit dálkově ovládaný 3D tištěný samovyvažovací robot: Toto je evoluce předchozí verze B-robota. 100% OTEVŘENÝ ZDROJ / robot Arduino. KÓD, 3D díly a elektronika jsou otevřené, takže je můžete upravit nebo vytvořit obrovskou verzi robota. Pokud máte pochybnosti, nápady nebo potřebujete pomoc, udělejte
Robot ovládaný Wi-Fi pomocí aplikace Wemos D1 ESP8266, Arduino IDE a Blynk: 11 kroků (s obrázky)
Robot ovládaný Wi-Fi pomocí Wemos D1 ESP8266, Arduino IDE a Blynk App: V tomto tutoriálu vám ukážu, jak vytvořit roboticky ovládaný tank ovládaný Wi-Fi ze smartphonu pomocí aplikace Blynk. V tomto projektu byla použita deska ESP8266 Wemos D1, ale lze použít i jiné deskové modely (NodeMCU, Firebeetle atd.) A pr
Wi-Servo: Servomotory řízené prohlížečem Wi-Fi (s Arduino + ESP8266): 5 kroků
Wi-Servo: Servomotory ovládané prohlížečem Wi-Fi (s Arduino + ESP8266): Tento návod ukazuje, jak vzdáleně ovládat některé servomotory v síti wi-fi pomocí běžného internetového prohlížeče (například Firefox). Toho lze využít v několika aplikacích: hračky, roboti, drony, otáčení/naklánění kamery atd. Motory byly
Dětská chůvička Arduino s prohlížečem Java: 8 kroků (s obrázky)
Dětská chůvička Arduino s prohlížečem Java: Sestavte vícesenzorovou jednotku na bázi Arduina, která bude sledovat podmínky v místnosti. Tato jednotka může cítit vlhkost, teplotu, pohyb a zvuk. Attached je prohlížeč založený na jazyce Java, který přijímá sériová data z Arduina