Spisu treści:
- Krok 1: BOM
- Krok 2: Specyfikacja głównych komponentów
- Krok 3: OKABLOWANIE
- Krok 4: PRZYGOTOWANIE MALINOWEGO O.S
- Krok 5: JAK KONTROLOWAĆ NASZ WIFI TANK ZA POMOCĄ NODE.JS I WEBSOCKET.IO?
- Krok 6: DODAWANIE MOŻLIWOŚCI STRUMIENIOWANIA WIDEO
- Krok 7: PROGRAM ZBIORNIKA
- Krok 8: URUCHOM INTERFEJS KONTROLNY I SERWER STRUMIENIOWY
Wideo: Raspberry Tank z interfejsem sieciowym i strumieniowaniem wideo: 8 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
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
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?
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
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:
Zasilanie komórki/telefonu komórkowego baterią zewnętrzną lub zasilaniem sieciowym: 3 kroki
Zasilanie telefonu komórkowego/telefonu komórkowego baterią zewnętrzną lub zasilaniem sieciowym: Wprowadzenie. Ten pomysł będzie działał tylko z telefonami lub tabletami, jeśli bateria jest wymienna. Oczywiście obserwowanie polaryzacji jest ważne. Uważaj, aby nie uszkodzić urządzenia przez nieostrożność. Jeśli nie masz pewności, czy potrafisz to zrobić
Renowacja oświetlenia słonecznego w ogrodzie z zasilaniem sieciowym: 7 kroków
Przywracanie światła słonecznego w ogrodzie zasilanym z sieci: To naprawdę kontynuacja niektórych moich poprzednich projektów zasilanych z sieci, ale jest ściśle związana z wcześniej udokumentowaną diodą LED Teardown. Teraz wszyscy wyszliśmy i kupiliśmy je latem, te małe kwiatowe światła obramowania, które są zasilany energią słoneczną
CribSense: bezdotykowa niania wideo oparta na wideo: 9 kroków (ze zdjęciami)
CribSense: bezdotykowa niania wideo oparta na wideo: CribSense to bezdotykowa niania wideo oparta na wideo, którą możesz wykonać samodzielnie bez rozbijania banku. CribSense to implementacja C++ funkcji powiększenia wideo dostrojona do działania na Raspberry Pi 3 Model B. W ciągu weekendu możesz ustawić własne łóżeczko
Pierwsze kroki z graficznym interfejsem użytkownika Raspberry Pi: 8 kroków
Rozpocznij pracę z graficznym interfejsem użytkownika Raspberry Pi: Masz więc Raspberry Pi i fajny pomysł, ale jak sprawić, by interakcja z nim była tak prosta jak smartfon? Tworzenie graficznego interfejsu użytkownika (GUI) jest w rzeczywistości dość łatwe i z odrobiną cierpliwości możesz tworzyć niesamowite projekty
Pilot wideo dla maluchów do odtwarzacza wideo na PC: 6 kroków
Toddler Video Remote dla PC Video Player: Buduję pilota, który łączy się z komputerem przez USB. Duży pilot pozwala mojemu maluchowi wybierać i odtwarzać filmy na starym komputerze. To stosunkowo prosty projekt. Podstawowym elementem jest klawiatura USB lub bezprzewodowa klawiatura USB. Następnie