Sadržaj:
- Korak 1: Upozorenje: Budite oprezni pokušavajući ovo kod kuće
- Korak 2: Komponente
- Korak 6: Adresa za Pi
- Korak 7: Plan
- Korak 8: Prelazak na fizičko
- Korak 9: Automatsko pokretanje Raspberry Pi
- Korak 10: Houeston, imali smo problem … DC motori nisu isti model
- Korak 11: [TCP]: Zašto Tcp, a ne sigurna ljuska? Šta je TCP?
- Korak 12: [TCP]: Omogućavamo da postanete klijent
- Korak 13: Isprobajte naše Tcp poruke
Video: Napravite svog robota za video streaming koji kontrolira internet s Arduinom i Raspberry Pi: 15 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Ja sam @RedPhantom (zvani LiquidCrystalDisplay / Itay), 14 -godišnji učenik iz Izraela koji uči u Srednjoj školi za napredne nauke i matematiku Max Shein. Pravim ovaj projekt za svakoga od koga mogu učiti i dijeliti ga!
Možda ste pomislili: hmm … ja sam štreber … I moja djeca žele da napravim projekt s njima … Htio je izgraditi robota. Htjela je to obući kao malo štene. To je dobar vikend projekat!
Raspberry Pi je savršen za svaku upotrebu: danas ćemo pokazati sposobnosti ovog mikroračunara da napravi robota. Ovaj robot može:
- Vozite se i kontrolirajte putem LAN -a (WiFi -a) pomoću bilo kojeg računara spojenog na istu WiFi mrežu kao i Raspberry Pi.
- Prijenos video zapisa uživo pomoću Raspberry Pi modula kamere
- Pošaljite podatke senzora pomoću Arduina
Da vidite što vam je potrebno za ovaj lijepi lagani projekt, samo pročitajte sljedeći korak (upozorenja), a nakon toga korak Wanted: Components.
Evo repo GitHub -a: GITHUB REPO MENE
Evo stranice projekta: PROJEKTNO MJESTO JA
Korak 1: Upozorenje: Budite oprezni pokušavajući ovo kod kuće
OPREZ:
AUTOR OVOG VODIČA PRETPOSTAVLJA DA IMATE DOVOLJNA ZNANJA O ELEKTRIČNOJ ENERGIJI I OSNOVNOM RADU ELEKTRIČNE OPREME. Ako niste oprezni i ne slijedite upute u ovom vodiču, MOŽETE: OŠTEĆITI ELEKTRONSKU OPREMU, SPALITI SE ILI IZAZOVATI POŽAR. Budite oprezni i koristite zdrav razum. Ako nemate potrebno znanje za ovaj vodič (lemljenje, osnove elektronike), molimo vas da to učinite s osobom koja to zna. Hvala ti.
OVAJ UPUTSTVENI AUTOR UKLANJA SAMU SVOJU ODGOVORNOST ZA OŠTEĆENJA NAZROČENA ILI IZGUBLJENA IMOVINA ILI FIZIČKA OŠTEĆENJA. UPOTREBITE ZAJEDNIČKI RAZUM
Korak 2: Komponente
Prije nego zagrijemo lemilicu, moramo provjeriti šta bi trebalo biti povezano s čim. Napravio sam ovaj jednostavan grafikon (MS Paint me nikada ne iznevjerava) koji opisuje gdje se određeni dio nalazi unutar robota.
Slika je napravljena tako da možete zumirati i vidjeti u punoj rezoluciji i pročitati tekst.
Korak 6: Adresa za Pi
Arduino razgovara s Pi -jem prema planu. I Pi razgovara s računarom, pa kako sve ovo funkcionira?
Pogledajmo našu sekvencu pokretanja veze:
- Raspberry Pi počinje
- Arduino počinje
- Raspberry Pi pokreće TCP klijent. Svoju IP adresu izbacuje preko LED diode.
- Raspberry Pi pokreće Serijsku komunikacijsku uslugu i povezuje se s Arduinom
Stoga smo uspostavili neku vrstu komunikacije:
Računalo Raspberry Pi Arduino
Koristio sam Visual Basic. NET (Microsoft Visual Studio 2013 zajednica) za pisanje programa koji razgovara sa Raspberry Pi i Python za pisanje Arduino/Raspberry Pi protokola.
Sve što trebate učiniti da znate svoju Pi IP adresu je da je povežete na HDMI ekran, prijavite se na Shell i upišete naredbu:
hostname -I
Korak 7: Plan
Sada kada imamo Pi -jevu IP adresu, u nju ćemo ubaciti SSH (SSH je Secure Shell - daljinski se povezujemo na Linux ljusku) i napisati datoteku koja prikazuje IP adresu servera. Pi, pri pokretanju će to isto učiniti i napisati port koji sluša. Ovdje ću navesti samo nekoliko primjera iz koda, ali je dostupan za preuzimanje iz ovog koraka i iz grane GitHub -a koju sam stvorio. Detalji o tome kasnije.
Radi ovako:
- RPi se pokreće.
- RPi pokreće Tcp program na svom lokalnom IP -u i na određenom portu.
- RPI počinje strujati video zapise
- RPI se isključuje.
Korak 8: Prelazak na fizičko
Sada smo spremni fizički izgraditi cijelu stvar. Ako niste pročitali korak 1 (tekst upozorenja i licenciranje), učinite to prije nastavka. Ne snosim odgovornost za nastalu štetu. A u slučaju sumnje, ovaj se robot ne smije koristiti u vojne svrhe, osim ako se ne radi o zombi apokalipsi. Pa čak i tada koristite zdrav razum.
Predlaže se da pročitate uputstva koja slušate na spisku za čitanje.
Preuzmite shemu povezivanja iz koraka "Veze".
MOTORI
Motori koje ste kupili vjerojatno izgledaju ovako, i u redu je ako nemaju: ako imaju samo dvije žice (u većini slučajeva crnu i crvenu), trebao bi raditi. Potražite njihov tehnički list na mreži da vidite njihov radni napon i struju. Slobodno postavljajte pitanja u odjeljku za komentare. Uvijek ih čitam.
H-MOST
Nikada prije nisam radio sa H-Bridgeom. Malo sam proguglao i našao dobro uputstvo koje objašnjava principe HB -a. Možete pogledati i tamo (pogledajte korak Spisak za čitanje) i zakačiti svoju. Neću puno objašnjavati. Tamo možete čitati i znati sve što trebate o ovom krugu.
LED
Ova mala žarulja može raditi od logičkog napona samo zato što ne zahtijeva gotovo nikakvu struju, a napon je 3V-5V 4mA-18mA. Opcionalno.
ARDUINO
Arduino će primati signale i naredbe putem serijske veze od Raspberry Pi. Arduino koristimo za upravljanje motorima jer Raspberry Pi ne može izlaziti analogne vrijednosti putem GPIO -a.
Korak 9: Automatsko pokretanje Raspberry Pi
Svaki put kada uključite Raspberry Pi, morat ćete upisati korisničko ime i lozinku. Ne želimo to učiniti jer ponekad jednostavno ne možemo spojiti tipkovnicu na Pi, pa ćemo slijediti ove korake iz ovog vodiča za automatsko pokretanje programa koji priprema Pi. Ako će se držati u petlji, uvijek možemo pritisnuti Ctrl+C da je prekinemo.
- sudo crontab -e
- Zatim ćemo unijeti naredbu koja dodaje tu datoteku za automatsko pokretanje u cron manageru.
Pozvat ćemo datoteku pibot.sh koja će davati naredbe za pokretanje svih vrsta python skripti za rad robota. Prijeđimo na to: (Sudo smo sa Python programima sa zavjesama kako bismo omogućili programu pristup GPIO -u)
raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv tok: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264
Kod koji obavlja sav posao na strani pi će se zvati upon_startup.sh.
To je jednostavna ljuska skripta koja pokreće sve.
Korak 10: Houeston, imali smo problem … DC motori nisu isti model
Već sam testirao H-Bridge i radi dobro, ali kad sam spojio motore koje sam dobio s robotske platforme, naručio sam na internetu ta dva motora se okreću različitim brzinama i proizvode različite zvukove. Promijenio sam gas na 100% na motorima. Oboje nisu mogli trčati maksimalno.
Čini se da se radi o dva različita motora. Jedan ima veći okretni moment što je odlično za ovu vrstu robota, ali drugi jednostavno ne bi pomaknuo robota. Tako se okreće u krug.
U ovom trenutku, ono što imam je da serijski program na Arduinu radi potpuno u redu, ali Tcp server na računaru i Tcp klijent na Pi još nisu kodirani. Moram popuniti ovaj unos za takmičenje. Šta da radim?
- Prvo, utrostručim napon motora. U podatkovnom listu je navedeno da ih 3V, 6V nisu pomicale. Onda je 9V. Paralelno sam spojio teo baterije kako bih udvostručio struju, a napon ostaje isti.
- Da li imam druge motore koji odgovaraju montaži na platformi? Možda mogu vidjeti jesu li slični modeli.
- Mogu zamijeniti Servos ako je čokolada zaista pogodila obožavatelje.
Škola je počela. Moram vidjeti šta da radim.
Napomena: Zašto, zaboga, pišem probleme na koje nailazim ovdje? Dakle, ako ste manje iskusni i imate iste probleme, znat ćete što trebate učiniti.
Rjesenje:
Zato sam napravio još jedan test. Prilagodio sam razliku u brzini u Arduino kodu.
NAPOMENA: motori se za vas mogu vrtjeti različitim brzinama! Promijenite vrijednosti na Arduino skici.
Korak 11: [TCP]: Zašto Tcp, a ne sigurna ljuska? Šta je TCP?
Imam dva objašnjenja zašto koristiti Tcp, a ne SSH za P. C. - Pi komunikacija.
- Prvo, SSH (Secure Shell, vidi Objašnjenja) ima za cilj pokretanje naredbi s udaljenog računara. Teže je natjerati Pi da odgovori informacijama koje želimo jer je naša jedina mogućnost analize podataka teška i dosadna obrada nizova.
- Drugo, već znamo kako koristiti SSH i želimo naučiti više načina komunikacije između uređaja u ovom vodiču.
TCP ili Transmission Control Protocol je osnovni protokol paketa Internet Protocol Suite. Nastao je u početnoj implementaciji mreže u kojoj je nadopunio Internet protokol (IP). Stoga se cijeli paket obično naziva TCP/IP. TCP pruža pouzdanu, naručenu i provjerenu grešku isporuku toka okteta između aplikacija koje rade na hostovima koje komuniciraju putem IP mreže.
(Iz Wikipedije)
Dakle, TCP profesionalci su:
- Secure
- Brzo
- Radi bilo gdje na mreži
- Pruža metode za provjeru ispravnog prijenosa podataka
- Kontrola protoka: ima zaštitu u slučaju da pošiljatelj podataka šalje podatke prebrzo da bi ih klijent registrirao i obradio.
A nedostaci su:
- U TCP-u ne možete emitirati (slati podatke na sve uređaje na mreži) i multicast (isto, ali malo drugačije- daje mogućnost svakom uređaju da emituje kao server).
- Greške u vašim bibliotekama programa i operativnih sistema (koje same upravljaju TCP komunikacijom, vaš usmjerivač ne radi gotovo ništa osim povezivanja dva [ili više] uređaja)
Zašto ne biste koristili UDP, možda ćete se upitati? Pa, za razliku od TCP -a, UDP ne osigurava da vaš klijent dobije podatke prije nego što pošalje više. Kao slanje e -pošte i neznanje da li je klijent prima. Osim toga, UDP je manje siguran. Za više informacija pročitajte ovaj post od Stack Exchange Super User
Ovaj članak je dobar i preporučljiv.
Korak 12: [TCP]: Omogućavamo da postanete klijent
Klijent (u našem slučaju Raspberry Pi), koji prima podatke sa servera (naš računar u našem slučaju), dobit će podatke za slanje na Pi (serijske naredbe koje će se izvoditi na Arduinu) i primiti podatke nazad (očitavanja senzora) i povratne informacije izravno s Arduina. Priložena shema prikazuje odnos između ova tri.
Članak Python Wiki TcpCommunication pokazuje da je tako jednostavno uspostaviti takvu komunikaciju s nekoliko redaka koda pomoću ugrađenog modula utičnice. Imaćemo program na računaru i drugi program na Pi -u.
Radit ćemo s prekidima. Saznajte više u koraku s objašnjenjima o njima. Pročitajte i o međuspremnicima. Sada možemo pročitati podatke koje imamo koristeći data = s.recv (BUFFER_SIZE), ali to će biti koliko smo znakova definirali praznim zalogajima. Možemo li koristiti prekide? Još jedno pitanje: hoće li bafer biti prazan ili će čekati da poslužitelj pošalje više podataka, u tom slučaju poslužitelj/klijent će izbaciti iznimku timeout -a?
Rješavajmo to jedno po jedno. Prije nego što smo to učinili, pregledao sam ovaj članak na Wikipediji u kojem su navedeni korišteni TCP i UDP portovi. Nakon kratkog pregleda odlučio sam da će ovaj projekt komunicirati na portu 12298 jer ga ne koriste operativni sistem i lokalne usluge.
Korak 13: Isprobajte naše Tcp poruke
Da bismo vidjeli možemo li koristiti prekide, napravimo jednostavnog klijenta i poslužitelj pomoću Python naredbene linije. To ću učiniti u sljedećim koracima:
- Pokrenite program koji šalje tekst putem Tcp -a u petlji kroz port zavjese
- Pokrenite drugi program (paralelno) koji čita čitav tekst u petlji i ispisuje ga na ekranu.
Prikazat će se samo segmenti programa. Svi programi pokrenuti s Pythonom 3. Sve što ovi programi rade je slanje serijske naredbe s tipkovnice korisnika računala na Arduino putem Pi -a.
- SBcontrolPC.py - Pokreće se na računaru. Pokreće TCP vezu na lokalnoj adresi i na navedenom portu (koristim port 12298, pogledajte prethodni korak zašto)
- SBcontrolPi.py - Pokreće se na Pi. Očitava svoj međuspremnik svakih pola sekunde (0,5 sekundi). Pokreće shell skriptu koja upravlja stvarima kao što su video streaming itd.
Preporučuje se:
Kako napraviti WiFi sistem koji kontrolira osvjetljenje i grijanje vašeg akvarija: 5 koraka
Kako napraviti Wifi sistem koji kontrolira osvjetljenje i grijanje vašeg akvarija: šta radi? Sistem koji automatski uključuje / isključuje vaš akvarijum prema rasporedu ili ručno pritiskom na dugme ili zahtjevom za internet. Sistem koji prati temperaturu vode i šalje e -poštu i upozorenja u slučaju isključenosti ispod
Napravite robota koji izbjegava zid!: 6 koraka (sa slikama)
Napravite robota koji izbjegava zid !: Cilj: Stvoriti od nule radnog robota koji može izbjeći zidove i prepreke. Jeste li ikada željeli napraviti robota koji bi zaista mogao nešto učiniti, ali nikada niste imali vremena ili znanja za to? Ne bojte se više, ovo uputstvo je samo za vas
Napravite ogroman poster za štampanje od svog albuma ITunes albuma!: 7 koraka (sa slikama)
Napravite ogroman poster za štampanje od svog albuma ITunes albuma!: Ovo je uputstvo koje opisuje kako da glomazno izvezete postojeći iTunes omot albuma i rasporedite sve omote u ogromnu mrežu, ostavljajući vam golemu, šarenu i živahnu mešavinu popularne kulture za štampanje i, možda
Kako izgraditi svog prvog robota (85 USD): 21 korak (sa slikama)
Kako izgraditi svog prvog robota (85 USD): Uradio sam novu i ažuriranu verziju ovoga. MOLIMO, NAĐITE OVDJE https://www.instructables.com/id/How-to-make-your-first-robot-an-actual-programma/ **************** ************************************************ ************** Ažuriranje: Nekim 1
Napravite vrlo malog robota: Napravite najmanji robot na točkovima na svijetu sa hvataljkom .: 9 koraka (sa slikama)
Napravite vrlo malog robota: Napravite najmanjeg robota na točkovima na svijetu sa hvataljkom.: Izgradite robota od 1/20 kubnih inča sa hvataljkom koja može pokupiti i pomicati male predmete. Upravlja se mikrokontrolerom Picaxe. U ovom trenutku vjerujem da je ovo možda najmanji robot na kotačima sa hvataljkom na svijetu. To će bez sumnje biti