Sadržaj:
- Korak 1: Instalirajte Raspbian i postavite statičku IP adresu
- Korak 2: Instalirajte i konfigurirajte Motion
- Korak 3: Instalirajte Apache i postavite web kontrolnu stranicu
- Korak 4: Postavljanje i testiranje koda
- Korak 5: Montaža
- Korak 6: Pokretanje Python koda pri pokretanju / dovršavanju
Video: Roomba Roomba upravljani preglednikom s Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:36
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
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
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
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
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
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
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:
Arduino upravljani robotski dvonožac: 13 koraka (sa slikama)
Arduino kontrolirani robotski dvonožac: Oduvijek su me zanimali roboti, osobito oni koji pokušavaju oponašati ljudske postupke. Taj me interes natjerao da pokušam dizajnirati i razviti robotskog dvonošca koji bi mogao oponašati ljudsko hodanje i trčanje. U ovom Instructable -u pokazat ću vam t
Upravljanje WiFi modelom vlakom pomoću MQTT -a: 9 koraka
Upravljanje WiFi modelom vlakom pomoću MQTT -a: Imajući stari sustav modela vlakova na TT ljestvici, imao sam ideju kako pojedinačno kontrolirati lokote. Imajući to na umu, otišao sam korak dalje i shvatio što je potrebno ne samo za kontrolu vlakova ali imati neke dodatne informacije o
Wi-Servo: Servomotori s Wi-Fi preglednikom (s Arduino + ESP8266): 5 koraka
Wi-Servo: Servomotori s Wi-Fi preglednikom (s Arduino + ESP8266): Ova uputa pokazuje kako daljinski upravljati nekim servo motorima u wi-fi mreži, koristeći obični internetski preglednik (na primjer Firefox). To se može koristiti u nekoliko aplikacija: igračke, roboti, bespilotne letjelice, okretanje/naginjanje kamere itd. Motori su bili
Arduino dječji monitor s preglednikom Java: 8 koraka (sa slikama)
Arduino dječji monitor s preglednikom Java: Izgradite jedinicu s više senzora zasnovanu na Arduinu kako biste promatrali stanje u prostoriji. Ova jedinica može osjetiti vlažnost, temperaturu, kretanje i zvuk. U privitku je preglednik temeljen na javi koji prima serijske podatke iz arduina
Kako Firefox učiniti najkorisnijim web preglednikom koji postoji: 8 koraka
Kako Firefox učiniti najkorisnijim web preglednikom koji postoji: Ako već niste uvjereni da je firefox bolji od svega, evo nekoliko savjeta i ugađanja zbog kojih ćete se htjeti prebaciti. Ako koristite firefox, možda još niste znali za njih