Spisu treści:
- Krok 1: Niektóre informacje o App.remoteme.org
- Krok 2: Co jest potrzebne:
- Krok 3: Połączenia
- Krok 4: PCB
- Krok 5: Wyjścia PCB
- Krok 6: Jak to będzie działać
- Krok 7: Montaż samochodu - koła
- Krok 8: Zasilanie (baterie AA) Opcja 1/2
- Krok 9: Zasilanie (baterie Li-Po 7.2V) Opcja 2/2
- Krok 10: Lutowanie
- Krok 11: Aparat
- Krok 12: Łączenie części samochodowych
- Krok 13: Konfiguracja App.remoteme.org
- Krok 14: Konfiguracja RasbperryPi
- Krok 15: Sprawdzanie połączeń
- Krok 16: Dodawanie skryptu Python
- Krok 17: Sprawdzanie, czy skrypt Python został pomyślnie dodany
- Krok 18: Dodawanie strony internetowej do Control Car
- Krok 19: Skonfiguruj urządzenie strony internetowej do sterowania samochodem 1/2
- Krok 20: Skonfiguruj urządzenie strony internetowej do sterowania samochodem 2/2
- Krok 21: Otwórz centrum sterowania samochodem
- Krok 22: Konfiguracja kamery 1/2
- Krok 23: Konfiguracja kamery 2/2
- Krok 24: Jazda 1/2
- Krok 25: Jazda 2/2
- Krok 26: Jak to działa?
- Krok 27: Tablet, sterowanie mobilne
- Krok 28: Otwórz stronę w telefonie komórkowym
- Krok 29: Dodawanie Turn Server
- Krok 30: Sterowanie mobilne
- Krok 31: Podsumowanie
Wideo: Samochód RasbperryPi z kamerą FPV. Sterowanie za pomocą przeglądarki internetowej: 31 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Zbudujemy samochód z napędem na 4 koła - sterowanie będzie podobne jak w czołgu - skręcanie jedną stroną kół będzie się obracać z inną prędkością niż inne. Przy samochodzie zostanie umieszczona kamera na specjalnym uchwycie, w którym możemy zmieniać pozycję kamery. Robotem sterować będzie przeglądarka internetowa (chrome lub firefox na pulpicie lub firefox na telefonie komórkowym), w przeglądarce, otrzymamy obraz z kamery (z opóźnieniem tylko 200ms), a z przeglądarki będziemy mogli sterować ruchami samochodu i pozycja kamery. W celu ułatwienia komunikacji korzystałem z systemu app.remoteme.org, działa też nieszablonowe sterowanie tego typu autem, więc nie musisz pisać własnego kodu, ale oczywiście możesz modyfikować skrypty dodać nowe możliwości itp.
Przed podłączeniem zasilania do PCB proszę dokładnie sprawdzić wszystkie połączenia
Krok 1: Niektóre informacje o App.remoteme.org
System składa się z trzech części
- aplikacja internetowa - gdy hostujesz swoje strony kontrolne i łączy ona wszelką komunikację
- program rasbperryPi - program do wysyłania wideo, zarządzania skryptami Pythona
- biblioteki, w których znajdziesz definicje klas, funkcji
Remoteme.org działa szybko. Łączysz wszystkie swoje urządzenia razem, możesz tam hostować swoje strony internetowe, przeglądać podłączone urządzenia. System Remoteme.org został stworzony, aby pomóc Ci rozpocząć tworzenie projektów, bez obaw o komunikację protokołową, główną ideą jest wysyłanie binarnych wiadomości pomiędzy różnymi urządzeniami takimi jak strony internetowe, RasbeprryPI, arduino i skrypty.
Z drugiej strony Remoteme.org daje Ci pełną kontrolę nad Twoimi plikami, możesz je łatwo modyfikować dopisując własną funkcjonalność
W tym samouczku pokażę Ci, jak zrobić niesamowity projekt prawie bez pisania kodu.
Na końcu tego poradnika zamieściłem przydatne linki, które pomogą Ci zrozumieć system remoteme.org.
Krok 2: Co jest potrzebne:
- Malinowy PI Zero W
- Dedykowana kamera
- Adafruit 16-kanałowy 12-bitowy sterownik PWM/Servo - interfejs I2C - PCA9685 lub jego klon
- Dwa serwomechanizmy kompatybilne z uchwytem kamery
- Uchwyt na aparat
- Baterie - W tutorialu dwie możliwości podłączenia
- Mostek H TB6612FNG, do sterowania prędkością koła
- Pliki eagle PCB Łatwo zrobić to metodą termotransferuDC-DC
- Moduł konwertera obniżającego napięcie DC
- Sprawa robota
Krok 3: Połączenia
Mechanizm serwo Raspberry pi sterujący poprzez moduł PWM i prędkość silnika przez mostek H, który jest podłączony do pinów RasbperryPi, wejście PWM do mostka H jest generowane przez ten sam moduł, którego użyłem do serw (które części, o których wspomniałem powyżej, nie są potrzebne konwertery logiczne)
Krok 4: PCB
Tutaj możesz pobrać pliki PCB eagle Ścieżki są grube, więc łatwo je wykonać metodą termotransferu
Krok 5: Wyjścia PCB
- Wejście PWM dla silników napędowych Należy podłączyć do 15 i 16 pinów modułu PWM (sprawdź zielony prostokąt na obrazku modułu PWM)
- Pobór mocy dla silników napędowych (sprawdź, z jakim maksymalnym napięciem mogą pracować Twoje silniki)
- Zasilanie dla RasbperryPi i modułu PWM – musi być dokładnie
- Wyjścia silników napędowych (wyjścia są dwa, ponieważ sparujemy silniki napędowe)
- Moc serwomechanizmów – też trzeba sprawdzić jakie napięcie jest dla nich dobre
- Zworka, której obecna moc z piątego wejścia będzie zasilać również silniki napędowe, więc nie ma potrzeby podłączania czegokolwiek do wejścia 2
- Zworka jeśli jest obecna RasbperryPi będzie zasilana z 3 wejścia – przed założeniem tu zworki sprawdź czy połączenia są prawidłowe – nie chcesz palić swojego RPi
- Przylutujmy tutaj kable, bo nie potrzebujemy konwerterów logicznych
Krok 6: Jak to będzie działać
W RasbperryPi jest skrypt Pythona, który korzysta z dwóch bibliotek
- import RPi. GPIO jako GPIO – dla pinów 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notacja BCM) podłączonych do mostka H
- importuj Adafruit_PCA9685 dla modułu PWM
Piny Rpi są połączone w następujący sposób 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) i tryb sterowania mostkiem H (przód, tył, stop, krótka przerwa). Mostek H potrzebuje również dwóch sygnałów PWM, dzięki czemu możemy sterować prędkością lub obrotem silnika. Ponieważ w projekcie mamy już kontroler PWM (używany do serwomechanizmu) wykorzystamy go również do wygenerowania PWM dla mostka H.
Moduł PWM wykorzystuje protokół komunikacyjny I2C. Skorzystałem z pracy po wyjęciu z pudełka Adafruit_PCA9685. Biblioteka
Krok 7: Montaż samochodu - koła
Zaczniemy od podłączenia silników napędowych do obudowy samochodu. Silniki z lewej/bocznej strony łączą się ze sobą, a obie pary podłącza się do kabla zasilającego, który później zostanie podłączony do płytki drukowanej. Ważna uwaga przy łączeniu silników koła z każdej strony muszą się obracać w tym samym kierunku.
Krok 8: Zasilanie (baterie AA) Opcja 1/2
Napiszę dwie możliwości zasilania samochodu. Pierwsza to z akumulatorów 10xAA. Na ostatnim obrazku narysowałem zworki w czerwonych kolorach, które trzeba założyć.
Krok 9: Zasilanie (baterie Li-Po 7.2V) Opcja 2/2
A druga opcja to akumulator LI-PO 7.2. W tym przypadku otrzymaliśmy 3 napięcia – 5V dla Rpi i modułu, 6V dla serw i bezpośrednio z akumulatorów 7,2V dla silników napędowych. Musiałem użyć dwóch modułów obniżających
Opcja 2 z LI-PO jest lepsza:
- Baterie mają większą pojemność – samochód będzie jechał dłużej
- Większe napięcie dla silników napędowych – samochód będzie jechał szybciej
- Mniejsze prawdopodobieństwo, że po rozpoczęciu lokalizacji silników napędowych możemy mieć ogromny spadek napięcia i restarty RPI.
Krok 10: Lutowanie
Włożyłem na PCB kilka przekładek do modułu PWM. Nie ma co pisać tylko sprawdź zdjęcia jak to wszystko zlutować
Krok 11: Aparat
podłączamy kamerę, tutaj jest napisane jak wycentrować mechanizmy serwa przed zamontowaniem w uchwycie kamery, ale najkrótszym sposobem jest delikatne ręczne sprawdzenie pozycji maksymalnego obrotu i ustawienie serwa w pozycji środkowej. Ten wyśrodkowany serwomechanizm wkładamy do uchwytu kamery w pozycji środkowej (kamera jest skierowana na wprost jak na zdjęciu)
Krok 12: Łączenie części samochodowych
Do PCB wykonałem mały stolik z pleksi
Krok 13: Konfiguracja App.remoteme.org
Skorzystałem z darmowego systemu app.remoteme.org, który pomaga w nawiązywaniu połączeń i ma już potrzebne nam skrypty
W tej instrukcji pokażę tylko krok po kroku, co należy zrobić, aby samochód jeździł (tutaj znajdziesz więcej szczegółów)
- Zarejestruj się na https://app.remoteme.org po rejestracji Zostaniesz automatycznie zalogowany
- otwórz zakładkę Token po lewej stronie, a następnie kliknij „nowy token” podaj nazwę i kliknij OK, Właśnie utworzyliśmy nowy token (obrazek na ekranie)
- w tym przykładzie wartość tokena to: ~1_&p@+BNnZ@A+x8 (twój będzie inny;))
Krok 14: Konfiguracja RasbperryPi
przy konsoli putty (tu jak ustawić nasze RPi włącz komunikację I2c kamery)
git klon git://github.com/remoteme/remoteme.git
pilot cd
python3.5 install.py
- Instalator zada nam kilka pytań na wszystkie odpowiedzi [Tak] i potwierdzi [enter]
- gdy instalacja poprosi o token wklejamy (shift+insert) token skopiowany z aplikacji i Enter
- nazwa na przykład Rpi
- identyfikator urządzenia 1 Enter
- po instalacji – uruchom program
./runme.sh
Krok 15: Sprawdzanie połączeń
Wróćmy do
W zakładce urządzeń zobaczymy nasze podłączone RPi (zielona ikona łącza oznacza, że RPi jest teraz połączone)
Krok 16: Dodawanie skryptu Python
Teraz dodamy skrypt Pythona, jest już w szablonach, więc nie musimy niczego programować.
Na karcie urządzeń otwórz menu RasbperryPi i wybierz „Dodaj skrypt zewnętrzny”.
Gdy pojawi się nowe okno, podaj informacje jak na obrazku powyżej
Nie zapomnij wybrać szablonu „car4wd”. Po wykonaniu tych kroków remoteme.org doda skrypt Pythona do naszego RasbperryPi i zrestartuje go
Krok 17: Sprawdzanie, czy skrypt Python został pomyślnie dodany
W zakładce urządzeń należy dodać nowe urządzenie skryptu Pythona, a jego deviceId to 2. Do tego urządzenia strona internetowa wyśle wiadomości do kontroli samochodu
Krok 18: Dodawanie strony internetowej do Control Car
w zakładce urządzenia kliknij "Nowe", a następnie "Strona internetowa". Po prostu dodajemy kolejne urządzenie - webPage użyjemy go do sterowania naszym samochodem. A ponieważ na stronie użyliśmy szablonu "car4wdDesktop" to już pliki są prawie gotowe do użycia
Krok 19: Skonfiguruj urządzenie strony internetowej do sterowania samochodem 1/2
Rozwiń Stronę internetową na karcie urządzenia i kliknij index.html, a następnie Otwórz
Krok 20: Skonfiguruj urządzenie strony internetowej do sterowania samochodem 2/2
Pojawi się okno, a następnie musimy podać deviceId naszego skryptu Pythona w naszym przypadku deviceId to 2. Zmieńmy miejsce pokazane na obrazku
Krok 21: Otwórz centrum sterowania samochodem
Teraz czas otworzyć naszą stronę i zobaczyć, jak to działa. Na karcie urządzenia kliknij index.html a następnie "Otwórz w nowej karcie" Aby uzyskaćpodgląd wideo Musisz użyć przeglądarki Chrome lub Firefox inne przeglądarki nie obsługują w pełni webRTC
Krok 22: Konfiguracja kamery 1/2
Gdy poruszamy myszką w obszarze wideo, kamera powinna zmienić pozycję i powinna działać dokładnie tak, jak w grach FPS. Prawdopodobnie nie poruszy się poprawnie
Krok 23: Konfiguracja kamery 2/2
Otwórz script.js (karta urządzeń rozwiń stronę, a następnie kliknij script.js, a następnie otwórz) i znajdź miejsce, które pokazałem na ekranie
w moim przypadku centralna pozycja to 560 i 430, a zakres ruchów dla obu osi 200
Musisz poeksperymentować z tymi liczbami, aby uzyskać środek położenia kamery i płynne ruchy, jeśli skorzystałeś z tego samouczka po prostu skopiuj wklejone wartości
Krok 24: Jazda 1/2
Jeśli naciśniesz strzałkę w górę na klawiaturze, wskaźniki powinny zmienić pozycje i samochód powinien jechać. Jeśli naciśniesz strzałkę w górę i samochód się skręca to musisz dodać/usunąć minus w miejscach na ekranie.
Po tej operacji po uderzeniu strzałki „w górę” samochód powinien jechać do przodu, a samochód ze strzałką w dół powinien jechać do tyłu.
Krok 25: Jazda 2/2
Teraz skręcaj – naciśnij strzałkę w lewo, jeśli samochód skręca w prawo Musisz odwrócić kable (patrz obrazek powyżej)
Jeśli przylutujesz te kable to możesz to zmienić w script.js po prostu zmień kolejność wysyłania prędkości silników, przed:
pos=putByte(ret, poz, carController.getMotorMode(carController.getRightSideSpeed())); pos=putByte(ret, poz, Math.abs(carController.getRightSideSpeed()*255));
pos=putByte(ret, poz, carController.getMotorMode(-carController.getLeftSideSpeed()));
pos=putByte(ret, poz, Math.abs(carController.getLeftSideSpeed()*255));
po:
pos=putByte(ret, poz, carController.getMotorMode(-carController.getLeftSideSpeed()));
pos=putByte(ret, poz, Math.abs(carController.getLeftSideSpeed()*255));
pos=putByte(ret, poz, carController.getMotorMode(carController.getRightSideSpeed()));
pos=putByte(ret, poz, Math.abs(carController.getRightSideSpeed()*255));
a teraz trzeba pobawić się minusami jak jeden krok wcześniej, żeby zadziałało poprawnie;). Jak zapewne zauważyłeś po uderzeniu strzałki w górę samochód nie jedzie z pełną prędkością, aby samochód poruszał się szybciej, wystarczy szybko puścić strzałkę w górę, gdy jest w maksymalnej pozycji i ponownie naciśnij i przytrzymaj
Krok 26: Jak to działa?
Strona internetowa wysyła 9-bajtowe wiadomości do skryptu Pythona w formacie:
- 1 bajt jeden bajt wartość całkowita 1
- 2 bajty liczba całkowita X pozycja kamery
- 2 bajty liczba całkowita Y pozycja kamery
- 1 bajtowa liczba całkowita lewy tryb silnika (3=do tyłu, 1=do przodu, 2=stop)
- 1 bajt liczba całkowita lewego silnika
- 1 bajtowa liczba całkowita prawy tryb silnika (3=do tyłu, 1=do przodu, 2=stop)
- 1 bajt liczba całkowita prawa prędkość silnika
wysyłanie wiadomości odbywa się w pliku script.js w funkcji "sendNow()"
na RasbperryPi python.py otrzymuje ten komunikat w funkcji "onUserMessage"
Możesz to sprawdzić i trochę pograć, aby wiedzieć, co się dzieje.
opis funkcji klasy tutaj
Krok 27: Tablet, sterowanie mobilne
Dodajemy nową stronę dokładnie tak jak poprzednio, ale teraz wybieramy szablon "car4wdMobile"
Następnie konfigurujemy wszystko w script.js, tak jak zrobiliśmy to w przypadku strony sterującej pulpitem. Format wiadomości jest dokładnie taki sam, więc nie musimy zmieniać skryptu python.py.
Krok 28: Otwórz stronę w telefonie komórkowym
Zamiast logować się na swoje konto z telefonu komórkowego, po prostu zeskanuj QR anonimowy adres URL.
szczegóły QR tutaj
Jeśli Twoja mobilna kontrola działa, gdy RPi i komórka są na tym samym Wi-Fi, ale nie działa, jeśli korzystasz z mobilnego internetu, musisz dodać turn server, jak to zrobić napisałem tutaj
Krok 29: Dodawanie Turn Server
Czasami (gdy jesteś za NAT lub niektórymi ustawieniami zapory sieciowej) nie możesz połączyć swojego robota z innej sieci, wtedy Twój robot jest podłączony. To nie jest duży problem, a następnie musisz dodać turn server.
Testowałem serwer firmy XIRSYS (jest darmowy do użytku deweloperskiego) i pokażę jak skonfigurować serwer turn przy użyciu systemu XIRSYS
Zarejestruj się:
global.xirsys.net/dashboard/signup
następnie kliknij "plus", aby dodać aplikację
po prawej stronie pod "statycznymi kredytami na turę" Masz wszystkie potrzebne dane. Skopiuj go do pliku webrtc_streamer.conf, aby to zrobić, przejdź do
rozwiń urządzenia RaspberryPi
kliknij plik webrtc_streamer.conf
kliknij otwórz
i dodaj informacje
turn_server=turn_username=
turn_credential=
po zakończeniu edycji powinieneś mieć coś takiego na ekranie.
następnie kliknij Zapisz i uruchom ponownie You Rpi, klikając menu na urządzeniu RasbperryPi i wybierz restart
Po ponownym uruchomieniu programu RPi możesz zobaczyć podgląd wideo na swoim telefonie komórkowym, nawet jeśli korzystasz z mobilnego internetu.
Krok 30: Sterowanie mobilne
w kółku 1 umieszczamy lewy kciuk, w 2 prawym – nie musi być dokładnie w tych punktach – strona internetowa ustawi pozycję zero zaraz po dotknięciu ekranu i poruszając kciukami (jazda w lewo, pozycja kamery w prawo) Możesz sterować Twój samochód
Krok 31: Podsumowanie
Mam nadzieję, że podobał Ci się ten samouczek, tak jak pisałem wcześniej w tym samouczku jest więcej szczegółów na temat tego, jak to działa pod maską.
kilka linków:
remoteme.org - strona domowa remoteme.org tam znajdziesz dokumentację i tutoriale
FB fanpage - fanpage na Facebooku najnowsze informacje o remoteme.org
Youtube - kilka filmów z projektu, tutoriale
Pozdrawiam, Maciek
Zalecana:
Tworzenie internetowej kamery internetowej z akwariami!: 8 kroków (ze zdjęciami)
Tworzenie kamery internetowej z akwariami online!: Przewodnik krok po kroku, jak modyfikować obudowę kamery IP, aby można ją było podłączyć bezpośrednio do akwarium. Powodem, dla którego jest to potrzebne, jest to, że kamery internetowe zwykle są przeznaczone do umieszczania przed obiektem lub wymagają stojaka. Jednak z rybą Ta
Wyślij dane do platformy AskSensors IoT z przeglądarki internetowej: 6 kroków
Wyślij dane do platformy AskSensors IoT z przeglądarki internetowej: Niedawno opublikowałem instrukcję pokazującą krok po kroku, jak podłączyć MCU węzła ESP8266 do platformy AskSensors IoT. Otrzymałem kilka opinii od osób bardziej zainteresowanych platformą AskSensors, ale nie mają pod ręką MCU węzła. To ja
Sterowanie jasnością Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: 8 kroków (ze zdjęciami)
Kontrola jasności Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: Próbowałem znaleźć sposób, aby wyjaśnić moim uczniom, jak działa PWM, więc wyznaczyłem sobie zadanie kontrolowania jasności diody LED za pomocą 2 przycisków - jeden przycisk zwiększający jasność diody LED a drugi ją przyciemniający. Aby zaprogramować
Ponowne użycie modułu kamery internetowej HP WebCam 101 Aka 679257-330 jako standardowej kamery internetowej USB: 5 kroków
Ponownie użyj modułu kamery internetowej HP 101 Aka 679257-330 Jako ogólnej kamery internetowej USB: Chcę urozmaicić mojego 14-letniego Panasonica CF-18 o zupełnie nową kamerę internetową, ale Panasonic nie obsługuje już tej wspaniałej maszyny, więc muszę użyj szarej substancji do czegoś łatwiejszego niż b&b (piwa i hamburgery). To jest pierwsza część
Projekt Arduino: sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: 6 kroków
Projekt Arduino: Sterowanie elektroniką przez Internet za pomocą Nodejs + bazy danych SQL i strony internetowej.: Projekt: Mahmed.techData wykonania: 14 lipca 2017 r. Poziom trudności: Początkujący z pewną wiedzą programistyczną. Wymagania sprzętowe: - Arduino Uno, Nano, Mega (myślę, że większość MCU z połączeniem szeregowym będzie działać) - Pojedyncza dioda LED i amp; Ograniczenie prądu res