Drukowany 3D balansujący robot na ESP32

Drukowany 3D balansujący robot na ESP32

Dzisiaj będzie bardzo ciekawie, bo będziemy rozmawiać o robocie! W tym artykule opiszę konstrukcję i wgrywanie oprogramowania robota balansującego na mikrokontrolerze ESP32 sterowanego przez WIFI.

Bazę i pomysł projektu robota znalazłem na popularnym portalu z plikami STL www.thingiverse.com. Jest to wykonanie firmy jjrobots, która używa do tego projektu swojej autorskiej płytki sterującej.

Jak się okazało, alternatywą dla sterowania tego robota jest popularny układ mikrokontrolera ESP32 o bardzo dużych możliwościach, a do niego już gotowy wsad do jego zaprogramowania. Gotową płytkę PCB znalazłem w sklepie pcbway, gdzie można również znaleźć wspomniany wcześniej projekt.

Założeniem projektu było stworzenie robota do zabawy dla dzieci (przynajmniej według oficjalnej wersji ;)), który może być sterowany z aplikacji w telefonie, a dodatkowo dobrze wygląda i jeździ na dwóch kołach.

Nagraliśmy krótkie video podczas zabawy robotem. Myślę, że niektóre kadry mogą być interesujące, aby móc zobrazować zwrotność i możliwości tej jeżdżącej zabawki.
Jak widzicie bardzo sprawnie porusza się zarówno po parkiecie jak i dywanie. Mój tata wydrukował sobie dokładnie taki sam model i musze przyznać, że przy dwóch egzemplarzach zabawa jest jeszcze fajniejsza, ponieważ można zorganizować wyścigi lub stoczyć mini walkę robotów.

Rama robota jest drukowana w 3D, elektronika zrobiona na wspomnianym wcześniej ESP32, dzięki czemu można nim sterować telefonem przez łączność WIFI . Robot posiada akcesoryjne ramię służące do podnoszenia po upadku, albo w swojego rodzaju „walkach”, które można zaaranżować mając więcej tego typu konstrukcji.

Trochę informacji o możliwościach układu ESP32:

  • procesor Dual Core Tensilica LX6 240 MHz
  • pamięć SRAM 520 KB
  • pamięć Flash: 4 MB
  • wbudowany układ WiFi 802.11BGN HT40
  • wbudowany moduł Bluetooth
  • zintegrowany czujnik Halla oraz interfejs dotykowy
  • 30 wyprowadzeń GPIO
  • w wersji DevKit stabilizator 3,3 V został umieszczony już na płytce mikrokontrolera, dlatego można go zasilać bezpośrednio 5V.
  • wymiary: 50 x 26 x 8 mm (bez złącz)

Ten układ również jak Arduino współpracuje z edytorem programistycznym Arduino IDE.

Wyprowadzenia (pinout) mikrokontrolera ESP-WROOM32 w wersji DevKit

Lista części do wykonania robota:

  • 1 x płytka PCB ESP32 Balancing Robot Shield
  • 1 x mikrokontroler ESP32 DEVKIT V1
  • 2 x Sterownik silnika krokowego z układem A4988 (popularny stepstick)
  • 1 x płytka trzyosiowego żyroskopu MPU6050
  • 2 x silnik krokowy Nema17
  • 1 x serwo MG90S
  • 1 x LED 3mm
  • 2 x LED 3mm jasny biały
  • 1 x aktywny Buzzer
  • 2 x regulator napięcia 5V AMS1117 (SMD)
  • 1 x Rezystor 1K Ohm
  • 1 x Kondensator 0.1uF
  • 1 x Kondensator 100uF/16V
  • 2 x Kondensator 220uF/16V
  • 1 x przełącznik kołyskowy okrągły 20mm
  • 2 x Bateria Li-ion 18650 3,7V (w oryginalnym projekcie, ja użyłem baterii LiPo 3S – 11,1V)
  • 1 x koszyczek na baterię 2x 18650 (w przypadku użycia LiPo nieprzydatny)
  • 1 x kabel USB
  • 1 x OTG Adapter (ewentualnie, jeśli będziemy wgrywać oprogramowanie przez telefon)
  • 1 x Terminal na 2 piny 5mm
  • 2 x Gniazdo Żeńskie 15 pin
  • 5 x Gniazdo Żeńskie 8 pin
  • 2 x Gniazdo Żeńskie 4 pin
  • 1 x Gniazdo Męskie 2 pin
  • 1 x Gniazdo Męskie 3 pin
  • 1x Przełącznik DPDT 8.5×8.5mm
  • 1 x Śruba ustalająca 5mm
  • 1 x Śruba M3 10mm
  • 2 x O-ring 3mm ID 82mm (na koła, żeby zwiększyć przyczepność do podłoża, ja wydrukowałem obręcze z gumy)

Część mechaniczna:

Lista potrzebnych rzeczy do wersji podstawowej:

  • 2x koła
  • 2x felga z mocowaniem na silnik
  • ramię akcesoryjne
  • 2x panele boczne
  • górna półka
  • półka pod silniki
  • półka na elektronikę
  • 2x zderzaki

Do wydruku użyłem materiału PLA do elementów konstrukcji, obręcze kół były drukowane z gumy, przez co robot ma bardzo dobrą przyczepność do podłoża.

Wysokość warstwy przy wszystkich wydrukach to 0,2mm, wypełnienie 30%.

Całość skręcona jest śrubami M3 wraz z nakrętkami, które wchodzą w odpowiednio przygotowane sloty w ramie.

Złożona rama robota z zamontowanymi silnikami krokowymi Nema17

Wybór kolorów filamentu przeznaczony dla młodszego pokolenia, niezbędny zabieg do utrzymania wersji oficjalnej 🙂

Montaż elektroniki

Schemat połączeń poszczególnych elementów projektu

Najdłużej trwała podróż płytek PCB z Chin, ale przez ten czas mogłem zaopatrzyć się we wszystkie potrzebne elementy z listy.

Płytki PCB robota ESP32 Balancing Robot Shield
Większość rzeczy potrzebnych do budowy robota

Wszystkie elementy lutujemy na płytce, zwracając uwagę na stosowne oznaczenia.

 

Gotowa i zmontowana płytka sterowania robotem

Jak wszystko jest wlutowane, zabieramy się za wgrywanie programu do mikrokontrolera ESP32.

Wgrywanie oprogramowania

Do wgrania oprogramowanie do mikrokontrolera ESP32, użyłem edytora programistycznego Arduino IDE. Po zainstalowaniu edytora, ściągamy pliki projektu ESP32 WIFI Balancing Robot przez najechanie kursorem myszy na zielony napis Code i wybranie z okna rozwijanego Download ZIP. Powinien ściągnąć się plik ZIP, którego wypakowywujemy do folderu o nazwie takiej samej jak nasz plik ZIP. Nie należy zmieniać struktury katalogów, bo kompilator może nie znaleźć potrzebnych plików do stworzenia programu.

Pobieranie programu esp32_wifi_balancing_robot dostępnego na GitHub

Następnie otwieramy program Grbl_Esp32 przez plik o rozszerzeniu .INO widoczny na poniższym zdjęciu.

Po otworzeniu Arduino IDE powinno pojawić się okno z widokiem programu:

Podłączamy kablem USB naszą płytkę mikrokontrolera ESP32 i po chwili wybieramy schemat partycji Minimal SPIFFS (1,9 MB APP with OTA/190KB SPIFFS)

Pozostało nam wybrać odpowiedni port komunikacji z ESP32, w moim przypadku COM11

Po wykonaniu tych czynności, wgrywamy program do płytki naciskając strzałkę opisaną słowem „wgraj” w interfejsie programu:

Jeśli wszystko dobrze się skompilowało, w dolnej części programu powinniśmy zobaczyć napis Done Uploading. Niestety, jeśli ktoś uruchamia środowisko Arduino po raz pierwszy to może się okazać niezbędne uzupełnienie bibliotek programu, które można łatwo pobrać. W oknie dialogowym program zgłosi jakich bibliotek brakuje.

Po wgraniu oprogramowanie zostaje jeszcze zainstalować aplikację ze sklepu Play na android. Następnie otwieramy aplikację, wyszukujemy sieć naszego robota i łączymy się z nią. Teraz możemy już sterować robotem.

Ja na samym końcu musiałem zwiększyć prąd na silnikach krokowych przez przekręcenie potencjometrów na sterownikach (stepstickach). Bez tego robot miał problem z utrzymaniem pozycji pionowej.

Zabawa

Robot jest bardzo zwrotny, świetnie trzyma się nawierzchni i nieźle się rozpędza. Można poeksperymentować z suwakami odpowiedzialnymi za wartości regulatora PID i sprawdzić jak robot reaguje na wychylenie każdego suwaka z osobna. Wchodząc do trybu pro, suwaki mają zwiększony zakres i bardzo łatwo przesadzić z ustawieniem i zrobić robota wywrotnym.

Widok aplikacji do sterowania robotem

Aby nauczyć się manewrować bardzo polecam wydrukować sobie również parę pachołków, którego model znajduje się w plikach STL z robotem.

Poniższy film stworzony przez autorów tego projektu, pokazuje jakie możliwości oferuje ten balansujący robot

Powrót na górę