Obsah:

Malinový tank s webovým rozhraním a streamováním videa: 8 kroků (s obrázky)
Malinový tank s webovým rozhraním a streamováním videa: 8 kroků (s obrázky)

Video: Malinový tank s webovým rozhraním a streamováním videa: 8 kroků (s obrázky)

Video: Malinový tank s webovým rozhraním a streamováním videa: 8 kroků (s obrázky)
Video: Вот это постанова ► 6 Прохождение Silent Hill Origins (PS2) 2024, Listopad
Anonim
Malinový tank s webovým rozhraním a streamováním videa
Malinový tank s webovým rozhraním a streamováním videa

Uvidíme, jak jsem realizoval malý WiFi Tank, schopný vzdáleného webového ovládání a streamování videa.

Toto má být výukový program, který vyžaduje základní znalosti elektronického a softwarového programování. Z tohoto důvodu jsem vybral soupravu podvozku tanku (místo tisku pomocí 3D tiskárny může být pozdější upgrade) a celkem 6 komponent včetně baterií. Na straně softwaru můžete krok za krokem sledovat proces instalace a programování je omezeno na minimum, základní znalost věcí týkajících se Raspberry může pomoci.

Odhadoval jsem 12 hodin práce od 0 do připraveného tanku. Celkové náklady 70 € na všechny komponenty.

Krok 1: Kusovník

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Tank podvozek robota RC - 32 (€)

www.banggood.com/DIY-RC-Robot-Chassis-Tan…

1 - Dual Channel L298N DC Motor Driver Board - 1, 39 (€)

www.banggood.com/Dual-Channel-L298N-DC-Mo…

1 - Startovací sada Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

1 - 16 GB SD karta - 5, 50 (€)

www.gearbest.com/memory-cards/pp_337819.h…

1 - Webová kamera Raspberry Pi 5MP Camera Module pro model Zero - 8 (€)

www.gearbest.com/raspberry-pi/pp_612249.h…

1 - Power Bank 5V

1 - 9v baterie

Mixed Breadboard Cable Dupont Connector

Nastavení myši, klávesnice, monitoru nebo televize pro Raspberry (volitelně, jen pro usnadnění prvního nastavení)

Krok 2: Specifikace hlavních komponent

Motor

Převodový motor JGA25-370 DC

Tento motor je vybaven výstupním hřídelem ve tvaru D.

Specifikace

· Provozní napětí: mezi 6 V a 18 V

· Jmenovité napětí: 12 V

· Rychlost volného chodu při 12 V: 399 ot / min

· Volně běžící proud při 12 V: 50 mA

· Pádový proud při 12V: 1200 mA

· Krouticí moment při 12 V: 2,2 kg.cm

· Převodový poměr: 1:21

· Velikost reduktoru: 19 mm

· Hmotnost: 84 g

Dvoukanálová deska ovladače stejnosměrného motoru L298N

Duální ovladač motoru H-můstku, může pohánět dva stejnosměrné motory nebo 4vodičové dvoufázové krokové motory. Vestavěný TSD, chránící před zastavením motoru.

Specifikace

· Napájecí napětí modulu: DC 2V-10V

· Vstupní napětí signálu: DC 1,8-7V

· Jeden pracovní proud: 1,5A

· Špičkový proud až 2,5A

· Nízký pohotovostní proud (méně než 0,1uA)

· Vestavěný obvod společného vedení, vstupní svorka je prázdná, motor nefunguje správně

· Velikost: 24,7 x 21 x 7 mm

Krok 3: ZAPOJENÍ

ELEKTRICKÉ VEDENÍ
ELEKTRICKÉ VEDENÍ
ELEKTRICKÉ VEDENÍ
ELEKTRICKÉ VEDENÍ

Toto bude konečné zapojení, ale počkejte, než budeme muset nějaké nainstalovat

softwaru a je dobré to vyzkoušet pomocí jednoduššího zapojení, až se vrátíte sem.

Potřebujeme dva různé zdroje energie, jeden pro motor a jeden pro Raspberry.

Řadič motoru Dual Channel L298N DC Motor Driver Board (max. Vstupní napětí DC 2V-10V) je napájen 9V baterií a Raspberry Pi používá standardní 5V USB akumulátor.

Pin GND ovladače motoru bude připojen k baterii mínus a Raspberry Pi (GND). GPIO piny Raspberry Pi jsou připojeny k ovladači motoru jako tabulka.

Krok 4: PŘÍPRAVA RASPBERRY O. S

Toto je standardní instalace pro operační systém Raspbian, kterou můžete najít

spousta podrobného tutoriálu prohledávání webu, v podstatě kroky jsou:

1. Stáhněte si iso RASPBIAN STRETCH S DESKTOP z

2. Naformátujte 16 GB SD kartu, použil jsem SD Formatter

3. Vypalte soubor. IMG, použil jsem Win32DiskImager

Nyní je vaše malina připravena ke spuštění, připojte ji ke zdroji napájení USB (5 V, 2 A) a připravte se na první spuštění. Můžete to udělat dvěma způsoby, pomocí externích zařízení, jako je myš, klávesnice a monitor, nebo pomocí počítače a vzdáleného připojení k Raspberry. O tom je spousta návodů, jeden je:

Krok 5: JAK OVLÁDAT NAŠI WIFI NÁDRŽ S NODE. JS A WEBSOCKET. IO

JAK ŘÍDIT NAŠI WIFI NÁDRŽ S NODE. JS A WEBSOCKET. IO
JAK ŘÍDIT NAŠI WIFI NÁDRŽ S NODE. JS A WEBSOCKET. IO

Nyní máme novou instalaci našeho Raspberry micro PC připravenou spustit naši práci, takže … co používáme k vydávání příkazů tanku?

Python je velmi snadno použitelný jazyk, který se běžně používá ke spouštění projektu. Písek lze snadno použít také pro interakci se vstupními a výstupními piny Rapsberry (GPIO)

Mým cílem ale bylo připojit moji tankovou wi-fi z jakéhokoli zařízení (PC, mobilní telefon, tablet …) pomocí běžného webového prohlížeče a také z něj streamovat video. Takže prozatím zapomeňte na Python a pojďme se přesunout na NODE. JS a SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) je open source serverová rámcová práce založená na jazyce js. Protože používám Raspberry Pi Zero (CPU ARMv6), nemůžeme použít proces automatické instalace (určený pro CPU ARMv7) a musíme to udělat ručně:

Stáhněte si Nodejs místně (Použil jsem verzi 7.7.2 pro ARMv6, další verze zkontrolujte zde

pi@malina: ~ $ wget

nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…

Po dokončení rozbalte komprimovaný soubor:

pi@raspberry: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Zkopírujte a nainstalujte soubory do /user /local

pi@raspberry: ~ $ sudo cp -R node-v7.7.2-linux-armv6l/*/usr/local/

Přidejte do cesty umístění, kam instalujeme nodejs, upravte soubor „.profile“:

pi@malina: ~ $ nano ~/.profile

Přidejte následující řádek na konec souboru, uložte a ukončete

PATH = $ PATH:/usr/local/bin

Odeberte stažený soubor:.

pi@raspberry: ~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz

pi@raspberry: ~ $ rm -r ~/node-v7.7.2-linux-armv6l

Chcete -li zkontrolovat instalaci nodejs, zadejte následující příkazy:

pi@raspberry: ~ $ node -v

pi@malina: ~ $ npm -v

Jako odpověď byste měli přečíst v7.7.2 a v4.1.2.

Pokud vše proběhlo dobře, vytvořte novou složku pro hostování souborů nodejs:

pi@raspberry: ~ $ mkdir nodehome

Přesunout do nové složky:

pi@raspberry: ~ $ cd nodehome

Nainstalujte další modul potřebný pro správu GPIO nejzákladnějším způsobem, ZAPNUTO a VYPNUTO:

pi@raspberry: ~ $ npm install onoff

Nyní je čas vyzkoušet náš první projekt „Blink.js“, výsledkem bude … blikající LED

pi@raspberry: ~ $ nano blink.js

Vložte následující kód, uložte a ukončete:

var Gpio = require ('onoff'). Gpio; // zahrnout vypnuto

var LED = nové Gpio (3, 'out'); // použijte GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// blikání LED každých 250 ms

funkce blinkLED () {// funkce začne blikat

-li

(LED.readSync () === 0) {// zkontrolujte stav kolíku, pokud je stav 0 (nebo vypnutý)

LED.writeSync (1);

// nastav stav pinu na 1 (zapni LED)

} else {

LED.writeSync (0);

// nastav stav pinu na 0 (vypni LED)

}

}

funkce endBlink () {// funkce přestane blikat

clearInterval (blinkInterval); // Zastavte intervaly mrknutí

LED.writeSync (0); // Vypněte LED

LED.unexport (); // Neexportujte GPIO do bezplatných zdrojů

}

setTimeout (endBlink, 5000); // přestane blikat po 5 sekundách

Zapojte LED, odpor (200 ohmů) podle schématu a spusťte projekt:

pi@raspberry: ~ $ node blink.js

Uzel je připraven.

SOCKET. IO

WebSocket je počítačový komunikační protokol založený na připojení TCP, který poskytuje programátorovi vytvoření serveru a klienta. Klient se připojí k serveru a vysílá a přijímá zprávy na server a ze serveru. Implementace WebSocket pro Node.js se nazývá Socket.io (https://socket.io/).

Nainstalujte socket.io:

pi@raspberry: ~ $ npm install socket.io --save

Přesunout se do domu nodejs, vytvořeného dříve:

pi@raspberry: ~ $ cd nodehome

A vytvořte novou složku „public“:

pi@raspberry: ~ $ mkdir public

Vytvořte nový ukázkový webový server, nazývejte jej „webserver.js“

pi@raspberry: ~ $ nano webserver.js

Vložte následující kód, uložte a ukončete:

var http = require ('http'). createServer (handler); // vyžadují server http a vytvořte server pomocí obsluhy funkcí ()

var fs = require ('fs'); // vyžadují modul souborového systému

http.listen (8080); // poslech portu 8080

obslužná rutina funkcí (požadavek, res) {// vytvoření serveru

fs.readFile (_ dirname + '/public/index.html', funkce (chyba, data) {// čtení

soubor index.html ve veřejné složce

if (err) {

res.writeHead (404, {'Content-Type': 'text/html'}); // zobrazí 404 při chybě

vrátit res.end („404 Ne

Nalezeno );

}

res.writeHead (200, {'Content-Type': 'text/html'}); // napište HTML

res.write (data); // zápis dat

z index.html

vrátit res.end ();

});

}

Tento webový server naslouchá vašemu portu Raspberry 8080 a poskytuje soubor pro jakýkoli webový klient, který jej připojuje. Nyní musíme vytvořit něco, co budeme hostovat a poskytovat našim klientům: Přesunout se do „veřejné“složky: pi@raspberry: ~ $ cd public

Vytvořte nový html soubor „index.html“:

pi@malina: ~ $ nano index.html

Vložte kód z přiloženého souboru „HelloWorld.txt“, uložte a ukončete.

Přesunout se do složky nodejs „nodehome“:

pi@raspberry: ~ $ cd nodehome

Spusťte webový server

pi@raspberry: ~ $ node webserver.js

Otevřete web v prohlížeči pomocí https:// Raspberry_IP: 8080/(nahraďte Raspberry_IP svou IP)

Krok 6: PŘIDÁNÍ VIDEO STREAMINGU SCHOPNOSTI

Existují různé způsoby, jak implementovat streamování videa na Raspberry, nejjednodušší

způsob, jakým jsem až dosud zjistil, že skvělý výkon a integrovatelnost do webového rozhraní je základem projektu Miguel Mota:

miguelmota.com/blog/raspberry-pi-camera-bo…

Díky Migueli! Z jeho blogu jsou to tyto kroky:

Nainstalujte komponenty libjpeg8 a cmake:

pi@raspberry: ~ $ sudo apt-get install libjpeg8

pi@raspberry: ~ $ sudo apt-get install libjpeg8-dev

pi@raspberry: ~ $ sudo apt-get install cmake

Stáhněte si mjpg-streamer s pluginem raspicam:

pi@raspberry: ~ $ git clone

github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer

Změnit adresář:

pi@raspberry: ~ $ cd ~/mjpg-streamer/mjpg-streamer-experimental

Kompilovat:

pi@raspberry: ~ $ make clean all

Vyměnit starý mjpg-streamer:

pi@raspberry: ~ $ sudo rm -rf /opt /-j.webp

pi@raspberry: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-experimental

/opt/mjpg-streamer

pi@raspberry: ~ $ sudo rm -rf ~/mjpg -streamer

Vytvořte nový soubor „start_stream.sh“, zkopírujte a vložte z připojeného souboru „start_stream.txt“.

Udělejte to spustitelným (vytvořte skripty prostředí):

pi@malina: ~ $ chmod +x start_stream.sh

Spustit streamovací server:

pi@malina: ~ $./start_stream.sh

Otevřete web v prohlížeči pomocí https:// Raspberry_IP: 9000 (nahraďte Raspberry_IP svou IP)

Krok 7: PROGRAM NÁDRŽE

Všechno je připraveno, nyní musíme vytvořit naši webovou stránku pro ovládání tanku (index.html) a náš webový server, abychom poslouchali naše příkazy (webserver.js). Nahraďte tedy dosud viděné soubory (pouze příklady k testování systému) připojeným webserver.txt a index.txt.

Krok 8: ZAČNĚTE OVLÁDAT ROZHRANÍ A SÍŤOVÝ SERVER

ZAČNĚTE OVLÁDAT ROZHRANÍ A SÍŤOVÝ SERVER
ZAČNĚTE OVLÁDAT ROZHRANÍ A SÍŤOVÝ SERVER

Chcete -li spustit služby, otevřete dvě okna terminálu a spusťte tyto příkazy:

uzel nodehome/webserver.js

./nodehome/start_stream.sh

Otevřete web v prohlížeči pomocí https:// Raspberry_IP: 8080 (nahraďte Raspberry_IP svou IP)

Doporučuje: