Sadržaj:

Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)

Video: Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)

Video: Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
Video: AMA record with community manager Oleg. PARALLEL FINANCE 2024, Studeni
Anonim
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+
Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+

Pregled

Ovaj Instructable će se usredotočiti na to kako mrtvoj Roombi dati novi mozak (Raspberry Pi), oči (web kamera) i način da kontrolira sve iz web preglednika.

Postoji mnogo Roomba hakova koji omogućuju kontrolu putem serijskog sučelja. Nisam imao sreću naići na Roombu koja ima trenutni firmver ili radnu matičnu ploču. Ili je Roomba prestara ili je Roomba mrtva. Roombu koju sam koristio za ovaj projekt pronašao sam u lokalnoj kanti za jeftine trgovine za 5 USD. I dalje je imao pristojnu bateriju, ali mrtvu matičnu ploču. (Također sam pronašao web kameru u istoj trgovini za oko 5 USD). Sve što koristim od izvorne Roombe su motori, šasija i baterija. Za ovaj projekt ne morate koristiti Roombu. Možete koristiti različite motore, kotače i šasiju ako želite. Jednostavno mi se pretvara komad smeća u nešto upotrebljivo.

Za ovu sam konstrukciju koristio Raspberry Pi Model 3 A+ i motorni kontroler Riorand. Koristim kôd robota kontroliranog preglednikom Dexter Industries koji sam izmijenio. Verzija Dexter Industries postavlja Pi kao poslužitelj websocketa koji vam omogućuje upravljanje njihovim robotom (opekarska pi platforma) iz html datoteke klijenta na drugom računalu.

Promijenio sam kôd pomoću GPIO pinova i dodao način na koji se Pi može isključiti kada se pritisne gumb / kada se u pregledniku pritisne tipka za bijeg. Također sam napravio neke izmjene na kontrolnoj web stranici kako bih omogućio pregled toka pokreta kroz iframe, dok sam kontrolirao robota unutar jedne stranice. Postavio sam Pi sa statičkim IP -om za hostovanje klijentske datoteke kako bih se mogao povezati pomoću bilo kojeg računala ili uređaja na svojoj mreži.

Ovdje dokumentiram proces u nadi da ću pokazati kako stvoriti jednostavnog, jeftinog osnovnog robota.

Rabljeni dijelovi

Raspberry Pi 3 A+ (Adafruit Link) 30 USD

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

12V baterija za motore (Amazon Link) 19 USD

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

Micro SD kartica od 8 GB (Amazon Link) 5 USD

Kratke žice (Amazon Link) 7 USD

Roomba serija 500

. Svi zajedno nešto manje od 100 USD.

Korak 1: Instalirajte Raspbian i postavite statičku IP adresu

Instalirajte Raspbian i postavite statičku IP adresu
Instalirajte Raspbian i postavite statičku IP adresu

Koristio sam Raspbian Stretch Lite. Nisam vidio potrebu za radnom površinom, ali ako želite, možete instalirati verziju za stolna računala.

Pretpostavit ću da već znate instalirati Raspbian. Ako vam je potrebna pomoć, ovdje možete pronaći vodič zaklade Raspberry Pi.

Nakon što pokrenete Raspbian, prijavite se i pokrenite program raspi-config.

pi@raspberrypi: ~ $ sudo raspi-config

Postavite svoju WiFi vezu u raspi-config

Odaberi

2 Opcije mreže

Odaberi

N2 Wi-Fi

Odaberite državu, unesite svoj SSID i unesite zaporku

Postavite SSH u raspi-config

Nakon što sam napravio početnu konfiguraciju, upotrijebio sam SSH za postavljanje svega bez glave. (Ovo biste mogli preskočiti ako koristite monitor. Bilo mi je lakše izmijeniti kôd bez potrebe da zaustavljam robota i priključujem ga na monitor.)

Natrag na glavni izbornik raspi-config

Odaberi

5 Opcije sučelja

Odaberi

P2 SSH

Odaberi

Da

Natrag na glavnom izborniku raspi-config odaberite

Provjerite jeste li povezani s mrežom

pi@raspberrypi: ~ $ ifconfig

Trebali biste primiti izlaz sličan ovome. (Zabilježite IP adresu; možda će vam trebati kasnije. Npr. 192.168.1.18)

wlan0: zastave = 4163 mtu 1500

inet 192.168.1.18 maska mreže 255.255.255.0 emitiranje 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda prefikslen 64 opseg 0x20 eter b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) RX paketi 44396 bajtova 584726 5,5 MiB) RX pogreške 0 palo 0 prekoračenja 0 okvira 0 TX paketi 30530 bajtova 39740576 (37,8 MiB) TX pogreške 0 palo 0 prekoračenja 0 nositelja 0 sudara 0

Provjerite možete li pristupiti internetu.

pi@raspberrypi: ~ $ ping google.com

Trebali biste primiti izlaz sličan ovome.

PING google.com (216.58.194.110) 56 (84) bajtova podataka.

64 bajta s dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 vrijeme = 18,2 ms 64 bajta iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 vrijeme = 19,4 ms 64 bajta s dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 vrijeme = 23,6 ms 64 bajta iz dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 vrijeme = 30,2 ms ^C --- statistika pinga google.com --- 4 poslana paketa, 4 primljena, 0% gubitka paketa, vrijeme 3004ms rtt min/prosjek/maks/mdev = 18.209/ 22,901/30,267/4,715 ms

Postavljanje statičkog IP -a

Da biste se mogli dosljedno povezivati s robotom koristeći istu adresu na vašoj mreži, morat ćete postaviti statički IP.

Dobijte svoju trenutnu mrežnu adresu, npr. 192.168.1.18

Koristim adresu koju je DHCP automatski dodijelio kada se Pi spojio na moju mrežu. Ovo možete promijeniti na što god želite sve dok se podudara s vašom mrežom i nije u sukobu s bilo kojom drugom dodijeljenom adresom.

Otvorite dhcp.conf u uređivaču teksta. (Ja koristim nano)

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

Pomaknite se prema dolje do #Primjer statičke IP konfiguracije i promijenite sljedeće retke.

#sučelje eth0

#static ip_address = 192.168.11.13 #statički usmjerivači = 192.168.11.1 #statički poslužitelji_ime_domene = 192.168.11.1 8.8.8.8

Promijenite da odgovara vašoj mreži i uklonite # na početku svakog retka.

Primjer:

sučelje 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

Spremi i izađi.

Ponovo pokrenite i spojite se na Pi putem SSH -a

pi@raspberrypi: ~ $ sudo ponovno podizanje sustava

Povežite se s drugog računala koristeći SSH. Korisnici Windowsa mogu koristiti PuTTY ili Windows podsustav za Linux (Windows10).

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

Unesite svoju lozinku (zadana vrijednost je malina).

lozinka [email protected]:

Sada biste trebali biti u naredbenom retku svog Pi -a.

pi@raspberrypi: ~ $

Korak 2: Instalirajte i konfigurirajte Motion

Instalirajte i konfigurirajte Motion
Instalirajte i konfigurirajte Motion

Motion je program koji se koristi u mnogim projektima sigurnosnih kamera / web kamera. Pokret ima mnogo značajki. Međutim, postavljamo ga za jednostavno strujanje videozapisa s web kamere na port 8081.

Testirajte svoju web kameru

Priključite web -kameru i navedite povezane USB uređaje (možda ćete se morati ponovno pokrenuti nakon povezivanja).

pi@raspberrypi: ~ $ lsusb

Trebali biste dobiti izlaz sličan ovome. Obratite pozornost na Logitech C210.

Autobus 001 Uređaj 002: ID 046d: 0819 Logitech, Inc. Web kamera C210

Sabirnica 001 Uređaj 001: ID 1d6b: 0002 korijensko čvorište Linux Foundation 2.0

Ako se kamera ne prikaže, možda nije kompatibilna ili ćete morati instalirati dodatne upravljačke programe.

Instalirajte Motion

Ažurirajte pakete.

pi@raspberrypi: ~ $ sudo apt-get update

Instalirajte Motion.

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

Nakon što se Motion instalira, uredite konfiguracijsku datoteku.

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

Promijenite sljedeće retke kako bi odgovarali dolje.

demon uključen

širina 640 visina 480 framerate 100 output_pictures off ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost isključen webcontrol_localhost isključen

Pokrenite Motion Daemon pri pokretanju

Otvorite/etc/default/motion datoteku.

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

Promijeniti

start_motion_daemon = da

Spremite datoteku i izađite

Ponovno podizanje sustava

pi@raspberrypi: ~ $ sudo ponovno podizanje sustava

Nakon ponovnog pokretanja Pi otvorite preglednik i provjerite imate li video streaming u pregledniku na portu 8081

Primjer:

192.168.1.18:8081

Rješavanje problema Motion Daemona

Naišao sam na probleme pri pokretanju demona pokreta pri pokretanju dok sam isprobavao različite opcije u datoteci motion.conf.

Ako pokrenete pokret prije demona pokreta u Raspian Stretchu, vjerojatno ćete naići na probleme zbog kojih će kasnije početi pri pokretanju. Pokretanje "sudo motion" bez konfiguriranja demona da to učini prvo stvara direktorij/var/log/motion bez davanja dozvole za pisanje korisniku.

Korak 3: Instalirajte Apache i postavite web kontrolnu stranicu

Instalirajte Apache i web stranicu za postavljanje web stranice za postavljanje
Instalirajte Apache i web stranicu za postavljanje web stranice za postavljanje

Apache je web poslužitelj za robotsku kontrolnu web stranicu. Zamjensku datoteku Apache index.html zamijenit ćemo datotekom preuzetom s githuba. Također ćete promijeniti nekoliko redaka koda da biste prikazali video stream pokreta i dodijelili gdje ćete poslati naredbe za upravljanje robotom.

Instalirajte Apache i Git

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

Nakon instaliranja apachea i gita preuzmite datoteke.

pi@raspberrypi: ~ $ git klon

Otvorite direktorij roombarobot.

pi@raspberrypi: ~ $ cd roombarobot

Zamijenite datoteku index.html u mapi/var/www/html s datotekom index.html u/home/pi/roombarobot

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

Uredite datoteku index.html

Otvorite datoteku index.html uređivačem teksta.

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

Pronađite ove dvije linije

var host = "ws: // VAŠA ADRESA: 9093/ws";

Promijenite "YOURIPADDRESS" na statičku IP adresu koju ste postavili u 1. koraku i spremite datoteku.

Primjer:

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

Na drugom računalu otvorite preglednik i unesite IP adresu svog Pi -a. Trebali biste vidjeti kontrolnu web stranicu s okvirom s lijeve strane, streaming videozapisa s vaše web kamere i tipke za web kontrolu s desne strane.

Korak 4: Postavljanje i testiranje koda

Postavljanje i testiranje koda
Postavljanje i testiranje koda

Ovaj kôd je napisan na pythonu i zahtijeva biblioteku tornada. Kôd koristi knjižnicu za postavljanje poslužitelja za slušanje naredbi s kontrolne web stranice putem web utičnica na portu 9093.

Instalirajte PIP i Tornado knjižnicu

Instalirajte pip

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

Instalirajte biblioteku tornada

pi@raspberrypi: ~ $ sudo pip instaliraj tornado

Pokrenite Roombabot program i testirajte vezu

Pokrenite program roombabot.py

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

Nakon pokretanja, trebali biste vidjeti "Spremno" na terminalu. Otvorite kontrolnu web stranicu u pregledniku i kliknite poveži. Zatim kliknite bilo koji gumb za usmjeravanje na stranici. Također možete koristiti tipke sa strelicama na tipkovnici.

Trebali biste vidjeti izlaz na terminalu sličan ovome.

Spreman

veza otvorena … veza otvorena … primljena: u 8 Trčanje Napredna veza otvorena … primljena: l 6 Okretanje Lijeva veza otvorena … primljeno: d 2 Pokretanje Obrnuta veza otvorena … primljeno: r 4 Okretanje udesno

Pritisnite ctrl+c da biste zaustavili program.

Nakon što završite s testiranjem napajanja Pi.

pi@raspberrypi: ~ $ sudo poweroff

Greške

Primijetio sam problem s gumbom za isključivanje na kontrolnoj web stranici. Ponekad gumb za isključivanje ne radi ništa kada se pritisne ili dodirne. Nisam uspio shvatiti što je uzrok tome, ali postoji zaobilazno rješenje. Ako želite isključiti robota, a gumb za isključivanje ne radi, ponovno učitajte stranicu, kliknite / dodirnite gumb za povezivanje, a zatim kliknite / dodirnite gumb za isključivanje. Trebalo bi se isključiti.

Korak 5: Montaža

Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština
Skupština

Kao što je već spomenuto, ne morate koristiti Roombu za ovaj projekt. Sve s dva motora, dva kotača i okvirom radilo bi. Rastavio sam Roombu i uklonio sve osim modula kotača i baterije.

Moduli kotača

Roombini kotači i motori smješteni su zajedno u uklonjivi modul. Svaki modul ima plavo vanjsko kućište koje sadrži motor, mjenjač, kotač, oprugu ovjesa i ploču za sučelje.

Ploča za sučelje

Svaka ploča sučelja ima šest žica do nje. Postoje dvije žice (crvena [+], crna [-]) koje rotiraju motor, jedna žica za podatke za Hall -ov senzor, jedna žica za prekidač prekidača kotača, jedna žica od 5 V i jedna žica GND za napajanje senzora. Morat ćete rastaviti modul za pristup ploči sučelja. Uklonio sam sve natrag u motor i lemio nove [+] i [-] žice na motor (vidi fotografije). Na vama je želite li sačuvati senzore ili ne.

Viseće opruge

Nakon što uklonite vakuumski dio, Roombina težina se skida. Ako ne uklonite opruge, Roomba će sjediti pod kutom. Prvotno sam ih uklonio, ali sam ih zatim dodao kad sam otkrio da se teško prevrće po tepihu. Vraćanje opruge riješilo je problem.

Ožičenje motora s upravljačem motora

Motori su okrenuti jedan prema drugom. To znači da će se za pokretanje Roombe u smjeru naprijed jedan motor morati okrenuti naprijed, dok će se drugi rotirati unatrag. Nisam puno razmišljao o ovome sve dok nisam sve povezao. Na kraju sam samo napisao kôd kako sam u početku ožičio motore. Ovo je bila sretna nesreća jer kad god se Raspberry Pi uključi/isključi, postoji izlaz napona na GPIO pinove. Način na koji ja povezujem stvari, Roomba se okreće sve dok se Raspberry Pi ne podigne (tridesetak sekundi) i vrti se pri isključivanju sve dok se ne isključi napajanje. Ako se poveže drugačije, potencijalno bi se premotao naprijed / natrag što bi bilo iritantno. Planiram to na kraju popraviti jednostavnim prekidačem za upravljač motora.

Ožičenje motora i baterije na upravljaču motora

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

Motor 2- - - - - - - - - - - - - - - Crna- - - - - - - - - - - - - - -Lijevi motor [-] Motor 2- - - - - - - - - - - - - - - Crveno- - - - - - - - - - - - - - - Lijevi motor [+] Motor 1- - - - - - - - - - - - - - Crno- - - - - - - - - - - - - - -Desni motor [-] Motor 1- - - - - - - - - - - - - - - - Crveno- - - - - - - - - - - - - - -Desni motor [+] GND- - - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - -Roomba baterija [-]

Ožičenje kontrolera motora na Raspberry Pi

Igle upravljačkog pina Boja žice (pogledajte fotografije) Raspberry Pi igle

GND- - - - - - - - - - - - - - - - - Crno- - - - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - - Plava - - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - Zelena- - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - Žuta - - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - - Narančasta - - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - Crvena- - - - - - - - - - - - - - - -5V

Montaža elektronike

Nema puno toga što ide na spajanje svega. Skinuo sam roombu s šasije. S uklonjenim poklopcem možete jednostavno odrezati postojeće plastične nosače i izbušiti rupe za montažu elektronike. Postoje postojeći priključci za pokretanje kabela s motora. Ako koristite zalihu Roomba baterije, već postoji izrez za pristup terminalima baterije.

Baterije

Koristio sam zasebne baterije za Raspberry Pi i motorni kontroler. Pi -jeva baterija je samo 5V baterija koja se koristi za pojačavanje mobitela. Za upravljač motorom koristio sam originalnu Roomba bateriju koja je isporučena s njim. Stezaljke akumulatora nisu označene, pa je najbolje provjeriti napon voltmetrom prije nego što ga priključite na regulator motora. Za pričvršćivanje žica na bateriju Roomba upotrijebio sam četiri neodimijska magneta (vidi fotografije). Lemio sam dva magneta na žice, a druga dva zalijepio za kontakte baterije. Lemljenjem magneti se demagnetiziraju. Međutim, premaz izvana i dalje se može pričvrstiti na magnete na stezaljkama i provoditi električnu struju. Time spajanje i odvajanje baterije postaje dio kolača.

Testiranje

Nakon što sve spojite, provjerite jeste li sve ispravno ožičili, naslonite robota na nešto (da se ne otkotrlja) i uključite ga.

Prijavite se i pokrenite program roombabot.py

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

Idite na web kontrolnu stranicu i isprobajte je. Ako je sve ispravno ožičeno, kotači bi se trebali rotirati u odgovarajućem smjeru kada se pritisnu gumbi / pritisnu tipke sa strelicama (ne zaboravite kliknuti spojiti).

Korak 6: Pokretanje Python koda pri pokretanju / dovršavanju

Pokretanje Python koda pri pokretanju / dovršavanju
Pokretanje Python koda pri pokretanju / dovršavanju
Pokretanje Python koda pri pokretanju / dovršavanju
Pokretanje Python koda pri pokretanju / dovršavanju

Posljednje što moramo učiniti je reći Raspbian -u da pokrene program python pri pokretanju. Da bismo to učinili, napravit ćemo skriptu i zakazati njeno pokretanje pri ponovnom pokretanju pomoću crontaba.

Napravite skriptu

Kreirajte novu datoteku skripte pod nazivom startrobot.sh u korisničkom imeniku pi

pi@raspberrypi: ~ $ sudo nano startrobot.sh

Kopirajte sljedeće retke u datoteku

#!/bin/sh

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

Spremite datoteku i izađite

Učinite datoteku startrobot.sh izvršnom

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

Isprobajte (pritisnite ctrl + c za zaustavljanje)

pi@raspberrypi: ~ $ sh startrobot.sh

Uredite datoteku crontab

pi@raspberrypi: ~ $ sudo crontab -e

Dodajte sljedeći redak na dno datoteke

# m h dom mon dolje naredba

@reboot sh /home/pi/startrobot.sh

Spremi i izađi

Program roombabot.py sada bi se trebao pokrenuti kada se Pi ponovno pokrene ili uključi ciklus napajanja.

Završavanje

U ovom trenutku trebali biste imati funkcionalnog robota kojim možete upravljati pomoću preglednika s bilo kojeg uređaja na vašoj mreži. Otišao sam malo dalje od izvorne izgradnje i postavljanja VPN -a kako bi mogao pristupiti robotu kad sam od kuće. Namjeravam napraviti neke dodatne promjene u budućnosti. Planiram ga učiniti autonomnim i eventualno pratiti kretanje dok ću i dalje moći preuzimati kontrole kada to želim.

Preporučeni: