Sisällysluettelo:

Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla: 15 vaihetta (kuvilla)
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla: 15 vaihetta (kuvilla)

Video: Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla: 15 vaihetta (kuvilla)

Video: Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla: 15 vaihetta (kuvilla)
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, Marraskuu
Anonim
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla
Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla

Olen @RedPhantom (alias LiquidCrystalDisplay / Itay), 14 -vuotias israelilainen opiskelija, joka oppii Max Shein Junior High School for Advanced Science and Mathematics -koulussa. Teen tämän projektin kaikille oppia ja jakaa!

Olet ehkä ajatellut itsellesi: hmm … olen nörtti… Ja lapseni haluavat minun tekevän heidän kanssaan projektin… Hän halusi rakentaa robotin. Hän halusi pukea sen kuin pieni pentu. Tää on hyvä viikonloppu projekti!

Raspberry Pi on täydellinen jokaiseen käyttöön: tänään paljastamme tämän mikrotietokoneen kyvyn tehdä robotti. Tämä robotti voi:

  • Aja ympäriinsä ja ole ohjattavissa lähiverkon (WiFi) kautta millä tahansa tietokoneella, joka on liitetty samaan WiFi -verkkoon kuin Raspberry Pi.
  • Striimaa videota livenä Raspberry Pi -kameramoduulin avulla
  • Lähetä anturitietoja Arduinon avulla

Nähdäksesi mitä tarvitset tähän mukavaan valoprojektiin, lue vain seuraava vaihe (varoitukset) ja sen jälkeen Wanted: Components -vaihe.

Tässä on GitHub -repo: GITHUB REPO BY ME

Tässä on projektisivusto: PROJECT SITE BY

Vaihe 1: Varoitus: Ole varovainen yrittäessäsi tätä kotona

HUOMIO:

TÄMÄN OHJEELLISEN TEKIJÄN EHDOTUKSEN, ETTÄ SINULLA ON TIETOJA SÄHKÖSTÄ JA SÄHKÖLAITTEIDEN PERUSKÄYTTÖSTÄ. JOS ET OLE VAROVAINEN JA ÄLÄ NOUDATA TÄMÄN OHJEEN OHJEITA, VOIT VAHVASTAA: VAURIOITA SÄHKÖLAITTEITA, PALAA itsesi tai aiheuttaa PALON. Ole varovainen ja käytä tervettä järkeä. Jos sinulla ei ole tätä opetusohjelmaa varten tarvittavaa tietoa (juottaminen, elektroniikan perusteet), suorita sellaisen henkilön kanssa. Kiitos.

TÄMÄ OHJEEN TEKIJÄ POISTAA KAIKKIEN VASTUUN IHMISESTÄ VAHINGOISTA, JOTKA OVAT aiheuttaneet tai menettäneet omaisuutta tai fyysisiä vahinkoja. KÄYTÄ YHTEISTÄ TUNNETTA

Vaihe 2: Komponentit

Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät
Liitännät

Ennen kuin lämmitämme juotosrautaa, meidän on käytävä läpi, mitä mihin pitäisi yhdistää. Tein tämän yksinkertaisen kaavion (MS Paint ei koskaan petä minua), joka kuvaa, missä tietyt osat sijaitsevat robotissa.

Kuva on rakennettu niin, että voit lähentää ja nähdä täydellä resoluutiolla ja lukea tekstiä.

Vaihe 6: Osoite Pi: lle

Arduino puhuu Pi: n kanssa suunnitelman mukaisesti. Ja Pi puhuu tietokoneen kanssa, joten miten tämä kaikki toimii?

Katsotaanpa yhteyden aloitusjärjestystä:

  1. Raspberry Pi käynnistyy
  2. Arduino käynnistyy
  3. Raspberry Pi käynnistää TCP -asiakkaan. Se ampuu IP -osoitteen LED -valon kautta.
  4. Raspberry Pi aloittaa sarjaliikennepalvelun ja muodostaa yhteyden Arduinoon

Siksi olemme luoneet jonkinlaisen viestinnän:

Tietokone Raspberry Pi Arduino

Olen käyttänyt Visual Basic. NET: ää (Microsoft Visual Studio 2013 Community) kirjoittaaksesi ohjelman, joka puhuu Raspberry Pi: n ja Pythonin kanssa Arduino/Raspberry Pi -protokollan kirjoittamiseen.

Sinun tarvitsee vain tietää Pi -IP -osoitteesi, liittää se HDMI -näyttöön, kirjautua Shelliin ja kirjoittaa komento:

isäntänimi -I

Vaihe 7: Suunnitelma

Nyt kun meillä on Pi: n IP -osoite, SSH siihen (SSH on Secure Shell - muodostamme etäyhteyden Linux -kuoreen) ja kirjoitamme tiedoston, joka näyttää palvelimen IP -osoitteen. Pi, käynnistyksen yhteydessä, tekee samoin ja kirjoittaa portin, jota se kuuntelee. Annan tässä vain muutamia esimerkkejä koodista, mutta se on ladattavissa tästä vaiheesta ja luomastani GitHub -haarasta. Yksityiskohdat siitä myöhemmin.

Se toimii näin:

  1. RPi käynnistyy.
  2. RPi käynnistää Tcp -ohjelman paikallisella IP -osoitteellaan ja nimetyllä portilla.
  3. RPI alkaa suoratoistaa videota
  4. RPI sammuu.

Vaihe 8: Liikunta

Nyt olemme valmiita rakentamaan koko asian fyysisesti. Jos et ole lukenut vaihetta 1 (varoitusteksti ja lisensointi), tee se ennen kuin jatkat. En ole vastuussa mahdollisista vahingoista. Epäselvissä tapauksissa tätä robottia ei saa käyttää sotilaallisiin tarkoituksiin, ellei se ole zombie -apokalypsi. Ja silloinkin käytä tervettä järkeä.

On suositeltavaa lukea ohjekirjat kuuntelulistalta.

Lataa yhteyskaavio "Yhteydet" -vaiheesta.

MOOTTORIT

Ostamasi moottorit näyttävät luultavasti tältä, ja se on OK, jos eivät: jos niissä on vain kaksi johtoa (useimmissa tapauksissa musta ja punainen), sen pitäisi toimia. Etsi heidän tietolomakkeensa verkosta nähdäkseen niiden käyttöjännitteen ja virran. Voit vapaasti esittää kysymyksiä kommenttiosassa. Luen ne aina.

H-SILTA

En ole koskaan työskennellyt H-sillan kanssa. Googletin hiukan ja löysin hyvän ohjeen, joka selittää HB: n periaatteet. Voit katsoa myös sinne (katso lukulistan vaihe) ja kytkeä myös omasi. En selitä paljon. Voit lukea siellä ja tietää kaiken mitä tarvitset tästä piiristä.

LED

Tämä pieni hehkulamppu voi ajaa loogisesta jännitteestä vain siksi, että se ei vaadi lähes mitään virtaa, ja jännite on 3V-5V 4mA-18mA. Valinnainen.

ARDUINO

Arduino saa signaaleja ja komentoja sarjaliitännän kautta Raspberry Pi: ltä. Käytämme Arduinoa moottoriemme hallintaan, koska Raspberry Pi ei voi lähettää analogisia arvoja GPIO: n kautta.

Vaihe 9: Raspberry Pi: n automaattinen käynnistys

Joka kerta kun käynnistät Raspberry Pi: n, sinun on kirjoitettava käyttäjätunnus ja salasana. Emme halua tehdä sitä, koska joskus emme vain voi yhdistää näppäimistöä Pi: hen, joten seuraamme näitä opetusohjelman vaiheita käynnistääksesi Pi: n valmistavan ohjelman automaattisesti. Jos se tarttuu silmukkaan, voimme aina keskeyttää sen painamalla Ctrl+C.

  • sudo crontab -e
  • Ja sitten annamme komennon, joka lisää kyseisen tiedoston cron-hallintaohjelman automaattiseen strartup-toimintoon.

Kutsumme tiedostoa pibot.sh, joka antaa komentoja käynnistää kaikenlaiset python -komentosarjat robotin käyttämiseksi. Käydään se läpi: (Sudo ja verho Python -ohjelmat sallivat ohjelman käyttää GPIO: ta)

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

Koodia, joka tekee kaiken työn pi: n puolella, kutsutaan nimellä upon_startup.sh.

Se on yksinkertainen komentosarja, joka suorittaa kaiken.

Vaihe 10: Houeston, meillä on ongelma … DC -moottorit eivät ole sama malli

Olen jo testannut H-siltaa ja se toimii hyvin, mutta kun koukistan verkosta tilaamani robottilautasta saamani moottorit, nämä kaksi moottoria pyörivät eri nopeuksilla ja tuottavat erilaisia ääniä. Vaihdoin moottorin kaasun 100%: iin. Molemmat eivät pystyneet juoksemaan parhaalla mahdollisella tavalla.

Näyttää siltä, että nämä ovat kaksi eri moottoria. Toisella on suurempi vääntömomentti, joka on loistava tällaiselle robotille, mutta toinen ei vain liikuta robottia. Joten se pyörii ympyröissä.

Tässä vaiheessa minulla on Arduinon sarjaohjelma täysin kunnossa, mutta PC: n Tcp -palvelin ja Pi: n Tcp -asiakas eivät ole vielä koodattuja. Minun on täytettävä tämä osallistuminen kilpailuun. Mitä teen?

  1. Ensinnäkin kolminkertaisen moottorien jännitteen. Tietolomake sanoi, että 3V, 6V eivät siirtäneet niitä. Silloin se on 9V. Kytkin teo -akut rinnakkain kaksinkertaisen virran ja jännite pysyy samana.
  2. Onko minulla muita moottoreita, jotka sopivat alustan kiinnikkeeseen? Ehkä näen, ovatko ne samanlaisia malleja.
  3. Voin korvata Servon, jos suklaa todella osuu tuulettimeen.

Koulu alkoi. Täytyy katsoa mitä tehdä.

Huomautus: Miksi ihmeessä kirjoitan kohtaamani ongelmat tänne? Joten jos olet vähemmän kokenut ja sinulla on samat ongelmat, tiedät mitä tehdä.

Ratkaisu:

Joten tein toisen testin. Olen mukauttanut Arduino -koodin nopeuseroa.

HUOMAUTUS: moottorit voivat pyöriä eri nopeuksilla puolestasi! Muuta Arduinon luonnoksen arvoja.

Vaihe 11: [TCP]: Miksi Tcp ja Not Secure Shell? Mikä on TCP?

Minulla on kaksi selitystä miksi käyttää Tcp: tä eikä SSH: ta P. C. - Pi -viestintä.

  1. Ensinnäkin SSH (Secure Shell, katso Selitykset) on tarkoitettu käynnistämään komentoja etätietokoneelta. Pi: n saaminen haluamillemme tiedoille on vaikeampaa, koska ainoa vaihtoehto analysoida tietoja on kova ja tylsä merkkijonon käsittely.
  2. Toiseksi, me jo osaamme käyttää SSH: ta ja haluamme oppia lisää tapoja kommunikoida laitteiden välillä tässä opetusohjelmassa.

TCP tai Transmission Control Protocol on Internet Protocol Suite -ohjelman ydinprotokolla. Se sai alkunsa verkon ensimmäisestä toteutuksesta, jossa se täydensi Internet -protokollaa (IP). Siksi koko sarjaan viitataan yleisesti nimellä TCP/IP. TCP tarjoaa oktettivirran luotettavan, tilatun ja virheetarkistetun toimituksen IP-verkon välityksellä kommunikoivien isäntien välillä toimivien sovellusten välillä.

(Wikipediasta)

TCP -ammattilaiset ovat siis:

  • Turvallinen
  • Nopeasti
  • Toimii missä tahansa verkossa
  • Tarjoaa menetelmiä oikean tiedonsiirron tarkistamiseksi
  • Flow Control: on suojattu siltä varalta, että tiedon lähettäjä lähettää tietoja liian nopeasti, jotta asiakas voi rekisteröityä ja käsitellä.

Ja haitat ovat:

  • TCP: ssä et voi lähettää (lähettää tietoja kaikille verkon laitteille) ja monilähetyksiä (sama mutta vähän erilainen- antaa mahdollisuuden kullekin laitteelle, joka lähettää palvelimen tavoin).
  • Ohjelma- ja käyttöjärjestelmäkirjastojen virheet (jotka hallitsevat itse TCP -viestintää, reitittimesi ei tee mitään muuta kuin yhdistää kaksi [tai useampaa] laitetta)

Miksi et käytä UDP: tä, saatat kysyä? No, toisin kuin TCP, UDP ei varmista, että asiakas saa tiedot ennen lähettämistä. Kuten sähköpostin lähettäminen ja tietämättä, saako asiakas sen. Lisäksi UDP on vähemmän turvallinen. Lisätietoja saat lukemalla tämän Stack Exchange Super User -viestin

Tämä artikkeli on hyvä ja suositeltava.

Vaihe 12: [TCP]: Luo asiakas

Asiakas (tapauksessamme Raspberry Pi), joka vastaanottaa tiedot palvelimelta (meidän tietokoneemme meidän tapauksessamme), saa tiedot lähetettäväksi Pi: lle (sarjakomennot, jotka suoritetaan Arduinolla) ja vastaanottaa tiedot takaisin (Anturilukemat ja palaute suoraan Arduinolta. Liitteenä oleva kaavio osoittaa näiden kolmen välisen suhteen.

Python Wiki TcpCommunication -artikkeli osoittaa, että tällaisen viestinnän tekeminen muutamalla koodirivillä on niin helppoa sisäänrakennetun pistorasiamoduulin avulla. Meillä on ohjelma PC: llä ja toinen ohjelma Pi: llä.

Työskentelemme keskeytysten kanssa. Lisätietoja on selitysvaiheessa. Lue myös puskureista. Nyt voimme lukea tietoja, jotka meillä on, käyttämällä data = s.recv (BUFFER_SIZE), mutta se on kuinka monta merkkiä olemme määrittäneet tyhjillä puremilla. Voimmeko käyttää keskeytyksiä? Toinen kysymys: onko puskuri tyhjä vai odottaako se palvelimen lähettävän lisää tietoja, jolloin palvelin/asiakas heittää aikakatkaisupoikkeuksen?

Käsitellään sitä yksi kerrallaan. Ennen kuin teemme niin, olen katsonut tämän Wikipedia -artikkelin, jossa luetellaan käytetyt TCP- ja UDP -portit. Nopean tarkastelun jälkeen olen päättänyt, että tämä projekti kommunikoi portissa 12298, koska käyttöjärjestelmä ja paikalliset palvelut eivät käytä sitä.

Vaihe 13: Kokeile Tcp -kommunikaatiotamme

Jotta voimme nähdä, voimmeko käyttää keskeytyksiä, tehdään yksinkertainen asiakas ja palvelin Python -komentorivin avulla. Teen sen seuraavissa vaiheissa:

  1. Käynnistä ohjelma, joka lähettää tekstiä Tcp: n kautta silmukassa verhoportin kautta
  2. Käynnistä toinen ohjelma (rinnakkain), joka lukee koko silmukan tekstin ja tulostaa sen näytölle.

Vain ohjelman osat näytetään. Kaikki ohjelmat toimivat Python 3: lla. Kaikki nämä ohjelmat vain lähettävät sarjakomennon tietokoneen käyttäjän näppäimistöltä Arduinolle Pi: n kautta.

  • SBcontrolPC.py - suoritetaan tietokoneella. Käynnistää TCP -yhteyden paikallisessa osoitteessa ja määritetyssä portissa (käytän porttia 12298, katso edellinen vaihe miksi)
  • SBcontrolPi.py - ajetaan Pi: llä. Lukee puskurin puolen sekunnin välein (0,5 sekuntia). Käynnistää komentosarjan, joka hallitsee esimerkiksi videoiden suoratoistoa jne.

Suositeltava: