Sterowanie modułem kamery odbywa się za pośrednictwem przeglądarki internetowej i stron generowanych przez sam moduł. Oprogramowanie modułu powstało jako rozszerzenie szkicu dla Arduino, który z kolei oparty został na przykładowym opracowaniu producenta procesora ESP32 firmy Espressif. W porównaniu do pierwowzoru wprowadzono kilka zmian: zrezygnowano z funkcji rozpoznawania twarzy, dodano możliwość zdalnej aktualizacji nowych wersji oprogramowania drogą radiową (OTA), wprowadzono możliwość przywracania ustawień kamery, uporządkowano i uproszczono wygląd wyświetlanych w przeglądarce stron generowanych przez moduł ESP32-CAM. No i oczywiście dodano możliwość sterowania serwami użytymi do poruszania ramieniem. Można wybierać pomiędzy maksymalnie uproszczonym widokiem strony sterującej [zrzut ekranu 1], rozwinięciem z dostępem zarówno do suwaków jak i przycisków precyzyjnego ustawiania położenia ramienia z kamerą [zrzut ekranu 2]. Albo uzyskać dostęp do wielu nastaw kamery [zrzut ekranu 3].
Przełączanie pomiędzy różnymi widokami strony z elementami sterującymi uzyskuje się po naciśnięciu elementu oznaczonego jako Menu.
Klawisz Get Still powoduje kolejne wyświetlanie kilku ostatnich stop klatek. Klawisz Start/Stop Stream wznawia lub wstrzymuje
transmisję strumieniową. Natomiast naciśnięcie przycisku Full spowoduje rozwinięcie ekranu z nastawami parametrów pracy kamery.
Na samym dole listy nastaw dodano napis Servo będący linkiem do podstrony z ustawieniami związanymi z serwomechanizmami. W wersji
obecnej można tam zaprogramować pozycję ramienia, którą przyjmie po resecie oraz ograniczenia jego ruchów w pionie i poziomie.
Dodatkową opcją jest możliwość sterowania kamerą i ramieniem przy pomocy rozkazów wpisywanych bezpośrednio w pasku przeglądarki
i przesyłanych w trybie GET. Pozwala to tworzyć skrypty i zautomatyzować proces sterowania.
Przed zaprogramowaniem modułu trzeba skompilować pliki źródłowe z własnymi ustawieniami predefiniowanymi dla wybranego typu modułu.
dla środowiska Arduino.
Dalszy opis dotyczyć będzie ESP32-CAM AI-THINKER z kontrolerem w wersji ESP32-S z dostępem do dodatkowej zamontowanej pamięci PSRAM.
Żeby móc przeprowadzić kompilację należy w środowisku Arduino mieć zainstalowaną obsługę modułów z procesorem ESP32. Jeżeli jeszcze
tego nie zrobiłeś dodaj dodatkowy wpis w polu File→Preferences→Additional Board Manager URLs:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Następnie przejdź do Tools→Boards→ESP32 Arduino i wybierz ESP32→Dev→Module. Ustaw parametry:
myconfig.h
lub stwórz nowy o takiej nazwie korzystając z szablonu
myconfig.sample.h.
Jest to plik z predefiniowanymi ustawieniami użytkownika. Następnie zmień wybrane pozycje pliku
dostosowując predefiniowane parametry do swoich potrzeb.struct station stationList[]
wpisując nazwę sieci „ssid” i hasło dostępu „password”.
Można podać 2 pary parametrów dostępu do sieci lub więcej. Po włączeniu zasilania moduł zacznie szukać sieci o nazwie z pozycji 2 lub kolejnych.
Jeżeli żadnej nie znajdzie i nie będzie się mógł zalogować automatycznie przejdzie w tryb pracy punktu dostępowego i stworzy własną sieć
o nazwie i haśle z pierwszego miejsca listy. Żeby tak się stało należy odkomentować pozycję #define WIFI_AP_ENABLE
.
Możesz także zmienić domyślny adres IP punktu dostępowego edytując pozycję #define AP_ADDRESS 192,168,4,1
(zwróć uwagę, że kolejne pozycje adresu IP w tej definicji są oddzielone znakiem ‘,’).#define CAMERA_MODEL_AI_THINKER
pozostała odkomentowana.W przypadku gdy moduł ESP32-CAM zalogował się do sieci, o jego numer IP w jej zasięgu należy odpytywać router zarządzający siecią. Po pierwszym zaprogramowaniu modułu, kolejne aktualizacje oprogramowania można już przeprowadzać zdalnie, drogą radiową korzystając z trybu OTA. Najpierw należy odpowiednio skompilować źródła oprogramowania korzystając z opcji Sketch→Export compilet binary. Po zakończeniu kompilacji w pasku przeglądarki wpisujemy adres IP modułu uzupełniony o numer portu 83 i rozkaz update np. tak: http://192.168.0.129:83/update. Gdy zgłosi się strona Elegant OTA należy wybrać opcję Firmware i wskazać lokalizację wygenerowanego podczas kompilacji pliku binarnego (jeżeli korzystamy ze szkicu Arduino o nazwie esp32-cam-pan-tilt.ino, plik będzie się nazywał esp32-cam-pan-tilt.ino.esp32.bin). Gdy wyświetli się informacja o sukcesie zdalnego zapisu należy nacisnąć przycisk Back i w pasku przeglądarki wpisać IP modułu bez numeru portu.
Moduł ESP32-CAM wraz z ramieniem zależnie od trybu pracy mogą pobierać różny, czasem znacząco wyższy prąd. Poniżej wartość pomiarów
dla różnych sytuacji przy zasilaniu napięciem +5V:
-serwa w trybie oczekiwania: 6 mA
-1 serwo stabilne 2 pracuje: 12 mA
-moduł transmituje strumień obrazów: ok. 180 mA
-wstrzymana transmisja obrazu: 170 mA
-transmisja obrazu, lampa LED włączona na max.: 330 mA
Z pomiarów wynika, że zewnętrzny zasilacz powinien dostarczać stabilnego napięcia zasilania +5V przy wydajności co najmniej 500 mA.