Tartalomjegyzék:

Építse fel az internet által vezérelt videó-streaming robotot az Arduino és a Raspberry Pi segítségével: 15 lépés (képekkel)
Építse fel az internet által vezérelt videó-streaming robotot az Arduino és a Raspberry Pi segítségével: 15 lépés (képekkel)

Videó: Építse fel az internet által vezérelt videó-streaming robotot az Arduino és a Raspberry Pi segítségével: 15 lépés (képekkel)

Videó: Építse fel az internet által vezérelt videó-streaming robotot az Arduino és a Raspberry Pi segítségével: 15 lépés (képekkel)
Videó: Leap Motion SDK 2024, Július
Anonim
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével
Építse fel az interneten vezérelt videó-streaming robotját az Arduino és a Raspberry Pi segítségével

@RedPhantom (más néven LiquidCrystalDisplay / Itay) vagyok, egy 14 éves izraeli diák, aki a Max Shein Junior High School for Advanced Science and Mathematics iskolában tanul. Ezt a projektet azért készítem, hogy mindenki tanuljon és ossza meg!

Lehet, hogy azt gondolta magában: hmm … stréber vagyok … És a gyerekeim azt akarják, hogy készítsek velük egy projektet … Robotot akart építeni. Fel akarta öltöztetni, mint egy kiskutyát. Ez egy jó hétvégi projekt!

A Raspberry Pi minden használatra tökéletes: ma kifejtjük ennek a mikroszámítógépnek a robot készítésére vonatkozó képességeit. Ez a robot képes:

  • Vezessen körbe, és vezérelje LAN -on (WiFi) keresztül bármely számítógéppel, amely ugyanahhoz a WiFi -hálózathoz csatlakozik, mint a Raspberry Pi.
  • Videó élő közvetítése a Raspberry Pi Camera Module segítségével
  • Küldjön érzékelő adatokat az Arduino segítségével

Ahhoz, hogy megtudja, mire van szüksége ehhez a szép fényprojekthez, olvassa el a következő lépést (figyelmeztetések), majd ezt követően a Wanted: Components lépést.

Íme a GitHub repo: GITHUB REPO BY ME

Itt található a projekt oldala: PROJEKT OLDAL BY

1. lépés: Figyelmeztetés: Óvatosan próbálkozzon otthon

VIGYÁZAT:

A TANULMÁNY FELTÉTELE FELTÉTELE, HOGY ELÉG SZERINTES ISMERETEI vannak a villamos energiáról és az elektromos berendezések alapvető működéséről. HA NEM NAGYON FIGYELMES, ÉS NE HASZNÁLJA MEG AZ ÚTMUTATÓ UTASÍTÁSAIT: KÁROSÍTHATJA AZ ELEKTRONIKUS BERENDEZÉSEKET, ÉGTETTE MEG VAGY TŰZET. Ha nem rendelkezik ehhez az oktatóanyaghoz szükséges ismeretekkel (forrasztás, elektronika alapjai), kérjük, végezze el egy olyan személlyel, aki rendelkezik ezzel. Köszönöm.

EZ AZ UTASÍTÓ SZERZŐJE MINDEN FELELŐSSÉGET Eltávolít ÖNTŐL AZ OKOZOTT VAGY ELVESZETT INGATLAN VAGY FIZIKAI KÁRTÉRT. HASZNÁLJA A KÖZÖS ÉRTELMET

2. lépés: Alkatrészek

Kapcsolatok
Kapcsolatok
Kapcsolatok
Kapcsolatok
Kapcsolatok
Kapcsolatok
Kapcsolatok
Kapcsolatok

Mielőtt felmelegítenénk a forrasztópáka, át kell néznünk, hogy mihez kell kapcsolódni. Elkészítettem ezt az egyszerű diagramot (az MS Paint soha nem hagy cserben), amely leírja, hogy a robot bizonyos részei hol találhatók.

A kép úgy van kialakítva, hogy nagyíthat, teljes felbontásban láthatja és olvashatja a szöveget.

6. lépés: A Pi címe

Az Arduino a terv szerint beszél a Pi -vel. És a Pi beszél a számítógéppel, akkor hogyan működik ez az egész?

Nézzük meg a kapcsolatteremtés sorrendjét:

  1. A Raspberry Pi elindul
  2. Az Arduino elindul
  3. A Raspberry Pi elindítja a TCP klienst. LED -en keresztül kilövi az IP -címét.
  4. A Raspberry Pi elindítja a Serial Communications szolgáltatást, és csatlakozik az Arduino -hoz

Ezért létrehoztunk egyfajta kommunikációt:

Számítógép Raspberry Pi Arduino

A Visual Basic. NET (Microsoft Visual Studio 2013 Community) programmal írtam meg azt a programot, amely a Raspberry Pi -vel és a Pythonnal beszél az Arduino/Raspberry Pi protokoll megírásához.

Mindössze annyit kell tennie, hogy tudja a Pi IP -címét, hogy csatlakoztassa azt egy HDMI -képernyőhöz, jelentkezzen be a Shell -be és írja be a parancsot:

hosztnév -Én

7. lépés: A terv

Most, hogy megkaptuk Pi IP -címét, SSH -t fogunk beleírni (az SSH Secure Shell - távolról csatlakozunk a Linux -héjhoz), és írunk egy fájlt, amely megjeleníti a szerver IP -címét. Indításkor a Pi is ezt teszi, és megírja a hallgatott portot. Itt csak néhány példát hozok fel a kódból, de letölthető ebből a lépésből és az általam létrehozott GitHub ágból. Részletek erről később.

Így működik:

  1. RPi elindul.
  2. Az RPi elindítja a Tcp programot a helyi IP címen és egy kijelölt porton.
  3. Az RPI elkezdi a videó streamelését
  4. Az RPI kikapcsol.

8. lépés: fizikailag

Most készen állunk arra, hogy fizikailag felépítsük az egészet. Ha nem olvasta el az 1. lépést (figyelmeztető szöveg és engedélyezés), kérjük, tegye meg, mielőtt folytatja. Az okozott károkért nem vállalok felelősséget. És kétség esetén ezt a robotot nem szabad katonai célokra használni, hacsak nem zombi apokalipszisről van szó. És még akkor is használja a józan eszét.

Javasoljuk, hogy olvassa el az olvasható listában található utasításokat.

Töltse le a csatlakozási sémát a "Kapcsolatok" lépésből.

MOTOROK

A vásárolt motorok valószínűleg így néznek ki, és ha nem, akkor rendben van: ha csak két vezetékük van (a legtöbb esetben fekete és piros), akkor működnie kell. Keresse meg az adatlapjukat az interneten, és nézze meg működési feszültségüket és áramukat. Nyugodtan tegyen fel kérdéseket a megjegyzések részben. Mindig olvasom őket.

H-HÍD

Még soha nem dolgoztam H-híddal. Kicsit googliztam, és találtam egy jó, tanulságos magyarázatot egy HB alapelveire. Ott is megnézheti (lásd az Olvasólista lépését), és beakaszthatja a sajátját is. Nem sokat magyarázok. Ott olvashat és mindent tudhat erről az áramkörről.

VEZETTE

Ez a kis villanykörte képes logikai feszültségről futni, mert szinte nem igényel áramot, és 3V-5V 4mA-18mA feszültséget. Választható.

ARDUINO

Az Arduino jeleket és parancsokat kap a Raspberry Pi soros kapcsolaton keresztül. Az Arduino -t használjuk motorjaink vezérlésére, mert a Raspberry Pi nem tud analóg értékeket kiadni a GPIO -n keresztül.

9. lépés: A Raspberry Pi automatikus indítása

Minden alkalommal, amikor bekapcsolja a Raspberry Pi -t, be kell írnia a felhasználónevet és a jelszót. Nem akarjuk ezt megtenni, mert néha egyszerűen nem tudunk billentyűzetet csatlakoztatni a Pi-hez, ezért az oktatóanyag ezen lépéseit követve automatikusan elindítjuk a Pi-t előkészítő programot. Ha beragad egy hurokba, mindig meg tudjuk szakítani a Ctrl+C billentyűket.

  • sudo crontab -e
  • És akkor beírjuk azt a parancsot, amely hozzáadja ezt a fájlt az auto-strartuphoz a cron kezelőben.

Meghívjuk a pibot.sh fájlt, amely parancsokat ad mindenféle python szkript elindítására a robot működtetéséhez. Nézzük át: (Sudo függöny Python programokkal, hogy a program hozzáférhessen a GPIO -hoz)

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

Az a kód, amely a pi oldalán elvégzi az összes munkát, az upon_startup.sh lesz meghívva.

Ez egy egyszerű shell script, amely mindent futtat.

10. lépés: Houeston, problémánk volt… A DC Motors nem ugyanaz a modell

Már teszteltem a H-hidat, és jól működik, de amikor beakasztom a motorokat, amelyeket az interneten rendelt robotplatformról kaptam, az a két motor különböző sebességgel forog, és különböző hangokat ad ki. A gázpedált 100% -ra változtattam a motorokon. Mindketten nem tudtak maximálisan teljesíteni.

Úgy tűnik, hogy ez két különböző motor. Az egyik nagyobb nyomatékkal rendelkezik, ami nagyszerű az ilyen típusú robotok számára, de a másik nem mozgatja a robotot. Tehát körökben fordul.

Jelenleg az Arduino soros programja tökéletesen működik, de a PC Tcp szervere és a Pi Tcp kliens még nincs kódolva. Itt kell kitöltenem ezt a bejegyzést a versenyre. Mit tegyek?

  1. Először megháromszorozom a motorok feszültségét. Az adatlap szerint 3V, 6V nem mozgatta őket. Akkor 9V. Csatlakoztattam párhuzamosan a teo akkumulátorokat, hogy megduplázzam az áramot, és a feszültség ugyanaz marad.
  2. Vannak más motorjaim is, amelyek illeszkednek az emelvényre? Talán látom, ha hasonló modellek.
  3. Cserélhetem a Servos -ra, ha a csokoládé valóban eléri a ventilátort.

Elkezdődött az iskola. Látnom kell, mit tegyek.

Megjegyzés: Miért írom ide a problémákat, amikkel találkozom? Tehát ha kevésbé tapasztalt és ugyanazokkal a problémákkal küzd, akkor tudja, mit kell tennie.

A megoldás:

Szóval csináltam egy újabb tesztet. A sebességkülönbséget kiigazítottam az Arduino kódban.

MEGJEGYZÉS: a motorok különböző sebességgel foroghatnak az Ön számára! Módosítsa az Arduino vázlat értékeit.

11. lépés: [TCP]: Miért a Tcp és a nem biztonságos Shell? Mi az a TCP?

Két magyarázatom van arra, hogy miért használjuk a Tcp -t és nem az SSH -t a PC -hez. - Pi kommunikáció.

  1. Először is, az SSH (Secure Shell, lásd Magyarázatok) parancsok indítására szolgál távoli számítógépről. A Pi válaszolása a kívánt információkkal nehezebb, mert az egyetlen lehetőségünk az adatok elemzésére a kemény és fárasztó karakterlánc -feldolgozás.
  2. Másodszor, már tudjuk, hogyan kell használni az SSH -t, és szeretnénk megtanulni az eszközök közötti kommunikáció további módjait ebben az oktatóanyagban.

A TCP vagy a Transmission Control Protocol az Internet Protocol Suite központi protokollja. A kezdeti hálózati megvalósításból származik, amelyben kiegészítette az Internet Protokollt (IP). Ezért a teljes készletet általában TCP/IP -nek nevezik. A TCP megbízható, rendezett és hibajavított oktettáramot biztosít az IP-hálózaton keresztül kommunikáló gazdagépeken futó alkalmazások között.

(A Wikipédiából)

Tehát a TCP profik:

  • Biztonságos
  • Gyors
  • Bárhol működik a hálózaton
  • Módszereket kínál a helyes adatátvitel ellenőrzésére
  • Folyamatvezérlés: védelmet nyújt arra az esetre, ha az adatküldő túl gyorsan küld adatokat az ügyfél regisztrálásához és feldolgozásához.

És a hátrányok:

  • A TCP-ben nem sugározhat (Adatok küldése a hálózat összes eszközére) és multicastet (ugyanaz, de alig különbözik- lehetővé teszi az egyes eszközök szerverként történő sugárzását).
  • Hibák a programban és az operációs rendszer -könyvtárakban (amelyek maguk kezelik a TCP kommunikációt, az útválasztó szinte semmit nem tesz, kivéve a két [vagy több] eszköz csatlakoztatását)

Miért nem használja az UDP -t, kérdezheti? Nos, a TCP -vel ellentétben az UDP nem gondoskodik arról, hogy az ügyfél megkapja az adatokat, mielőtt többet küldene. Mint például e -mailt küldeni, és nem tudni, hogy az ügyfél megkapja -e. Ezenkívül az UDP kevésbé biztonságos. További információért olvassa el a Stack Exchange Super User bejegyzését

Ez a cikk jó és ajánlott.

12. lépés: [TCP]: Létrehozunk egy ügyfelet

Az ügyfél (esetünkben Raspberry Pi), amely megkapja az adatokat a szervertől (esetünkben a mi PC -nk) adatokat fog kapni, hogy elküldje a Pi -nek (soros parancsok, amelyeket az Arduino -n hajtanak végre), és visszakapja az adatokat (érzékelő leolvasása) és visszajelzést közvetlenül az Arduino -tól. A mellékelt séma a három kapcsolatát mutatja.

A Python Wiki TcpCommunication cikkéből kiderül, hogy ilyen egyszerű pár sor kóddal ilyen kommunikációt létrehozni a beépített socket modul segítségével. Van egy programunk a PC -n és egy másik program a Pi -n.

Megszakításokkal dolgozunk. Tudjon meg többet a magyarázatokról. Olvasson ott a pufferekről is. Most a data = s.recv (BUFFER_SIZE) segítségével ki tudjuk olvasni a rendelkezésünkre álló adatokat, de az lesz, hogy hány karaktert definiáltunk üres harapásokkal. Használhatjuk a megszakításokat? Egy másik kérdés: üres lesz a puffer, vagy megvárja, amíg a szerver további adatokat küld, ebben az esetben a szerver/kliens időtúllépési kivételt dob?

Foglalkozzunk ezzel egyenként. Mielőtt ezt megtennénk, megnéztem ezt a Wikipédia -cikket, amely felsorolja a használt TCP és UDP portokat. Gyors pillantás után úgy döntöttem, hogy ez a projekt kommunikálni fog a 12298 -as porton, mert az operációs rendszer és a helyi szolgáltatások nem használják.

13. lépés: Próbálja ki a Tcp Comms -t

Annak érdekében, hogy megtudjuk, használhatjuk -e a megszakításokat, készítsünk egy egyszerű klienst és szervert a Python parancssor használatával. Ezt a következő lépésekben fogom tenni:

  1. Indítson el egy programot, amely szöveget küld Tcp -n keresztül hurokban egy függönyporton keresztül
  2. Indítson el egy másik programot (párhuzamosan), amely elolvassa a ciklus összes szövegét, és kinyomtatja azt a képernyőre.

Csak a program szegmensei jelennek meg. Minden program Python 3 -mal fut. Ezek a programok csak a soros parancsot küldik a PC -felhasználó billentyűzetéről az Arduino -ra a Pi -n keresztül.

  • SBcontrolPC.py - A számítógépen kell futtatni. TCP -kapcsolatot indít a helyi címen és a megadott porton (12298 -as portot használok, lásd az előző lépést)
  • SBcontrolPi.py - Pi -n kell futtatni. Fél másodpercenként (0,5 másodperc) olvassa be a puffert. Elindít egy shell parancsfájlt, amely kezeli a videókat, stb.

Ajánlott: