Obsah:

Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi: 15 kroků (s obrázky)
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi: 15 kroků (s obrázky)

Video: Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi: 15 kroků (s obrázky)

Video: Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi: 15 kroků (s obrázky)
Video: 1. Q Light Controller + Začínáme s QLC +. Přístroje a funkce 2024, Červenec
Anonim
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi
Vytvořte si svého robota pro streamování videa řízeného internetem s Arduino a Raspberry Pi

Jsem @RedPhantom (aka LiquidCrystalDisplay / Itay), 14letý student z Izraele, který se učí na střední škole Maxe Sheina Junior High School for Advanced Science and Mathematics. Dělám tento projekt, aby se každý mohl učit a sdílet!

Možná jste si řekli: hmm … jsem geek … A moje děti chtějí, abych s nimi udělal projekt … Chtěl postavit robota. Chtěla to obléknout jako malé štěně. Je to dobrý víkendový projekt!

Raspberry Pi je ideální pro každé použití: dnes si vysvětlíme schopnosti tohoto mikropočítače vyrobit robota. Tento robot může:

  • Jezděte a buďte ovládáni přes LAN (WiFi) pomocí jakéhokoli počítače připojeného ke stejné WiFi síti jako je Raspberry Pi.
  • Živý přenos videa pomocí kamerového modulu Raspberry Pi
  • Odesílejte data ze senzorů pomocí Arduina

Chcete -li zjistit, co potřebujete pro tento pěkný světelný projekt, přečtěte si další krok (varování) a poté krok Wanted: Components.

Zde je repo GitHub: GITHUB REPO BY ME

Zde je stránka projektu: MÍSTO PROJEKTU

Krok 1: Varování: Buďte opatrní a zkuste to doma

POZOR:

AUTOR TÝCHTO NÁVODOVÝCH PŘEDPOKLADŮ, KTERÉ MÁTE DOSTATEČNÉ ZNALOSTI O ELEKTRICKÉ ENERGII A ZÁKLADNÍM PROVOZU ELEKTRICKÉHO ZAŘÍZENÍ. POKUD NEJSTE OPATRNÍ A NEDODRŽUJETE POKYNY V TÉTO NÁVODU, MŮŽETE: POŠKODIT ELEKTRONICKÉ ZAŘÍZENÍ, SPÁLIT SE NEBO ZPŮSOBIT POŽÁR. Buďte opatrní a používejte zdravý rozum. Pokud nemáte znalosti potřebné pro tento tutoriál (pájení, základy elektroniky), proveďte prosím s osobou, která ano. Děkuji.

TENTO NÁVOD NA AUTOMATIKU ODSTRAŇUJE JAKOUKOLI ZODPOVĚDNOST ZE SEBE ZA ZPŮSOBENÉ POŠKOZENÍ NEBO ZTRACENÝ MAJETEK NEBO FYZICKÉ POŠKOZENÍ. POUŽIJTE SPOLEČNÝ SMYSL

Krok 2: Součásti

Připojení
Připojení
Připojení
Připojení
Připojení
Připojení
Připojení
Připojení

Než zahřejeme páječku, musíme si projít, co by mělo být s čím spojeno. Vytvořil jsem tento jednoduchý graf (MS Paint mě nikdy nezklame), který popisuje, kde se určitá část nachází v robotu.

Obrázek je postaven tak, že jej můžete přiblížit a zobrazit v plném rozlišení a přečíst si text.

Krok 6: Adresa pro Pi

Arduino mluví s Pi podle plánu. A Pi mluví s počítačem, jak to tedy celé funguje?

Podívejme se na naši sekvenci zahájení připojení:

  1. Raspberry Pi začíná
  2. Arduino začíná
  3. Raspberry Pi spustí TCP klienta. Svou IP adresu vysílá pomocí LED.
  4. Raspberry Pi spouští službu sériové komunikace a připojuje se k Arduinu

Proto jsme vytvořili nějaký druh komunikace:

Počítač Raspberry Pi Arduino

Použil jsem Visual Basic. NET (komunita Microsoft Visual Studio 2013 Community) k napsání programu, který hovoří s Raspberry Pi a Python k zápisu protokolu Arduino/Raspberry Pi.

Vše, co musíte udělat, abyste znali svou IP IP adresu, je připojit ji k obrazovce HDMI, přihlásit se do prostředí a zadat příkaz:

název hostitele -I

Krok 7: Plán

Nyní, když máme IP adresu Pi, do ní vložíme SSH (SSH je Secure Shell - připojujeme se vzdáleně k Linuxovému shellu) a napíšeme soubor, který zobrazí IP adresu Serveru. Pi při spuštění to udělá také a napíše port, který poslouchá. Zde uvedu pouze několik příkladů z kódu, ale je k dispozici ke stažení z tohoto kroku az pobočky GitHub, kterou jsem vytvořil. Podrobnosti o tom později.

Funguje to takto:

  1. RPi se spustí.
  2. RPi spouští program Tcp na své lokální IP a určeném portu.
  3. RPI začne streamovat video
  4. RPI se vypne.

Krok 8: Jít fyzicky

Nyní jsme připraveni celou věc fyzicky vybudovat. Pokud jste krok 1 (varovný text a licencování) nečetli, udělejte to, než budete pokračovat. Nezodpovídám za žádné způsobené škody. A v případě pochybností nesmí být tento robot použit pro vojenské účely, pokud nejde o zombie apokalypsu. A i tak použijte zdravý rozum.

Doporučuje se přečíst si pokyny v seznamu pro čtení.

Stáhněte si schéma připojení z kroku „Připojení“.

MOTORY

Motory, které jste si koupili, pravděpodobně vypadají takto a je v pořádku, pokud ne: pokud mají pouze dva vodiče (ve většině případů černý a červený), mělo by to fungovat. Vyhledejte jejich datový list online a podívejte se na jejich provozní napětí a proud. Neváhejte se zeptat v sekci komentáře. Vždy je čtu.

H-MOST

Nikdy předtím jsem s H-Bridge nepracoval. Trochu jsem googlil a našel jsem dobrý návod vysvětlující principy HB. Můžete se tam také podívat (viz krok Seznam čtení) a také připojit svůj. Nebudu moc vysvětlovat. Můžete si zde přečíst a vědět vše, co byste o tomto okruhu měli vědět.

VEDENÝ

Tato malá žárovka může běžet z logického napětí jen proto, že nevyžaduje téměř žádný proud a napětí 3V-5V 4mA-18mA. Volitelný.

ARDUINO

Arduino bude dostávat signály a příkazy přes sériové připojení z Raspberry Pi. K ovládání našich motorů používáme Arduino, protože Raspberry Pi nemůže přenášet analogové hodnoty přes GPIO.

Krok 9: Automatické spuštění Raspberry Pi

Při každém zapnutí Raspberry Pi budete muset zadat uživatelské jméno a heslo. Nechceme to dělat, protože někdy prostě nemůžeme připojit klávesnici k Pi, takže budeme postupovat podle těchto kroků z tohoto tutoriálu, abychom automaticky spustili program, který Pi připravuje. Pokud se dostane do smyčky, můžeme jej kdykoli přerušit pomocí Ctrl+C.

  • sudo crontab -e
  • A pak zadáme příkaz, který přidá tento soubor do automatického strartup ve správci cron.

Zavoláme soubor pibot.sh, který bude dávat příkazy ke spuštění všech druhů pythonových skriptů pro ovládání robota. Pojďme na to: (sudo s oponou Python programy, aby program pří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, který vykonává veškerou práci na straně pí, bude volán upon_startup.sh.

Jedná se o jednoduchý shell skript, který spouští vše.

Krok 10: Houestone, měli jsme problém … DC motory nejsou stejný model

H-Bridge jsem již testoval a funguje dobře, ale když připojím motory, které jsem získal z platformy robotů, objednal jsem online, tyto dva motory se otáčejí různými rychlostmi a vydávají různé zvuky. U motorů jsem změnil plyn na 100%. Oba nemohli běžet na maximum.

Vypadá to, že se jedná o dva různé motory. Jeden má větší točivý moment, což je skvělé pro tento druh robota, ale druhý by s robotem nepohyboval. Takže se točí v kruzích.

V tuto chvíli mám sériový program na Arduinu naprosto v pořádku, ale server Tcp na PC a klient Tcp na Pi zatím nejsou kódovány. Ve chvíli, kdy potřebuji vyplnit tento příspěvek do soutěže. Co mám dělat?

  1. Nejprve ztrojnásobím napětí pro motory. V datovém listu bylo uvedeno, že 3V, 6V je nehýbalo. Pak je to 9V. Paralelně jsem připojil teo baterie, abych zdvojnásobil proud a napětí zůstává stejné.
  2. Mám jiné motory, které se hodí k držáku na plošině? Možná vidím, jestli jsou to podobné modely.
  3. Mohu nahradit Servos, pokud čokoláda opravdu zasáhne fanouška.

Začala škola. Budu muset zjistit, co dělat.

Poznámka: Proč proboha píšu problémy, se kterými se tu setkávám? Pokud jste tedy méně zkušení a máte stejné problémy, budete vědět, co dělat.

Řešení:

Udělal jsem tedy další test. Přizpůsobil jsem rozdíl v rychlosti v kódu Arduino.

POZNÁMKA: motory se pro vás mohou točit různými rychlostmi! Změňte hodnoty v náčrtu Arduino.

Krok 11: [TCP]: Proč TCP a nezabezpečené prostředí? Co je TCP?

Mám dvě vysvětlení, proč používat Tcp a ne SSH pro P. C. - Komunikace Pi.

  1. Za prvé, SSH (Secure Shell, viz Vysvětlení) je určen ke spouštění příkazů ze vzdáleného počítače. Zajistit, aby Pi reagovalo požadovanými informacemi, je obtížnější, protože jedinou možností, jak analyzovat data, je náročné a únavné zpracování řetězců.
  2. Za druhé, již víme, jak používat SSH, a v tomto kurzu se chceme naučit více způsobů komunikace mezi zařízeními.

TCP nebo Transaction Control Protocol je základní protokol sady Internet Protocol Suite. Vznikl v počáteční implementaci sítě, ve které doplňoval internetový protokol (IP). Celá sada se proto běžně označuje jako TCP/IP. TCP poskytuje spolehlivé, seřazené a chybově kontrolované doručování proudu oktetů mezi aplikacemi běžícími na hostitelích komunikujících přes IP síť.

(Z Wikipedie)

Profesionálové TCP jsou tedy:

  • Zajistit
  • Rychle
  • Funguje kdekoli v síti
  • Poskytuje metody pro kontrolu správného přenosu dat
  • Flow Control: má ochranu v případě, že odesílatel dat odesílá data příliš rychle na to, aby se klient mohl zaregistrovat a zpracovat.

A nevýhody jsou:

  • V TCP nemůžete vysílat (odesílat data na všechna zařízení v síti) a vícesměrové vysílání (stejné, ale málo odlišné- dává možnost každému zařízení vysílat jako server).
  • Chyby ve vašich knihovnách programů a operačních systémů (které si samy spravují komunikaci TCP, váš router nedělá téměř nic kromě připojení dvou [nebo více] zařízení)

Proč nepoužívat UDP, můžete se zeptat? Na rozdíl od TCP UDP nezajistí, aby váš klient získal data před odesláním dalších. Stejně jako odeslání e -mailu a nevědět, zda jej klient obdrží. Kromě toho je UDP méně bezpečný. Pro více informací si přečtěte tento příspěvek od Stack Exchange Super User

Tento článek je dobrý a doporučený.

Krok 12: [TCP]: Pojďme si vytvořit klienta

Klient (v našem případě Raspberry Pi), který přijímá data ze serveru (v našem případě Náš počítač), získá data k odeslání na Pi (Sériové příkazy, které budou prováděny na Arduinu) a bude přijímat data zpět (Čtení senzorů a zpětná vazba přímo z Arduina. Přiložené schéma ukazuje vztah mezi těmito třemi.

Článek Python Wiki TcpCommunication ukazuje, že je tak jednoduché provést takovou komunikaci pomocí několika řádků kódu pomocí integrovaného modulu soketu. Budeme mít program na PC a další program na Pi.

Budeme pracovat s přerušeními. Další informace najdete v kroku Vysvětlení o nich. Přečtěte si také o vyrovnávacích pamětech. Nyní můžeme číst data, která máme, pomocí data = s.recv (BUFFER_SIZE), ale bude to, kolik znaků jsme definovali s prázdnými kousky. Můžeme použít přerušení? Další otázka: bude vyrovnávací paměť prázdná nebo bude čekat, až server odešle více dat, v takovém případě server/klient vyvolá výjimku časového limitu?

Pojďme to řešit po jednom. Než tak učiníme, podíval jsem se na tento článek Wikipedie, který uvádí použité porty TCP a UDP. Po letmém pohledu jsem se rozhodl, že tento projekt bude komunikovat na portu 12298, protože jej nepoužívá operační systém a místní služby.

Krok 13: Vyzkoušejte naše Tcp Comms

Abychom zjistili, zda můžeme používat přerušení, vytvořme jednoduchého klienta a server pomocí příkazového řádku Pythonu. Udělám to v následujících krocích:

  1. Spusťte program, který ve smyčce přes port opony odešle text přes Tcp
  2. Spusťte další program (paralelně), který přečte celý text ve smyčce a vytiskne jej na obrazovku.

Zobrazí se pouze segmenty programu. Všechny programy běží s Pythonem 3. Všechny tyto programy stačí poslat sériový příkaz z klávesnice uživatele PC do Arduina přes Pi.

  • SBcontrolPC.py - Spuštění na PC. Spustí připojení TCP na místní adrese a na uvedeném portu (používám port 12298, viz předchozí krok)
  • SBcontrolPi.py - Spouští se na Pi. Čte jeho vyrovnávací paměť každou půl sekundy (0,5 sekundy). Spustí skript prostředí, který spravuje například streamování videa atd.

Doporučuje: