Orodha ya maudhui:

Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi: Hatua 15 (na Picha)
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi: Hatua 15 (na Picha)

Video: Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi: Hatua 15 (na Picha)

Video: Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi: Hatua 15 (na Picha)
Video: Majambazi walipopambana na Polisi baada ya kuiba pesa NMB Bank 2024, Novemba
Anonim
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi
Jenga Robot yako ya Kutiririsha Video inayodhibitiwa na mtandao na Arduino na Raspberry Pi

Mimi ni @RedPhantom (aka LiquidCrystalDisplay / Itay), mwanafunzi wa miaka 14 kutoka Israeli anayesoma katika Shule ya Upili ya Max Shein Junior ya Sayansi ya Juu na Hisabati. Ninafanya mradi huu kwa kila mtu kujifunza kutoka na kushiriki!

Labda umejifikiria mwenyewe: hmm… mimi ni mtaalam… Na watoto wangu wanataka nifanye mradi nao… Alitaka kujenga roboti. Alitaka kuivaa kama mtoto mdogo. Ni mradi mzuri wa wikendi!

Raspberry Pi ni kamili kwa kila matumizi: leo tutaelezea uwezo wa kompyuta ndogo hii kutengeneza roboti. Roboti hii inaweza:

  • Endesha karibu na kudhibitiwa kupitia LAN (WiFi) kwa kutumia kompyuta yoyote iliyounganishwa na mtandao huo wa WiFi kama Raspberry Pi ilivyo.
  • Tiririsha video moja kwa moja ukitumia Moduli ya Kamera ya Raspberry Pi
  • Tuma data ya sensa ukitumia Arduino

Kuona unahitaji nini kwa mradi huu mzuri wa nuru soma tu hatua inayofuata (maonyo) na baada ya hapo hatua ya Kutafutwa: Vipengele.

Hapa kuna repo ya GitHub: GITHUB REPO NA MIMI

Hapa ni Tovuti ya Mradi: SITE YA MRADI NAMI

Hatua ya 1: Onyo: Kuwa Makini Kujaribu Hii Nyumbani

Tahadhari:

MWANDISHI WA MADA HII YA MAFUNZO UNA MAARIFA YA KUTOSHA KUHUSU UMEME NA UENDESHAJI WA MSINGI WA VIFAA VYA UMEME. IKIWA HAUJALI NA USIFUATE MAAGIZO KATIKA MAFUNZO HAYA UNAWEZA: KUHARIBU VIFAA VYA UMEME, JITEGE WEWE AU KUSABABISHA MOTO. Tafadhali kuwa mwangalifu na utumie akili. Ikiwa hauna ujuzi unaohitajika kwa mafunzo haya (kutengeneza, misingi ya umeme), tafadhali fanya na mtu anayefanya hivyo. Asante.

MWANDISHI HUYU ANAYEAJULISHA ANAONDOA UWAJIBIKAJI WOTE MWENYEWE KWA Uharibifu uliosababishwa au kupoteza mali au uharibifu wa mwili. TUMIA MAWAZO YA KAWAIDA

Hatua ya 2: Vipengele

Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho
Miunganisho

Kabla ya kuchoma Iron Iron, tunahitaji kupita juu ya kile kinachopaswa kushikamana na nini. Nilitengeneza chati hii rahisi (Rangi ya MS hainiruhusu kamwe) ambayo inaelezea mahali ambapo sehemu fulani ziko ndani ya roboti.

Picha imejengwa ili uweze kuvuta na kuona katika azimio kamili na usome maandishi.

Hatua ya 6: Anwani ya Pi

Arduino anazungumza na Pi kulingana na mpango huo. Na Pi huzungumza na kompyuta, kwa hivyo hii inafanyaje kazi?

Hebu tuangalie Mlolongo wetu wa Kuanzisha Uunganisho:

  1. Raspberry Pi huanza
  2. Arduino Aanza
  3. Raspberry Pi huanza Mteja wa TCP. Inatoa anwani yake ya IP kupitia LED.
  4. Raspberry Pi huanza huduma ya Mawasiliano ya Serial na inaunganisha na Arduino

Kwa hivyo tumeanzisha aina fulani ya mawasiliano:

Raspberry ya Kompyuta Pi Arduino

Nimetumia Visual Basic. NET (Jumuiya ya Studio ya Visual ya 2013 ya Microsoft) kuandika programu inayozungumza na Raspberry Pi na Python kuandika itifaki ya Arduino / Raspberry Pi.

Unachohitaji kufanya kujua anwani yako ya IP IP, ni kuiunganisha kwenye skrini ya HDMI, ingia kwenye Shell na andika amri:

jina la mwenyeji -I

Hatua ya 7: Mpango

Sasa kwa kuwa tuna anwani ya IP ya Pi tutaweka SSH ndani yake (SSH ni Salama Salama - tunaunganisha kwa mbali na ganda la Linux) na andika faili inayoonyesha anwani ya IP ya Seva. Pi, wakati wa kuanza itafanya vile vile na kuandika bandari inayosikiliza. Hapa nitatoa mifano michache kutoka kwa nambari lakini inapatikana kupakua kutoka kwa hatua hii na kutoka kwa tawi la GitHub ambalo nimeunda. Maelezo juu ya hiyo baadaye.

Inafanya kazi kama hivyo:

  1. RPi huanza.
  2. RPi huanza programu ya Tcp kwenye IP yake ya ndani na bandari iliyoteuliwa.
  3. RPI huanza kutiririsha video
  4. RPI inafungwa.

Hatua ya 8: Kwenda Kimwili

Sasa, tuko tayari kuanza kimwili kujenga jambo zima. Ikiwa haujasoma hatua ya 1 (maandishi ya onyo na leseni) tafadhali fanya hivyo kabla ya kuendelea. Sina jukumu la uharibifu wowote uliosababishwa. Na ikiwa kuna shaka, roboti hii haipaswi kutumiwa kwa malengo ya kijeshi isipokuwa ni apocalypse ya zombie. Na hata basi tumia busara.

Inapendekezwa usome wafundishaji wasikilize katika Orodha ya Kusoma.

Pakua mpango wa unganisho kutoka kwa "Uunganisho" hatua.

Pikipiki

Motors ulizonunua labda zinaonekana kama hii, na ni sawa ikiwa hawana: ikiwa wana waya mbili tu (nyeusi na nyekundu mara nyingi) inapaswa kufanya kazi. Angalia data yao mkondoni ili kuona voltage yao ya uendeshaji na ya sasa. Jisikie huru kuuliza maswali katika sehemu ya maoni. Sikuzote nilizisoma.

H-DARAJA

Sijawahi kufanya kazi na H-Bridge hapo awali. Nilienda kidogo na nikapata maelezo mazuri ya kuelezea kanuni za HB. Unaweza kutazama hapo pia (angalia hatua ya Orodha ya Kusoma) na ubonye yako pia. Sitaelezea mengi. Unaweza kusoma hapo na kujua yote unapaswa kuhusu mzunguko huu.

LED

Lightbolb hii ndogo inaweza kukimbia kutoka kwa voltage ya kimantiki kwa sababu inahitaji karibu hakuna sasa, na voltage ya 3V-5V 4mA-18mA. Hiari.

ARDUINO

Arduino atapata ishara na amri kupitia unganisho la Serial kutoka kwa Raspberry Pi. Tunatumia Arduino kudhibiti motors zetu kwa sababu Raspberry Pi haiwezi kutoa maadili ya Analog kupitia GPIO.

Hatua ya 9: Kuanzisha tena Raspberry Pi

Kila wakati utakapowasha Raspberry Pi, itabidi uandike jina la mtumiaji na nywila. Hatutaki kufanya hivyo kwa sababu wakati mwingine hatuwezi kuunganisha kibodi kwenye Pi, kwa hivyo tutafuata hatua hizi kutoka kwa mafunzo haya kuanza kiotomatiki programu inayoandaa Pi. Ikiwa itapata fimbo kwenye kitanzi tunaweza daima Ctrl + C kuikatiza.

  • sudo crontab -e
  • Na kisha tutaingiza amri ambayo inaongeza faili hiyo kwa auto-strartup katika meneja wa cron.

Tutapiga faili pibot.sh ambayo itatoa maagizo ya kuanza kila aina ya hati za chatu kutekeleza roboti. Wacha tuende juu yake: (Tunapenda na mipango ya Python ya pazia kuruhusu programu kufikia GPIO)

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

Nambari inayofanya kazi zote upande wa pi itaitwa on_startup.sh.

Ni hati rahisi ya ganda inayoendesha kila kitu.

Hatua ya 10: Houeston, Tumekuwa na Tatizo… DC Motors Sio Mfano Huo

Nimejaribu H-Bridge tayari na inafanya kazi vizuri, lakini nilipounganisha motors nilizopata kutoka kwenye jukwaa la roboti niliamuru mkondoni hizo motors mbili zigeuke kwa kasi tofauti na kupiga kelele tofauti. Nilibadilisha kaba hadi 100% kwenye motors. Wote hawawezi kukimbia kwa uwezo wao wa kiwango cha juu.

Inaonekana kama hizi ni motors mbili tofauti. Mmoja ana torque kubwa ambayo ni nzuri kwa aina hii ya roboti lakini yule mwingine hangesogeza roboti. Kwa hivyo inageuka kwa miduara.

Kwa wakati huu, nilicho nacho ni mpango wa serial kwenye Arduino inafanya kazi kabisa lakini seva ya Tcp kwenye PC na Mteja wa Tcp kwenye Pi bado hayajasajiliwa. Wakati ninahitaji kukamilisha kiingilio hiki cha mashindano. Nifanyeje?

  1. Kwanza, mimi mara tatu voltage kwa motors. Jedwali la data lilisema 3V, 6V haikuwahamisha. Ni 9V basi. Niliunganisha betri za teo sambamba na kuongezeka mara mbili ya sasa na voltage inabaki ile ile.
  2. Je! Nina motors zingine zinazofaa mlima kwenye jukwaa? Labda naweza kuona Ikiwa ni mifano kama hiyo.
  3. Ninaweza kuchukua nafasi ya Servos ikiwa chokoleti iligonga kweli shabiki.

Shule ilianza. Itabidi nione cha kufanya.

Kumbuka: Kwa nini hapa duniani ninaandika shida ninazokutana nazo hapa? Kwa hivyo ikiwa hauna uzoefu na una shida sawa pia utajua nini cha kufanya.

Suluhisho:

Kwa hivyo nimefanya mtihani mwingine. Nimebadilisha tofauti katika kasi katika nambari ya Arduino.

KUMBUKA: motors zinaweza kuzunguka kwa kasi tofauti kwako! Badilisha maadili katika mchoro wa Arduino.

Hatua ya 11: [TCP]: Kwa nini Tcp na Sio Salama Shell? TCP ni nini?

Nina maelezo mawili kwanini utumie Tcp na sio SSH kwa P. C. - Mawasiliano ya Pi.

  1. Kwanza, SSH (Salama Shell, angalia Maelezo) inamaanisha kuzindua amri kutoka kwa kompyuta ya mbali. Kufanya Pi ajibu na habari tunayotaka ni ngumu zaidi kwa sababu chaguo letu pekee la kuchambua data ni kupitia usindikaji wa kamba ngumu na ngumu.
  2. Pili, tayari tunajua jinsi ya kutumia SSH na tunataka kujifunza njia zaidi za mawasiliano kati ya vifaa kwenye mafunzo haya.

TCP, au Itifaki ya Udhibiti wa Usafirishaji, ni itifaki ya msingi ya Itifaki ya Itifaki ya Mtandaoni. Ilianzia katika utekelezaji wa mtandao wa kwanza ambao ulisaidia Itifaki ya Mtandaoni (IP). Kwa hivyo, suti nzima inajulikana kama TCP / IP. TCP hutoa uwasilishaji wa kuaminika, ulioamuru, na kukaguliwa kwa makosa ya mkondo wa octet kati ya programu zinazoendesha kwenye majeshi yanayowasiliana kupitia mtandao wa IP.

(Kutoka Wikipedia)

Kwa hivyo faida za TCP ni:

  • Salama
  • Haraka
  • Inafanya kazi mahali popote kwenye mtandao
  • Hutoa njia za kuangalia usafirishaji sahihi wa data
  • Udhibiti wa Mtiririko: ina ulinzi ikiwa mtumaji data atatuma data haraka sana kwa mteja kusajili na kusindika.

Na hasara ni:

  • Katika TCP huwezi kutangaza (Tuma data kwa vifaa vyote kwenye mtandao) na multicast (sawa lakini tofauti kidogo- inatoa uwezo kwa kila kifaa kutangaza kama seva).
  • Mende katika programu na maktaba za mfumo wa uendeshaji (ambazo zinasimamia mawasiliano ya TCP, router yako haifanyi chochote isipokuwa unganisha vifaa viwili [au zaidi])

Kwa nini usitumie UDP, unaweza kuuliza? Kweli, tofauti na TCP, UDP haihakikishi mteja wako anapata data kabla ya kutuma zaidi. Kama kutuma barua pepe na bila kujua ikiwa mteja anaipokea. Mbali na hilo, UDP haina usalama zaidi. Kwa habari zaidi, soma chapisho hili kutoka kwa Stack Exchange Super User

Nakala hii ni nzuri na inashauriwa.

Hatua ya 12: [TCP]: Hebu Tengeneza Mteja

Mteja (Raspberry Pi kwa upande wetu), anayepokea data kutoka kwa seva (PC yetu kwa upande wetu) atapata data ya kutuma kwa Pi (Amri za serial ambazo zitafanywa kwenye Arduino) na kupokea data nyuma (Usomaji wa Sensor na maoni moja kwa moja kutoka kwa Arduino. Mpango ulioambatanishwa unaonyesha uhusiano kati ya hao watatu.

Nakala ya Python Wiki TcpCommunication inaonyesha kuwa ni rahisi sana kufanya mawasiliano kama haya na laini kadhaa za nambari ukitumia moduli ya tundu iliyojengwa. Tutakuwa na programu kwenye PC na programu nyingine kwenye Pi.

Tutafanya kazi na usumbufu. Jifunze zaidi katika hatua ya Ufafanuzi juu yao. Soma hapo juu ya bafa pia. Sasa, tunaweza kusoma data tunayo kutumia data = s.recv (BUFFER_SIZE) lakini itakuwa wahusika wangapi tumeelezea na kuumwa tupu. Je! Tunaweza kutumia usumbufu? Swali lingine: je! Bafa itakuwa tupu au itangojea seva kutuma data zaidi katika hali ambayo seva / mteja atatupa ubaguzi wa kumaliza muda?

Lets kukabiliana na moja kwa wakati. Kabla ya kufanya hivyo, nimeangalia nakala hii ya Wikipedia iliyoorodhesha bandari za TCP na UDP. Baada ya kuangalia haraka nimeamua kuwa mradi huu utawasiliana kwenye bandari ya 12298 kwa sababu haitumiwi na Mfumo wa Uendeshaji na huduma za mitaa.

Hatua ya 13: Jaribu Tume zetu za Tcp

Ili kuona ikiwa tunaweza kutumia usumbufu, hebu tengeneza mteja rahisi na seva inayotumia Mstari wa Amri ya Python. Nitafanya hivyo kwa hatua zifuatazo:

  1. Anza programu inayotuma maandishi kupitia Tcp kwa kitanzi kupitia bandari ya pazia
  2. Anza programu nyingine (sambamba) ambayo inasoma maandishi yote kwa kitanzi na kuchapisha hiyo kwa skrini.

Sehemu tu za programu zitaonyeshwa. Programu zote zinaendeshwa na Python 3. Programu hizi zote hufanya ni kutuma amri ya serial kutoka kwa kibodi ya mtumiaji wa PC kwa Arduino kupitia Pi.

  • SBcontrolPC.py - Ili kuendeshwa kwenye PC. Huanzisha unganisho la TCP kwenye anwani ya mahali na kwenye bandari iliyoainishwa (ninatumia bandari 12298, angalia hatua ya awali kwanini)
  • SBcontrolPi.py - Kuendeshwa kwenye Pi. Inasoma bafa yake kila nusu sekunde (sekunde 0.5). Huanzisha hati ya ganda ambayo inasimamia vitu kama vile utiririshaji wa video nk.

Ilipendekeza: