Tartalomjegyzék:

Böngészővezérelt Roomba robot a Raspberry Pi 3 A+modellel: 6 lépés (képekkel)
Böngészővezérelt Roomba robot a Raspberry Pi 3 A+modellel: 6 lépés (képekkel)

Videó: Böngészővezérelt Roomba robot a Raspberry Pi 3 A+modellel: 6 lépés (képekkel)

Videó: Böngészővezérelt Roomba robot a Raspberry Pi 3 A+modellel: 6 lépés (képekkel)
Videó: Вещи, которые мистеру Уэлчу больше не разрешается делать в сборнике для чтения RPG № 1-2450 2024, November
Anonim
Böngészővezérelt Roomba robot a Raspberry Pi 3 A+ modellel
Böngészővezérelt Roomba robot a Raspberry Pi 3 A+ modellel
Böngészővezérelt Roomba robot a Raspberry Pi 3 A+ modellel
Böngészővezérelt Roomba robot a Raspberry Pi 3 A+ modellel

Áttekintés

Ez az Instructable arra fog összpontosítani, hogyan adhat egy halott Roomba új agyat (Raspberry Pi), szemét (Webkamera), és hogyan lehet mindent böngészőből irányítani.

Sok Roomba hack létezik, amelyek lehetővé teszik a vezérlést a soros interfészen keresztül. Nem volt szerencsém találkozni egy Roomba -val, amelynek jelenlegi firmware -je vagy működő alaplapja van. Vagy a Roomba túl öreg, vagy a Roomba halott. A Roomba -t, amelyet ehhez a projekthez használtam, egy helyi pénztárcabarát üzletben találtam 5 dollárért. Még mindig volt rendes akkumulátora, de halott alaplap. (Én is megtaláltam a webkamerát ugyanabban a takarékos boltban, körülbelül 5 dollárért). Az eredeti Roomba -ból csak a motorokat, a futóművet és az akkumulátort használom. Ehhez a projekthez nem kell Roomba -t használnia. Használhat különböző motorokat, kerekeket és alvázat, ha úgy tetszik. Szeretném, ha egy szemétdarabot valami használhatóvá alakítanék.

Ehhez az építéshez a Raspberry Pi Model 3 A+ modellt és a Riorand motorvezérlőt használtam. Az általam módosított Dexter Industries Browser Controlled Robot kódját használom. A Dexter Industries verziója a Pi -t websocket szerverként állítja be, amely lehetővé teszi robotjának (tégla pi platformnak) vezérlését egy másik számítógépen futó kliens html fájlból.

Megváltoztattam a kódot a GPIO csapok használatával, és hozzáadtam egy módot a Pi leállításához, amikor egy gombra kattintanak / amikor a böngészőben megnyomják az Escape gombot. Ezenkívül néhány változtatást eszközöltem a vezérlő weboldalon, hogy lehetővé tegyem egy mozgásfolyam megtekintését iframe -en keresztül, miközben a robotot egyetlen oldalon belül irányíthatom. A Pi -t statikus IP -címmel állítottam be az ügyfélfájl tárolására, hogy a hálózat bármely számítógépével vagy eszközével csatlakozhassak.

A folyamatot itt dokumentálom, abban a reményben, hogy megmutatom, hogyan lehet egyszerű, olcsó alaprobotot létrehozni.

Használt alkatrészek

Raspberry Pi 3 A+ (Adafruit Link) 30 dollár

Riorand Dual Motor Driver Controller H-Bridge (Amazon Link) 22 dollár

12 V -os akkumulátor motorokhoz (Amazon Link) 19 USD

5 V -os akkumulátor a Raspberry Pi -hez (Amazon Link) 10 USD

8 GB -os Micro SD kártya (Amazon Link) 5 USD

Jumper vezetékek (Amazon Link) $ 7

Roomba 500 sorozat

. Együtt alig 100 dollár alatt.

1. lépés: Telepítse a Raspbian programot, és állítson be egy statikus IP -címet

Telepítse a Raspbian programot, és állítson be egy statikus IP -címet
Telepítse a Raspbian programot, és állítson be egy statikus IP -címet

Én a Raspbian Stretch Lite -t használtam. Nem láttam szükségét az asztalra, de ha úgy tetszik, telepítheti az asztali verziót.

Feltételezem, hogy már tudja, hogyan kell telepíteni a Raspbian -t. Ha segítségre van szüksége, a Raspberry Pi Foundation útmutatóját itt találja.

Miután elindította a Raspbian programot, jelentkezzen be és futtassa a raspi-config programot.

pi@raspberrypi: ~ $ sudo raspi-config

Állítsa be a WiFi-kapcsolatot a raspi-configban

Válassza a lehetőséget

2 Hálózati beállítások

Válassza a lehetőséget

N2 Wi-Fi

Válasszon egy országot, írja be az SSID azonosítót, és adja meg a jelszót

Állítsa be az SSH-t a raspi-configban

Miután elvégeztem a kezdeti konfigurációt, SSH -val beállítottam mindent fej nélkül. (Ezt kihagyhatja, ha monitort használ. Könnyebb volt megváltoztatnom a kódot anélkül, hogy le kellett volna állítanom a robotot és csatlakoztatnom kellett volna a monitorhoz.)

Vissza a raspi-config főmenübe

Válassza a lehetőséget

5 Interfész opciók

Válassza a lehetőséget

P2 SSH

Válassza a lehetőséget

Igen

Vissza a raspi-config főmenübe

Ellenőrizze, hogy csatlakozik -e a hálózatához

pi@raspberrypi: ~ $ ifconfig

Ehhez hasonló kimenetet kell kapnia. (Jegyezze fel az IP -címet; később szükség lehet rá, pl. 192.168.1.18)

wlan0: zászlók = 4163 mtu 1500

inet 192.168.1.18 netmaszk 255.255.255.0 broadcast 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda előtag 64 skapid 0x20 éter b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) RX csomagok 44396 bájt 5847726 (5.5 MiB) RX hibák 0 leesett 0 túllépés 0 képkocka 0 TX csomagok 30530 bájt 39740576 (37,8 MiB) TX hibák 0 leesett 0 túllépés 0 hordozó 0 ütközés 0

Ellenőrizze, hogy elérheti -e az internetet.

pi@raspberrypi: ~ $ ping google.com

Ehhez hasonló kimenetet kell kapnia.

PING google.com (216.58.194.110) 56 (84) bájt adat.

64 byte from dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 time = 18,2 ms 64 byte from dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 idő = 19,4 ms 64 byte from dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 time = 23.6 ms 64 byte from dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 idő = 30,2 ms ^C --- google.com ping statisztika --- 4 csomag továbbítva, 4 érkezett, 0% csomagvesztés, idő 3004 ms rtt min/avg/max/mdev = 18.209/ 22,901/30,267/4,715 ms

Állítson be egy statikus IP -t

Annak érdekében, hogy folyamatosan képes legyen csatlakozni a robotjához ugyanazon a címen a hálózaton, állítson be egy statikus IP -t.

Szerezze be aktuális hálózati címét, pl. 192.168.1.18

Azt a címet használom, amelyet a DHCP automatikusan hozzárendelt, amikor a Pi csatlakozott a hálózatomhoz. Ezt bármire megváltoztathatja, ha az megfelel a hálózatának, és nem ütközik más hozzárendelt címekkel.

Nyissa meg a dhcp.conf fájlt egy szövegszerkesztőben. (Nano -t használok)

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

Görgessen le a #Példa statikus IP -konfigurációra, és módosítsa a következő sorokat.

#interfész eth0

#static ip_address = 192.168.11.13 #static routers = 192.168.11.1 #static domain_name_servers = 192.168.11.1 8.8.8.8

Módosítsa, hogy megfeleljen a hálózatának, és távolítsa el a # jelet minden sor elején.

Példa:

wlan0 interfész

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

Mentés és kilépés.

Indítsa újra, és csatlakozzon a Pi -hez SSH -n keresztül

pi@raspberrypi: ~ $ sudo reboot

Csatlakozás másik számítógépről SSH használatával. A Windows felhasználók használhatják a PuTTY -t vagy a Windows alrendszert Linuxra (Windows10).

ian@számítógép: ~ $ ssh [email protected]

Adja meg jelszavát (az alapértelmezett a málna).

[email protected] jelszava:

Most a Pi parancssorában kell lennie.

pi@málna: ~ $

2. lépés: Telepítse és konfigurálja a mozgást

Mozgás telepítése és konfigurálása
Mozgás telepítése és konfigurálása

A Motion egy olyan program, amelyet sok biztonsági kamera / webkamera projektben használnak. A mozgás sok funkcióval rendelkezik. Mi azonban úgy állítjuk be, hogy egyszerűen továbbítsunk videót a webkameráról a 8081 -es portra.

Tesztelje webkameráját

Csatlakoztassa a webkamerát, és sorolja fel a csatlakoztatott USB -eszközöket (előfordulhat, hogy újra kell indítani a csatlakoztatást követően).

pi@málna: ~ $ lsusb

Ehhez hasonló kimenetet kell kapnia. Vegye figyelembe a Logitech C210 -et.

Busz 001 Eszköz 002: ID 046d: 0819 Logitech, Inc. Webkamera C210

Busz 001 Eszköz 001: ID 1d6b: 0002 Linux Foundation 2.0 gyökér hub

Ha a fényképezőgép nem jelenik meg, előfordulhat, hogy nem kompatibilis, vagy további illesztőprogramokat kell telepítenie.

A Motion telepítése

Frissítse a csomagokat.

pi@raspberrypi: ~ $ sudo apt-get update

A Motion telepítése.

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

A Motion telepítése után szerkessze a konfigurációs fájlt.

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

Változtassa meg a következő sorokat az alábbiak szerint.

démon be

szélesség 640 magasság 480 framerate 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost off webcontrol_localhost off

Indítsa el a Motion Daemont a rendszerindításkor

Nyissa meg az/etc/default/motion fájlt.

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

Váltani

start_motion_daemon = igen

Mentse a fájlt, és lépjen ki

Indítsa újra

pi@raspberrypi: ~ $ sudo reboot

Miután a Pi újraindult, nyissa meg a böngészőt, és győződjön meg arról, hogy a 8081 -es port böngészőjében van -e videó streaming

Példa:

192.168.1.18:8081

A Motion Daemon hibaelhárítása

Problémákba ütköztem, amikor a motion démon indításakor elindult, miközben a motion.conf fájl különböző lehetőségeit próbáltam ki.

Ha a Raspian Stretch -ben a mozgásdémon előtt indítja el a mozgást, akkor valószínűleg problémákba ütközik, hogy később elinduljon. A "sudo motion" futtatása anélkül, hogy a démont erre konfigurálnánk, először létrehozza a/var/log/motion könyvtárat, anélkül, hogy írási engedélyt adna a felhasználónak.

3. lépés: Telepítse az Apache programot és telepítse a webes vezérlő oldalt

Telepítse az Apache programot, és telepítse a Web vezérlő oldalt
Telepítse az Apache programot, és telepítse a Web vezérlő oldalt

Az Apache a robot vezérlő weboldalának webszervere. Az alapértelmezett Apache index.html fájlt egy github -ról letöltött fájlra cseréljük. Ezenkívül módosít egy pár sornyi kódot, hogy megjelenítse a mozgóképes videófolyamot, és hozzárendeli, hová küldje el a robot vezérlésére vonatkozó parancsokat.

Telepítse az Apache és a Git programokat

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

Az apache és a git telepítése után töltse le a fájlokat.

pi@raspberrypi: ~ $ git klón

Nyissa meg a roombarobot könyvtárat.

pi@raspberrypi: ~ $ cd roombarobot

Cserélje ki az index.html fájlt a/var/www/html mappában az index.html fájlra a/home/pi/roombarobot fájlban

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

Szerkessze az index.html fájlt

Nyissa meg az index.html fájlt szövegszerkesztővel.

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

Keresse meg ezt a két sort

var host = "ws: // SAJÁT CÍM: 9093/ws";

Módosítsa a "YOURIPADDRESS" nevet az 1. lépésben beállított statikus IP -címre, és mentse a fájlt.

Példa:

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

Egy másik számítógépen nyisson meg egy böngészőt, és adja meg a Pi IP -címét. Látnia kell a vezérlő weboldalt egy dobozzal a bal oldalon, a videó streamingjét a webkamerájából, és a webes vezérlőgombokat a jobb oldalon.

4. lépés: A kód beállítása és tesztelése

Állítsa be és tesztelje a kódot
Állítsa be és tesztelje a kódot

Ez a kód pythonban van írva, és szükség van a tornádó könyvtárra. A kód a könyvtár segítségével beállít egy kiszolgálót, amely meghallgatja a parancsokat a vezérlő weboldalról a 9093 -as port websocketjein keresztül.

Telepítse a PIP -t és a Tornado Library -t

Telepítse a pip

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

Telepítse a tornádó könyvtárat

pi@raspberrypi: ~ $ sudo pip install tornado

Indítsa el a Roombabot programot, és tesztelje a kapcsolatot

Indítsa el a roombabot.py programot

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

Futtatás után a "Kész" feliratot kell látnia a terminálon. Nyissa meg a vezérlő weblapját egy böngészőben, és kattintson a Csatlakozás gombra. Ezután kattintson az oldal bármelyik iránygombjára. A billentyűzet nyilait is használhatja.

A terminálban ehhez hasonló kimenetet kell látnia.

Kész

kapcsolat nyitva… kapcsolat nyitva… fogadva: u 8 Futó Előre csatlakozás nyitva… fogadva: l 6 Balra fordulás nyitva… fogadva: d 2 Futás Hátrameneti kapcsolat nyitva… fogadva: r 4 Jobbra fordulva

A program leállításához nyomja meg a ctrl+c billentyűkombinációt.

Ha végzett, tesztelje a Pi áramellátását.

pi@raspberrypi: ~ $ sudo poweroff

Bogarak

Észrevettem egy problémát a vezérlő weboldal leállítás gombjával. Néha a leállítás gomb nem tesz semmit, ha rákattint vagy megérinti. Nem tudtam rájönni, hogy mi okozza ezt, de van megoldás. Ha kikapcsolni szeretné a robotot, és a leállítás gomb nem működik, töltse be újra az oldalt, kattintson / érintse meg a csatlakozás gombot, majd kattintson / koppintson a leállítás gombra. Le kell kapcsolnia.

5. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Mint korábban említettük, ehhez a projekthez nem kell Roomba -t használni. Bármi, amin két motor, két kerék és egy keret működik. Szétszedtem a Roomba -t, és mindent eltávolítottam, kivéve a kerékmodulokat és az akkumulátort.

Kerékmodulok

A Roomba kerekei és motorjai egy cserélhető modulban helyezkednek el. Minden modulnak kék külső háza van, amely tartalmazza a motort, a sebességváltót, a kereket, a rugó rugót és az interfészlapot.

Interfész tábla

Minden interfészlapon hat vezeték fut. Két vezeték (piros [+], fekete [-]) forgatja a motort, egy adatvezeték a hall -effektus -érzékelőhöz, egy vezeték a kerék -ejtőkapcsolóhoz, egy 5 V -os vezeték és egy GND -vezeték az érzékelő táplálásához. Az interfészlap eléréséhez szétszerelnie kell a modult. Mindent eltávolítottam a motorhoz, és új [+] és [-] vezetékeket forrasztottam a motorhoz (lásd a képeket). Önön múlik, hogy megőrzi -e az érzékelőket vagy sem.

Felfüggesztő rugók

Miután eltávolította a vákuumrészt, a Roomba súlya leesik. Ha nem távolítja el a rugókat, a Roomba ferdén fog ülni. Eredetileg eltávolítottam ezeket, de aztán visszatettem, amikor rájöttem, hogy nehezen borul szőnyegre. A rugó visszahelyezése megoldotta a problémát.

A motorok bekötése a motorvezérlőhöz

A motorok egymással szemben vannak. Ez azt jelenti, hogy a Roomba előrehajtásához az egyik motornak előre kell forognia, míg a másiknak hátra. Nem sokat gondolkodtam ezen, csak miután mindent bekötöttem. Végül csak a kódot írtam körbe a motorok bekötése során. Ez szerencsés baleset volt, mert amikor a Raspberry Pi be- és kikapcsol, a GPIO érintkezők feszültséget kapnak. Ahogy bekötöttem a dolgokat, a Roomba addig forog, amíg a Raspberry Pi be nem indul (kb. Harminc másodperc), és forog leálláskor, amíg az áramellátást ki nem kapcsolja. Ha másképp lenne bekötve, akkor potenciálisan előre / hátra gurulna, ami irritáló lenne. Azt tervezem, hogy végül megoldom ezt a motorvezérlő egyszerű kapcsolójával.

A motorok és az akkumulátor bekötése a motorvezérlőhöz

Tápellátás - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - - Roomba akkumulátor [+]

Motor 2- - - - - - - - - - - - - - - - Fekete- - - - - - - - - - - - - - - Bal motor [-] Motor 2- - - - - - - - - - - - - - - Piros - - - - - - - - - - - - - - Bal motor [+] Motor 1- - - - - - - - - - - - - - - Fekete - - - - - - - - - - - - - - Jobb motor [-] Motor 1- - - - - - - - - - - - - - - - Piros - - - - - - - - - - - - - - Jobb motor [+] GND- - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - Roomba akkumulátor [-]

A motorvezérlő bekötése a Raspberry Pi -hez

Motorvezérlő csapok vezetékes színe (lásd a képeket) Raspberry Pi csapok

GND- - - - - - - - - - - - - - - - - Fekete- - - - - - - - - - - - - - - - GND PWM 2- - - - - - - - - - - - - - - - - - - - - - - Kék - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - - Zöld- - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - Sárga - - - - - - - - - - - - - GPIO 24 DIR 1- - - - - - - - - - - - - - - - Narancs - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - Piros - - - - - - - - - - - - - - -5V

Az elektronika felszerelése

Nem sok mindent kell összehozni. Lecsupaszítottam a szobatestet az alvázáról. A fedél eltávolításával könnyedén levághatja a meglévő műanyag rögzítőelemeket, és lyukakat fúrhat az elektronika felszereléséhez. Vannak meglévő portok a motorok kábeleinek vezetésére. Ha a Roomba készlet akkumulátort használja, akkor már van egy kivágás az akkumulátor kivezetéseihez.

Akkumulátorok

Külön akkumulátorokat használtam a Raspberry Pi és a motorvezérlő számára. A Pi akkumulátora csak egy 5 V -os akkumulátor, amelyet a mobiltelefonok feltöltésére használnak. A motorvezérlőhöz az eredeti Roomba akkumulátort használtam. Az akkumulátor kivezetései nincsenek feliratozva, ezért a feszültségmérést a voltmérővel érdemes ellenőrizni, mielőtt a motorvezérlőhöz csatlakoztatja. A vezetékek csatlakoztatásához a Roomba akkumulátorhoz négy neodímium mágnest használtam (lásd a képeket). A mágnesek közül kettőt a vezetékekhez forrasztottam, a másik kettőt pedig az akkumulátor érintkezőire ragasztottam. A forrasztás demagnetizálja a mágneseket. A külső bevonat azonban továbbra is rögzülhet a kapcsok mágneseihez, és áramot vezethet. Ezáltal az akkumulátor csatlakoztatása és leválasztása sütemény.

Tesztelés

Miután mindent összekapcsolt, ellenőrizze, hogy minden megfelelően van -e bekötve, támassza fel robotját valamire (hogy ne guruljon el), és kapcsolja be.

Jelentkezzen be, és indítsa el a roombabot.py programot

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

Lépjen a webes vezérlőoldalra, és próbálja ki. Ha minden megfelelően van bekötve, a kerekeknek a megfelelő irányba kell forogniuk, amikor a gombokra kattintanak vagy a nyilakat megnyomják (ne felejtse el kattintani a csatlakozás gombra).

6. lépés: A Python -kód indítása rendszerindításkor / befejezéskor

A Python kód indítása rendszerindításkor / befejezéskor
A Python kód indítása rendszerindításkor / befejezéskor
A Python kód indítása rendszerindításkor / befejezéskor
A Python kód indítása rendszerindításkor / befejezéskor

Az utolsó dolog, amit meg kell tennünk, szóljunk a Raspbiannak, hogy indítsa el a python programot rendszerindításkor. Ehhez létre kell hoznunk egy szkriptet, és ütemezni kell, hogy az újraindításkor fusson a crontab segítségével.

Hozza létre a szkriptet

Hozzon létre egy új szkriptfájlt startrobot.sh néven a pi felhasználói könyvtárban

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Másolja a következő sorokat a fájlba

#!/bin/sh

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

Mentse a fájlt, és lépjen ki

Tegye futtathatóvá a startrobot.sh fájlt

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

Tesztelje (a leállításhoz nyomja le a ctrl + c billentyűkombinációt)

pi@raspberrypi: ~ $ sh startrobot.sh

Szerkessze a crontab fájlt

pi@raspberrypi: ~ $ sudo crontab -e

Adja hozzá a következő sort a fájl aljához

# m h dom mon dow parancs

@reboot sh /home/pi/startrobot.sh

Mentés és kilépés

A roombabot.py programnak most el kell indulnia, amikor a Pi újraindul vagy bekapcsol.

Befejezés

Ezen a ponton rendelkeznie kell egy funkcionális robottal, amelyet a böngésző segítségével vezérelhet a hálózat bármely eszközéről. Kicsit tovább vittem ezt az eredeti VPN felépítés és beállítás óta, hogy hozzáférhessek a robothoz, amikor távol vagyok otthonról. A jövőben további változtatásokat kívánok végrehajtani. Azt tervezem, hogy autonóm lesz, és esetleg követem a mozgást, miközben továbbra is át tudom venni az irányítást, amikor akarom.

Ajánlott: