Sisukord:

Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil: 15 sammu (piltidega)
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil: 15 sammu (piltidega)

Video: Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil: 15 sammu (piltidega)

Video: Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil: 15 sammu (piltidega)
Video: Объяснение прошивки Marlin 2.0.x 2024, Juuli
Anonim
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil
Ehitage oma Interneti-juhitav video voogesitusrobot Arduino ja Raspberry Pi abil

Ma olen @RedPhantom (aka LiquidCrystalDisplay / Itay), 14 -aastane Iisraeli õpilane, kes õpib Max Sheini kõrgkooli kõrgkoolis. Teen selle projekti kõigile õppimiseks ja jagamiseks!

Võib -olla olete endamisi mõelnud: hmm … ma olen geek… Ja mu lapsed tahavad, et ma koos nendega projekti teeksin … Ta tahtis ehitada roboti. Ta tahtis riietuda nagu väike kutsikas. See on hea nädalavahetuse projekt!

Raspberry Pi sobib ideaalselt igaks otstarbeks: täna avaldame selle mikroarvuti võime robotit valmistada. See robot suudab:

  • Sõitke ringi ja laske end juhtida LAN -i (WiFi) kaudu, kasutades mis tahes arvutit, mis on ühendatud samasse WiFi -võrku kui Raspberry Pi.
  • Voogesitage otseülekannet kasutades Raspberry Pi kaameramoodulit
  • Anduri andmete saatmine Arduino abil

Et näha, mida selle toreda valgusprojekti jaoks vaja läheb, lugege lihtsalt järgmist sammu (hoiatused) ja pärast seda sammu Wanted: Components.

Siin on GitHubi repo: GITHUB REPO BY MINU

Siin on projekti sait: MINU PROJEKTI SAIT

Samm: hoiatus: olge kodus proovides ettevaatlik

ETTEVAATUST:

SELLE ÕPETUSE AUTOR Eeldab, et teil on piisavalt teadmisi elektrienergia ja elektriseadmete põhitöö kohta. KUI TE EI OLE HOIATUSLIK JA EI JÄLGI SELLE ÕPETUSE JUHISEID, KUI TE VÕITE: KAHJUTADA ELEKTROONILISI SEADMET, PÕLETADA VÕI PÕHJUSTADA. Palun olge ettevaatlik ja kasutage tervet mõistust. Kui teil pole selle õpetuse jaoks vajalikke teadmisi (jootmine, elektroonika põhitõed), tehke seda koos inimesega, kes seda teeb. Aitäh.

KÄESOLEVA JUHENDI AUTOR EEMALDAB ENDALT VASTUTUSE PÕHJUSTATUD VÕI KAOTATUD KINNISVÕI VÕI FÜÜSIKALISTE KAHJUSTUSTE KOHTA. KASUTAGE ÜHIST MÕISTUST

2. samm: komponendid

Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused
Ühendused

Enne jootekolvi kuumutamist peame üle vaatama, mis millega peaks olema ühendatud. Tegin selle lihtsa diagrammi (MS Paint ei vea mind kunagi alt), mis kirjeldab, kus teatud osa robotis asub.

Pilt on üles ehitatud nii, et saate suumida ja näha täisresolutsioonis ning lugeda teksti.

6. samm: Pi aadress

Arduino räägib Piga vastavalt plaanile. Ja Pi räägib arvutiga, nii kuidas see kõik töötab?

Vaatame meie ühenduse loomise järjestust:

  1. Vaarika Pi alustab
  2. Arduino käivitub
  3. Raspberry Pi käivitab TCP kliendi. See tulistab oma IP -aadressi LED -i kaudu.
  4. Raspberry Pi käivitab Serial Communications teenuse ja loob ühenduse Arduinoga

Seetõttu oleme loonud mingisuguse suhtluse:

Arvuti Raspberry Pi Arduino

Olen kasutanud programmi Visual Basic. NET (Microsoft Visual Studio 2013 Community), et kirjutada programm, mis räägib Raspberry Pi ja Pythoniga Arduino/Raspberry Pi protokolli kirjutamiseks.

Pi Pi IP -aadressi teadmiseks peate vaid ühendama selle HDMI -ekraaniga, logima sisse Shelli ja sisestama käsu:

hostinimi -mina

Samm: plaan

Nüüd, kui meil on Pi IP -aadress, lisame sinna SSH -i (SSH on Secure Shell - ühendame kaugühenduse Linuxi kestaga) ja kirjutame faili, mis kuvab serveri IP -aadressi. Pi, käivitamisel teeb seda samuti ja kirjutab porti, mida ta kuulab. Toon siinkohal vaid mõned näited koodist, kuid selle saab selle sammu ja minu loodud GitHubi haru kaudu alla laadida. Üksikasjad selle kohta hiljem.

See töötab nii:

  1. RPi käivitub.
  2. RPi käivitab programmi Tcp oma kohalikul IP -l ja määratud pordil.
  3. RPI alustab video voogesitust
  4. RPI lülitub välja.

8. samm: minge füüsiliselt

Nüüd oleme valmis kogu asja füüsiliselt üles ehitama. Kui te pole 1. sammu (hoiatustekst ja litsentsimine) lugenud, tehke seda enne jätkamist. Ma ei vastuta tekitatud kahju eest. Ja kahtluse korral ei tohi seda robotit kasutada sõjalistel eesmärkidel, kui see pole zombie apokalüpsis. Ja isegi siis kasuta tervet mõistust.

Soovitatav on lugeda lugemisloendis olevad juhendid.

Laadige ühendusskeem sammult "Ühendused" alla.

MOOTORID

Teie ostetud mootorid näevad ilmselt välja sellised ja kui pole, siis on OK: kui neil on ainult kaks juhet (enamikul juhtudel must ja punane), peaks see töötama. Otsige nende andmelehelt veebist, et näha nende tööpinget ja voolu. Küsige julgelt küsimusi kommentaaride jaotises. Ma loen neid alati.

H-SILD

Ma pole kunagi varem H-sillaga töötanud. Googeldasin natuke ja leidsin hea juhendamise, mis selgitab HB põhimõtteid. Võite ka sinna vaadata (vt lugemisloendi sammu) ja haakida ka oma. Ma ei seleta palju. Saate seal lugeda ja teada kõike, mida selle vooluringi kohta peaksite teadma.

LED

See väike lambike võib töötada loogilisest pingest lihtsalt sellepärast, et see peaaegu ei vaja voolu, ja pinge 3V-5V 4mA-18mA. Valikuline.

ARDUINO

Arduino saab signaale ja käske Raspberry Pi jadaühenduse kaudu. Me kasutame oma mootorite juhtimiseks Arduinot, sest Raspberry Pi ei saa analoogväärtusi GPIO kaudu väljastada.

Samm: Raspberry Pi automaatne käivitamine

Iga kord, kui Raspberry Pi sisse lülitate, peate sisestama kasutajanime ja parooli. Me ei taha seda teha, sest mõnikord ei saa me lihtsalt klaviatuuri Pi-ga ühendada, seega järgime sellest juhendist neid samme, et Pi-d ette valmistav programm automaatselt käivitada. Kui see jääb silmusesse kinni, saame selle katkestamiseks alati kasutada Ctrl+C.

  • sudo crontab -e
  • Ja siis sisestame käsu, mis lisab selle faili croni haldurisse automaatse strartupi.

Me kutsume faili pibot.sh, mis annab käsud käivitada igasugused pythoni skriptid roboti käitamiseks. Lähme sellest üle: (me sudo koos kardinatega Pythoni programmidega, et programm saaks GPIO -le juurde pääseda)

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

Koodi, mis teeb kogu töö pi küljel, kutsutakse upon_startup.sh.

See on lihtne shelliskript, mis käivitab kõik.

Samm 10: Houeston, meil oli probleem … DC -mootorid pole sama mudel

Ma olen juba katsetanud H-silda ja see töötab hästi, aga kui ma haakisin internetist tellitud robotplatvormilt saadud mootorid, siis need kaks mootorit pöörlevad erineva kiirusega ja teevad erinevat häält. Vahetasin mootoritel gaasi 100% peale. Mõlemad ei suutnud maksimaalse võimekusega joosta.

Tundub, et need on kaks erinevat mootorit. Ühel on suurem pöördemoment, mis sobib sellisele robotile suurepäraselt, kuid teine lihtsalt ei liiguta robotit. Nii et see muutub ringideks.

Praegu on mul Arduino jadaprogramm täiesti korras, kuid arvuti Tcp -server ja P -i Tcp -klient pole veel kodeeritud. Pean selle võistlustöö lõpule viima. Mida teha?

  1. Esiteks kolmekordistan mootorite pinget. Andmeleht ütles, et 3V, 6V ei liigutanud neid. Siis on 9V. Ma ühendasin paralleelselt teo akud, et kahekordistada voolu ja pinge jääb samaks.
  2. Kas mul on muid mootoreid, mis sobivad platvormi kinnitusele? Võib -olla näen, kas need on sarnased mudelid.
  3. Võin asendada Servodega, kui šokolaad tõesti ventilaatorit tabas.

Kool algas. Pean vaatama, mida teha.

Märkus. Miks ma siia probleeme kirjutan? Nii et kui olete vähem kogenud ja teil on samad probleemid, teate, mida teha.

Lahendus:

Nii et tegin uue testi. Olen kohandanud Arduino koodi kiiruse erinevust.

MÄRKUS: mootorid võivad teie jaoks erineva kiirusega pöörlema hakata! Muutke Arduino visandi väärtusi.

Samm 11: [TCP]: Miks Tcp ja mitte turvaline kest? Mis on TCP?

Mul on kaks selgitust, miks kasutada PC jaoks Tcp, mitte SSH. - Pi suhtlus.

  1. Esiteks on SSH (Secure Shell, vt selgitused) mõeldud käskude käivitamiseks kaugarvutist. Pii vastamine soovitud teabega on keerulisem, sest meie ainus võimalus andmeid analüüsida on karm ja tüütu stringide töötlemine.
  2. Teiseks, me juba teame, kuidas SSH -d kasutada, ja soovime selles õpetuses õppida rohkem seadmete vahelise suhtluse viise.

TCP ehk edastuse juhtimise protokoll on Interneti -protokolli komplekti tuumiprotokoll. See sai alguse võrgu esialgsest rakendamisest, milles see täiendas Interneti -protokolli (IP). Seetõttu nimetatakse kogu komplekti tavaliselt TCP/IP -ks. TCP pakub oktettide voo usaldusväärset, tellitud ja veakontrollitud edastamist IP-võrgu kaudu suhtlevate hostelite vahel töötavate rakenduste vahel.

(Vikipeediast)

Seega on TCP plussid järgmised:

  • Turvaline
  • Kiire
  • Töötab kõikjal võrgus
  • Pakub meetodeid õige andmeedastuse kontrollimiseks
  • Voo juhtimine: on kaitse juhuks, kui andmete saatja saadab andmed kliendile registreerimiseks ja töötlemiseks liiga kiiresti.

Ja miinused on järgmised:

  • TCP-s ei saa te edastada (saata andmeid kõikidele võrgu seadmetele) ja multisaateid (sama, kuid vähe erinev- annab võimaluse igale seadmele edastada nagu server).
  • Vead teie programmides ja operatsioonisüsteemi teekides (mis ise haldavad TCP -ühendust, ei tee teie ruuter peaaegu midagi peale kahe [või enama] seadme ühendamise)

Miks mitte kasutada UDP -d, võite küsida? Noh, erinevalt TCP -st ei taga UDP, et teie klient saaks andmed enne rohkemate saatmist. Nagu e -kirja saatmine ja teadmata, kas klient selle saab. Pealegi on UDP vähem turvaline. Lisateabe saamiseks lugege seda Stack Exchange Super User postitust

See artikkel on hea ja soovitatav.

12. samm: [TCP]: teeme kliendi

Klient (meie puhul Raspberry Pi), kes saab andmed serverist (meie arvuti meie puhul), saab andmed Pi -le saata (Arduinoga täidetavad jadakäsklused) ja võtab andmed vastu (anduri näidud) ja tagasiside otse Arduino'lt. Lisatud skeem näitab nende kolme suhet.

Python Wiki TcpCommunicationi artikkel näitab, et sisseehitatud pistikupesamooduli abil on sellise suhtluse loomine mõne koodiridaga nii lihtne. Meil on programm arvutis ja teine programm Pi -s.

Töötame katkestustega. Lisateavet nende kohta leiate selgituste sammust. Lugege seal ka puhvrite kohta. Nüüd saame lugeda andmeid, mis meil on, kasutades data = s.recv (BUFFER_SIZE), kuid see on see, kui palju tähemärke oleme tühjade hammustustega määratlenud. Kas saame katkestusi kasutada? Teine küsimus: kas puhver on tühi või ootab server, kuni saadetakse rohkem andmeid, millisel juhul loob server/klient ajalõpu erandi?

Tegeleme sellega ükshaaval. Enne seda oleme otsinud selle Vikipeedia artikli, kus on loetletud kasutatud TCP- ja UDP -pordid. Pärast kiiret vaatamist otsustasin, et see projekt suhtleb pordiga 12298, kuna operatsioonisüsteem ja kohalikud teenused seda ei kasuta.

Samm: proovige meie Tcp -kommentaare

Et näha, kas saame katkestusi kasutada, loome Pythoni käsurea abil lihtsa kliendi ja serveri. Teen seda järgmistes sammudes:

  1. Käivitage programm, mis saadab teksti Tcp kaudu silmusena läbi kardinapordi
  2. Käivitage mõni muu programm (paralleelselt), mis loeb kogu teksti silmusena ja prindib selle ekraanile.

Kuvatakse ainult programmi lõigud. Kõik programmid töötavad Python 3 -ga. Kõik need programmid teevad ainult arvuti kasutaja klaviatuurilt jadakäsu saatmist Pi kaudu Arduinole.

  • SBcontrolPC.py - käivitatakse arvutis. Alustab TCP -ühendust kohalikul aadressil ja määratud pordis (kasutan pordi 12298, vt eelmist sammu, miks)
  • SBcontrolPi.py - töötab Pi -ga. Loeb selle puhvrit iga poole sekundi tagant (0,5 sekundit). Käivitab shelliskripti, mis haldab selliseid asju nagu video voogesitus jne.

Soovitan: