Sterowanie Robotem Sharky przez WI-FI

Typ_projektu
microPython
Zdjecie główne
Krótki opis projektu

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.

Niezbędne elementy
  1. Robot "Sharky" lub inny robot mobilny
  2. Płytka ESP32-CAM.
  3. Płytka ESP8266
  4. Płytka „Game Console” ze strony sic.edu.pl
  5. Zasilanie dla płytek (dwa powerbanki).
  6. Dwa kable USB do programowania płytek ESP.
  7. Środowisko IDE kompatybilne z MicroPythonem np. „Thonny”

Alternatywnie:

  1. Zamiast robota "Sharky" można użyć innych robotów mobilnych, np. "Otto DIY" lub zestawu z silnikami DC
  2. Zamiast ESP32-CAM i ESP8266 można zastosować np. dwa moduły ESP32
  3. Zamiast płytki „Game Console” można użyć płytki stykowej z podłączonymi za pomocą przewodów męsko-męskich przyciskami
  4. Zamiast powerbanków można użyć akumulatorów np.Li-Po
  5. Kod można napisać w Arduino IDE lub C++ zamiast w micropythonie
Opis projektu

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()

Zdjęcia
kod programu

ZIP poniżej

Pliki_projektu
Tagi
micropython wifi robot esp-now esp8266 esp32 sterowanie
Odnośniki zewnętrzne
https://www.donskytech.com/exploring-esp-now-in-micropython-a-learners-guide/
https://www.donskytech.com/discovering-esp-now-in-micropython-with-asyncio/