Spisu treści:

Wirtualny robot obecności: 15 kroków
Wirtualny robot obecności: 15 kroków

Wideo: Wirtualny robot obecności: 15 kroków

Wideo: Wirtualny robot obecności: 15 kroków
Wideo: Byłem w wirtualnym salonie i byłem... jedynym klientem. Oto jak to działa! 2024, Listopad
Anonim
Image
Image
Mobilny samochód robota
Mobilny samochód robota

Ten mobilny robot wchodzi w interakcję z fizycznym otoczeniem, reprezentując „wirtualną obecność” osoby, która go zdalnie kontroluje. Może być dostępny dla każdego, w dowolnym miejscu na świecie, aby rozdawać smakołyki i bawić się z Tobą.

Praca ta została opracowana przez dwie osoby (jedną w Niemczech i jedną w USA) jako próbę wyjścia poza tradycyjne środki komunikacji internetowej poprzez stworzenie fizycznego interfejsu do zdalnej interakcji. Ponieważ COVID-19 nadal wpływa na świat, a każdy jest odpowiedzialny za ograniczenie naszego fizycznego kontaktu z ludźmi, staramy się przywrócić namacalne połączenie, które jest częścią fizycznej interakcji.

Opiera się na ESP32-Camera-Robot-FPV-Teacher-Entry Instructable i jest zmodyfikowany tak, aby zawierał czujnik odległości, dozownik środków i funkcję "sterowania z dowolnego miejsca na świecie", pod warunkiem, że masz dość stabilne połączenie internetowe.

Kieszonkowe dzieci

Projekt składa się z 4 głównych części - Mobilnego Samochodu Robota, Dozownika Chipów, Joysticka i Konfiguracja Komunikacji Sieciowej.

Mobilny samochód robota

  • Deska do krojenia chleba
  • Zestaw silnika z napędem na 2 koła i robota podwozia (zawiera koła, silniki prądu stałego, płytę montażową i śruby)
  • Arduino Mega 2560 (jeśli zbudujesz bez czujnika odległości lub Chip Dispensera, Uno będzie miał wystarczającą ilość pinów)
  • (3) Baterie 9 V (maj jeszcze kilka, ponieważ będziesz je rozładowywać podczas debugowania)
  • Moduł zasilacza LM2596 Regulator DC/DC Buck 3A (lub podobny)
  • Moduł Wi-Fi ESP32-CAM
  • FT232RL Konwerter szeregowy FTDI USB na TTL (do programowania ESP32-CAM)
  • HC-SR04 Ultradźwiękowy czujnik odległości
  • Sterownik silnika L298N
  • (3) diody LED (dowolny kolor)
  • (3) Rezystory 220 Ohm

Dozownik wiórów

  • (2) Serwa SG90
  • Tektura / Tektura

Drążek sterowy

  • Arduino Uno
  • Moduł joysticka
  • Minipłytka do krojenia chleba, (1) LED, (1) Rezystor 220 Ohm (opcjonalnie)

Inne

Dużo przewodów połączeniowych do tektury Dodatkowy karton / tekturaTaśmaNożyczkiLinijka / taśma mierniczaMały śrubokręt PhilipsMały śrubokręt płaski

Cierpliwość =)

Krok 1: Mobilny samochód robota

Podwozie Robot Car służy jako platforma mobilna, z Arduino MEGA jako głównym mikrokontrolerem napędzającym silniki, odczytującym wartości czujników i uruchamiającym serwa. Większość czynności wykonywana jest dzięki temu, że Arduino MEGA odbiera polecenia za pośrednictwem komunikacji szeregowej, wysyłane z ESP32-CAM. Podczas gdy ESP32 zapewnia strumień na żywo z kamery do sterowania robotem, jego inną funkcją jest zarządzanie bezprzewodowym połączeniem między robotem a serwerem, dzięki czemu użytkownicy mogą sterować nim z dowolnego miejsca na świecie. ESP32 odbiera polecenia ze strony internetowej za pomocą naciśnięcia klawisza i wysyła je do Arduino MEGA jako wartości znaków. Na podstawie otrzymanej wartości samochód będzie jechał do przodu, do tyłu itp. Ponieważ zdalne sterowanie przez Internet zależy od wielu czynników zewnętrznych, w tym dużych opóźnień, złej jakości strumienia, a nawet rozłączeń, wbudowany jest czujnik odległości, aby zapobiec awarii robota w obiekty. *Ze względu na wysokie i zmienne wymagania dotyczące mocy układu ESP32 zaleca się stosowanie regulatora zasilania przy zasilaniu bateryjnym (patrz schemat połączeń).

Krok 2: Mobilny samochód robota - schemat obwodu

Mobilny samochód robota - schemat obwodu
Mobilny samochód robota - schemat obwodu

Przeprowadzimy Cię krok po kroku przez proces montażu.

Krok 3: Mobilny samochód robota - montaż (silniki)

Mobilny samochód robota - montaż (silniki)
Mobilny samochód robota - montaż (silniki)

Po zmontowaniu obudowy 2WD zaczynamy od podłączenia silników i akumulatora do Arduino MEGA poprzez sterownik L298N.

Krok 4: Mobilny samochód robota - montaż (czujnik odległości)

Mobilny samochód robota - montaż (czujnik odległości)
Mobilny samochód robota - montaż (czujnik odległości)

Ponieważ elementów do podłączenia jest sporo, dodajmy płytkę stykową, aby łatwiej było podłączyć zasilanie i wspólną masę. Po przeorganizowaniu przewodów podłącz czujnik odległości i zamocuj go z przodu robota.

Krok 5: Mobilny samochód robota - montaż (ESP32 CAM)

Mobilny samochód robota - montaż (ESP32 CAM)
Mobilny samochód robota - montaż (ESP32 CAM)

Następnie podłącz moduł ESP32-CAM i zamocuj go obok czujnika odległości w pobliżu przodu robota. Pamiętaj, że ten dość energochłonny element wymaga własnej baterii i regulatora prądu stałego.

Krok 6: Mobilny samochód robota - montaż (dozownik wiórów)

Mobilny samochód robota - montaż (dozownik wiórów)
Mobilny samochód robota - montaż (dozownik wiórów)

Teraz dodajmy dozownik wiórów (więcej na ten temat w sekcji „Dozownik wiórów”). Połącz dwa serwa zgodnie ze schematem Fritzing i zamocuj dozownik na ogonie robota.

Krok 7: Mobilny samochód robota - montaż (pliki cookie!)

Mobilny samochód robota - montaż (ciasteczka!)
Mobilny samochód robota - montaż (ciasteczka!)

Na koniec dodajemy smakołyki do dozownika!

Krok 8: Mobilny samochód robota - kod Arduino

RobotCar_Code to kod, który musisz załadować na Arduino Mega.

Oto jak to działa: Arduino nasłuchuje bajtów, które są wysyłane z ESP32 poprzez komunikację szeregową na paśmie 115200. Na podstawie otrzymanego bajtu samochód będzie poruszał się do przodu, do tyłu, w lewo, w prawo itd., wysyłając wysokie lub niskie napięcie do silników w celu sterowania kierunkiem, a także zmienną PWM między 0-255 w celu sterowania prędkością. Aby uniknąć kolizji, ten kod odczytuje również wartości przychodzące z czujnika odległości, a jeśli odległość jest mniejsza niż określony próg, robot nie porusza się do przodu. Wreszcie, jeśli Arduino otrzyma polecenie wydania smakołyka, aktywuje serwa w dozowniku chipów.

Krok 9: Mobilny samochód robota - kod ESP32

ESP32 pozwala na komunikację między serwerem a Arduino przez Wifi. Jest programowany oddzielnie od Arduino i posiada własny kod:

  • ESP32_Code.ino to kod dla ESP32 do wysyłania informacji do Arduino
  • app_httpd.cpp to kod potrzebny do domyślnego serwera WWW ESP32 i ustawia funkcję nasłuchiwania naciśnięć klawiszy. Dobry do debugowania i testowania w lokalnej sieci Wi-Fi. Nie służy do komunikacji poza siecią lokalną.
  • camera_index.h to kod html dla domyślnej aplikacji internetowej
  • camera_pins.h definiuje piny w zależności od modelu ESP32

Kod ESP32 wykorzystuje bibliotekę Wifi, a także dodatek ESP32, który można zainstalować w Arduino IDE, wykonując następujące kroki:

  1. W Arduino IDE przejdź do Plik>Preferencje
  2. Następnie na karcie Ustawienia w obszarze Adres URL menedżera dodatkowych tablic wprowadź następujący „https://dl.espressif.com/dl/package_esp32_index.json”
  3. Teraz otwórz Menedżera tablic i przejdź do Narzędzia> Tablica> Menedżer tablic i wyszukaj ESP32, wpisując „ESP32”
  4. Powinieneś zobaczyć "esp32 by Espressif Systems". Kliknij Zainstaluj.
  5. Teraz należy zainstalować dodatek ESP32. Aby to sprawdzić, wróć do Arduino IDE i przejdź do Narzędzia> Płytka i wybierz „ESP32 Wrover Module”.
  6. Ponownie przejdź do Narzędzia> Szybkość przesyłania i ustaw ją na „115200”.
  7. Na koniec przejdź do Narzędzia> Schemat partycji i ustaw go na „Ogromna aplikacja (3 MB bez OTA/1 MB SPIFFS)
  8. Po ukończeniu tego polecam skorzystać z tego samouczka autorstwa RandomNerdTutorials, który szczegółowo wyjaśnia, jak sfinalizować konfigurację ESP32 i przesłać kod za pomocą programatora FTDIProgramowanie ESP32

Krok 10: Dozownik wiórów

Dozownik wiórów
Dozownik wiórów

Chip Dispenser to niedrogi dodatek do robota mobilnego, dzięki któremu może wpływać na lokalne środowisko i wchodzić w interakcje z ludźmi/zwierzętami, zostawiając pyszny smakołyk. Składa się z tekturowego zewnętrznego pudełka z 2 zamontowanymi wewnątrz serwomechanizmami, a także z wewnętrznego kartonowego wkładu, w którym przechowywane są przedmioty (takie jak cukierki lub psie smakołyki) do wydawania. Jedno serwo działa jak brama, podczas gdy drugie wypycha przedmiot.

*Wszystkie wymiary podano w milimetrach

Krok 11: Joystick

Drążek sterowy
Drążek sterowy

Chociaż sterowanie robotem za pomocą klawiatury może być zabawne, jeszcze bardziej zabawne i intuicyjne jest korzystanie z joysticka, w którym robot reaguje bezpośrednio w oparciu o kierunek, w którym się poruszasz. Ponieważ ten robot jest uruchamiany za pomocą naciśnięć klawiszy zapisanych na stronie internetowej, potrzebowaliśmy naszego joysticka do emulacji klawiatury. W ten sposób użytkownicy bez joysticka nadal mogą sterować robotem bezpośrednio z klawiatury, ale inni mogą używać joysticka.

W tym celu mieliśmy tylko Arduino Uno, które nie ma możliwości korzystania z biblioteki, więc zaprogramowaliśmy je bezpośrednio za pomocą protokołu USB znanego jako Aktualizacja oprogramowania układowego urządzenia (DFU), który umożliwia flashowanie arduino za pomocą ogólnego oprogramowania układowego klawiatury USB HID. Innymi słowy, gdy arduino jest podłączone do usb, nie jest już rozpoznawane jako arduino, ale jako klawiatura!

Krok 12: Joystick – schemat obwodu

Joystick - schemat obwodu
Joystick - schemat obwodu

Oto jak podłączyliśmy joystick.

Krok 13: Joystick - emulator klawiatury

Aby Arduino Uno emulowało klawiaturę, musisz bezpośrednio zaprogramować układ Atmega16u2 na Arduino za pomocą ręcznej aktualizacji oprogramowania układowego urządzenia (DFU). Poniższe kroki opiszą proces na komputerze z systemem Windows i, miejmy nadzieję, pomogą uniknąć niektórych problemów, które napotkaliśmy.

Pierwszym krokiem jest ręczne napisanie sterownika usb Atmel do Arduino, aby był rozpoznawany jako USB, a nie Arduino, co umożliwia jego flashowanie za pomocą programatora FLIP.

  1. Pobierz programator FLIP firmy Atmel stąd
  2. Podłącz swoje Arduino Uno
  3. Przejdź do Menedżera urządzeń i znajdź Arduino. Będzie pod COM lub Nieznanym urządzeniem. Podłącz i odłącz, aby upewnić się, że jest to właściwe urządzenie.
  4. Po znalezieniu Arduino Uno w Menedżerze urządzeń kliknij go prawym przyciskiem myszy i wybierz właściwości> Sterownik> Aktualizuj sterownik> Przeglądaj mój komputer w poszukiwaniu oprogramowania sterownika> Pozwól mi wybrać z listy dostępnych sterowników na moim komputerze> Z dysku> Przejdź do plik "atmel_usb_dfu.inf" i wybierz go. Powinien znajdować się w folderze, w którym zainstalowano programator Atmel FLIP. Na moim komputerze jest tutaj: C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf
  5. Zainstaluj sterownik
  6. Teraz wróć do Menedżera urządzeń, powinieneś zobaczyć „Urządzenia USB Atmel” z Arduino Uno oznaczonym teraz jako ATmega16u2!

Teraz, gdy komputer rozpoznaje Arduino Uno jako urządzenie USB, możemy użyć programatora FLIP, aby sflashować go z 3 oddzielnymi plikami i zamienić go w klawiaturę.

Jeśli odłączyłeś Arduino Uno po pierwszej części, podłącz go ponownie.

  1. Otwórz FLIP
  2. Zresetuj Arduino Uno, krótko podłączając zasilanie do masy.
  3. Kliknij Device Selection (ikona jak mikrochip) i wybierz ATmega16U2
  4. Kliknij Wybierz nośnik komunikacji (ikona przypominająca przewód USB) i wybierz USB. Jeśli poprawnie wykonałeś pierwszą część, pozostałe szare przyciski powinny stać się użyteczne.
  5. Przejdź do Plik> Załaduj plik szesnastkowy> i prześlij plik Arduino-usbserial-uno.hex
  6. W oknie FLIP powinieneś zobaczyć trzy sekcje: Operations Flow, FLASH Buffer Information i ATmega16U2. W Przepływie operacji zaznacz pola Erase, Program i Verify, a następnie kliknij Uruchom.
  7. Po zakończeniu tego procesu kliknij Uruchom aplikację w sekcji ATmega16U2.
  8. Podłącz arduino do cyklu, odłączając go od komputera i ponownie podłączając.
  9. Zresetuj Arduino Uno, krótko podłączając zasilanie do masy.
  10. Otwórz Arduino IDE i prześlij plik JoyStickControl_Code.ino na płytkę.
  11. Podłącz arduino do cyklu, odłączając go od komputera i ponownie podłączając.
  12. Zresetuj arduino poprzez krótkie podłączenie zasilania do masy.
  13. Wróć do FLIP, upewnij się, że wybór urządzenia mówi Atmega16U2
  14. Kliknij Wybierz nośnik komunikacji i wybierz USB.
  15. Przejdź do Plik> Załaduj plik szesnastkowy> i prześlij plik Arduino-keyboard-0.3.hex
  16. W oknie FLIP powinieneś zobaczyć trzy sekcje: Operations Flow, FLASH Buffer Information i ATmega16U2. W Przepływie operacji zaznacz pola Erase, Program i Verify, a następnie kliknij Uruchom.
  17. Po zakończeniu tego procesu kliknij Uruchom aplikację w sekcji ATmega16U2.
  18. Podłącz arduino do cyklu, odłączając go od komputera i ponownie podłączając.
  19. Teraz, gdy przejdziesz do Menedżera urządzeń, powinno być nowe urządzenie klawiatury HID w obszarze Klawiatury.
  20. Otwórz notatnik lub dowolny edytor tekstu i zacznij poruszać joystickiem. Powinieneś zobaczyć wpisywane liczby!

Jeśli chcesz zmienić kod w szkicu Arduino, na przykład wpisać nowe polecenia do joysticka, będziesz musiał za każdym razem flashować go ze wszystkimi 3 plikami.

Kilka przydatnych linków:Nie znaleziono Arduino DFUAtLibUsbDfu.dll

Ten emulator klawiatury jest oparty na tym samouczku Michaela z 24 czerwca 2012 r.

Krok 14: Komunikacja sieciowa

Komunikacja sieciowa
Komunikacja sieciowa

Aby odbierać strumień wideo i wysyłać polecenia do robota z dowolnego miejsca na świecie, potrzebujemy sposobu na pozyskiwanie danych do i z ESP32-CAM. Odbywa się to w dwóch częściach, obsłudze połączeń w sieci lokalnej i serwerze publicznym. Pobierz trzy pliki, aby to osiągnąć:

  • Handlers.py: przekazuje informacje z ESP32-CAM i serwera publicznego (testowane na Pythonie 3.8)
  • Flask_app.py: określa, jak Twoja aplikacja odpowiada na przychodzące żądania.
  • Robot_stream.html: renderuje wideo w przeglądarce i nasłuchuje poleceń za pomocą klawiatury / joysticka (testowane w Chrome)

Obsługa połączenia Możesz to zakodować bezpośrednio w app_httpd.cpp, ale dla łatwiejszego debugowania używamy skryptu Pythona działającego na komputerze podłączonym do tej samej sieci. Otwórz handlers.py i zaktualizuj adres IP oraz nazwę użytkownika do własnych i gotowe. Strumień rozpocznie się po uruchomieniu tego pliku.

Serwer publiczny Aby uzyskać dostęp do wszystkiego w Internecie, możesz uruchomić serwer z wybranym przez siebie PaaS. W pythonanywhere (PA) konfiguracja zajmuje mniej niż 5 minut:

  1. Załóż konto i zaloguj się
  2. Przejdź do zakładki „Sieć” i naciśnij „Dodaj nową aplikację internetową”, wybierz Flask i Python 3.6
  3. Skopiuj flask_app.py do katalogu /mysite
  4. Skopiuj robot_stream.html do katalogu /mysite/templates
  5. Kliknij „Załaduj ponownie”

I… wszystko gotowe!

Zastrzeżenie: Ten przepływ pracy w sieci jest szybki i prosty, ale bardzo daleki od ideału. RTMP lub gniazda byłyby bardziej odpowiednie do przesyłania strumieniowego, ale nie są obsługiwane w systemie PA i wymagają pewnego doświadczenia z konfiguracją sieci i serwera. Zaleca się również dodanie mechanizmu zabezpieczającego w celu kontroli dostępu.

Krok 15: Składanie wszystkiego razem

Teraz włącz robota, uruchom plik handlers.py na komputerze (podłączonym do tej samej sieci co robot) i możesz sterować robotem z przeglądarki na podstawie ustawionego adresu URL z dowolnego miejsca. (np.

Zalecana: