Sisällysluettelo:
- Vaihe 1: Varoitus: Ole varovainen yrittäessäsi tätä kotona
- Vaihe 2: Komponentit
- Vaihe 6: Osoite Pi: lle
- Vaihe 7: Suunnitelma
- Vaihe 8: Liikunta
- Vaihe 9: Raspberry Pi: n automaattinen käynnistys
- Vaihe 10: Houeston, meillä on ongelma … DC -moottorit eivät ole sama malli
- Vaihe 11: [TCP]: Miksi Tcp ja Not Secure Shell? Mikä on TCP?
- Vaihe 12: [TCP]: Luo asiakas
- Vaihe 13: Kokeile Tcp -kommunikaatiotamme
Video: Rakenna Internet-ohjattu videon suoratoistorobotti Arduinon ja Raspberry Pi: n avulla: 15 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
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
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ä:
- Raspberry Pi käynnistyy
- Arduino käynnistyy
- Raspberry Pi käynnistää TCP -asiakkaan. Se ampuu IP -osoitteen LED -valon kautta.
- 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:
- RPi käynnistyy.
- RPi käynnistää Tcp -ohjelman paikallisella IP -osoitteellaan ja nimetyllä portilla.
- RPI alkaa suoratoistaa videota
- 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?
- 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.
- Onko minulla muita moottoreita, jotka sopivat alustan kiinnikkeeseen? Ehkä näen, ovatko ne samanlaisia malleja.
- 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ä.
- 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.
- 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:
- Käynnistä ohjelma, joka lähettää tekstiä Tcp: n kautta silmukassa verhoportin kautta
- 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:
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: 7 vaihetta
Hallitse talon valoja Google Assistantin avulla Arduinon avulla: (Päivitys 22.8.2020: Tämä ohje on 2 vuotta vanha ja perustuu joihinkin kolmansien osapuolien sovelluksiin. Kaikki heidän puolellaan tehdyt muutokset saattavat tehdä projektista toimimattoman. Se voi olla tai ei työskentele nyt, mutta voit seurata sitä viitteenä ja muokata sen mukaan
Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: 5 vaihetta
Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: Sony Spresense tai Arduino Uno eivät ole niin kalliita eivätkä vaadi paljon virtaa. Jos projektillasi on kuitenkin virtaa, tilaa tai jopa budjettia, voit harkita Arduino Pro Minin käyttöä. Toisin kuin Arduino Pro Micro, Arduino Pro Mi
Ohjaa lediä kaikkialla maailmassa Internetin avulla Arduinon avulla: 4 vaihetta
Ohjaa johtoa ympäri maailmaa Internetin avulla Arduinon avulla: Hei, olen Rithik. Aiomme tehdä Internet -ohjattavan ledin puhelimellasi. Aiomme käyttää ohjelmistoja, kuten Arduino IDE ja Blynk. Se on yksinkertainen ja jos onnistuit, voit hallita niin monta elektronista komponenttia kuin haluat Asioita, joita tarvitsemme: Laitteisto:
Rakenna Stephen Hawkingin tietokoneen käyttöliittymä vain 1000 ruplaan (15 dollaria) Arduinon avulla: 5 vaihetta
Rakenna Stephen Hawkingin tietokonerajapinta vain 1000 ruplaan (15 dollaria) Arduinon avulla: Kaikki alkoi kysymyksellä "Kuinka Stephen Hawking puhuu?" järjestelmän versio vaarantamatta liikaa ominaisuuksia. Tämä laite
Langaton kaukosäädin käyttäen 2,4 GHz: n NRF24L01 -moduulia Arduinon kanssa - Nrf24l01 4 -kanavainen / 6 -kanavainen lähettimen vastaanotin nelikopterille - Rc -helikopteri - Rc -taso Arduinon avulla: 5 vaihetta (kuvilla)
Langaton kaukosäädin käyttäen 2,4 GHz: n NRF24L01 -moduulia Arduinon kanssa | Nrf24l01 4 -kanavainen / 6 -kanavainen lähettimen vastaanotin nelikopterille | Rc -helikopteri | Rc -lentokone Arduinon avulla: Rc -auton käyttö | Nelikopteri | Drone | RC -taso | RC -vene, tarvitsemme aina vastaanottimen ja lähettimen, oletetaan, että RC QUADCOPTER -laitteelle tarvitaan 6 -kanavainen lähetin ja vastaanotin, ja tämäntyyppinen TX ja RX on liian kallista, joten teemme sellaisen