Kazalo:

Zgradite svojega robotsko pretočnega videa, ki ga nadzira internet, z Arduinom in Raspberry Pi: 15 korakov (s slikami)
Zgradite svojega robotsko pretočnega videa, ki ga nadzira internet, z Arduinom in Raspberry Pi: 15 korakov (s slikami)

Video: Zgradite svojega robotsko pretočnega videa, ki ga nadzira internet, z Arduinom in Raspberry Pi: 15 korakov (s slikami)

Video: Zgradite svojega robotsko pretočnega videa, ki ga nadzira internet, z Arduinom in Raspberry Pi: 15 korakov (s slikami)
Video: Объяснение Робокопа Фрэнка Миллерса — Продолжение Бе... 2024, Julij
Anonim
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet
Z Arduinom in Raspberry Pi sestavite svojega robotsko pretočnega videa, ki ga nadzira internet

Sem @RedPhantom (znan tudi kot LiquidCrystalDisplay / Itay), 14 -letni dijak iz Izraela, ki se uči na srednji šoli za napredne znanosti in matematiko Max Shein. Ta projekt pripravljam za vsakogar, od katerega se lahko učijo in delijo!

Morda ste si mislili: hmm … jaz sem geek … In moji otroci želijo, da z njimi naredim projekt … Želel je zgraditi robota. Želela ga je obleči v malega psička. To je dober vikend projekt!

Raspberry Pi je kot nalašč za vsako uporabo: danes bomo razkrili sposobnosti tega mikro računalnika, da naredi robota. Ta robot lahko:

  • Vozite se in upravljajte prek LAN -a (WiFi) s katerim koli računalnikom, ki je povezan z istim omrežjem WiFi kot Raspberry Pi.
  • Pretočno predvajajte video v živo z modulom kamere Raspberry Pi
  • Pošljite podatke senzorja z uporabo Arduina

Če želite videti, kaj potrebujete za ta lep projekt svetlobe, preberite naslednji korak (opozorila) in nato korak Wanted: Components.

Tukaj je repo GitHub: GITHUB REPO ME

Tukaj je spletno mesto projekta: PROJEKTNO MESTO MENE

1. korak: Opozorilo: Previdno poskusite to doma

POZOR:

AUTOR TEGA VODIČA PREDSTAVLJA, DA IMATE DOVOLJNO ZNANJE O ELEKTRIČNI ENERGIJI IN OSNOVNEM DELOVANJU ELEKTRIČNE OPREME. Če niste previdni in ne upoštevate navodil v tem VODNIKU, LAHKO: POŠKODITE ELEKTRONSKO OPREMO, OGORITE SE ALI POVZROČITE POŽAR. Prosimo, bodite previdni in uporabite zdravo pamet. Če nimate znanja, ki je potrebno za to vadnico (spajkanje, osnove elektronike), prosimo, da to storite s posameznikom, ki ga pozna. Hvala vam.

TA NAVODILNI ODGOVOR ODSTRANI SAMO SAMO ODGOVORNOST ZA POŠKODBO, KI JE POVZROČILA ALI IZGUBILA LASTNOST ALI FIZIKALNO ŠKODO. UPORABI SKUPNI SMISL

Korak: Komponente

Povezave
Povezave
Povezave
Povezave
Povezave
Povezave
Povezave
Povezave

Preden segrejemo spajkalnik, moramo preučiti, kaj naj bo s čim povezano. Naredil sem ta preprost diagram (MS Paint me nikoli ne pusti na cedilu), ki opisuje, kje se določeni del nahaja znotraj robota.

Slika je zgrajena tako, da jo lahko povečate in si ogledate v polni ločljivosti ter preberete besedilo.

6. korak: Naslov za Pi

Arduino se pogovarja s Pi po načrtu. In Pi se pogovarja z računalnikom, kako torej vse to deluje?

Oglejmo si zaporedje zagona povezave:

  1. Začne se Raspberry Pi
  2. Arduino se zažene
  3. Raspberry Pi zažene odjemalca TCP. Svoj naslov IP izstreli prek LED.
  4. Raspberry Pi zažene serijsko komunikacijsko storitev in se poveže z Arduinom

Zato smo vzpostavili nekakšno komunikacijo:

Računalniški Raspberry Pi Arduino

Za pisanje programa, ki se pogovarja z Raspberry Pi in Python za pisanje protokola Arduino/Raspberry Pi, sem uporabil Visual Basic. NET (Microsoft Visual Studio 2013 Community).

Če želite poznati svoj naslov IP IP, ga morate povezati z zaslonom HDMI, se prijaviti v lupino in vnesti ukaz:

ime gostitelja -I

7. korak: Načrt

Zdaj, ko imamo Pi -jev naslov IP, bomo vanj vnesli SSH (SSH je Secure Shell - na daljavo se povežemo z lupino Linux) in napisali datoteko, ki prikazuje naslov IP strežnika. Pi, ob zagonu, bo to tudi storil in zapisal vrata, ki jih posluša. Tukaj bom navedel le nekaj primerov iz kode, vendar je na voljo za prenos s tega koraka in iz podružnice GitHub, ki sem jo ustvaril. Podrobnosti o tem kasneje.

Deluje takole:

  1. RPi se zažene.
  2. RPi zažene program Tcp na svojem lokalnem IP -ju in določenih vratih.
  3. RPI začne pretakati video
  4. RPI se izklopi.

Korak 8: Prehod na fizično

Zdaj smo pripravljeni fizično zgraditi celoto. Če niste prebrali 1. koraka (opozorilno besedilo in licenciranje), to storite, preden nadaljujete. Ne odgovarjam za povzročeno škodo. V primeru dvoma tega robota ne smete uporabljati v vojaške namene, razen če je to zombi apokalipsa. In tudi takrat uporabite zdravo pamet.

Predlagamo, da preberete navodila, ki jih poslušate na seznamu za branje.

Prenesite shemo povezave iz koraka "Povezave".

MOTORJI

Motorji, ki ste jih kupili, najbrž izgledajo takole in v redu so, če jih nimajo: če imajo samo dve žici (v večini primerov črno in rdeče), bi moral delovati. Poiščite njihov podatkovni list na spletu, da vidite njihovo delovno napetost in tok. V komentarjih lahko postavite vprašanja. Vedno jih berem.

H-MOST

Nikoli prej nisem delal s H-Bridgeom. Malo sem googlal in našel dobro navodilo, ki razlaga načela HB. Ogledate si lahko tudi tam (glejte korak bralnega seznama) in priključite tudi svojega. Ne bom veliko razlagal. Tam lahko preberete in veste vse, kar morate o tem vezju.

LED

Ta majhna svetilka lahko deluje od logične napetosti samo zato, ker skoraj ne potrebuje toka, in napetosti 3V-5V 4mA-18mA. Neobvezno.

ARDUINO

Arduino bo prejemal signale in ukaze prek serijske povezave iz Raspberry Pi. Za krmiljenje motorjev uporabljamo Arduino, ker Raspberry Pi ne more oddajati analognih vrednosti prek GPIO.

9. korak: Samodejni zagon Raspberry Pi

Vsakič, ko vklopite Raspberry Pi, boste morali vnesti uporabniško ime in geslo. Tega ne želimo storiti, ker včasih preprosto ne moremo povezati tipkovnice s Pi, zato bomo sledili tem korakom iz te vadnice za samodejni zagon programa, ki pripravlja Pi. Če se bo držalo v zanki, lahko vedno prekinemo Ctrl+C, da ga prekinemo.

  • sudo crontab -e
  • Nato bomo v upravitelju cron vnesli ukaz, ki to datoteko doda samodejnemu zagonu.

Poklicali bomo datoteko pibot.sh, ki bo podala ukaze za zagon vseh vrst skriptov python za upravljanje robota. Pa pojdimo na to: (Uporabili smo programe za zavese Python, ki programu omogočajo dostop do GPIO)

raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv tok: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

Koda, ki opravi vse delo na strani pi, se bo imenovala upon_startup.sh.

To je preprost skript lupine, ki izvaja vse.

10. korak: Houeston, imeli smo težavo … Enosmerni motorji niso isti model

H-Bridge sem že preizkusil in deluje v redu, toda ko sem priklopil motorje, ki sem jih dobil z robotske platforme, sem na spletu naročil, da se ta dva motorja obračata pri različnih hitrostih in oddajata različne zvoke. Na motorjih sem zamenjal plin na 100%. Oba nista mogla teči po svojih največjih zmogljivostih.

Zdi se, da gre za dva različna motorja. Eden ima večji navor, ki je odličen za tovrstnega robota, drugi pa ga preprosto ne premakne. Tako se obrača v krogih.

Na tej točki imam, da serijski program na Arduinu deluje popolnoma v redu, vendar strežnik Tcp v računalniku in odjemalec Tcp na Pi še nista kodirana. Takoj moram izpolniti ta prispevek za natečaj. Kaj naj naredim?

  1. Najprej trikrat povečam napetost motorjev. Na podatkovnem listu je zapisano, da jih 3V, 6V niso premaknile. Takrat je 9V. Vzporedno sem priključil teo baterije za podvojitev toka in napetost ostaja enaka.
  2. Ali imam druge motorje, ki se prilegajo nosilcu na ploščadi? Mogoče vidim, če sta podobna modela.
  3. Lahko zamenjam Servo, če je čokolada res zadela oboževalca.

Šola se je začela. Moral bom videti, kaj storiti.

Opomba: Zakaj zaboga pišem težave, s katerimi se tu srečujem? Torej, če ste manj izkušeni in imate enake težave, boste vedeli, kaj morate storiti.

Rešitev:

Zato sem naredil še en test. Razliko v hitrosti sem prilagodil v kodi Arduino.

OPOMBA: motorji se vam lahko vrtijo pri različnih hitrostih! Spremenite vrednosti v skici Arduino.

11. korak: [TCP]: Zakaj Tcp in ne Secure Shell? Kaj je TCP?

Imam dve razlagi, zakaj za PC uporabljate Tcp in ne SSH. - Pi komunikacija.

  1. Prvič, SSH (Secure Shell, glej pojasnila) je namenjen izvajanju ukazov iz oddaljenega računalnika. Težje je, da se Pi odzove z informacijami, ki jih želimo, saj je naša edina možnost za analizo podatkov trda in dolgočasna obdelava nizov.
  2. Drugič, že znamo uporabljati SSH in v tej vadnici želimo izvedeti več načinov komunikacije med napravami.

TCP ali protokol za nadzor prenosa je osrednji protokol zbirke internetnih protokolov. Izvira iz začetne implementacije omrežja, v kateri je dopolnjeval internetni protokol (IP). Zato se celoten paket običajno imenuje TCP/IP. TCP zagotavlja zanesljivo, urejeno in preverjeno napako dostavo toka oktetov med aplikacijami, ki se izvajajo na gostiteljih in komunicirajo prek omrežja IP.

(Iz Wikipedije)

Prednosti TCP so torej:

  • Varno
  • Hitro
  • Deluje kjer koli v omrežju
  • Zagotavlja metode za preverjanje pravilnega prenosa podatkov
  • Nadzor pretoka: ima zaščito, če pošiljatelj podatkov pošlje podatke prehitro, da bi jih stranka lahko registrirala in obdelala.

In slabosti so:

  • V protokolu TCP ne morete oddajati (pošiljati podatkov v vse naprave v omrežju) in pošiljati več sporočil (enako, vendar malo drugače- daje možnost, da vsaka naprava oddaja kot strežnik).
  • Napake v knjižnicah vašega programa in operacijskega sistema (ki same upravljajo komunikacijo TCP, vaš usmerjevalnik ne naredi skoraj nič drugega kot poveže dve (ali več) napravi)

Zakaj ne bi uporabili UDP, se boste morda vprašali? No, za razliko od TCP, UDP ne zagotovi, da vaša stranka prejme podatke, preden pošlje več. Kot da pošljete e -pošto in ne veste, ali jo stranka prejme. Poleg tega je UDP manj varen. Za več informacij preberite to objavo Stack Exchange Super User

Ta članek je dober in priporočljiv.

12. korak: [TCP]: Naredimo stranko

Odjemalec (v našem primeru Raspberry Pi), ki prejme podatke s strežnika (v našem primeru naš računalnik), bo dobil podatke za pošiljanje na Pi (serijski ukazi, ki se bodo izvajali na Arduinu) in prejemal nazaj podatke (odčitki senzorjev in povratne informacije neposredno iz Arduina. Priložena shema prikazuje odnos med tremi.

Članek Python Wiki TcpCommunication kaže, da je tako preprosto vzpostaviti takšno komunikacijo z nekaj vrsticami kode z vgrajenim modulom vtičnice. Imeli bomo program na osebnem računalniku in drug program na Pi.

Delali bomo s prekinitvami. Več o njih v razlagi. Preberite tudi o vmesnih pomnilnikih. Zdaj lahko preberemo podatke, ki jih imamo, z uporabo podatkov = s.recv (BUFFER_SIZE), vendar bo to število znakov, ki smo jih določili s praznimi ugrizi. Ali lahko uporabimo prekinitve? Še eno vprašanje: ali bo medpomnilnik prazen ali bo čakal, da strežnik pošlje več podatkov, v tem primeru bo strežnik/odjemalec vrgel izjemo časovne omejitve?

Lotimo se tega naenkrat. Preden smo to storili, sem poiskal ta članek v Wikipediji, ki navaja uporabljena vrata TCP in UDP. Po kratkem pregledu sem se odločil, da bo ta projekt komuniciral na vratih 12298, ker ga operacijski sistem in lokalne storitve ne uporabljajo.

Korak: Preizkusite naše sporočilo Tcp

Če želimo preveriti, ali lahko uporabimo prekinitve, naredimo preprostega odjemalca in strežnik z ukazno vrstico Python. To bom storil v naslednjih korakih:

  1. Zaženite program, ki pošilja besedilo prek Tcp v zanki skozi vrata za zavese
  2. Zaženite drug program (vzporedno), ki bere vse besedilo v zanki in ga natisne na zaslon.

Prikazani bodo samo segmenti programa. Vsi programi, ki se izvajajo s Pythonom 3. Vsi ti programi omogočajo pošiljanje serijskega ukaza s tipkovnice uporabnika osebnega računalnika v Arduino prek Pi.

  • SBcontrolPC.py - Zažene se v računalniku. Zažene povezavo TCP na lokalnem naslovu in na določenih vratih (uporabljam vrata 12298, glej prejšnji korak zakaj)
  • SBcontrolPi.py - Zažene se na Pi. Vsakih pol sekunde (0,5 sekunde) bere svoj medpomnilnik. Zažene lupinski skript, ki upravlja stvari, kot je pretakanje video posnetkov itd.

Priporočena: