LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

ESP32-CAM – płytka z modułem ESP32 z Wi-Fi oraz kamerą OV2640

Rosnące możliwości mikrokontrolerów i mikroprocesorów sprawiają, że obecnie amatorzy są w stanie budować nawet bardzo skomplikowane układy. Aktualnie popularność zdobywają projekty wizji maszynowej, które można zbudować w domowym zaciszu. Bardzo często do tego celu stosowane są minikomputery, takie jak Raspberry Pi lub BeagleBone, do których można podłączyć kamerę i przetwarzać na nich obraz, również za pomocą algorytmów sztucznej inteligencji do rozpoznawania obrazów. Na rynku są także bardziej kompaktowe rozwiązania, wykorzystujące mikrokontrolery. Jednym z nich jest tani zestaw ESP32-CAM łączący prosty moduł z układem ESP32 oraz kamerę OV2640.

Budowa modułu ESP32-CAM

Głównym układem obliczeniowym całego zestawu jest znany i lubiany układ SoC ESP32. Układ zawiera rdzeń obliczeniowy Tensillica Xtensa o taktowaniu do 160 MHz. Dysponuje również modułem komunikacji bezprzewodowej Wi-Fi 802.11b/g/n oraz Bluetooth 4.2. Pojemność wbudowanej pamięci SRAM wynosi 520 KB. Układ ESP32 obsługuje m.in. interfejsy UART, SPI, I2C, PWM, CAN, a także SD. Zawiera również przetworniki ADC i DAC.

Moduł ESP32-CAM oprócz procesora zawiera również dodatkową, zewnętrzną pamięć PSRAM o pojemności 4 MB. Dysponuje także wbudowaną anteną oraz możliwością dołączenia zewnętrznej anteny za pomocą złącza uFL. Na płytce zamontowano również slot na kartę microSD oraz złącze FPC do podłączenia kamery. Dodatkowo zawiera także złącze goldpin 2×8, na które wyprowadzono interfejsy procesora. Moduł zawiera diodę LED, służącą do doświetlenia obrazu przechwytywanego przez kamerę oraz przycisk resetu.

Poniżej zaprezentowano rozkład elementów oraz wyprowadzeń złącza rozszerzeń.

Rys. 1. Rozkład elementów płytki ESP32-CAM

Rys. 2. Rozkład wyprowadzeń złącza goldpin

Drugą częścią zestawu jest moduł z czujnikiem obrazu OV2640 o rozdzielczości 2 Mpx. Czujnik jest podłączony do taśmy FPC, służącej do połączenia z modułem bazowym. Taśma jest dość krótka (21 mm), a z tyłu czujnika przyklejono dwustronną taśmę klejącą. Daje to możliwość przymocowania czujnika do slotu na karty SD i zmontowania zwartego, małego (wymiary płytki: 40,5 x 27 mm), bezprzewodowego modułu z kamerą.

Taśma FPC umożliwia podłączenie czujników obrazu innych niż dołączony, np. OV7670.

Rys. 3. Kamera OV2640 dołączona do zestawu

Rys. 4. Moduł ESP32-CAM połączony z kamerą

Komunikacja z Arduino i przykład pracy kamery

Mikrokontrolery ESP32 można programować za pomocą pakietu esp-idf, ale chyba wygodniejszą i popularniejszą opcją jest programowanie w środowisku Arduino. Wśród przykładów dostępnych w tym środowisku jest kod CameraWebServer, który uruchamia na płytce serwer kamery i pozwala na oglądanie obrazu w przeglądarce sieciowej. W dalszej części artykułu zaprezentuję sposób uruchomienia tego przykładu na module ESP32-CAM.

Najpierw należy pobrać pakiet do obsługi układów ESP w środowisku Arduino. Jeśli jeszcze nie korzystałeś z tych procesorów, będziesz musiał dodać link do repozytorium zawierającego pakiet. Aby to zrobić należy wejść w menu Plik > Preferencje i dodać do listy dodatkowych adresów URL link:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

W kolejnym kroku trzeba wejść w menu Narzędzia > Płytka > Menedżer Płytek. W okienku należy wyszukać „esp32” i zainstalować pakiet esp32. Instalacja może potrwać kilka minut.

Zestaw ESP32-CAM należy programować w środowisku Arduino jako płytkę „ESP32 Wrover module”, czyli jako montowany powierzchniowo moduł SoM z ESP32 i anteną, będący w istocie główną częścią płytki. Resztę ustawień w menu Narzędzia można obejrzeć na poniższym rysunku.

Rys. 5. Menu Narzędzia z wybraną płytką ESP32 Wrover Module

Po ustawieniu płytki można już uruchomić kod przykładu. Znajdziemy go w menu Plik > Przykłady > esp32 > Camera. Przed uruchomieniem przykładu należy dokonać edycji w dwóch miejscach. Najpierw należy wybrać odpowiedni model kamery. Należy więc zakomentować linijkę #define CAMERA_MODEL_WROVER_KIT oraz odkomentować #define CAMERA_MODEL_AI_THINKER. W związku z tym początek kodu powinien wyglądać następująco:

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
//#define CAMERA_MODEL_ESP_EYE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM

Drugą rzeczą jest zdefiniowanie w kodzie danych dotyczących sieci Wi-Fi. W linijkach:

const char* ssid = "*********";
const char* password = "*********";

w miejsce gwiazdek należy wpisać nazwę i hasło do sieci.

Połączenie płytki z konwerterem USB-UART

Następnie należy połączyć komputer PC z płytką docelową. Do tego celu trzeba wykorzystać konwerter USB-UART. Ja w tym celu wykorzystam moduł ZL5USB z oferty Kamami, ale tak naprawdę większość konwerterów można podłączyć bardzo podobnie. Połączenie należy wykonać w sposób następujący:

ZL5USB ESP32-CAM
+5V 5V
GND GND
Rx UOT
Tx UOR
Dodatkowo należy zewrzeć port IO0 z sąsiednim portem GND, na przykład za pomocą zworki. Cały układ wygląda jak na poniższej fotografii.

Rys. 6. Moduł ESP32-CAM połączony z konwerterem ZL5USB

Następnie, po podłączeniu konwertera przez przewód USB, należy jeszcze wybrać port szeregowy w menu Narzędzia. Teraz można już włączyć kompilację i wgrywanie kodu przyciskiem Wgraj.

Po zakończeniu wgrywania można już włączyć Monitor portu szeregowego i ustawić prędkość na 115200 baud. Na razie konsola będzie pusta. W tym momencie należy usunąć zworkę i zresetować układ przyciskiem na płytce. Po zresetowaniu płytka powinna wysłać komunikat, w którym m.in. poda swój adres IP.

Rys. 7. Odpowiedź płytki ESP32-CAM na porcie szeregowym

Skoro mamy już adres IP, to możemy wpisać go w przeglądarce. Ukaże nam się strona, na której można obejrzeć obraz z kamery, a także ustawić parametry obrazu takie, jak rozdzielczość, jasność czy kontrast. Co prawda na najwyższej rozdzielczości obraz nie jest zbyt płynny, ale na niższych ustawieniach ma zaskakująco dobrą jakość. Na poniższym obrazku można obejrzeć stronę z obrazem z kamery.

Rys. 8. Strona z obrazem z kamery ESP32-CAM

Podsumowanie

Moduł ESP32-CAM to zestaw z układem SoC ESP32 oraz czujnikiem obrazu OV2640. Jest to tani moduł z kamerą umożliwiający prowadzenie budżetowych projektów wizji maszynowej. Oparto go o układ ESP32 z wbudowaną komunikacją Wi-Fi oraz Bluetooth. Dość duża moc obliczeniowa układu umożliwia również implementację algorytmów sztucznej inteligencji, co pozwala na zaprojektowanie aplikacji rozpoznawania twarzy, obiektów czy kodów QR. Bez wątpienia daje to więc duże możliwości w wyjątkowo niskiej cenie.

Moduł ESP32-CAM jest dostępny w ofercie sklepu Kamami.pl