Projekt polega na stworzeniu systemu sterowania robotem mobilnym "Sharky" za pomocą przycisków dołączonych do płytki ESP8266. Robot "Sharky" został zaprogramowany na płytce ESP32-CAM i komunikuje się z ESP8266 poprzez protokół Wi-Fi, korzystając z biblioteki ESP-NOW. Kod sterujący całym projektem napisano w MicroPythonie, a do jego kompilacji użyto programu "Thonny". Gotowy model robota można zakupić na stronie sic.edu.pl/sharky , jednak projekt może być zaadaptowany do innych podobnych robotów lub płytek.
- Robot "Sharky" lub inny robot mobilny
- Płytka ESP32-CAM.
- Płytka ESP8266
- Płytka „Game Console” ze strony sic.edu.pl
- Zasilanie dla płytek (dwa powerbanki).
- Dwa kable USB do programowania płytek ESP.
- Środowisko IDE kompatybilne z MicroPythonem np. „Thonny”
Alternatywnie:
- Zamiast robota "Sharky" można użyć innych robotów mobilnych, np. "Otto DIY" lub zestawu z silnikami DC
- Zamiast ESP32-CAM i ESP8266 można zastosować np. dwa moduły ESP32
- Zamiast płytki „Game Console” można użyć płytki stykowej z podłączonymi za pomocą przewodów męsko-męskich przyciskami
- Zamiast powerbanków można użyć akumulatorów np.Li-Po
- Kod można napisać w Arduino IDE lub C++ zamiast w micropythonie
1.Podstawy teoretyczne
Robot mobilny "Sharky" wykorzystuje moduł ESP32-CAM jako główny element sterujący ruchem. Moduł ten jest odpowiedzialny za odbiór komend przesyłanych z ESP8266 przy użyciu protokołu ESP-NOW. Protokół ESP-NOW pozwala na szybką i niezawodną komunikację między urządzeniami ESP bez konieczności tworzenia tradycyjnej sieci WiFi.
Robot realizuje ruchy w przód, w tył oraz skręty o 90 stopni. Możliwe jest również zadawanie kolejnych instrukcji ruchu bez czekania na zakończenie aktualnej operacji. Zostało to zostało zrealizowane dzięki zastosowaniu programowania asynchronicznego i biblioteki "uasyncio".
MicroPython, użyty do programowania obu płytek, jest lekkim interpreterem Pythona dedykowanym dla mikrokontrolerów, co pozwala na efektywne zarządzanie ograniczonymi zasobami płytek ESP.
2.Przygotowanie sprzętu
ESP32-CAM: Wgraj najnowszy firmware MicroPython (np. ze strony https://micropython.org/download/) i skonfiguruj piny sterujące silnikami robota "Sharky". Upewnij się, że silniki robota są poprawnie podłączone do sterownika silników.
ESP8266: Wgraj najnowszy firmware MicroPython (np. ze strony https://micropython.org/download/). W przypadku nieposiadania płytki „Game Console” podłącz przyciski do dowolnych pinów GPIO. Dodaj rezystory pull-up, jeśli to konieczne.
Połączenie płytek: Skonfiguruj ESP-NOW w obu płytkach. ESP8266 będzie działał jako nadawca, a ESP32-CAM jako odbiorca. Do poprawnej komunikacji będziesz potrzebował znać adres MAC płytki ESP32-CAM, który trzeba w kodzie przypisać do zmiennej "peer" (17 linijka kodu "esp_now_button_click_sender.py"). W celu sprawdzenia adresu MAC podłącz płytkę ESP32-CAM do komputera, a następnie uruchom program "find_device_mac_address.py". Wszystkie programy są dostępne do pobrania na końcu strony.
3.Konfiguracja oprogramowania
Zainstaluj Thonny i podłącz płytki do komputera.
Wgraj skrypty na odpowiednie płytki:
ESP32-CAM:
- Skrypt odbierający dane z ESP8266 (esp_now_button_click_receiver.py)
- Biblioteka zawierająca instrukcje ruchu silników (robot.py)
- W pliku boot.py znajdującym się na płytce zatrzymaj wszystkie silniki i wywołaj program główny:
import robot
import esp_now_button_click_receiver
robot.stopEngine()
esp_now_button_click_receiver.receiver()
ESP8266:
- Skrypt obsługujący przyciski i wysyłający komendy do ESP32-CAM.
- W pliku boot.py znajdującym się na płytce wywołaj program główny:
import esp_now_button_click_sender
esp_now_button_click_sender.sender()
ZIP poniżej
https://www.donskytech.com/discovering-esp-now-in-micropython-with-asyncio/