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 sa Raspberry Pi modelom 3 A+: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Pregled
Ovaj Instructable će se fokusirati 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 da naiđem na Roombu koja ima trenutni firmver ili radnu matičnu ploču. Ili je Roomba prestara ili je Roomba mrtva. Našao sam Roombu koju sam koristio za ovaj projekt u lokalnoj kanti za jeftine trgovine za 5 USD. I dalje je imao pristojnu bateriju, ali mrtvu matičnu ploču. (Našao sam i web kameru u istoj trgovini za oko 5 USD). Sve što koristim od originalne Roombe su motori, šasija i baterija. Za ovaj projekt ne morate koristiti Roombu. Možete koristiti različite motore, kotače i šasije ako želite. Samo želim pretvoriti 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 websocket poslužitelj koji vam omogućuje da kontrolirate njihovog robota (opekarska pi platforma) iz html datoteke klijenta na drugom računaru.
Promijenio sam kôd koristeći GPIO pinove i dodao način da se Pi isključi kada se pritisne dugme / kada se pritisne taster escape u pretraživaču. Napravio sam i neke izmjene na kontrolnoj web stranici kako bih omogućio pregled toka pokreta kroz iframe, dok kontroliram robota unutar jedne stranice. Postavio sam Pi sa statičkim IP -om za hostovanje klijentske datoteke tako da se mogu povezati pomoću bilo kojeg računara ili uređaja na mojoj 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 H-Bridge upravljački program s dvostrukim motorom (Amazon Link) 22 USD
12V baterija za motore (Amazon Link) 19 USD
5V baterija za Raspberry Pi (Amazon Link) 10 USD
8GB Micro SD kartica (Amazon Link) 5 USD
Džemper ž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 radnu površinu.
Pretpostavit ću da već znate instalirati Raspbian. Ako vam je potrebna pomoć, ovdje možete pronaći vodič za Raspberry Pi Foundation.
Kada pokrenete Raspbian, prijavite se i pokrenite program raspi-config.
pi@raspberrypi: ~ $ sudo raspi-config
Postavite svoju WiFi vezu u raspi-config
Odaberite
2 Opcije mreže
Odaberite
N2 Wi-Fi
Odaberite državu, unesite svoj SSID i unesite lozinku
Postavite SSH u raspi-config
Nakon što sam napravio početnu konfiguraciju, koristio sam SSH za postavljanje svega bez glave. (Ovo možete preskočiti ako koristite monitor. Bilo mi je lakše unositi izmjene u kod bez potrebe da zaustavljam robota i priključujem ga na monitor.)
Nazad u glavni meni raspi-config
Odaberite
5 Opcije povezivanja
Odaberite
P2 SSH
Odaberite
Da
Nazad u glavnom meniju raspi-config odaberite
Potvrdite da ste povezani na svoju mrežu
pi@raspberrypi: ~ $ ifconfig
Trebali biste primiti izlaz sličan ovom. (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 emitovanje 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 greške 0 palo 0 prekoračenja 0 okvira 0 TX paketi 30530 bajtova 39740576 (37,8 MiB) TX greške 0 palo 0 prekoračenja 0 nosač 0 sudara 0
Potvrdite da možete pristupiti internetu.
pi@raspberrypi: ~ $ ping google.com
Trebali biste primiti izlaz sličan ovom.
PING google.com (216.58.194.110) 56 (84) bajtova podataka.
64 bajta iz 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 ping-a google.com --- 4 poslana paketa, 4 primljena, 0% gubitka paketa, vrijeme 3004ms rtt min/avg/max/mdev = 18.209/ 22.901/30.267/4.715 ms
Postavite statički IP
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 redove.
#interface eth0
#static ip_address = 192.168.11.13 #statički usmjerivači = 192.168.11.1 #statički serveri_ime_domena_192.168.11.1 8.8.8.8
Promijenite da odgovara vašoj mreži i uklonite # na početku svakog retka.
Primjer:
interfejs 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
Sačuvaj i izađi.
Ponovo pokrenite i povežite se na Pi putem SSH -a
pi@raspberrypi: ~ $ sudo ponovno pokretanje
Povežite se s drugog računara koristeći SSH. Korisnici Windowsa mogu koristiti PuTTY ili Windows podsistem za Linux (Windows10).
ian@računalo: ~ $ ssh [email protected]
Unesite svoju lozinku (zadana postavka je malina).
lozinka [email protected]:
Sada biste trebali biti na komandnoj liniji vašeg 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 funkcija. 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 morati ponovo pokrenuti nakon povezivanja).
pi@raspberrypi: ~ $ lsusb
Trebali biste dobiti izlaz sličan ovome. Obratite pažnju na Logitech C210.
Sabirnica 001 Uređaj 002: ID 046d: 0819 Logitech, Inc. Web kamera C210
Sabirnica 001 Uređaj 001: ID 1d6b: 0002 Osnovno čvorište Linux Foundation 2.0
Ako se kamera ne pojavi, 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 redove kako bi odgovarali dolje.
daemon on
š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 u
start_motion_daemon = da
Sačuvajte datoteku i izađite
Ponovo pokrenite sistem
pi@raspberrypi: ~ $ sudo ponovno pokretanje
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 server za robotovu kontrolnu web stranicu. Zamijenjenu Apache index.html datoteku zamijenit ćemo datotekom preuzetom s githuba. Također ćete promijeniti nekoliko redova koda za prikaz pokreta video zapisa i dodijeliti gdje poslati naredbe za kontrolu robota.
Instalirajte Apache i Git
pi@raspberrypi: ~ $ sudo apt -get install apache2 git -y
Nakon što su apache i git instalirani, preuzmite datoteke.
pi@raspberrypi: ~ $ git klon
Otvorite direktorij roombarobot.
pi@raspberrypi: ~ $ cd roombarobot
Zamijenite datoteku index.html u direktoriju/var/www/html 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čunaru otvorite pregledač 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 web kontrolne tipke s desne strane.
Korak 4: Postavljanje i testiranje koda
Ovaj kôd je napisan na pythonu i zahtijeva biblioteku tornado. Kôd koristi biblioteku za postavljanje poslužitelja za slušanje naredbi s kontrolne web stranice putem web utičnica na portu 9093.
Instalirajte PIP i Tornado biblioteku
Install pip
pi@raspberrypi: ~ $ sudo apt-get install python-pip
Instalirajte biblioteku tornado
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 koje dugme za usmjeravanje na stranici. Takođe možete koristiti tastere sa strelicama na tastaturi.
Trebali biste vidjeti izlaz na terminalu sličan ovom.
Ready
veza otvorena … veza otvorena … primljena: u 8 Trčanje Proslijeđena 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.
Kada završite s testiranjem isključite Pi.
pi@raspberrypi: ~ $ sudo poweroff
Bugs
Primijetio sam problem s gumbom za isključivanje na kontrolnoj web stranici. Ponekad dugme za isključivanje ne radi ništa kada se pritisne ili dodirne. Nisam uspio shvatiti što uzrokuje ovo, ali postoji zaobilazno rješenje. Ako želite isključiti robota, a gumb za isključivanje ne radi, ponovo učitajte stranicu, kliknite / dodirnite dugme za povezivanje, a zatim kliknite / dodirnite dugme za isključivanje. Trebalo bi da se isključi.
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 bi funkcioniralo. 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.
Interfejsna ploča
Svaka ploča sa sučeljem 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 motoru (vidi fotografije). Na vama je da li želite da sačuvate senzore ili ne.
Suspension Springs
Nakon što uklonite dio usisavača, Roombina težina se skida. Ako ne uklonite opruge, Roomba će sjediti pod kutom. Prvo sam ih uklonio, ali sam ih zatim dodao kad sam otkrio da se teško prevrće preko tepiha. Vraćanje opruge riješilo je problem.
Ožičenje motora do kontrolera motora
Motori su okrenuti jedan prema drugom. To znači da će se za kretanje Roombe u smjeru naprijed jedan motor morati rotirati naprijed, a drugi natrag. Nisam razmišljao mnogo o ovome sve dok nisam sve povezao. Na kraju sam samo napisao kod 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 pokrene (tridesetak sekundi) i vrti se pri isključivanju sve dok se napajanje ne isključi. Ako se poveže drugačije, potencijalno bi se premotao naprijed / nazad š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- - - - - - - - - - - - - - - Crn- - - - - - - - - - - - - - -Levi 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 kontrolera motora Boja žice (pogledajte fotografije) Raspberry Pi pinovi
GND- - - - - - - - - - - - - - - - - Crno- - - - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - - Plava - - - - - - - - - - - - - - -GPIO 18 DIR 2- - - - - - - - - - - - - - - - Zelena- - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - Žuto - - - - - - - - - - - - -GPIO 24 DIR 1- - - - - - - - - - - - - - - - - Narandžasta - - - - - - - - - - - - - -GPIO 25 5V - - - - - - - - - - - - - - - - - Crvena- - - - - - - - - - - - - - -5V
Montaža elektronike
Nema mnogo toga što ide u sastavljanje svega zajedno. Skinuo sam roombu sa šasije. Sa uklonjenim poklopcem možete jednostavno odrezati postojeće plastične nosače i izbušiti rupe za postavljanje 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 odvojene baterije za Raspberry Pi i kontroler motora. Pi -jeva baterija je samo 5V baterija koja se koristi za pojačavanje mobilnih telefona. Za kontroler motora koristio sam originalnu Roomba bateriju koja je isporučena s njim. Stezaljke akumulatora nisu označene, pa je najbolje provjeriti napon pomoću voltmetra prije nego što ga priključite na regulator motora. Za pričvršćivanje žica na Roomba bateriju koristio sam četiri neodimijumska magneta (pogledajte fotografije). Lemio sam dva magneta na žice, a druga dva zalijepio za kontakte baterije. Lemljenjem magneti se magnetiziraju. Međutim, premaz izvana i dalje se može pričvrstiti na magnete na stezaljkama i provoditi električnu struju. Ovo čini spajanje i isključivanje baterije komadom kolača.
Testiranje
Kad sve sjedinite, provjerite jeste li sve ispravno ožičili, podignite 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 okretati u odgovarajućem smjeru kada se pritisnu tipke / pritisnu tipke sa strelicama (ne zaboravite kliknuti na vezu).
Korak 6: Pokretanje Python koda pri pokretanju / dovršavanju
Posljednje što trebamo učiniti je reći Raspbian -u da pokrene python program pri pokretanju. Da bismo to učinili, napravit ćemo skriptu i zakazati njeno pokretanje pri ponovnom pokretanju koristeći crontab.
Kreirajte skriptu
Kreirajte novu datoteku skripte pod nazivom startrobot.sh u pi korisničkom direktoriju
pi@raspberrypi: ~ $ sudo nano startrobot.sh
Kopirajte sljedeće redove u datoteku
#!/bin/sh
#startrobot.sh cd /cd /home /pi /roombarobot sudo python roombabot.py cd /
Sačuvajte 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 red na dno datoteke
# m h dom mon naredba down
@reboot sh /home/pi/startrobot.sh
Sačuvaj i izađi
Program roombabot.py bi sada trebao početi s ponovnim pokretanjem Pi ili uključivanjem napajanja.
Finishing Up
U ovom trenutku trebali biste imati funkcionalnog robota kojim možete upravljati pomoću preglednika sa bilo kojeg uređaja na vašoj mreži. Otišao sam ovo malo dalje od izvorne izgradnje i postavljanja VPN -a kako bi mogao pristupiti robotu kad sam van kuće. Nameravam da napravim neke dodatne promene u budućnosti. Planiram da ga učinim autonomnim i vjerovatno pratim kretanje, a da i dalje mogu preuzimati kontrole kada to želim.
Preporučuje se:
ARCA (Prekrasan daljinski upravljani Android): 4 koraka (sa slikama)
ARCA (Prekrasan daljinski upravljani Android): Ova instrukcija nastala je u skladu sa zahtjevima projekta Makecourse na Univerzitetu Južne Floride (www.makecourse.com). ARCA je preslatki daljinski upravljani Android koji je nevjerojatno zabavan za izgradnju i izradu igrati sa. Kreni
Glasovno upravljani prekidač pomoću Alexa i Arduina: 10 koraka (sa slikama)
Glasovno upravljani prekidač pomoću Alexa i Arduina: Glavni cilj ovog projekta je korištenje senzora temperature za kontrolu prekidača (releja) za uključivanje ili isključivanje uređaja. Popis materijala 12V relejni modul == > 4,2 USD Arduino uno == > 8 USD DHT11 senzor temperature == > 3 USD ESP8266 Modul
Wi-Servo: Servomotori s Wi-Fi preglednikom (sa Arduino + ESP8266): 5 koraka
Wi-Servo: Servomotori s Wi-Fi preglednikom (s Arduino + ESP8266): Ova instrukcija pokazuje kako daljinski upravljati nekim servo motorima u wi-fi mreži, koristeći običan internetski preglednik (na primjer Firefox). Ovo se može koristiti u nekoliko aplikacija: igračke, roboti, bespilotne letjelice, okretanje kamere/naginjanje itd. Motori su bili
Arduino dječji monitor s preglednikom Java: 8 koraka (sa slikama)
Arduino monitor za bebe sa Java Viewer-om: Izgradite jedinicu sa više senzora zasnovanu na Arduinu da biste posmatrali uslove u prostoriji. Ova jedinica može osjetiti vlažnost, temperaturu, kretanje i zvuk. U prilogu je preglednik zasnovan na javi koji prima serijske podatke iz arduina
Kako učiniti Firefox 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 poboljšanja zbog kojih ćete se htjeti prebaciti. Ako koristite firefox, možda još niste znali za njih