Satura rādītājs:

Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi: 15 soļi (ar attēliem)
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi: 15 soļi (ar attēliem)

Video: Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi: 15 soļi (ar attēliem)

Video: Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi: 15 soļi (ar attēliem)
Video: CS50 2015 - Week 10 2024, Novembris
Anonim
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi
Izveidojiet savu interneta kontrolēto video straumēšanas robotu, izmantojot Arduino un Raspberry Pi

Es esmu @RedPhantom (pazīstams arī kā LiquidCrystalDisplay / Itay), 14 gadus vecs students no Izraēlas, kurš mācās Maksa Šeina jaunākās zinātnes un matemātikas vidusskolā. Es veidoju šo projektu, lai ikviens varētu mācīties un dalīties!

Jūs, iespējams, domājāt pie sevis: hmm … es esmu džeks … Un mani bērni vēlas, lai es kopā ar viņiem izstrādātu projektu … Viņš gribēja izveidot robotu. Viņa gribēja to saģērbt kā mazu kucēnu. Tas ir labs nedēļas nogales projekts!

Raspberry Pi ir lieliski piemērots ikvienam lietojumam: šodien mēs atklāsim šī mikrodatora spējas izveidot robotu. Šis robots var:

  • Brauciet apkārt un vadieties, izmantojot LAN (WiFi), izmantojot jebkuru datoru, kas savienots ar to pašu WiFi tīklu kā Raspberry Pi.
  • Straumējiet video tiešraidē, izmantojot Raspberry Pi kameras moduli
  • Nosūtiet sensora datus, izmantojot Arduino

Lai redzētu, kas jums nepieciešams šim jaukajam gaismas projektam, vienkārši izlasiet nākamo soli (brīdinājumi) un pēc tam soli Wanted: Components.

Šeit ir GitHub repo: GITHUB REPO BY ME

Šeit ir projekta vietne: PROJEKTA VIETA

1. solis: Brīdinājums: esiet piesardzīgs, izmēģinot to mājās

UZMANĪBU:

ŠĀ PAMĀCĪBAS AUTORS PIEŅEM, ka jums ir pietiekami daudz zināšanu par elektrību un ELEKTRISKĀS IERĪCES PAMATDARBĪBU. JA NEESAT UZMANĪGS UN IEVĒROJIET ŠO PAMĀCĪBAS NORĀDĪJUMUS, KAS JŪS VARAT: Bojāt ELEKTRONISKO IEKĀRTU, PADEDZINĀT VAI IZRAISĪT UGUNI. Lūdzu, esiet piesardzīgs un izmantojiet veselo saprātu. Ja jums nav šajā apmācībā nepieciešamo zināšanu (lodēšana, elektronikas pamati), lūdzu, veiciet to kopā ar indivīdu. Paldies.

ŠĪ INSTRUKCIJAS AUTORS NOŅEM SEVI ATBILDĪBU PAR KAITĒJUMIEM, KAS RADĪTI VAI ZAUDĒTI ĪPAŠUMI VAI FIZISKI. LIETOT KOPĒJO SAPRĀTU

2. darbība: sastāvdaļas

Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi
Savienojumi

Pirms mēs uzkarsējam lodāmuru, mums ir jāpārbauda, kas ar ko jāpievieno. Es izveidoju šo vienkāršo diagrammu (MS Paint nekad mani nepievilina), kurā aprakstīts, kur noteiktā daļa atrodas robotā.

Attēls ir veidots tā, lai jūs varētu tuvināt un redzēt pilnā izšķirtspējā un lasīt tekstu.

6. darbība: adrese Pi

Arduino sarunājas ar Pi saskaņā ar plānu. Un Pi runā ar datoru, tad kā tas viss darbojas?

Apskatīsim mūsu savienojuma uzsākšanas secību:

  1. Sākas Raspberry Pi
  2. Arduino sākas
  3. Raspberry Pi palaiž TCP klientu. Tas izgaismo savu IP adresi, izmantojot LED.
  4. Raspberry Pi sāk seriālo sakaru pakalpojumu un izveido savienojumu ar Arduino

Tāpēc mēs esam izveidojuši sava veida saziņu:

Dators Raspberry Pi Arduino

Esmu izmantojis Visual Basic. NET (Microsoft Visual Studio 2013 Community), lai uzrakstītu programmu, kas sarunājas ar Raspberry Pi un Python, lai rakstītu Arduino/Raspberry Pi protokolu.

Viss, kas jums jādara, lai uzzinātu savu Pi IP adresi, ir savienot to ar HDMI ekrānu, pieteikties Shell un ierakstīt komandu:

saimniekdatora nosaukums -es

7. solis: plāns

Tagad, kad esam ieguvuši Pi IP adresi, mēs tajā ievadīsim SSH (SSH ir Secure Shell - mēs attālināti izveidojam savienojumu ar Linux apvalku) un uzrakstīsim failu, kas parāda servera IP adresi. Uzsākot, Pi arī to darīs un uzrakstīs portu, kuru tas klausās. Šeit es sniegšu tikai dažus koda piemērus, taču to var lejupielādēt no šīs darbības un no manis izveidotās GitHub filiāles. Sīkāka informācija par to vēlāk.

Tas darbojas šādi:

  1. RPi sāk darboties.
  2. RPi sāk Tcp programmu savā vietējā IP un norādītajā ostā.
  3. RPI sāk straumēt video
  4. RPI izslēdzas.

8. solis: fiziskā aktivitāte

Tagad mēs esam gatavi sākt visu fiziski veidot. Ja neesat izlasījis 1. darbību (brīdinājuma teksts un licencēšana), lūdzu, pirms turpināt. Es neesmu atbildīgs par nodarīto kaitējumu. Un šaubu gadījumā šo robotu nedrīkst izmantot militāriem mērķiem, ja vien tā nav zombiju apokalipse. Un pat tad izmantojiet veselo saprātu.

Ieteicams izlasīt lasāmvielu sarakstā iekļautos norādījumus.

Lejupielādējiet savienojuma shēmu no darbības "Savienojumi".

MOTORI

Jūsu iegādātie motori, iespējams, izskatās šādi, un ja nav, tad ir labi: ja tiem ir tikai divi vadi (vairumā gadījumu melni un sarkani), tam vajadzētu darboties. Meklējiet viņu datu lapu tiešsaistē, lai redzētu viņu darba spriegumu un strāvu. Jūtieties brīvi uzdot jautājumus komentāru sadaļā. Es vienmēr tos lasu.

H-TILTS

Es nekad iepriekš neesmu strādājis ar H-Bridge. Es mazliet googlēju un atradu labu pamācību, kas izskaidro HB principus. Jūs varat arī tur paskatīties (skatiet lasīšanas saraksta soli) un piesaistīt arī savu. Es daudz nepaskaidrošu. Jūs varat izlasīt tur un zināt visu, kas jums jāzina par šo ķēdi.

LED

Šī mazā spuldzīte var darboties no loģiskā sprieguma tikai tāpēc, ka tai gandrīz nav nepieciešama strāva, un spriegums ir 3V-5V 4mA-18mA. Neobligāti.

ARDUINO

Arduino saņems signālus un komandas, izmantojot seriālo savienojumu no Raspberry Pi. Mēs izmantojam Arduino, lai kontrolētu savus motorus, jo Raspberry Pi nevar izvadīt analogās vērtības, izmantojot GPIO.

9. solis: Raspberry Pi automātiskā palaišana

Katru reizi, ieslēdzot Raspberry Pi, jums būs jāievada lietotājvārds un parole. Mēs nevēlamies to darīt, jo dažreiz mēs vienkārši nevaram savienot tastatūru ar Pi, tāpēc, lai automātiski palaistu programmu, kas sagatavo Pi, mēs izpildīsim šīs apmācības darbības. Ja tas tiks pieķerts cilpai, mēs vienmēr varam Ctrl+C to pārtraukt.

  • sudo crontab -e
  • Un tad mēs ievadīsim komandu, kas pievieno šo failu automātiskai strartup cron pārvaldniekā.

Mēs izsauksim failu pibot.sh, kas dos komandas, lai palaistu visa veida python skriptus, lai darbinātu robotu. Pārskatīsim to: (Mēs sudo ar aizkaru Python programmām, lai programma varētu piekļūt GPIO)

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

Kods, kas veic visu darbu pi pusē, tiks izsaukts upon_startup.sh.

Tas ir vienkāršs čaulas skripts, kas vada visu.

10. solis: Houeston, mums ir radusies problēma … DC Motors nav tas pats modelis

Es jau esmu pārbaudījis H-tiltu, un tas darbojas labi, bet, kad es pieslēdzu motorus, ko saņēmu no robota platformas, kuru pasūtīju tiešsaistē, šie divi motori griežas ar atšķirīgu ātrumu un rada dažādus trokšņus. Es nomainīju droseli uz 100% motoriem. Abi nevarēja skriet ar maksimālo spēju.

Šķiet, ka šie ir divi dažādi motori. Vienam ir lielāks griezes moments, kas ir lieliski piemērots šāda veida robotam, bet otrs vienkārši nepārvieto robotu. Tātad tas griežas apļos.

Pašlaik Arduino sērijas programma darbojas pilnīgi labi, taču datora Tcp serveris un Pi Tcp klients vēl nav kodēts. Man ir jāaizpilda šis konkursa ieraksts. Ko man darīt?

  1. Pirmkārt, es trīskāršoju motoru spriegumu. Datu lapā bija teikts, ka 3V, 6V tos nepakustināja. Tad ir 9V. Es paralēli pievienoju teo baterijas, lai dubultotu strāvu, un spriegums paliek nemainīgs.
  2. Vai man ir citi motori, kas atbilst platformas stiprinājumam? Varbūt es redzu, vai tie ir līdzīgi modeļi.
  3. Es varu nomainīt uz Servos, ja šokolāde patiešām skāra ventilatoru.

Sākās skola. Man būs jāskatās, ko darīt.

Piezīme: Kāpēc es uzrakstīšu šeit radušās problēmas? Tātad, ja esat mazāk pieredzējis un jums ir tādas pašas problēmas, jūs zināt, ko darīt.

Atrisinājums:

Tāpēc es veicu vēl vienu pārbaudi. Esmu pielāgojis ātruma atšķirības Arduino kodā.

PIEZĪME: motori var griezties dažādos ātrumos! Mainiet Arduino skices vērtības.

11. darbība: [TCP]: Kāpēc Tcp un nav drošs apvalks? Kas ir TCP?

Man ir divi skaidrojumi, kāpēc P. C. izmantot Tcp, nevis SSH. - Pi komunikācija.

  1. Pirmkārt, SSH (Secure Shell, sk. Paskaidrojumus) ir paredzēts komandu palaišanai no attālā datora. Lai Pi atbildētu ar vēlamo informāciju, ir grūtāk, jo mūsu vienīgā iespēja analizēt datus ir grūta un garlaicīga virkņu apstrāde.
  2. Otrkārt, mēs jau zinām, kā izmantot SSH, un šajā apmācībā vēlamies uzzināt vairāk saziņas veidu starp ierīcēm.

TCP jeb pārraides kontroles protokols ir interneta protokola komplekta galvenais protokols. Tas radās sākotnējā tīkla ieviešanā, kurā tas papildināja interneta protokolu (IP). Tāpēc visu komplektu parasti sauc par TCP/IP. TCP nodrošina uzticamu, pasūtītu un kļūdu pārbaudītu oktetu plūsmas piegādi starp lietojumprogrammām, kas darbojas saimniekdatoros, kuri sazinās IP tīklā.

(No Vikipēdijas)

Tātad TCP plusi ir:

  • Droši
  • Ātri
  • Darbojas jebkurā tīkla vietā
  • Sniedz metodes pareizas datu pārraides pārbaudei
  • Plūsmas kontrole: tai ir aizsardzība, ja datu sūtītājs nosūta datus pārāk ātri, lai klients varētu reģistrēties un apstrādāt.

Un mīnusi ir šādi:

  • Izmantojot TCP, jūs nevarat pārraidīt (sūtīt datus uz visām tīkla ierīcēm) un multicast (tas pats, bet nedaudz atšķirīgs- dod iespēju katrai ierīcei pārraidīt kā serveris).
  • Programmas un operētājsistēmas bibliotēku kļūdas (kas paši pārvalda TCP sakarus, maršrutētājs gandrīz neko nedara, izņemot divu [vai vairāku] ierīču savienošanu)

Kāpēc neizmantot UDP, jūs varat jautāt? Atšķirībā no TCP, UDP nepārliecinās, ka jūsu klients saņem datus, pirms sūta vairāk. Tāpat kā sūtīt e -pastu un nezināt, vai klients to saņem. Turklāt UDP ir mazāk drošs. Lai iegūtu vairāk informācijas, izlasiet šo Stack Exchange Super User ziņu

Šis raksts ir labs un ieteicams.

12. solis: [TCP]: izveidosim klientu

Klients (mūsu gadījumā Raspberry Pi), kas saņem datus no servera (mūsu dators mūsu gadījumā), iegūs datus, ko nosūtīt uz Pi (sērijas komandas, kas tiks izpildītas Arduino), un saņems datus atpakaļ (sensora rādījumi) un atsauksmes tieši no Arduino. Pievienotā shēma parāda attiecības starp trim.

Python Wiki TcpCommunication raksts parāda, ka ir tik vienkārši izveidot šādu saziņu ar dažām koda rindām, izmantojot iebūvēto ligzdas moduli. Mums būs programma datorā un cita programma Pi.

Mēs strādāsim ar pārtraukumiem. Uzziniet vairāk sadaļā Paskaidrojumi par tiem. Lasiet arī par buferiem. Tagad mēs varam nolasīt mūsu rīcībā esošos datus, izmantojot data = s.recv (BUFFER_SIZE), bet tas būs tas, cik rakstzīmju esam definējuši ar tukšiem kodumiem. Vai mēs varam izmantot pārtraukumus? Vēl viens jautājums: vai buferis būs tukšs, vai arī tas gaidīs, kamēr serveris nosūtīs vairāk datu, tādā gadījumā serveris/klients iemetīs taimauta izņēmumu?

Ļaujiet to risināt pa vienam. Pirms mēs to darām, es esmu uzmeklējis šo Wikipedia rakstu, kurā uzskaitīti izmantotie TCP un UDP porti. Pēc ātras ieskatīšanās es nolēmu, ka šis projekts sazināsies 12298 portā, jo to neizmanto operētājsistēma un vietējie pakalpojumi.

13. darbība. Izmēģiniet mūsu Tcp Comms

Lai redzētu, vai mēs varam izmantot pārtraukumus, ļaujim izveidot vienkāršu klientu un serveri, izmantojot Python komandrindu. Es to darīšu, veicot šādas darbības:

  1. Sāciet programmu, kas nosūta tekstu, izmantojot Tcp, cilpā caur aizkaru portu
  2. Sāciet citu programmu (paralēli), kas nolasa visu cikla tekstu un izdrukā to ekrānā.

Tiks parādīti tikai programmas segmenti. Visas programmas darbojas ar Python 3. Visas šīs programmas ir nosūtīt sērijas komandu no datora lietotāja tastatūras uz Arduino caur Pi.

  • SBcontrolPC.py - paredzēts darbināšanai datorā. Uzsāk TCP savienojumu vietējā adresē un norādītajā portā (es izmantoju portu 12298, skatiet iepriekšējo darbību, kāpēc)
  • SBcontrolPi.py - darbināms ar Pi. Tā buferi nolasa ik pēc pussekundes (0,5 sekundes). Tiek palaists čaulas skripts, kas pārvalda tādas lietas kā video straumēšana utt.

Ieteicams: