Përmbajtje:

Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi: 15 hapa (me fotografi)
Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi: 15 hapa (me fotografi)

Video: Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi: 15 hapa (me fotografi)

Video: Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi: 15 hapa (me fotografi)
Video: SKR 1.4 - TMC2209 v1.2 2024, Nëntor
Anonim
Ndërtoni robotin tuaj të kontrolluar nga interneti me video të kontrolluar me Arduino dhe Raspberry Pi
Ndërtoni robotin tuaj të kontrolluar nga interneti me video të kontrolluar me Arduino dhe Raspberry Pi
Ndërtoni robotin tuaj të kontrolluar nga interneti me video të kontrolluar me Arduino dhe Raspberry Pi
Ndërtoni robotin tuaj të kontrolluar nga interneti me video të kontrolluar me Arduino dhe Raspberry Pi
Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi
Ndërtoni robotin tuaj të kontrolluar nga interneti me video me Arduino dhe Raspberry Pi

Unë jam @RedPhantom (aka LiquidCrystalDisplay / Itay), një student 14 vjeçar nga Izraeli që mëson në Shkollën e Mesme Max Shein Junior për Shkencë dhe Matematikë të Avancuar. Po e bëj këtë projekt për të gjithë që të mësojnë dhe të ndajnë!

Ju mund të keni menduar me vete: hmm … Unë jam një geek … Dhe fëmijët e mi duan që unë të bëj një projekt me ta … Ai donte të ndërtonte një robot. Ajo donte ta veshë atë si një qenush të vogël. Projectshtë një projekt i mirë për fundjavë!

Raspberry Pi është perfekte për çdo përdorim: sot ne do të shprehim aftësitë e këtij mikro-kompjuteri për të bërë një robot. Ky robot mund të:

  • Udhëtoni përreth dhe kontrolloheni përmes LAN (WiFi) duke përdorur çdo kompjuter të lidhur me të njëjtin rrjet WiFi si Raspberry Pi.
  • Transmetoni video drejtpërdrejt duke përdorur modulin e kamerës Raspberry Pi
  • Dërgoni të dhëna të sensorit duke përdorur Arduino

Për të parë se çfarë ju nevojitet për këtë projekt të këndshëm të dritës, thjesht lexoni hapin tjetër (paralajmërimet) dhe pas kësaj hapi i Kërkuar: Komponentët.

Këtu është repoja e GitHub: GITHUB REPO BY ME

Këtu është Faqja e Projektit: Faqja e Projektit NGA MUA

Hapi 1: Paralajmërim: Kini kujdes ta provoni këtë në shtëpi

KUJDES:

AUTORI I K ASTIJE PARASYSHME TUTORILE KU KENI NJOHURI TF Mjaftueshme RRETH ENERGJIS DHE VEPRIMIT THEMELOR T OF PAJISJEVE ELEKTRIKE. NFSE NUK JENI TAR KUJDES DHE MOS I Ndiqni UDHZIMET N IN KT T UDHZUES MUAJ T MUND: D DMTONI PAJISJET ELEKTRONIKE, Djegni VET OR OSE SHKAKTUAR NJ Zjarr. Ju lutemi jini të kujdesshëm dhe përdorni sens të përbashkët. Nëse nuk keni njohuritë e kërkuara për këtë mësim (bashkim, bazat e elektronikës), ju lutemi bëni me një individ që e ka. Faleminderit.

AUTORI I K INTI UDHUCTZUES H RN AN ÇDO P RRGJEGJSI NGA VETA P FORR D DMET E SHKAKTUARA OSE E HUMBURA DHE DAMMIN FIZIK. P USRDORIM SHKENCA TMM ZAKONSHME

Hapi 2: Përbërësit

Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet

Para se të ngrohim Hekurin bashkues, duhet të kalojmë se çfarë duhet të lidhet me çfarë. Kam bërë këtë tabelë të thjeshtë (MS Paint kurrë nuk më lë poshtë) që përshkruan se ku ndodhen pjesë të caktuara brenda robotit.

Imazhi është ndërtuar në mënyrë që të zmadhoni dhe shihni në rezolucion të plotë dhe të lexoni tekstin.

Hapi 6: Adresa për Pi

Arduino bisedon me Pi sipas planit. Dhe Pi flet me kompjuterin, kështu si funksionon e gjithë kjo?

Le të shikojmë sekuencën tonë të fillimit të lidhjes:

  1. Raspberry Pi fillon
  2. Arduino fillon
  3. Raspberry Pi fillon TCP Client. Ai nxjerr adresën e tij IP përmes një LED.
  4. Raspberry Pi fillon shërbimin e Komunikimeve Seriale dhe lidhet me Arduino

Prandaj ne kemi krijuar një lloj komunikimi:

Kompjuter Raspberry Pi Arduino

Unë kam përdorur Visual Basic. NET (Microsoft Visual Studio 2013 Community) për të shkruar programin që bisedon me Raspberry Pi dhe Python për të shkruar protokollin Arduino/Raspberry Pi.

E tëra çfarë ju duhet të bëni për të ditur adresën tuaj Pi IP, është ta lidhni atë me një ekran HDMI, të regjistroheni në Shell dhe të shkruani komandën:

emri i hostit -I

Hapi 7: Plani

Tani që kemi adresën IP të Pi, ne do të futim SSH në të (SSH është Secure Shell - ne lidhemi nga distanca me guaskën Linux) dhe shkruajmë një skedar që shfaq adresën IP të Serverit. Pi, me fillimin do ta bëjë këtë gjithashtu dhe do të shkruajë portën që po dëgjon. Këtu do të jap vetëm disa shembuj nga kodi, por është i disponueshëm për tu shkarkuar nga ky hap dhe nga dega GitHub që kam krijuar. Detajet për këtë më vonë.

Punon kështu:

  1. RPi fillon.
  2. RPi fillon programin Tcp në IP -në e tij lokale dhe një port të caktuar.
  3. RPI fillon të transmetojë video
  4. RPI fiket.

Hapi 8: Të ecësh fizikisht

Tani, ne jemi gati të fillojmë të ndërtojmë fizikisht gjithçka. Nëse nuk e keni lexuar hapin 1 (tekst paralajmërues dhe licencim) ju lutemi bëni këtë para se të vazhdoni. Unë nuk jam përgjegjës për dëmet e shkaktuara. Dhe në rast dyshimi, ky robot nuk duhet të përdoret për qëllime ushtarake nëse nuk është një apokalips zombie. Dhe madje edhe atëherë përdorni sensin e përbashkët.

Sugjerohet që të lexoni udhëzimet e dëgjueshme në Listën e Leximit.

Shkarkoni skemën e lidhjes nga hapi "Lidhjet".

MOTOR

Motorët që keni blerë ndoshta duken kështu, dhe është mirë nëse nuk kanë: nëse kanë vetëm dy tela (të zezë dhe të kuq në shumicën e rasteve) duhet të funksionojë. Shikoni fletën e të dhënave të tyre në internet për të parë tensionin dhe rrymën e tyre të funksionimit. Mos ngurroni të bëni pyetje në pjesën e komenteve. Unë gjithmonë i lexoj ato.

H-BRIDGE

Unë kurrë nuk kam punuar me një H-Bridge më parë. Gogolova pak dhe gjeta një udhëzues të mirë që shpjegon parimet e një HB. Ju gjithashtu mund të shikoni atje (shikoni hapin Lista e Leximit) dhe lidhni edhe tuajin. Nuk do të shpjegoj shumë. Ju mund të lexoni atje dhe të dini gjithçka që duhet për këtë qark.

LED

Ky llambë e vogël mund të funksionojë nga tensioni logjik vetëm sepse nuk kërkon pothuajse asnjë rrymë, dhe një tension prej 3V-5V 4mA-18mA. Opsionale.

ARDUINO

Arduino do të marrë sinjale dhe komanda përmes lidhjes serike nga Raspberry Pi. Ne përdorim Arduino për të kontrolluar motorët tanë sepse Raspberry Pi nuk mund të nxjerrë vlera analoge përmes GPIO.

Hapi 9: Fillimi automatik i Raspberry Pi

Sa herë që aktivizoni Raspberry Pi, do të duhet të shkruani emrin e përdoruesit dhe fjalëkalimin. Ne nuk duam ta bëjmë këtë sepse ndonjëherë thjesht nuk mund të lidhim një tastierë me Pi, kështu që ne do të ndjekim këto hapa nga ky tutorial për të nisur automatikisht programin që përgatit Pi. Nëse do të ngjitet në një lak, ne gjithmonë mund të Ctrl+C për ta ndërprerë atë.

  • sudo crontab -e
  • Dhe pastaj ne do të futim komandën që shton atë skedar në auto-strartup në menaxherin cron.

Ne do ta quajmë skedarin pibot.sh i cili do të japë komanda për të filluar të gjitha llojet e shkrimeve python për të operuar robotin. Le ta kalojmë atë: (Ne sudo me perde programet Python për të lejuar që programi të ketë qasje në GPIO)

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

Kodi që bën të gjithë punën në anën e pi do të quhet upon_startup.sh.

Shtë një skript i thjeshtë shell që drejton gjithçka.

Hapi 10: Houeston, Ne kishim një Problem … DC Motors nuk janë i njëjti model

Unë tashmë e kam testuar H-Bridge dhe funksionon mirë, por kur i lidh motorët që kam marrë nga platforma e robotit i porosita në internet ata dy motorë rrotullohen me shpejtësi të ndryshme dhe bëjnë zhurma të ndryshme. Kam ndryshuar gazin në 100% në motorët. Të dy ata nuk mund të vraponin në aftësinë e tyre maksimale.

Duket se këto janë dy motorë të ndryshëm. Njëri ka një çift rrotullues më të madh i cili është i shkëlqyeshëm për këtë lloj roboti, por tjetri thjesht nuk do ta lëvizte robotin. Kështu kthehet në qarqe.

Në këtë pikë, ajo që kam është se programi serik në Arduino funksionon shumë mirë, por serveri Tcp në PC dhe Tcp Client në Pi ende nuk janë të koduar. Më duhet të plotësoj këtë hyrje për konkursin. Çfarë të bëj?

  1. Së pari, trefishoj tensionin për motorët. Fleta e të dhënave tha 3V, 6V nuk i lëvizi. It'sshtë 9V atëherë. Unë lidha bateritë teo paralelisht për të dyfishuar rrymën dhe tensioni mbetet i njëjtë.
  2. A kam motorë të tjerë që përshtaten me montimin në platformë? Ndoshta mund ta shoh nëse janë modele të ngjashme.
  3. Unë mund të zëvendësoj me Servos nëse çokollata me të vërtetë godet tifozin.

Shkolla filloi. Më duhet të shoh se çfarë të bëj.

Shënim: Pse në tokë i shkruaj problemet që has këtu? Pra, nëse jeni më pak me përvojë dhe keni të njëjtat probleme, do të dini se çfarë të bëni.

Zgjidhja:

Kështu që unë bëra një provë tjetër. Unë kam përshtatur ndryshimin në shpejtësinë në kodin Arduino.

SHENIM: motorët mund të rrotullohen me shpejtësi të ndryshme për ju! Ndryshoni vlerat në skicën Arduino.

Hapi 11: [TCP]: Pse Tcp dhe Shell jo i sigurt? Çfarë është TCP?

Unë kam dy shpjegime pse të përdorim Tcp dhe jo SSH për P. C. - komunikimi Pi.

  1. Së pari, SSH (Shell i Sigurt, shih Shpjegimet) ka për qëllim të nisë komandat nga një kompjuter në distancë. Bërja e Pi të përgjigjet me informacionin që duam është më e vështirë sepse opsioni ynë i vetëm për të analizuar të dhënat është përmes përpunimit të ashpër dhe të lodhshëm të vargut.
  2. Së dyti, ne tashmë dimë se si të përdorim SSH dhe duam të mësojmë më shumë mënyra të komunikimit midis pajisjeve në këtë tutorial.

TCP, ose Protokolli i Kontrollit të Transmetimit, është një protokoll bazë i Suite Protokollit të Internetit. Filloi në zbatimin fillestar të rrjetit në të cilin plotësoi Protokollin e Internetit (IP). Prandaj, e gjithë suita zakonisht quhet TCP/IP. TCP siguron shpërndarje të besueshme, të porositur dhe të kontrolluar nga gabimet e një rryme oktete midis aplikacioneve që funksionojnë në hostet që komunikojnë përmes një rrjeti IP.

(Nga Wikipedia)

Pra, TCP Pro janë:

  • E sigurt
  • Shpejtë
  • Punon kudo në një rrjet
  • Ofron metoda për të kontrolluar transmetimin e saktë të të dhënave
  • Kontrolli i rrjedhës: ka mbrojtje në rast se dërguesi i të dhënave dërgon të dhëna shumë shpejt që klienti të regjistrohet dhe përpunojë.

Dhe të këqijat janë:

  • Në TCP nuk mund të transmetoni (Dërgo të dhëna në të gjitha pajisjet në një rrjet) dhe multicast (e njëjtë, por pak e ndryshme- jep aftësinë për çdo pajisje të transmetuar si një server).
  • Gabimet në programin tuaj dhe bibliotekat e sistemit operativ (që menaxhojnë vetë komunikimin TCP, ruteri juaj nuk bën pothuajse asgjë përveç lidhjes së dy [ose më shumë] pajisjeve)

Pse të mos përdorni UDP, mund të pyesni? Epo, ndryshe nga TCP, UDP nuk sigurohet që klienti juaj të marrë të dhënat para se të dërgojë më shumë. Si të dërgosh një email dhe të mos dish nëse klienti e merr atë. Për më tepër, UDP është më pak e sigurt. Për më shumë informacion, lexoni këtë postim nga Stack Exchange Super User

Ky artikull është i mirë dhe i rekomanduar.

Hapi 12: [TCP]: Le të bëjmë një klient

Klienti (Raspberry Pi në rastin tonë), që merr të dhënat nga serveri (PC -ja jonë në rastin tonë) do të marrë të dhëna për t'i dërguar në Pi (komandat serike që do të kryhen në Arduino) dhe do të marrë të dhëna mbrapa (Leximet e sensorit dhe reagime drejtpërdrejt nga Arduino. Skema e bashkangjitur tregon marrëdhënien midis të treve.

Artikulli Python Wiki TcpCommunication tregon se është kaq e thjeshtë të bësh një komunikim të tillë me disa rreshta kodi duke përdorur modulin e integruar të prizës. Ne do të kemi një program në PC dhe një program tjetër në Pi.

Ne do të punojmë me ndërprerje. Mësoni më shumë në hapin Shpjegimet rreth tyre. Lexoni atje edhe për tamponët. Tani, ne mund të lexojmë të dhënat që kemi duke përdorur data = s.recv (BUFFER_SIZE), por do të jetë sa karaktere kemi përcaktuar me kafshime boshe. A mund të përdorim ndërprerje? Një pyetje tjetër: a do të jetë tamponi bosh apo do të presë që serveri të dërgojë më shumë të dhëna në të cilin rast serveri/klienti do të bëjë një përjashtim të kohës?

Le ta trajtojmë atë një nga një. Para se ta bëjmë këtë, unë kam kërkuar këtë artikull të Wikipedia që liston portet e përdorura TCP dhe UDP. Pas një vështrimi të shpejtë kam vendosur që ky projekt të komunikojë në portin 12298 sepse nuk përdoret nga Sistemi Operativ dhe shërbimet lokale.

Hapi 13: Provoni Komunikatat tona Tcp

Për të parë nëse mund të përdorim ndërprerjet, le të bëjmë një klient të thjeshtë dhe një server duke përdorur Linjën e Komandës Python. Unë do ta bëj atë në hapat e mëposhtëm:

  1. Filloni një program që dërgon një tekst përmes Tcp në një lak përmes një porte perde
  2. Filloni një program tjetër (paralelisht) që lexon të gjithë tekstin në një lak dhe e printon atë në ekran.

Do të shfaqen vetëm segmente të programit. Të gjithë programet funksionojnë me Python 3. Të gjitha këto programe janë që të dërgojnë komandën serike nga tastiera e përdoruesit të kompjuterit në Arduino përmes Pi.

  • SBcontrolPC.py - Për tu ekzekutuar në PC. Fillon një lidhje TCP në adresën lokale dhe në portin e specifikuar (unë përdor portin 12298, shihni hapin e mëparshëm pse)
  • SBcontrolPi.py - Të drejtohet në Pi. Lexon tamponin e tij çdo gjysmë sekonde (0.5 sekonda). Fillon një skenar shell që menaxhon gjëra të tilla si transmetimi i videove etj.

Recommended: