Obsah:

Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi: 15 krokov (s obrázkami)
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi: 15 krokov (s obrázkami)

Video: Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi: 15 krokov (s obrázkami)

Video: Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi: 15 krokov (s obrázkami)
Video: STAR WARS GALAXY OF HEROES WHO’S YOUR DADDY LUKE? 2024, Júl
Anonim
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi
Zostavte si svojho robota na streamovanie videa riadeného internetom s Arduino a Raspberry Pi

Som @RedPhantom (alias LiquidCrystalDisplay / Itay), 14 -ročný študent z Izraela, ktorý sa učí na strednej škole Maxa Sheina Junior High School for Advanced Science and Mathematics. Vytváram tento projekt, aby sa z neho každý mohol učiť a zdieľať!

Možno ste si mysleli: hmm … som geek … A moje deti chcú, aby som s nimi urobil projekt … Chcel postaviť robota. Chcela to obliecť ako malé šteňa. Je to dobrý víkendový projekt!

Raspberry Pi je ideálny na každé použitie: dnes predstavíme schopnosti tohto mikropočítača vyrobiť robota. Tento robot môže:

  • Jazdite a ovládajte sa prostredníctvom siete LAN (WiFi) pomocou akéhokoľvek počítača pripojeného k rovnakej sieti WiFi, ako je Raspberry Pi.
  • Streamujte video naživo pomocou kamerového modulu Raspberry Pi
  • Odosielajte údaje zo senzorov pomocou Arduina

Ak chcete zistiť, čo potrebujete pre tento pekný svetelný projekt, prečítajte si ďalší krok (upozornenia) a potom krok Wanted: Components.

Tu je repo GitHub: GITHUB REPO MNE

Tu je stránka projektu: MIESTO PROJEKTU

Krok 1: Varovanie: Buďte opatrní, keď to vyskúšate doma

UPOZORNENIE:

AUTOR TÝCHTO NÁVODOVÝCH ÚVAHOV, KTORÉ MÁTE DOSTATOČNÉ VEDOMOSTI O ELEKTRINE A ZÁKLADNOM PREVÁDZKE ELEKTRICKÉHO ZARIADENIA. AK NIE SÚ OPATRNÝ a NEDODRŽUJETE POKYNY V TOMTO NÁVODE, MÔŽETE: POŠKODIŤ ELEKTRONICKÉ ZARIADENIE, SPÁLIŤ SEBA ALEBO SPÔSOBIŤ POŽIAR. Buďte opatrní a používajte zdravý rozum. Ak nemáte znalosti potrebné pre tento tutoriál (spájkovanie, základy elektroniky), urobte to s osobou, ktorá to robí. Ďakujem.

TENTO INŠTRUKTÍVNY AUTOR ODSTRAŇUJE AKÚKOĽVEK ZODPOVEDNOSŤ ZA SÁM, KTORÚ spôsobili škody, ALEBO STRATU MAJETKU ALEBO FYZICKÉ POŠKODENIE. POUŽIJTE SPOLOČNÝ SMYSL

Krok 2: Komponenty

Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia
Pripojenia

Pred zahriatím spájkovačky musíme prejsť na to, čo by malo byť s čím spojené. Vytvoril som tento jednoduchý graf (MS Paint ma nikdy nesklame), ktorý popisuje, kde sa určitá časť nachádza v robote.

Obrázok je postavený tak, aby ste si ho mohli priblížiť a vidieť v plnom rozlíšení a prečítať si text.

Krok 6: Adresa pre Pi

Arduino hovorí s Pi podľa plánu. A Pi hovorí s počítačom, ako to teda celé funguje?

Pozrime sa na našu sekvenciu inicializácie pripojenia:

  1. Raspberry Pi začína
  2. Arduino začína
  3. Raspberry Pi spustí klienta TCP. Vysiela svoju IP adresu pomocou LED diódy.
  4. Raspberry Pi spustí službu sériovej komunikácie a pripojí sa k Arduinu

Preto sme vytvorili nejaký druh komunikácie:

Počítač Raspberry Pi Arduino

Na napísanie programu, ktorý hovorí s Raspberry Pi a Python, na zápis protokolu Arduino/Raspberry Pi som použil Visual Basic. NET (komunita Microsoft Visual Studio 2013 Community).

Všetko, čo musíte urobiť, aby ste poznali svoju IP IP adresu, je pripojiť ju k obrazovke HDMI, prihlásiť sa do Shell a napísať príkaz:

názov hostiteľa -I

Krok 7: Plán

Teraz, keď máme IP adresu Pi, SSH naň vložíme (SSH je Secure Shell - vzdialene sa pripájame k Linuxovému shellu) a napíšeme súbor, ktorý zobrazí IP adresu Servera. Pi pri spustení to urobí tiež a napíše port, ktorý počúva. Tu uvediem iba niekoľko príkladov z kódu, ale je k dispozícii na stiahnutie z tohto kroku az pobočky GitHub, ktorú som vytvoril. Podrobnosti o tom neskôr.

Funguje to takto:

  1. RPi sa spustí.
  2. RPi spustí program Tcp na svojej lokálnej IP a určenom porte.
  3. RPI začne streamovať video
  4. RPI sa vypne.

Krok 8: Fyzická aktivita

Teraz sme pripravení začať fyzicky budovať celú vec. Ak ste si neprečítali krok 1 (výstražný text a licencovanie), urobte to pred pokračovaním. Nezodpovedám za žiadne spôsobené škody. A v prípade pochybností nesmie byť tento robot použitý na vojenské účely, pokiaľ nejde o zombie apokalypsu. A aj vtedy používajte zdravý rozum.

Odporúčame vám, aby ste si prečítali pokyny podľa pokynov v zozname na čítanie.

Stiahnite si schému pripojenia z kroku „Pripojenia“.

MOTORY

Motory, ktoré ste si kúpili, pravdepodobne vyzerajú takto a je v poriadku, ak nie: Ak majú iba dva vodiče (vo väčšine prípadov čierny a červený), malo by to fungovať. Ich prevádzkové napätie a prúd nájdete v online liste s údajmi. Neváhajte sa opýtať v sekcii komentárov. Vždy ich čítam.

H-MOST

Nikdy predtým som nepracoval s mostíkom H. Trochu som googlil a našiel som dobrý návod, ktorý vysvetľuje princípy HB. Môžete sa tam tiež pozrieť (pozri krok Zoznam čitateľov) a tiež pripojiť svoje. Nebudem veľa vysvetľovať. Môžete si tam prečítať a vedieť všetko, čo by ste o tomto obvode mali vedieť.

LED

Táto malá žiarovka môže pracovať z logického napätia len preto, že nevyžaduje takmer žiadny prúd a napätie 3V-5V 4mA-18mA. Voliteľné.

ARDUINO

Arduino bude dostávať signály a príkazy prostredníctvom sériového pripojenia z Raspberry Pi. Na ovládanie našich motorov používame Arduino, pretože Raspberry Pi nemôže prenášať analógové hodnoty cez GPIO.

Krok 9: Automatické spustenie Raspberry Pi

Pri každom zapnutí Raspberry Pi budete musieť zadať používateľské meno a heslo. Nechceme to robiť, pretože niekedy jednoducho nemôžeme k Pi pripojiť klávesnicu, takže v tomto návode vykonáme tieto kroky a automaticky spustíme program, ktorý Pi pripravuje. Ak sa to udrží v slučke, môžeme to kedykoľvek prerušiť Ctrl+C.

  • sudo crontab -e
  • A potom zadáme príkaz, ktorý tento súbor pridá do automatického spustenia v správcovi cron.

Zavoláme súbor pibot.sh, ktorý bude dávať príkazy na spustenie všetkých druhov python skriptov na obsluhu robota. Prejdeme na to: (sudo s oponou Python programy, aby sme programu umožnili prístup k GPIO)

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

Kód, ktorý vykonáva všetku prácu na strane pi, sa bude nazývať upon_startup.sh.

Jedná sa o jednoduchý shell skript, ktorý spúšťa všetko.

Krok 10: Houeston, máme problém … DC motory nie sú rovnakým modelom

H-Bridge som už vyskúšal a funguje dobre, ale keď zapojím motory, ktoré som získal z platformy robota, objednal som online, tieto dva motory sa otáčajú rôznymi rýchlosťami a vydávajú rôzne zvuky. Na motoroch som zmenil plyn na 100%. Obaja nemohli bežať na maximum.

Zdá sa, že ide o dva rôzne motory. Jeden má väčší krútiaci moment, čo je skvelé pre tento druh robota, ale druhý by s robotom len tak nepohol. Takže sa točí v kruhoch.

V tomto bode mám sériový program na Arduine úplne v poriadku, ale server Tcp na počítači a klient Tcp na počítači Pi ešte nie sú kódované. Potom musím vyplniť tento príspevok do súťaže. Čo robím?

  1. Najprv strojnásobím napätie v motoroch. V údajovom liste bolo uvedené, že 3V, 6V ich nehýbalo. Potom je to 9V. Paralelne som zapojil teo batérie, aby som zdvojnásobil prúd a napätie zostáva rovnaké.
  2. Mám ďalšie motory, ktoré sa hodia na držiak na plošine? Možno vidím, či sú to podobné modely.
  3. Môžem nahradiť Servos, ak čokoláda skutočne zasiahne fanúšika.

Začala škola Budem musieť zistiť, čo robiť.

Poznámka: Prečo preboha píšem problémy, s ktorými sa tu stretávam? Ak ste teda menej skúsení a máte rovnaké problémy, budete vedieť, čo máte robiť.

Riešenie:

Urobil som teda ďalší test. Prispôsobil som rozdiel v rýchlosti v kóde Arduino.

POZNÁMKA: motory sa môžu pre vás otáčať rôznymi rýchlosťami! Zmeňte hodnoty v náčrte Arduino.

Krok 11: [TCP]: Prečo TCP a nezabezpečený shell? Čo je to TCP?

Mám dve vysvetlenia, prečo používať Tcp a nie SSH pre P. C. - Komunikácia Pi.

  1. Po prvé, SSH (Secure Shell, pozri Vysvetlivky) je určený na spúšťanie príkazov zo vzdialeného počítača. Nechať Pi reagovať s požadovanými informáciami je náročnejšie, pretože jedinou možnosťou, ako analyzovať údaje, je náročné a namáhavé spracovanie reťazcov.
  2. Za druhé, už vieme, ako používať SSH, a v tomto návode sa chceme naučiť viac spôsobov komunikácie medzi zariadeniami.

TCP alebo Transmission Control Protocol je základný protokol sady Internet Protocol Suite. Pôvodom je počiatočná implementácia siete, v ktorej dopĺňa internetový protokol (IP). Celá sada sa preto bežne označuje ako TCP/IP. TCP poskytuje spoľahlivé, usporiadané a chybami kontrolované doručovanie toku oktetov medzi aplikáciami bežiacimi na hostiteľoch komunikujúcich cez IP sieť.

(Z Wikipedie)

Profesionáli TCP sú teda:

  • Zabezpečiť
  • Rýchlo
  • Funguje kdekoľvek v sieti
  • Poskytuje metódy na kontrolu správneho prenosu údajov
  • Flow Control: má ochranu v prípade, že odosielateľ údajov odosiela údaje príliš rýchlo na to, aby sa ich klient mohol zaregistrovať a spracovať.

A nevýhody sú:

  • V TCP nemôžete vysielať (odosielať údaje na všetky zariadenia v sieti) a multicast (rovnaké, ale málo odlišné- dáva možnosť každému zariadeniu vysielať ako server).
  • Chyby vo vašich knižniciach programov a operačných systémov (ktoré si sami spravujú komunikáciu TCP, váš smerovač nerobí takmer nič okrem pripojenia dvoch [alebo viacerých] zariadení)

Prečo nepoužívať UDP, môžete sa opýtať? Na rozdiel od TCP, UDP nezabezpečuje, aby váš klient získal údaje pred odoslaním ďalších. Rovnako ako odoslanie e -mailu a nevedenie, či ho klient dostane. Okrem toho je UDP menej bezpečný. Ak chcete získať ďalšie informácie, prečítajte si tento príspevok od Stack Exchange Super User

Tento článok je dobrý a odporúčaný.

Krok 12: [TCP]: Vytvorme si klienta

Klient (v našom prípade Raspberry Pi), ktorý prijíma údaje zo servera (v našom prípade náš počítač), dostane údaje na odoslanie do Pi (Sériové príkazy, ktoré sa budú vykonávať na zariadení Arduino) a prijme údaje späť (údaje zo snímačov) a spätná väzba priamo z Arduina. Priložená schéma ukazuje vzťah medzi týmito tromi.

Článok Python Wiki TcpCommunication ukazuje, že je také jednoduché uskutočniť takúto komunikáciu pomocou niekoľkých riadkov kódu pomocou vstavaného zásuvkového modulu. Budeme mať program na PC a ďalší program na Pi.

Budeme pracovať s prerušeniami. Získajte viac informácií v kroku Vysvetlivky o nich. Prečítajte si aj o nárazníkoch. Teraz môžeme čítať údaje, ktoré máme, pomocou parametra data = s.recv (BUFFER_SIZE), ale bude to, koľko znakov sme definovali prázdnymi bitmi. Môžeme používať prerušenia? Ďalšia otázka: bude vyrovnávacia pamäť prázdna alebo bude čakať, kým server odošle viac údajov, v takom prípade server/klient vyvolá výnimku časového limitu?

Poďme to riešiť po jednom. Predtým než to urobíme, pozrel som sa na tento článok z Wikipédie, ktorý uvádza použité porty TCP a UDP. Po letmom pohľade som sa rozhodol, že tento projekt bude komunikovať na porte 12298, pretože ho nepoužíva operačný systém a miestne služby.

Krok 13: Vyskúšajte naše Tcp Comms

Aby sme zistili, či môžeme používať prerušenia, urobme si jednoduchého klienta a server pomocou príkazového riadka Python. Urobím to v nasledujúcich krokoch:

  1. Spustite program, ktorý odosiela text cez Tcp v slučke cez port opony
  2. Spustite ďalší program (súbežne), ktorý v slučke prečíta celý text a vytlačí ho na obrazovku.

Zobrazia sa iba segmenty programu. Všetky programy bežia s jazykom Python 3. Všetky tieto programy stačia na odoslanie sériového príkazu z klávesnice používateľa počítača do Arduina cez Pi.

  • SBcontrolPC.py - Spúšťa sa na počítači. Spustí pripojenie TCP na lokálnej adrese a na uvedenom porte (používam port 12298, pozri predchádzajúci krok)
  • SBcontrolPi.py - Beží na Pi. Číta jeho vyrovnávaciu pamäť každú pol sekundu (0,5 sekundy). Spustí shell skript, ktorý spravuje napríklad streamovanie videa atď.

Odporúča: