Nasz robot skanuje okoliczny teren z użyciem dwóch obracających się sonarów, a odczytane dane wysyła do komputera przez port szeregowy.
Projekt zawiera dwie płytki - esp32 Cam oraz nanoch32v00x. Z powodu ograniczonej liczby pinów na esp32 ch32 jest używane jako narzędzie do odczytu pomiarów z dalmierzy, które następnie są wysyłane UARTem do esp32, które już może komunikować się z komputerem.
1. Płytka ESP32 Cam
2. Płytka nanoCH32V00X
3. Serwomechanizm x2
4. Dalmierz ultradźwiękowy x2
Drukarka 3D
Klej na gorąco
Żyłka wędkarska bądź nitka
-
Cel projektu
Głównym celem projektu jest skomunikowanie mikrokontrolerów nanoCH32v003 z ESP32CAM, uwzględniając ograniczenia związane z wykorzystaniem ESP do sterowania robotem Sharky, a następnie stworzenie z robota platformy rozwojowej, która za pomocą radarów zamontowanych na serwomechanizmach jest w stanie mapować otoczenie i potencjalnie wykorzystać to do nawigacji w terenie.
-
Architektura układu
Do wykonania działającego układu ruchomych radarów potrzeba:
-
2 radarów ultradźwiękowych HC-SR04
-
2 serwomotorów SG90
-
Płytki stykowej
-
Płytki nanoCH32v003
-
Kabelków m-m i m-ż
Schemat podłączenia elementów prezentuje się następująco:

Do zamontowania tworzonego układu na robocie warto wykorzystać załączoną w oddzielnym pliku podstawkę na serwomechanizmy, którą można wydrukować na drukarce 3D. Serwa do obudowy można przykleić klejem na gorąco. Gotowy układ na robocie może wyglądać np. tak:

-
Komunikacja nanoCH32v003 – ESP32CAM
Ze względu na ograniczoną liczbę wolnych pinów w ESP32CAM (tylko dwa, reszta wykorzystywana jest do obsługi robota) mikrokontroler nanoCH32v003 działa jak czujnik pomiarowy – obsługuje oba czujniki HC-SR04, przelicza ich odczyty na centymetry a następnie przesyła te informacje do ESP32CAM. Komunikacja odbywa się za pomocą protokołu UART, przy czym, jako że jest ona jednostronna (tylko przesyłanie odczytu czujników, nie ma potrzeby wysyłania żadnych informacji w drugą stronę) wykorzystany jest tylko jeden kabel łączący pin TX na nanoCH32v003 z pinem RX na ESP32CAM. Od strony programu komunikacja odbywa się za pomocą komend Serial.print() i Serial.read() z tym, że w ESP32CAM dostępny pin RX należy do drugiego bloku UART (pierwszy służy do komunikacji z komputerem a jego piny nie są w tym przypadku dostępne) używane są komendy Serial2.print() i Serial2.read().
-
Realizacja skanowania terenu
Robot radzi sobie dobrze ze skanowaniem otoczenia w odległości nie większej niż 2 metry. Dane wypisuje do serial monitora, skąd można je skopiować i wyświetlić w formie graficznej w programie zewnętrznym. Na załączonych zdjęciach widać, że łatwo można powiedzieć, który z obiektów ze zdjęcia pokazuje się na obrazie wygenerowanym z pomiarów.


U góry zdjęcie skanowanego terenu, poniżej obraz utworzony ze sczytanych odległości i kątów w oddzielnym programie. Na biało punkty wykryte przez prawy czujnik, na czarno te wykryte przez lewy.
-
Możliwości rozwoju
W kolejnych etapach zachęcamy wykonującego do próby połączenia możliwości jezdnych robota z możliwością mapowania terenu. Nie będzie to proste zadanie gdyż uwzględnić trzeba będzie potrzeby prądowe silników kół oraz całego układu radarowego. Można popracować też nad algorytmami interpretującymi odczyty z radarów, które będą obrabiały otrzymywane wyniki (np. filtrowały szumy).
// Kod do esp32:
// Kod do ch32:
}