INHOUDSOPGAWE:

Browser -beheerde Roomba -robot met die Raspberry Pi Model 3 A+: 6 stappe (met foto's)
Browser -beheerde Roomba -robot met die Raspberry Pi Model 3 A+: 6 stappe (met foto's)

Video: Browser -beheerde Roomba -robot met die Raspberry Pi Model 3 A+: 6 stappe (met foto's)

Video: Browser -beheerde Roomba -robot met die Raspberry Pi Model 3 A+: 6 stappe (met foto's)
Video: Finally! A Raspberry Pi Linux Tablet that works! 2024, Desember
Anonim
Blaaierbeheerde Roomba -robot met die Raspberry Pi Model 3 A+
Blaaierbeheerde Roomba -robot met die Raspberry Pi Model 3 A+
Blaaierbeheerde Roomba -robot met die Raspberry Pi Model 3 A+
Blaaierbeheerde Roomba -robot met die Raspberry Pi Model 3 A+

Oorsig

Hierdie Instructable sal fokus op hoe om 'n dooie Roomba 'n nuwe brein (Raspberry Pi), oë (Webcam) te gee en 'n manier om alles vanuit 'n webblaaier te beheer.

Daar is baie Roomba -hacks wat beheer via die seriële koppelvlak moontlik maak. Ek was nie so gelukkig om 'n Roomba te vind wat die huidige firmware of werkende moederbord het nie. Óf die Roomba is te oud óf die Roomba is dood. Ek het die Roomba wat ek vir hierdie projek gebruik het, gevind in 'n winskopie vir 'n plaaslike winkel vir $ 5. Dit het nog steeds 'n ordentlike battery, maar 'n dooie moederbord. (Ek het die webcam ook in dieselfde tweedehandse winkel gevind vir ongeveer $ 5). Al wat ek van die oorspronklike Roomba gebruik, is die motors, onderstel en battery. U hoef nie 'n Roomba vir hierdie projek te gebruik nie. U kan verskillende motors, wiele en onderstel gebruik as u wil. Ek wil net 'n rommel in iets bruikbaar maak.

Vir hierdie konstruksie het ek die Raspberry Pi Model 3 A+ en 'n Riorand -motorbeheerder gebruik. Ek gebruik die kode van die Dexter Industries Browser Controlled Robot wat ek gewysig het. Die Dexter Industries -weergawe stel die Pi op as 'n websocket -bediener waarmee u hul robot (brick pi -platform) kan beheer vanaf 'n html -lêer met 'n ander rekenaar.

Ek het die kode verander, gebruik die GPIO -penne en voeg 'n manier toe om die Pi af te sluit as daar op 'n knoppie geklik word / as die ontsnappingsleutel in die blaaier ingedruk word. Ek het ook 'n paar veranderinge aan die bedieningswebbladsy aangebring om 'n bewegingsstroom deur 'n iframe te sien, terwyl ek die robot binne 'n enkele bladsy beheer. Ek het die Pi opgestel met 'n statiese IP om die kliëntlêer te huisves, sodat ek kon verbind met enige rekenaar of toestel in my netwerk.

Ek dokumenteer die proses hier in die hoop om te wys hoe u 'n eenvoudige, goedkoop basisrobot kan skep.

Onderdele gebruik

Framboos Pi 3 A+ (Adafruit Link) $ 30

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

12V -battery vir motors (Amazon Link) $ 19

5V battery vir die Raspberry Pi (Amazon Link) $ 10

8 GB Micro SD -kaart (Amazon Link) $ 5

Jumper Wires (Amazon Link) $ 7

Roomba 500 -reeks

. Alles saam net minder as $ 100.

Stap 1: Installeer Raspbian en stel 'n statiese IP -adres op

Installeer Raspbian en stel 'n statiese IP -adres op
Installeer Raspbian en stel 'n statiese IP -adres op

Ek het Raspbian Stretch Lite gebruik. Ek het nie 'n behoefte aan die lessenaar gesien nie, maar u kan die lessenaarweergawe installeer as u dit verkies.

Ek neem aan dat u reeds weet hoe om Raspbian te installeer. As u hulp nodig het, kan u die gids van die Raspberry Pi Foundation hier vind.

Sodra u Raspbian aan die gang het, meld u aan en voer die raspi-config-program uit.

pi@raspberrypi: ~ $ sudo raspi-config

Stel u WiFi-verbinding op in raspi-config

Kies

2 Netwerkopsies

Kies

N2 Wi-Fi

Kies 'n land, voer u SSID in en voer u wagwoordfrase in

Stel SSH op in raspi-config

Nadat ek die eerste konfigurasie gedoen het, het ek SSH gebruik om alles koploos in te stel. (U kan dit oorslaan as u 'n monitor gebruik. Dit was vir my makliker om die kode te verander sonder om die robot te hoef te stop en dit aan 'n monitor te koppel.)

Terug by die hoofkieslys van die raspi-config

Kies

5 Koppelvlakopsies

Kies

P2 SSH

Kies

Ja

Kies terug by die raspi-config-hoofkieslys

Verifieer dat u aan u netwerk gekoppel is

pi@raspberrypi: ~ $ ifconfig

U moet 'n soortgelyke uitset ontvang. (Let op die IP -adres; u mag dit later benodig, byvoorbeeld 192.168.1.18)

wlan0: vlae = 4163 mtu 1500

inet 192.168.1.18 netmasker 255.255.255.0 uitsending 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda prefixlen 64 scopeid 0x20 eter b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) RX pakkies 44396 grepe 5847726 (5.5 MiB) RX -foute 0 gedaal 0 oorskrywe 0 raam 0 TX -pakkies 30530 grepe 39740576 (37.8 MiB) TX -foute 0 gedaal 0 oorskrywings 0 draer 0 botsings 0

Verifieer dat u die internet kan bereik.

pi@raspberrypi: ~ $ ping google.com

U moet 'n soortgelyke uitset ontvang.

PING google.com (216.58.194.110) 56 (84) grepe data.

64 grepe van dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 tyd = 18.2 ms 64 grepe van dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 tyd = 19,4 ms 64 grepe van dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 tyd = 23.6 ms 64 grepe van dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 tyd = 30,2 ms ^C --- google.com pingstatistieke --- 4 pakkies gestuur, 4 ontvang, 0% pakkieverlies, tyd 3004ms rtt min/avg/max/mdev = 18.209/ 22.901/30.267/4.715 ms

Stel 'n statiese IP op

Om 'n konstante verbinding met u robot te kan verkry deur dieselfde adres op u netwerk te gebruik, moet u 'n statiese IP opstel.

Kry u huidige netwerkadres, byvoorbeeld 192.168.1.18

Ek gebruik die adres wat outomaties deur DHCP toegeken is toe die Pi aan my netwerk gekoppel was. U kan dit verander na wat u wil, solank dit by u netwerk pas en nie in stryd is met enige ander toegewysde adresse nie.

Maak dhcp.conf oop in 'n teksredakteur. (Ek gebruik nano)

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

Rol af na #Voorbeeld van statiese IP -opset en verander die volgende reëls.

#koppelvlak 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

Verander na u netwerk en verwyder die # aan die begin van elke reël.

Voorbeeld:

koppelvlak 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

Stoor en verlaat.

Herlaai en maak verbinding met die Pi via SSH

pi@raspberrypi: ~ $ sudo herlaai

Koppel vanaf 'n ander rekenaar met SSH. Windows -gebruikers kan PuTTY of die Windows Subsystem for Linux (Windows10) gebruik.

ian@rekenaar: ~ $ ssh [email protected]

Voer u wagwoord in (die standaard is framboos).

wagwoord van [email protected]:

U behoort nou by die opdragprompt van u Pi te wees.

pi@raspberrypi: ~ $

Stap 2: Installeer en konfigureer beweging

Installeer en stel Motion op
Installeer en stel Motion op

Motion is 'n program wat in baie beveiligingskamera- / webkamera -projekte gebruik word. Beweging het baie funksies. Ons stel dit egter voor om eenvoudig video vanaf die webcam na poort 8081 te stroom.

Toets u webkamera

Koppel u webkamera aan en gee 'n lys van gekoppelde usb -toestelle (u moet moontlik herlaai nadat u dit verbind het).

pi@raspberrypi: ~ $ lsusb

U moet 'n soortgelyke uitset kry. Let op die Logitech C210.

Bus 001 Toestel 002: ID 046d: 0819 Logitech, Inc. Webcam C210

Bus 001 Toestel 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub

As u kamera nie verskyn nie, is dit moontlik dat dit nie versoenbaar is nie, of dat u moontlik ekstra bestuurders moet installeer.

Installeer Motion

Dateer pakkette op.

pi@raspberrypi: ~ $ sudo apt-get update

Installeer Motion.

pi@raspberrypi: ~ $ sudo apt -get installeer beweging -y

Sodra Motion geïnstalleer is, wysig u die config -lêer.

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

Verander die volgende reëls om hieronder te pas.

daemon aan

breedte 640 hoogte 480 framerate 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost af webcontrol_localhost af

Begin die Motion Daemon by Boot

Maak die/etc/default/motion -lêer oop.

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

Verander na

start_motion_daemon = ja

Stoor die lêer en verlaat

Herlaai

pi@raspberrypi: ~ $ sudo herlaai

Nadat die Pi weer begin het, maak die blaaier oop en verifieer dat u videostroom in die blaaier op poort 8081 het

Voorbeeld:

192.168.1.18:8081

Probleme met die bewegingsdaemon oplos

Ek het probleme ondervind om die bewegingsdaemon tydens opstart te begin terwyl ek verskillende opsies in die motion.conf -lêer probeer.

As u met die beweging voor die bewegingsdaemon in Raspian Stretch begin, sal u waarskynlik probleme ondervind om dit later te begin. Deur "sudo motion" uit te voer sonder om die daemon te konfigureer om dit te doen, word die gids/var/log/motion eers geskep sonder dat die gebruiker skryf toestemming verleen.

Stap 3: Installeer Apache en instel webbeheerbladsy

Installeer Apache en instel webbeheerbladsy
Installeer Apache en instel webbeheerbladsy

Apache is die webbediener vir die robot se beheerwebblad. Ons gaan die standaard Apache index.html -lêer vervang met 'n lêer wat van github afgelaai is. U sal ook 'n paar reëls kode verander om die bewegingsvideostroom te vertoon en toe te wys waarheen u die opdragte moet stuur om die robot te beheer.

Installeer Apache en Git

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

Laai die lêers af sodra apache en git geïnstalleer is.

pi@raspberrypi: ~ $ git kloon

Maak die roombarobot -gids oop.

pi@raspberrypi: ~ $ cd roombarobot

Vervang die index.html -lêer in die/var/www/html -lêer met die index.html -lêer in die/home/pi/roombarobot

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

Wysig die index.html -lêer

Maak die index.html -lêer oop met 'n teksredigeerder.

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

Vind die twee lyne

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

Verander "YOURIPADDRESS" na die statiese IP -adres wat u in stap 1 opgestel het en stoor die lêer.

Voorbeeld:

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

Open 'n blaaier op 'n ander rekenaar en voer die IP -adres van u Pi in. U moet die bedieningswebbladsy met 'n boks aan die linkerkant sien, video vanaf u webcam stroom en die knoppies vir webbeheer aan die regterkant.

Stap 4: Stel die kode op en toets dit

Stel die kode op en toets dit
Stel die kode op en toets dit

Hierdie kode is in python geskryf en benodig die tornado -biblioteek. Die kode gebruik die biblioteek om 'n bediener op te stel om te luister na opdragte vanaf die beheerwebblad via websockets op poort 9093.

Installeer PIP en die Tornado -biblioteek

Installeer pip

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

Installeer tornado -biblioteek

pi@raspberrypi: ~ $ sudo pip installeer tornado

Begin die Roombabot -program en toets die verbinding

Begin die roombabot.py -program

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

As u klaar is, moet u 'Gereed' in die terminaal sien. Maak die beheerwebbladsy in 'n blaaier oop en klik op verbind. Klik dan op een van die rigtingknoppies op die bladsy. U kan ook die pyltjie sleutels op u sleutelbord gebruik.

U moet 'n uitset in die terminale soortgelyk aan hierdie sien.

Gereed

verbinding oopgemaak … verbinding geopen … ontvang: u 8 Loop Vooruitverbinding oopgemaak … ontvang: l 6 Linksdraai verbinding oopgemaak … ontvang: d 2 Lopende omgekeerde verbinding oopgemaak … ontvang: r 4 Regs draai

Druk ctrl+c om die program te stop.

As u klaar is met die toets van die krag van die Pi.

pi@raspberrypi: ~ $ sudo poweroff

Goggas

Ek het 'n probleem opgemerk met die afsluitknoppie op die beheerwebblad. Soms doen die afsluitingsknoppie niks as daar geklik of getik word nie. Ek kon nie uitvind wat dit veroorsaak nie, maar daar is 'n oplossing. As u die robot wil afskakel en die afsluitknoppie nie werk nie, herlaai die bladsy, klik / tik op die verbindingsknoppie en klik / tik dan op die afsluitknoppie. Dit behoort af te skakel.

Stap 5: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Soos voorheen genoem, hoef u nie 'n Roomba vir hierdie projek te gebruik nie. Enigiets met twee motors, twee wiele en 'n raamwerk sou werk. Ek het die Roomba uitmekaar gehaal en alles behalwe die wielmodules en die battery verwyder.

Wielmodules

Die Roomba se wiele en motors word saam gehuisves in 'n verwyderbare module. Elke module het 'n blou buitenste behuising met die motor, ratkas, wiel, veringveer en koppelvlakbord.

Koppelvlakbord

Elke koppelvlakbord het ses drade. Daar is twee drade (rooi [+], swart [-]) wat die motor draai, een datadraad vir 'n saal -effek -sensor, een draad vir die wielvalskakelaar, een 5V -draad en een GND -draad om die sensor aan te dryf. U moet die module uitmekaar haal om toegang tot die koppelvlakbord te kry. Ek het alles terug na die motor verwyder en nuwe [+] en [-] drade aan die motor gesoldeer (sien foto's). Dit is aan u of u die sensors wil bewaar of nie.

Veringveer

Sodra u die vakuumgedeelte verwyder het, word die Roomba se gewig afgegooi. As u die vere nie verwyder nie, sit die Roomba skuins. Ek het dit oorspronklik verwyder, maar dit weer bygevoeg toe ek agterkom dat dit sukkel om oor die mat te rol. Deur die veer terug te sit, het die probleem opgelos.

Bedrading van die motors na die motorbeheerder

Die motors kyk van mekaar af weg. Dit beteken dat om die Roomba vorentoe te ry, die een motor vorentoe moet draai terwyl die ander agteruit draai. Ek het nie veel hieroor gedink nie, totdat ek alles opgestel het. Ek het uiteindelik net die kode geskryf oor hoe ek die motors aanvanklik bedraad het. Dit was 'n gelukkige ongeluk, want as die Raspberry Pi aan/af skakel, is daar spanning na die GPIO -penne. Op die manier waarop ek dinge inmekaar sit, draai die Roomba totdat die Raspberry Pi opgestart is (ongeveer dertig sekondes) en draai wanneer dit afskakel totdat die krag verwyder is. As dit anders bedraad is, sal dit moontlik vorentoe / agtertoe rol, wat irriterend sal wees. Ek is van plan om dit uiteindelik reg te stel met 'n eenvoudige skakelaar vir die motorbeheerder.

Sluit die motors en battery aan op die motorbeheerder

Krag - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - - Roomba -battery [+]

Motor 2- - - - - - - - - - - - - - - Swart - - - - - - - - - - - - - - Linksmotor [-] Motor 2- - - - - - - - - - - - - - - - Rooi- - - - - - - - - - - - - - - - Linksmotor [+] Motor 1- - - - - - - - - - - - - - - Swart - - - - - - - - - - - - - - - Regtermotor [-] Motor 1- - - - - - - - - - - - - - - Rooi - - - - - - - - - - - - - - - - Regtermotor [+] GND- - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - Roomba -battery [-]

Koppel die motorbeheerder aan die Raspberry Pi

Motorkontrole -penne Draadkleur (sien foto's) Framboos Pi -penne

GND- - - - - - - - - - - - - - - - - Swart - - - - - - - - - - - - - GND PWM 2- - - - - - - - - - - - - - - - - Blou - - - - - - - - - - - - - - - GPIO 18 DIR 2- - - - - - - - - - - - - - - Groen- - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - Geel - - - - - - - - - - - - GPIO 24 DIR 1- - - - - - - - - - - - - - - - - Oranje - - - - - - - - - - - - - - GPIO 25 5V - - - - - - - - - - - - - - - - - Rooi - - - - - - - - - - - - - - - -5V

Die montering van die elektronika

Daar is nie veel om alles bymekaar te sit nie. Ek het die roomba in sy onderstel gestroop. As die omhulsel verwyder is, kan u die bestaande plastiekafstande en gate boor om die elektronika te monteer. Daar is bestaande poorte om kabels van die motors af te voer. As u die voorraad Roomba -battery gebruik, is daar reeds 'n onderbreking vir toegang tot die batteryklemme.

Batterye

Ek het afsonderlike batterye vir die Raspberry Pi en die motorbeheerder gebruik. Die Pi se battery is slegs 'n 5V -battery wat gebruik word om selfone 'n hupstoot te gee. Vir die motorbeheerder gebruik ek die oorspronklike Roomba -battery wat daarmee saamgevoeg is. Die batterye is nie gemerk nie, dus is dit die beste om die spanning met 'n voltmeter te kontroleer voordat u dit na die motorbeheerder koppel. Om die drade aan die Roomba -battery te heg, het ek vier neodymiummagnete gebruik (sien foto's). Ek het twee van die magnete aan die drade gesoldeer, en die ander twee het ek aan die batteryklemme vasgemaak. Soldeer demagnetiseer die magnete. Die deklaag aan die buitekant kan egter steeds aan die magnete op die terminale heg en elektrisiteit gelei. Dit maak die koppeling en ontkoppel van die battery 'n stukkie koek.

Toets

As u alles bymekaar het, moet u seker maak dat alles korrek aangeskakel is, u robot op iets steek (sodat dit nie wegrol nie) en dit aanskakel.

Teken in en begin die roombabot.py -program

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

Gaan na die webbeheerbladsy en toets dit. As alles korrek bedraad is, moet die wiele in die ooreenstemmende rigting draai as op die knoppies geklik word / op die pyltjie sleutels gedruk word (moenie vergeet om op connect te klik nie).

Stap 6: Begin die Python -kode tydens opstart / afwerking

Begin die Python -kode tydens opstart / afwerking
Begin die Python -kode tydens opstart / afwerking
Begin die Python -kode tydens opstart / afwerking
Begin die Python -kode tydens opstart / afwerking

Die laaste ding wat ons moet doen, is om vir Raspbian te sê om die luislangprogram met opstart te begin. Om dit te doen, gaan ons 'n script maak en dit beplan om met herontlaai met crontab te begin.

Skep die Script

Skep 'n nuwe scriptlêer genaamd startrobot.sh in die pi -gebruikersgids

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Kopieer die volgende reëls in die lêer

#!/bin/sh

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

Stoor die lêer en verlaat

Maak die startrobot.sh -lêer uitvoerbaar

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

Toets dit (druk ctrl + c om te stop)

pi@raspberrypi: ~ $ sh startrobot.sh

Wysig die crontab -lêer

pi@raspberrypi: ~ $ sudo crontab -e

Voeg die volgende reël onderaan die lêer

# m h dom mon dow opdrag

@reboot sh /home/pi/startrobot.sh

Stoor en verlaat

Die roombabot.py -program behoort nou te begin wanneer die Pi herlaai word of die kragskakel begin.

Voltooi

Op hierdie stadium moet u 'n funksionele robot hê wat u kan beheer met die blaaier vanaf enige toestel in u netwerk. Ek het dit 'n bietjie verder gevoer sedert die oorspronklike bou en opstel van 'n VPN om toegang tot die robot te kry as ek weg is van die huis. Ek is van plan om in die toekoms nog 'n paar veranderinge aan te bring. Ek is van plan om dit outonoom te maak en moontlik beweging te volg, terwyl ek steeds die kontroles kan oorneem wanneer ek wil.

Aanbeveel: