Spisu treści:

Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo: 8 kroków (ze zdjęciami)
Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo: 8 kroków (ze zdjęciami)

Wideo: Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo: 8 kroków (ze zdjęciami)

Wideo: Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo: 8 kroków (ze zdjęciami)
Wideo: Streaming na YouTube z Kamer IP RTSP / cz.2 #Kamery_IP i Mikrofon z Laptopa 2024, Listopad
Anonim
Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo
Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo

Zobaczymy, jak zrealizowałem mały WiFi Tank, zdolny do zdalnej kontroli sieci i przesyłania strumieniowego wideo.

Ma to być samouczek, który wymaga podstawowej wiedzy z zakresu programowania elektronicznego i oprogramowania. Z tego powodu wybrałem zestaw podwozia czołgu (zamiast drukować go na drukarce 3D, może być późniejszą modernizacją) i łącznie 6 elementów, w tym baterie. Po stronie oprogramowania możesz śledzić krok po kroku proces instalacji i programowania na minimalnym poziomie, podstawowa wiedza na temat Raspberry może pomóc.

Szacowałem 12h pracy od 0 do gotowego do uruchomienia zbiornika. Całkowity koszt 70€ za wszystkie komponenty.

Krok 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Zbiornik podwozia robota DIY RC - 32 (€)

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

1 - Dwukanałowa płyta sterownika silnika DC L298N - 1, 39 (€)

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

1 - Zestaw startowy Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

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

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

1 - Kamera internetowa z modułem kamery Raspberry Pi 5MP dla modelu Zero - 8 (€)

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

1 - Powerbank 5V

Bateria 1 - 9 V

Mieszane złącze Dupont kabla do płyt chlebowych

Konfiguracja myszy, klawiatury, monitora lub telewizora do Raspberry (opcjonalnie, aby ułatwić pierwszą konfigurację)

Krok 2: Specyfikacja głównych komponentów

Silnik

Motoreduktor JGA25-370 DC

Ten silnik ma wał wyjściowy w kształcie litery D.

Specyfikacje

· Napięcie robocze: od 6 V do 18 V

· Napięcie nominalne: 12 V

· Prędkość biegu swobodnego przy 12 V: 399 obr./min

· Prąd swobodny przy 12 V: 50 mA

· Prąd utyku przy 12V: 1200 mA

· Moment utyku przy 12 V: 2,2 kg.cm

· Przełożenie: 1:21

· Rozmiar reduktora: 19 mm

· Waga: 84g

Dwukanałowa płyta sterownika silnika DC L298N

Sterownik silnika z podwójnym mostkiem H, może napędzać dwa silniki prądu stałego lub 4-przewodowe dwufazowe silniki krokowe. Wbudowany TSD, aby chronić przed utknięciem silnika.

Specyfikacje

· Napięcie zasilania modułu: DC 2V-10V

· Napięcie wejściowe sygnału: DC 1,8-7V

· Pojedynczy prąd roboczy: 1,5A

· Prąd szczytowy do 2,5A

· Niski prąd czuwania (mniej niż 0,1uA)

· Wbudowany wspólny obwód przewodzący, zacisk wejściowy jest wolny, silnik nie działa nieprawidłowo

· Rozmiar: 24,7 x 21 x 7 mm

Krok 3: OKABLOWANIE

OKABLOWANIE
OKABLOWANIE
OKABLOWANIE
OKABLOWANIE

To będzie ostateczne okablowanie, ale CZEKAJ, zanim będziemy musieli zainstalować trochę

oprogramowanie i dobrym pomysłem jest przetestowanie go z prostszym okablowaniem, gdy będziesz gotowy, wróć tutaj.

Potrzebujemy dwóch różnych źródeł zasilania, jednego dla silnika i jednego dla Raspberry.

Dwukanałowy sterownik silnika L298N DC (maksymalne napięcie wejściowe DC 2V-10V) jest zasilany przy użyciu baterii 9V, a Raspberry Pi używa standardowego akumulatora USB 5V.

Pin GND sterownika silnika zostanie podłączony do minusa akumulatora i Raspberry Pi (GND). Piny GPIO Raspberry Pi są podłączone do sterownika silnika jako tabela.

Krok 4: PRZYGOTOWANIE MALINOWEGO O. S

Jest to standardowa instalacja systemu operacyjnego Raspbian, którą można znaleźć

wiele szczegółowych samouczków przeszukujących sieć, w zasadzie kroki to:

1. Pobierz iso RASPBIAN STRETCH Z DESKTOPEM z

2. Sformatuj kartę SD o pojemności 16 GB, użyłem SD Formatter

3. Nagraj plik. IMG, użyłem Win32DiskImager

Teraz twój Raspberry jest gotowy do uruchomienia, podłącz go do źródła zasilania USB (5V, 2A) i przygotuj się do pierwszej konfiguracji rozruchu. Możesz to zrobić na dwa sposoby, używając urządzeń zewnętrznych, takich jak mysz, klawiatura i monitor lub używając komputera PC i zdalnego połączenia z Raspberry. Istnieje wiele samouczków na ten temat, jeden z nich to:

Krok 5: JAK KONTROLOWAĆ NASZ WIFI TANK ZA POMOCĄ NODE. JS I WEBSOCKET. IO?

JAK KONTROLOWAĆ NASZ ZBIORNIK WIFI ZA POMOCĄ NODE. JS I WEBSOCKET. IO?
JAK KONTROLOWAĆ NASZ ZBIORNIK WIFI ZA POMOCĄ NODE. JS I WEBSOCKET. IO?

Teraz mamy świeżą instalację naszego mikrokomputera Raspberry, gotowego do wykonania naszej pracy, więc… czego używamy do wydawania poleceń czołgowi?

Python jest bardzo łatwym w użyciu językiem, który jest powszechnie używany do uruchamiania projektu Rapsberry, piasek może być łatwo używany również do interakcji z pinami wejścia i wyjścia Rapsberry (GPIO)

Ale moim celem było podłączenie mojego czołgu wi-fi z dowolnego urządzenia (komputera, telefonu komórkowego, tabletu…) za pomocą zwykłej przeglądarki internetowej, a także strumieniowanie wideo z niej. Zapomnij więc na razie o Pythonie i przejdźmy do NODE. JS i SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) to platforma serwera open source oparta na języku js. Ponieważ używam Raspberry Pi Zero (procesor ARMv6), nie możemy skorzystać z procesu automatycznej instalacji (przeznaczonego dla procesora ARMv7) i musimy to zrobić ręcznie:

Pobierz Nodejs lokalnie (użyłem wersji 7.7.2 dla ARMv6, sprawdź inne wersje tutaj

pi@malina:~ $ wget

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

Po zakończeniu wyodrębnij skompresowany plik:

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

Skopiuj i zainstaluj pliki do /user/local

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

Dodaj lokalizację, w której instalujemy nodejs do ścieżki, edytuj plik „.profile”:

pi@raspberry:~ $ nano ~/.profil

Dodaj następujący wiersz na końcu pliku, zapisz i wyjdź

PATH=$PATH:/usr/local/bin

Usuń pobrany plik:.

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

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

Wpisz następujące polecenia, aby sprawdzić instalację nodejs:

pi@raspberry:~ $ węzeł -v

pi@malina:~ $ npm -v

Jako odpowiedź powinieneś przeczytać wersje 7.7.2 i 4.1.2.

Jeśli wszystko poszło dobrze, utwórz nowy folder do przechowywania plików nodejs:

pi@raspberry:~ $ mkdir nodehome

Przenieś się do nowego folderu:

pi@raspberry:~ $ cd nodehome

Zainstaluj dodatkowy moduł wymagany do zarządzania GPIO w najbardziej podstawowy sposób, ON i OFF:

pi@raspberry:~ $ npm install onoff

Czas przetestować nasz pierwszy projekt „Blink.js”, efektem będzie … migająca dioda LED

pi@raspberry:~ $ nano blink.js

Wklej następujący kod, zapisz i wyjdź:

var Gpio = require('onoff'). Gpio; //włącz onoff

var LED = nowy Gpio(3, 'out'); //użyj GPIO 3

var blinkInterval = setInterval(mrugająca dioda, 250);

//miga dioda co 250ms

function blinkLED() { //funkcja, aby zacząć migać

Jeśli

(LED.readSync() === 0) { //sprawdź stan pinu, czy stan to 0 (lub wyłączony)

LED.writeSync(1);

//ustaw stan pinu na 1 (włącz diodę LED)

} w przeciwnym razie {

LED.writeSync(0);

//ustaw stan pinu na 0 (wyłącz diodę LED)

}

}

function endBlink() { //funkcja przestania migać

clearInterval(miga interwał); // Zatrzymaj interwały migania

LED.writeSync(0); // Wyłącz diodę LED

LED.nieeksportuj(); // Wyeksportuj GPIO do wolnych zasobów

}

setTimeout(endBlink, 5000); //przestań migać po 5 sekundach

Podłącz diodę LED, rezystor (200 omów), jak pokazano na schemacie i uruchom projekt:

pi@raspberry:~ $ node blink.js

Węzeł jest gotowy.

GNIAZDO. IO

WebSocket to komputerowy protokół komunikacyjny, oparty na połączeniu TCP, zapewnia programiście tworzenie serwera i klienta. Klient łączy się z serwerem i emituje oraz odbiera komunikaty do iz serwera. Implementacja WebSocket dla Node.js nazywa się Socket.io (https://socket.io/).

Zainstaluj socket.io:

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

Przejdź do domu nodejs, utworzonego wcześniej:

pi@raspberry:~ $ cd nodehome

I utwórz nowy folder „public”:

pi@raspberry:~ $ mkdir public

Utwórz nowy przykładowy serwer WWW, nazwij go „webserver.js”

pi@raspberry:~ $ nano webserver.js

Wklej następujący kod, zapisz i wyjdź:

var http = require('http').createServer(handler); //wymagaj serwera http i utwórz serwer za pomocą funkcji handler()

var fs = wymagaj('fs'); //wymagaj modułu systemu plików

http.słuchaj(8080); //nasłuchuj na porcie 8080

funkcja obsługi (req, res) { //utwórz serwer

fs.readFile(_dirname + '/public/index.html', function(err, data) { //read

plik index.html w folderze publicznym

jeśli (błąd) {

res.writeHead(404, {'Typ treści': 'text/html'}); //wyświetl 404 w przypadku błędu

return res.end( 404 Not

Znaleziony );

}

res.writeHead(200, {'Typ treści': 'text/html'}); //napisz HTML

res.write(dane); //zapisz dane

z index.html

return res.end();

});

}

Ten serwer sieciowy będzie nasłuchiwał twojego portu 8080 Raspberry i dostarczy plik do dowolnego klienta sieciowego, który go podłączy. Teraz musimy stworzyć coś do hostowania i dostarczania naszym klientom: Przenieś się do folderu „public”: pi@raspberry:~ $ cd public

Utwórz nowy plik html „index.html”:

pi@raspberry:~ $ nano index.html

Wklej kod z załączonego "HelloWorld.txt", zapisz i wyjdź.

Przenieś się do folderu nodejs „nodehome”:

pi@raspberry:~ $ cd nodehome

Uruchom serwer WWW

pi@raspberry:~ $ węzeł webserver.js

Otwórz stronę w przeglądarce używając https://Raspberry_IP:8080/ (zastąp Raspberry_IP swoim IP)

Krok 6: DODAWANIE MOŻLIWOŚCI STRUMIENIOWANIA WIDEO

Istnieje inny sposób implementacji strumieniowego przesyłania wideo na Raspberry, najłatwiej

sposób, który do tej pory odkryłem, że tak świetna wydajność i możliwość integracji z interfejsem webowym jest oparta na projekcie Miguela Mota:

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

Dzięki Miguel! Z jego bloga są to kroki:

Zainstaluj komponenty libjpeg8 i cmake:

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

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

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

Pobierz mjpg-streamer z wtyczką raspicam:

pi@raspberry:~ $ git clone

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

Zmień katalog:

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

Skompilować:

pi@raspberry:~ $ czyścić wszystko

Zastąp stary mjpg-streamer:

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

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

/opt/mjpg-streamer

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

Utwórz nowy plik „start_stream.sh”, skopiuj i wklej z załączonego pliku „start_stream.txt”.

Uczyń go wykonywalnym (utwórz skrypty powłoki):

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

Uruchom serwer strumieniowy:

pi@raspberry:~ $./start_stream.sh

Otwórz stronę w przeglądarce używając https://Raspberry_IP:9000 (zastąp Raspberry_IP swoim IP)

Krok 7: PROGRAM ZBIORNIKA

Wszystko gotowe, teraz musimy stworzyć naszą stronę internetową do sterowania czołgiem (index.html) oraz nasz serwer WWW do nasłuchiwania naszych poleceń (webserver.js). Więc wystarczy zastąpić pliki widziane do tej pory (tylko przykłady do przetestowania systemu) z załączonym webserver.txt i index.txt.

Krok 8: URUCHOM INTERFEJS KONTROLNY I SERWER STRUMIENIOWY

INTERFEJS KONTROLI STARTU I SERWER STRUMIENIOWY
INTERFEJS KONTROLI STARTU I SERWER STRUMIENIOWY

Aby uruchomić usługi, otwórz dwa okna terminala i uruchom te polecenia:

węzeł nodehome/serwer WWW.js

./nodehome/start_stream.sh

Otwórz stronę w przeglądarce używając https://Raspberry_IP:8080 (zastąp Raspberry_IP swoim IP)

Zalecana: