Spisu treści:
- Krok 1: Ostrzeżenie: Uważaj, próbując tego w domu
- Krok 2: Komponenty
- Krok 6: Adres dla Pi
- Krok 7: Plan
- Krok 8: Przechodzenie do fizyczności
- Krok 9: Automatyczne uruchamianie Raspberry Pi
- Krok 10: Houeston, mieliśmy problem… Silniki prądu stałego to nie ten sam model
- Krok 11: [TCP]: Dlaczego Tcp i Not Secure Shell? Co to jest TCP?
- Krok 12: [TCP]: Stwórzmy klienta
- Krok 13: Wypróbuj nasz komunikator Tcp
Wideo: Zbuduj swojego robota do strumieniowego przesyłania wideo sterowanego przez Internet za pomocą Arduino i Raspberry Pi: 15 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Jestem @RedPhantom (aka LiquidCrystalDisplay / Itay), 14-letni uczeń z Izraela uczący się w gimnazjum im. Maxa Sheina dla zaawansowanych nauk ścisłych i matematyki. Tworzę ten projekt, aby wszyscy mogli się od niego uczyć i dzielić!
Być może pomyślałeś sobie: hmm… Jestem maniakiem… A moje dzieci chcą, żebym zrobił z nimi projekt… Chciał zbudować robota. Chciała go ubrać jak małego szczeniaka. To dobry projekt weekendowy!
Raspberry Pi jest idealne do każdego zastosowania: dzisiaj przedstawimy możliwości tego mikrokomputera do stworzenia robota. Ten robot może:
- Jedź i bądź kontrolowany przez LAN (WiFi) za pomocą dowolnego komputera podłączonego do tej samej sieci Wi-Fi, co Raspberry Pi.
- Przesyłaj strumieniowo wideo na żywo za pomocą modułu kamery Raspberry Pi
- Wysyłaj dane z czujnika za pomocą Arduino
Aby zobaczyć, czego potrzebujesz do tego ładnego projektu świetlnego, po prostu przeczytaj następny krok (ostrzeżenia), a następnie krok Wanted: Components.
Oto repozytorium GitHub: GITHUB REPO BY ME
Oto strona projektu: WITRYNA PROJEKTU PRZEZ MNIE
Krok 1: Ostrzeżenie: Uważaj, próbując tego w domu
OSTROŻNOŚĆ:
AUTOR TEGO PORADNIKA ZAKŁADA, ŻE MASZ WYSTARCZAJĄCĄ WIEDZĘ NA TEMAT ENERGII ELEKTRYCZNEJ I PODSTAWOWEJ OBSŁUGI SPRZĘTU ELEKTRYCZNEGO. JEŚLI NIE ZACHOWASZ OSTROŻNOŚCI I NIE PRZESTRZEGASZ INSTRUKCJI ZAWARTYCH W TYM SAMOUCZEKU, MOŻESZ: USZKODZIĆ SPRZĘT ELEKTRONICZNY, POPARZYĆ SIĘ LUB SPOWODOWAĆ POŻAR. Proszę zachować ostrożność i kierować się zdrowym rozsądkiem. Jeśli nie posiadasz wiedzy wymaganej do tego samouczka (lutowanie, podstawy elektroniki), skontaktuj się z osobą, która to posiada. Dziękuję Ci.
AUTOR NINIEJSZEJ INSTRUKCJI ZDERZEKA SIĘ OD WSZELKIEJ ODPOWIEDZIALNOŚCI ZA SZKODY SPOWODOWANE LUB UTRATĘ MIENIA LUB SZKODY FIZYCZNE. UŻYJ ROZUMU
Krok 2: Komponenty
Zanim rozgrzejemy lutownicę, musimy przejść przez to, co do czego ma być podłączone. Zrobiłem ten prosty wykres (MS Paint nigdy mnie nie zawodzi), który opisuje, gdzie w robocie znajduje się określona część.
Obraz jest tak zbudowany, że można go powiększyć i zobaczyć w pełnej rozdzielczości oraz przeczytać tekst.
Krok 6: Adres dla Pi
Arduino rozmawia z Pi zgodnie z planem. A Pi rozmawia z komputerem, więc jak to wszystko działa?
Spójrzmy na naszą sekwencję inicjowania połączenia:
- Uruchomienie Raspberry Pi
- Uruchomienie Arduino
- Raspberry Pi uruchamia klienta TCP. Wystrzeliwuje swój adres IP za pomocą diody LED.
- Raspberry Pi uruchamia usługę komunikacji szeregowej i łączy się z Arduino
Dlatego nawiązaliśmy pewien rodzaj komunikacji:
Komputer Raspberry Pi Arduino
Użyłem Visual Basic. NET (Microsoft Visual Studio 2013 Community) do napisania programu, który komunikuje się z Raspberry Pi i Pythona do napisania protokołu Arduino/Raspberry Pi.
Wszystko, co musisz zrobić, aby poznać swój adres IP Pi, to podłączyć go do ekranu HDMI, zalogować się do powłoki i wpisać polecenie:
nazwa hosta -I
Krok 7: Plan
Teraz, gdy mamy adres IP Pi, wykonamy do niego SSH (SSH to Secure Shell - łączymy się zdalnie z powłoką Linuksa) i zapiszemy plik, który wyświetla adres IP serwera. Pi, podczas uruchamiania, również to zrobi i zapisze port, którego nasłuchuje. Tutaj podam tylko kilka przykładów z kodu, ale jest on dostępny do pobrania z tego kroku oraz z utworzonej przeze mnie gałęzi GitHub. Szczegóły później.
Działa to tak:
- RPi uruchamia się.
- RPi uruchamia program Tcp na swoim lokalnym adresie IP i wyznaczonym porcie.
- RPI zaczyna przesyłać strumieniowo wideo
- RPI wyłącza się.
Krok 8: Przechodzenie do fizyczności
Teraz jesteśmy gotowi do rozpoczęcia fizycznej budowy całości. Jeśli nie przeczytałeś kroku 1 (tekst ostrzeżenia i licencja), zrób to przed kontynuowaniem. Nie odpowiadam za powstałe szkody. A w razie wątpliwości tego robota nie wolno używać do celów wojskowych, chyba że jest to apokalipsa zombie. I nawet wtedy kieruj się zdrowym rozsądkiem.
Sugeruje się, abyś przeczytał instrukcje słuchania na Liście Do przeczytania.
Pobierz schemat połączenia z kroku „Połączenia”.
MOTORYZACJA
Silniki, które kupiłeś, prawdopodobnie wyglądają tak i jest OK, jeśli nie: jeśli mają tylko dwa przewody (w większości przypadków czarny i czerwony) powinny działać. Sprawdź ich arkusz danych online, aby zobaczyć ich napięcie robocze i prąd. Zapraszam do zadawania pytań w sekcji komentarzy. Zawsze je czytam.
MOST H
Nigdy wcześniej nie pracowałem z mostkiem H. Poszukałem trochę w Google i znalazłem dobry instruktaż wyjaśniający zasady HB. Możesz tam też zajrzeć (patrz krok Lista do przeczytania) i podpiąć swoją. Nie będę dużo wyjaśniał. Możesz tam przeczytać i wiedzieć wszystko, co powinieneś o tym obwodzie.
PROWADZONY
Ta mała żarówka może działać z napięciem logicznym tylko dlatego, że prawie nie wymaga prądu, a napięcie 3V-5V 4mA-18mA. Opcjonalny.
ARDUINO
Arduino otrzyma sygnały i polecenia za pośrednictwem połączenia szeregowego z Raspberry Pi. Używamy Arduino do sterowania naszymi silnikami, ponieważ Raspberry Pi nie może wyprowadzać wartości analogowych przez GPIO.
Krok 9: Automatyczne uruchamianie Raspberry Pi
Za każdym razem, gdy włączysz Raspberry Pi, będziesz musiał wpisać nazwę użytkownika i hasło. Nie chcemy tego robić, ponieważ czasami po prostu nie możemy podłączyć klawiatury do Pi, więc wykonamy te kroki z tego samouczka, aby automatycznie uruchomić program, który przygotowuje Pi. Jeśli wpadnie w pętlę, zawsze możemy go przerwać za pomocą Ctrl+C.
- sudo crontab -e
- A następnie wprowadzimy polecenie, które dodaje ten plik do automatycznego uruchamiania w menedżerze crona.
Wywołamy plik pibot.sh, który wyda polecenia uruchomienia wszelkiego rodzaju skryptów Pythona do obsługi robota. Przejdźmy przez to: (Sudo z programami kurtynowymi w Pythonie, aby umożliwić programowi dostęp do GPIO)
raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv strumień:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
Kod, który wykonuje całą pracę po stronie pi, zostanie wywołany on_startup.sh.
Jest to prosty skrypt powłoki, który uruchamia wszystko.
Krok 10: Houeston, mieliśmy problem… Silniki prądu stałego to nie ten sam model
Przetestowałem już mostek H i działa dobrze, ale kiedy podłączam silniki, które otrzymałem z platformy robota, którą zamówiłem online, te dwa silniki obracają się z różnymi prędkościami i wydają różne dźwięki. Zmieniłem przepustnicę na 100% na silnikach. Obaj nie mogli biegać na pełnych obrotach.
Wygląda na to, że są to dwa różne silniki. Jeden ma większy moment obrotowy, który jest świetny dla tego rodzaju robota, ale drugi po prostu nie poruszałby robotem. Więc kręci się w kółko.
W tym momencie mam to, że program szeregowy na Arduino działa całkiem dobrze, ale serwer Tcp na PC i klient Tcp na Pi nie są jeszcze zakodowane. Na muszę uzupełnić ten wpis do konkursu. Co ja robię?
- Najpierw potroiłem napięcie silników. W arkuszu danych było napisane, że 3 V, 6 V nie przeniosło ich. Wtedy jest 9V. Podłączyłem teo baterie równolegle, aby podwoić prąd i napięcie pozostaje takie samo.
- Czy mam inne silniki pasujące do uchwytu na platformie? Może zobaczę, czy są to podobne modele.
- Mogę wymienić na Servos, jeśli czekolada naprawdę trafi w wentylator.
Szkoła się rozpoczęła. Muszę zobaczyć, co robić.
Uwaga: Dlaczego, u licha, piszę tutaj problemy, które napotykam? Więc jeśli jesteś mniej doświadczony i masz te same problemy, będziesz wiedział, co robić.
Rozwiązanie:
Więc zrobiłem kolejny test. Zaadaptowałem różnicę prędkości w kodzie Arduino.
UWAGA: silniki mogą obracać się z różnymi prędkościami! Zmień wartości w szkicu Arduino.
Krok 11: [TCP]: Dlaczego Tcp i Not Secure Shell? Co to jest TCP?
Mam dwa wyjaśnienia, dlaczego używam Tcp, a nie SSH na PC. - Komunikacja Pi.
- Po pierwsze, SSH (Secure Shell, patrz Wyjaśnienia) służy do uruchamiania poleceń ze zdalnego komputera. Sprawienie, by Pi odpowiadało informacjami, których potrzebujemy, jest trudniejsze, ponieważ naszą jedyną opcją analizy danych jest trudne i żmudne przetwarzanie ciągów.
- Po drugie, wiemy już, jak korzystać z SSH i chcemy dowiedzieć się więcej sposobów komunikacji między urządzeniami w tym samouczku.
TCP lub Transmission Control Protocol to podstawowy protokół pakietu protokołów internetowych. Powstał w początkowej implementacji sieciowej, w której uzupełniał protokół internetowy (IP). Dlatego cały pakiet jest powszechnie określany jako TCP/IP. TCP zapewnia niezawodne, uporządkowane i sprawdzone pod kątem błędów dostarczanie strumienia oktetów między aplikacjami uruchomionymi na hostach komunikujących się przez sieć IP.
(Z Wikipedii)
Tak więc zalety TCP to:
- Bezpieczne
- Szybko
- Działa w dowolnym miejscu w sieci
- Udostępnia metody sprawdzania poprawności transmisji danych
- Kontrola przepływu: ma ochronę na wypadek, gdyby nadawca danych wysłał dane zbyt szybko, aby klient mógł je zarejestrować i przetworzyć.
A wady to:
- W TCP nie można rozgłaszać (Wysyłaj dane do wszystkich urządzeń w sieci) i multicast (to samo, ale trochę inaczej - daje możliwość nadawania każdemu urządzeniu jak serwer).
- Błędy w twoim programie i bibliotekach systemu operacyjnego (które same zarządzają komunikacją TCP, twój router nie robi prawie nic poza połączeniem dwóch [lub więcej] urządzeń)
Dlaczego nie korzystać z UDP, możesz zapytać? Cóż, w przeciwieństwie do TCP, UDP nie gwarantuje, że klient otrzyma dane przed wysłaniem ich. Na przykład wysyłanie e-maila bez wiedzy, czy klient go otrzyma. Poza tym UDP jest mniej bezpieczny. Aby uzyskać więcej informacji, przeczytaj ten post od Super User Stack Exchange
Ten artykuł jest dobry i polecany.
Krok 12: [TCP]: Stwórzmy klienta
Klient (w naszym przypadku Raspberry Pi), który odbiera dane z serwera (w naszym przypadku nasz komputer), otrzyma dane do wysłania do Pi (polecenia szeregowe, które zostaną wykonane na Arduino) i odbierze dane z powrotem (odczyty z czujnika i informacje zwrotne bezpośrednio z Arduino. Załączony schemat pokazuje relacje między trzema.
Artykuł Pythonowej Wiki TcpCommunication pokazuje, że taka komunikacja jest tak prosta, że wystarczy kilka linijek kodu za pomocą wbudowanego modułu gniazda. Będziemy mieli program na PC i inny program na Pi.
Będziemy pracować z przerwaniami. Dowiedz się więcej na ich temat w kroku Wyjaśnienia. Przeczytaj też o buforach. Teraz możemy odczytać dane, które mamy, używając data=s.recv(BUFFER_SIZE), ale będzie to ile znaków zdefiniowaliśmy z pustymi bitami. Czy możemy używać przerwań? Kolejne pytanie: czy bufor będzie pusty, czy będzie czekał, aż serwer wyśle więcej danych, w którym to przypadku serwer/klient zgłosi wyjątek limitu czasu?
Zajmijmy się tym pojedynczo. Zanim to zrobimy, przejrzałem ten artykuł w Wikipedii, który zawiera listę używanych portów TCP i UDP. Po szybkim spojrzeniu zdecydowałem, że ten projekt będzie się komunikował na porcie 12298, ponieważ nie jest on używany przez system operacyjny i usługi lokalne.
Krok 13: Wypróbuj nasz komunikator Tcp
Aby sprawdzić, czy możemy użyć przerwań, stwórzmy prostego klienta i serwer za pomocą wiersza poleceń Pythona. Zrobię to w następujących krokach:
- Uruchom program, który wysyła tekst przez Tcp w pętli przez port kurtyny
- Uruchom inny program (równolegle), który odczytuje cały tekst w pętli i wyświetla go na ekranie.
Zostaną pokazane tylko segmenty programu. Wszystkie programy działają w Pythonie 3. Wszystko, co robią te programy, to wysyłanie polecenia szeregowego z klawiatury użytkownika komputera PC do Arduino za pośrednictwem Pi.
- SBcontrolPC.py - Do uruchomienia na komputerze PC. Rozpoczyna połączenie TCP na lokalnym adresie i na określonym porcie (używam portu 12298, zobacz poprzedni krok dlaczego)
- SBcontrolPi.py - do uruchomienia na Pi. Czyta swój bufor co pół sekundy (0,5 sekundy). Uruchamia skrypt powłoki, który zarządza takimi rzeczami, jak przesyłanie strumieniowe wideo itp.
Zalecana:
Samouczek: Jak korzystać z ESP32-CAM w serwerze internetowym do strumieniowego przesyłania wideo: 3 kroki
Samouczek: Jak korzystać z ESP32-CAM w serwerze internetowym do przesyłania strumieniowego wideo: Opis: ESP32-CAM to bezprzewodowa płytka rozwojowa IoT Vision ESP32 w bardzo małej obudowie, zaprojektowana do użytku w różnych projektach IoT, takich jak domowe inteligentne urządzenia, przemysłowe sterowanie bezprzewodowe, monitorowanie bezprzewodowe, identyfikacja bezprzewodowa QR
Przewodnik konfiguracji VPN Premium do szybkiego pobierania i przesyłania strumieniowego OK przez REO: 10 kroków
Przewodnik konfiguracji VPN Premium do szybkiego pobierania i przesyłania strumieniowego OK przez REO: Dziękuję, Asuswrt-MerlinHi, pochodzę z Tajlandii. Zamierzam napisać szczegółowy przewodnik po konfiguracji VPN dla szybkiego pobierania średnio około 100 Mb/s i być może najpłynniejszego przesyłania strumieniowego dla Netflix, Crunchyroll, Hulu itp. Z Tajlandii, miejsce docelowe
Stwórz robota sterowanego przez Bluetooth za pomocą własnego GUI: 5 kroków
Stwórz robota sterowanego przez Bluetooth za pomocą własnego GUI: Cześć przyjaciele po dzisiejszym projekcie rzemieślniczym, przyszedłem z fajnym projektem arduino. Zewnętrznie wygląda to na starą koncepcję, ale czekajcie, mam tu trochę niespodzianki, co czyni ten projekt wyjątkowym. Więc co jest tutaj wyjątkowego? Więc tutaj pokażę
Robot do strumieniowego przesyłania wideo Raspberry Pi Wifi: 8 kroków (ze zdjęciami)
Raspberry Pi Wifi Controlled Video Streaming Robot: Czy myślałeś kiedyś o zbudowaniu fajnego robota z kamerą? Cóż, trafiłeś we właściwe miejsce, pokażę Ci krok po kroku, jak zbudować tego robota.Dzięki temu możesz polować na duchy w nocy, kontrolując i oglądając wideo na swoim
Zapewnienie napisów do strumieniowego przesyłania wideo opartego na technologii Flash: 10 kroków
Udostępnianie napisów do strumieniowego przesyłania wideo opartego na technologii Flash: BY KEVIN JONES (pobierz wersję PDF tej instrukcji z Centrum Informacji o Ułatwieniach Dostępu DCMP.)? „Jak dodać napisy do multimediów strumieniowych?”? „Jak mogę dodać napisy do filmu wideo w serwisie YouTube lub mojej własnej witrynie internetowej?” ?"