Kazalo:

Roomba -robot Robomba z modelom Raspberry Pi 3 A+: 6 korakov (s slikami)
Roomba -robot Robomba z modelom Raspberry Pi 3 A+: 6 korakov (s slikami)

Video: Roomba -robot Robomba z modelom Raspberry Pi 3 A+: 6 korakov (s slikami)

Video: Roomba -robot Robomba z modelom Raspberry Pi 3 A+: 6 korakov (s slikami)
Video: Aufbügeln von Patches - Anleitung - catch-the-patch.de 2024, November
Anonim
Roomba Roomba, upravljan z brskalnikom, z modelom Raspberry Pi 3 A+
Roomba Roomba, upravljan z brskalnikom, z modelom Raspberry Pi 3 A+
Roomba Roomba, upravljan z brskalnikom, z modelom Raspberry Pi 3 A+
Roomba Roomba, upravljan z brskalnikom, z modelom Raspberry Pi 3 A+

Pregled

Ta Instructable se bo osredotočil na to, kako mrtvi Roombi dati nove možgane (Raspberry Pi), oči (spletna kamera) in način, kako vse nadzorovati iz spletnega brskalnika.

Obstaja veliko haokov Roomba, ki omogočajo nadzor prek serijskega vmesnika. Nisem imel sreče, da bi naletel na Roombo, ki ima trenutno vdelano programsko opremo ali delujočo matično ploščo. Roomba je prestara ali je mrtva. Roombo, ki sem jo uporabil za ta projekt, sem našel v lokalni prodajalni blagajni za 5 USD. Še vedno je imel spodobno baterijo, vendar mrtvo matično ploščo. (Spletno kamero sem v isti varčevalnici našel tudi za približno 5 USD). Od originalne Roombe uporabljam le motorje, šasijo in baterijo. Za ta projekt vam ni treba uporabljati Roombe. Po želji lahko uporabite različne motorje, kolesa in podvozje. Zdi se mi preprosto, da bi kos smeti spremenil v nekaj uporabnega.

Za to gradnjo sem uporabil Raspberry Pi Model 3 A+ in krmilnik motorja Riorand. Uporabljam kodo robota za nadzor brskalnika Dexter Industries, ki sem jo spremenil. Različica Dexter Industries nastavi Pi kot strežnik websocket, ki vam omogoča nadzor nad njihovim robotom (opečnata pi platforma) iz odjemalčeve html datoteke, ki poganja drug računalnik.

Kodo sem spremenil z uporabo zatičev GPIO in dodal način, da se Pi izklopi, ko pritisnete gumb / ko pritisnete tipko za izhod v brskalniku. Na nadzorni spletni strani sem naredil tudi nekaj sprememb, da omogočim ogled toka gibanja skozi okvir iframe, hkrati pa nadzorujem robota na eni strani. Pi sem nastavil s statičnim IP -jem za gostovanje odjemalske datoteke, da se lahko povežem s katerim koli računalnikom ali napravo v svojem omrežju.

Tu dokumentiram postopek v upanju, da bom pokazal, kako ustvariti preprostega in poceni osnovnega robota.

Rabljeni deli

Raspberry Pi 3 A+ (Adafruit Link) 30 USD

Riorand Dual Motor Driver Controller H-Bridge (Amazon Link) 22 USD

12V baterija za motorje (Amazon Link) 19 USD

5V baterija za Raspberry Pi (Amazon Link) 10 USD

8 GB Micro SD kartica (Amazon Link) 5 USD

Jumper Wires (Amazon Link) 7 USD

Roomba serija 500

. Skupaj nekaj manj kot 100 USD.

Korak: Namestite Raspbian in nastavite statični naslov IP

Namestite Raspbian in nastavite statični naslov IP
Namestite Raspbian in nastavite statični naslov IP

Uporabil sem Raspbian Stretch Lite. Nisem videl potrebe po namizju, vendar lahko namestite namizno različico, če želite.

Predvidevam, da že veste, kako namestiti Raspbian. Če potrebujete pomoč, lahko tukaj najdete vodnik Raspberry Pi Foundation.

Ko zaženete in zaženete Raspbian, se prijavite in zaženite program raspi-config.

pi@raspberrypi: ~ $ sudo raspi-config

Nastavite povezavo WiFi v raspi-config

Izberite

2 Omrežne možnosti

Izberite

N2 Wi-Fi

Izberite državo, vnesite svoj SSID in vnesite geslo

Nastavite SSH v raspi-config

Ko sem naredil začetno konfiguracijo, sem s SSH nastavil vse brez glave. (Če uporabljate monitor, bi to lahko preskočili. Lažje sem spreminjal kodo, ne da bi mi bilo treba ustaviti robota in ga priključiti na monitor.)

Nazaj v glavni meni raspi-config

Izberite

5 Možnosti vmesnika

Izberite

P2 SSH

Izberite

Da

Nazaj v glavnem meniju raspi-config izberite

Preverite, ali ste povezani z omrežjem

pi@raspberrypi: ~ $ ifconfig

Morali bi dobiti podoben izhod. (Zapomnite si naslov IP; morda ga boste potrebovali kasneje. Npr. 192.168.1.18)

wlan0: zastave = 4163 mtu 1500

inet 192.168.1.18 netmask 255.255.255.0 oddajanje 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 paketi 44396 bajtov 58477 5,5 MiB) Napake RX 0 padlo 0 prekoračitev 0 okvir 0 paketi TX 30530 bajtov 39740576 (37,8 MiB) Napake TX 0 padlo 0 prekoračitev 0 nosilec 0 trki 0

Preverite, ali lahko dostopate do interneta.

pi@raspberrypi: ~ $ ping google.com

Morali bi dobiti podoben izhod.

PING google.com (216.58.194.110) 56 (84) bajtov podatkov.

64 bajtov iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 čas = 18,2 ms 64 bajtov iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 čas = 19,4 ms 64 bajtov iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 čas = 23,6 ms 64 bajtov iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 čas = 30,2 ms ^C --- statistika pinga google.com --- 4 poslani paketi, 4 prejeti, 0% izgube paketov, čas 3004ms rtt min/povprečje/max/mdev = 18.209/ 22,901/30,267/4,715 ms

Nastavite statični IP

Če se želite dosledno povezovati z robotom z istim naslovom v vašem omrežju, boste morali nastaviti statični IP.

Pridobite svoj trenutni omrežni naslov, na primer.192.168.1.18

Uporabljam naslov, ki ga je DHCP samodejno dodelil, ko se je Pi povezal z mojim omrežjem. To lahko spremenite v karkoli želite, če se ujema z vašim omrežjem in ni v nasprotju z drugimi dodeljenimi naslovi.

Odprite dhcp.conf v urejevalniku besedil. (Uporabljam nano)

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

Pomaknite se navzdol do #Example static IP configuration in spremenite naslednje vrstice.

#vmesnik eth0

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

Spremenite, da ustreza vašemu omrežju, in odstranite # na začetku vsake vrstice.

Primer:

vmesnik 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

Shrani in zapri.

Znova zaženite in se povežite s Pi prek SSH

pi@raspberrypi: ~ $ sudo ponovni zagon

Povežite se z drugim računalnikom s pomočjo SSH. Uporabniki sistema Windows lahko uporabljajo PuTTY ali podsistem Windows za Linux (Windows10).

ian@računalnik: ~ $ ssh [email protected]

Vnesite geslo (privzeto je malina).

geslo [email protected]:

Zdaj bi morali biti v ukaznem pozivu svojega Pi.

pi@raspberrypi: ~ $

2. korak: Namestite in konfigurirajte Motion

Namestite in konfigurirajte Motion
Namestite in konfigurirajte Motion

Motion je program, ki se uporablja v številnih projektih varnostnih kamer / spletnih kamer. Gibanje ima veliko funkcij. Nastavljamo pa ga za preprosto pretakanje videa iz spletne kamere na vrata 8081.

Preizkusite svojo spletno kamero

Priključite spletno kamero in navedite povezane USB naprave (po povezavi boste morda morali znova zagnati).

pi@raspberrypi: ~ $ lsusb

Morali bi dobiti podoben izhod. Upoštevajte Logitech C210.

Bus 001 Naprava 002: ID 046d: 0819 Logitech, Inc. Spletna kamera C210

Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 korensko vozlišče

Če se fotoaparat ne prikaže, morda ni združljiv ali pa boste morali namestiti dodatne gonilnike.

Namestite Motion

Posodobite pakete.

pi@raspberrypi: ~ $ sudo apt-get update

Namestite Motion.

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

Ko je Motion nameščen, uredite konfiguracijsko datoteko.

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

Naslednje vrstice spremenite tako, da se ujemajo spodaj.

demon vklopljen

širina 640 višina 480 framerate 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost izklopljen webcontrol_localhost izklopljen

Zagon Motion Daemona pri zagonu

Odprite datoteko/etc/default/motion.

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

Spremenite v

start_motion_daemon = da

Shranite datoteko in zapustite

Znova zaženite

pi@raspberrypi: ~ $ sudo ponovni zagon

Ko se Pi znova zažene, odprite brskalnik in preverite, ali imate v brskalniku pretakanje videa na vratih 8081

Primer:

192.168.1.18:8081

Odpravljanje težav z demonom Motion

Pri zagonu demona gibanja sem naletel na težave, ko sem preizkušal različne možnosti v datoteki motion.conf.

Če začnete gibanje pred demonom gibanja v Raspian Stretchu, boste verjetno naleteli na težave, da bi ga pozneje lahko zagnali ob zagonu. Zagon "sudo motion" brez konfiguriranja demona za to najprej ustvari imenik/var/log/motion, ne da bi uporabniku podelil dovoljenje za pisanje.

3. korak: Namestite Apache in nastavite spletno nadzorno stran

Namestite Apache in nastavite spletno nadzorno stran
Namestite Apache in nastavite spletno nadzorno stran

Apache je spletni strežnik za nadzorno spletno stran robota. Privzeto datoteko Apache index.html bomo zamenjali z datoteko, preneseno iz github. Spremenili boste tudi nekaj vrstic kode, da prikažete video tok gibanja in dodelite, kam želite poslati ukaze za nadzor robota.

Namestite Apache in Git

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

Ko sta apache in git nameščena, prenesite datoteke.

pi@raspberrypi: ~ $ git clone

Odprite imenik roombarobot.

pi@raspberrypi: ~ $ cd roombarobot

Datoteko index.html v mapi/var/www/html zamenjajte z datoteko index.html v/home/pi/roombarobot

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

Uredite datoteko index.html

Odprite datoteko index.html z urejevalnikom besedila.

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

Poiščite ti dve vrstici

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

Spremenite »YOURIPADDRESS« na statični naslov IP, ki ste ga nastavili v 1. koraku, in shranite datoteko.

Primer:

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

V drugem računalniku odprite brskalnik in vnesite naslov IP svojega Pi. Videti bi morali nadzorno spletno stran s poljem na levi, pretakanje videoposnetkov s spletne kamere in gumbi za spletno upravljanje na desni.

4. korak: Namestite in preizkusite kodo

Namestite in preizkusite kodo
Namestite in preizkusite kodo

Ta koda je napisana v pythonu in zahteva knjižnico tornado. Koda uporablja knjižnico za nastavitev strežnika za poslušanje ukazov s krmilne spletne strani prek spletnih vtičnic na vratih 9093.

Namestite PIP in knjižnico Tornado

Namestite pip

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

Namestite knjižnico tornado

pi@raspberrypi: ~ $ sudo pip namestite tornado

Zaženite program Roombabot in preizkusite povezavo

Zaženite program roombabot.py

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

Ko se zažene, bi morali v terminalu videti "Ready". V brskalniku odprite nadzorno spletno stran in kliknite povezavo. Nato kliknite kateri koli smerni gumb na strani. Uporabite lahko tudi puščične tipke na tipkovnici.

V terminalu bi morali videti podoben izhod.

Pripravljen

povezava odprta … povezava odprta … prejeta: u 8 Teče naprej Povezava odprta … sprejeta: l 6 Obračanje Leva povezava odprta … sprejeta: d 2 Teče Obratna povezava odprta … prejeto: r 4 Zavijanje v desno

Pritisnite ctrl+c, da ustavite program.

Ko končate testiranje napajanja Pi.

pi@raspberrypi: ~ $ sudo poweroff

Napake

Opazil sem težavo z gumbom za zaustavitev na nadzorni spletni strani. Gumb za zaustavitev včasih ne stori ničesar, ko ga kliknete ali pritisnete. Nisem mogel ugotoviti, kaj povzroča to, vendar obstaja rešitev. Če želite izklopiti robota in gumb za zaustavitev ne deluje, znova naložite stran, kliknite / tapnite gumb za povezavo in nato kliknite / tapnite gumb za zaustavitev. Moral bi se izklopiti.

5. korak: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Kot že omenjeno, vam za ta projekt ni treba uporabljati Roombe. Vse, kar ima dva motorja, dve kolesi in okvir, bi delovalo. Roombo sem razstavil in odstranil vse razen kolesnih modulov in akumulatorja.

Kolesni moduli

Kolesa in motorji Roombe so skupaj nameščeni v odstranljivem modulu. Vsak modul ima modro zunanje ohišje, ki vsebuje motor, menjalnik, kolo, vzmet vzmetenja in vmesniško ploščo.

Vmesniška plošča

Vsaka vmesniška plošča vodi šest žic. Obstajata dve žici (rdeča [+], črna [-]), ki vrtita motor, ena podatkovna žica za senzor Hallovega učinka, ena žica za stikalo za spuščanje kolesa, ena žica 5V in ena žica GND za napajanje senzorja. Za dostop do vmesniške plošče boste morali razstaviti modul. Vse sem odstranil nazaj v motor in spajal nove žice [+] in [-] na motor (glej fotografije). Od vas je odvisno, ali želite ohraniti senzorje ali ne.

Vzmetne vzmeti

Ko odstranite vakuumski del, se teža Roombe vrže. Če ne odstranite vzmeti, bo Roomba sedela pod kotom. Sprva sem jih odstranil, nato pa jih dodal nazaj, ko sem ugotovil, da se je težko prevrniti po preprogi. Ponovna namestitev vzmeti je odpravila težavo.

Priključitev motorjev na krmilnik motorja

Motorja sta obrnjena drug proti drugemu. To pomeni, da se bo moral za vožnjo Roombe v smeri naprej en motor vrteti naprej, drugi pa nazaj. O tem nisem veliko razmišljal, dokler nisem vse povezal. Na koncu sem samo napisal kodo, kako sem sprva ožičil motorje. To je bila srečna nesreča, ker kadarkoli Raspberry Pi vklopi/izklopi, je na izhode GPIO napetost. Način, kako imam stvari ožičene, se Roomba vrti, dokler se Raspberry Pi ne zažene (približno trideset sekund) in se vrti, ko se izklopi, dokler se napajanje ne izklopi. Če bi bili povezani drugače, bi se potencialno prevrnil naprej / nazaj, kar bi bilo dražilno. To nameravam sčasoma popraviti s preprostim stikalom za krmilnik motorja.

Priključitev motorjev in akumulatorja na krmilnik motorja

Napajanje - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - -Roomba baterija [+]

Motor 2- - - - - - - - - - - - - - - Črna- - - - - - - - - - - - - - Levi motor [-] Motor 2- - - - - - - - - - - - - - - rdeča- - - - - - - - - - - - - - -levi motor [+] motor 1- - - - - - - - - - - - - - črna- - - - - - - - - - - - - - -desni motor [-] motor 1- - - - - - - - - - - - - - - rdeča- - - - - - - - - - - - - - desni motor [+] GND- - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - -Roomba baterija [-]

Ožičenje krmilnika motorja na Raspberry Pi

Zatiči krmilnika motorja Barva žice (glejte fotografije) Raspberry Pi zatiči

GND- - - - - - - - - - - - - - - - - črna- - - - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - - Modra - - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - Zelena- - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - Rumena - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - oranžna - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - rdeča - - - - - - - - - - - - - - -5V

Montaža elektronike

Ne gre veliko za to, da bi vse skupaj sestavili. Roombi sem slekel z ohišja. Ko odstranite pokrov, lahko preprosto odstranite obstoječe plastične nosilce in izvrtate luknje za montažo elektronike. Obstajajo obstoječa vrata za napeljavo kablov iz motorjev. Če uporabljate zalogovno baterijo Roomba, že obstaja izrez za dostop do sponk akumulatorja.

Baterije

Za Raspberry Pi in krmilnik motorja sem uporabil ločene baterije. Pi -jeva baterija je le 5 -voltna baterija, ki se uporablja za povečanje mobilnih telefonov. Za krmilnik motorja sem uporabil originalno baterijo Roomba, ki je priložena. Sponke akumulatorja niso označene, zato je najbolje, da napetost preverite z voltmetrom, preden jo priključite na krmilnik motorja. Za pritrditev žic na baterijo Roomba sem uporabil štiri neodimske magnete (glej fotografije). Dva magneta sem spajkala na žice, druga dva pa sem prilepila na sponke akumulatorja. Spajkanje magnete razmagneti. Vendar se premaz na zunanji strani še vedno lahko pritrdi na magnete na sponkah in vodi elektriko. Zaradi tega je priklop in odklop baterije zelo pomemben.

Testiranje

Ko imate vse skupaj, preverite, ali imate vse pravilno povezano, podprite robota na nekaj (da se ne odvrne) in ga vklopite.

Prijavite se in zaženite program roombabot.py

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

Pojdite na spletno stran za nadzor in jo preizkusite. Če je vse pravilno povezano, se morajo kolesa ob kliku na gumbe / puščične tipke vrteti v ustrezni smeri (ne pozabite klikniti na povezavo).

6. korak: Zagon kode Python ob zagonu / zaključku

Zagon kode Python ob zagonu / zaključku
Zagon kode Python ob zagonu / zaključku
Zagon kode Python ob zagonu / zaključku
Zagon kode Python ob zagonu / zaključku

Zadnja stvar, ki jo moramo storiti, je, da Raspbian -u povemo, naj ob zagonu zažene program python. To naredimo tako, da naredimo skript in razporedimo njegovo izvajanje ob ponovnem zagonu z uporabo crontab.

Ustvarite skript

Ustvarite novo datoteko skripta, imenovano startrobot.sh, v uporabniškem imeniku pi

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Kopirajte naslednje vrstice v datoteko

#!/bin/sh

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

Shranite datoteko in zapustite

Naj bo datoteka startrobot.sh izvedljiva

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

Preizkusite (pritisnite ctrl + c za ustavitev)

pi@raspberrypi: ~ $ sh startrobot.sh

Uredite datoteko crontab

pi@raspberrypi: ~ $ sudo crontab -e

Na dno datoteke dodajte naslednjo vrstico

# m h dom pon dol ukaz

@reboot sh /home/pi/startrobot.sh

Shrani in zapri

Program roombabot.py bi se moral zdaj zagnati, ko se Pi znova zažene ali ko se napajanje izklopi.

Dokončanje

Na tej točki bi morali imeti funkcionalnega robota, ki ga lahko upravljate z brskalnikom iz katere koli naprave v vašem omrežju. Od prvotne izdelave in nastavitve VPN -ja sem lahko šel še dlje od tega, da sem odsoten od doma. V prihodnje nameravam narediti nekaj dodatnih sprememb. Načrtujem, da bo avtonomna in po možnosti spremljala gibanje, hkrati pa bom lahko prevzela nadzor, kadar hočem.

Priporočena: