Beispiel für die Entwicklung eines ESP32-Cam-Projekts unter Ubuntu

Inhaltsverzeichnis

ESP32-CAM camera development board

Über ESP32-CAM

ESP32-CAM ist ein kleines Kameramodul von Ai-Thinker Co., Ltd, das mit einer Größe von 27 × 40,5 × 4,5 mm und einem minimalen Tiefschlafstrom von 6 mA als kleinstes System unabhängig arbeiten kann.

Merkmale des ESP32 CAM

  • Kamera-Schnittstelle (bis zu 24 MP)
  • Wi-Fi- und Bluetooth-Konnektivität
  • ESP32-D0WDQ6 Dual-Core-Prozessor
  • 520 KB SRAM
  • 4 MB Flash-Speicher
  • OV2640 2-MP-Kameramodul
  • Unterstützt JPEG- und BMP-Format
  • USB-Typ-C-Schnittstelle
  • LiPo-Akkuanschluss
  • 32-Bit-CPU, bis zu 240 MHz
  • Integrierter 802.11b/g/n HT40 Wi-Fi-Transceiver
  • Integriertes Dual-Mode-Bluetooth (klassisch und BLE)
  • Integrierte PCB-Antenne
  • Integrierter 8-MB-PSRAM
  • Integrierte Kamera
  • Externer Anschluss für Kamera
  • 5 x programmierbare GPIOs
  • 2 x UART, 2 x SPI, I2C, I2S, IRDA, PWM, GPIOs

ESP32 CAM Pinbelegung

ESP32 CAM Pinout
ESP32 CAM Pinout

ESP32-CAM verfügt über drei GND-Pins und zwei Pins für die Stromversorgung: 3,3 V oder 5 V.

GPIO 1 und GPIO 3 sind serielle Pins. Sie benötigen diese Pins, um Code auf Ihr Board hochzuladen. Außerdem spielt GPIO 0 eine wichtige Rolle, da es bestimmt, ob sich der ESP32 im Blinkmodus befindet oder nicht. Wenn GPIO 0 mit GND verbunden ist, befindet sich der ESP32 im Blinkmodus.

Die folgenden Pins sind intern mit dem microSD-Kartenleser verbunden:

GPIO 14: CLK
GPIO 15: CMD
GPIO 2: Daten 0
GPIO 4: Daten 1 (auch mit der integrierten LED verbunden)
GPIO 12: Daten 2
GPIO 13: Daten 3

ESP32 Cam-Projektentwicklung

Umgebungsaufbau

Hardware

  • ESP32-CAM-Modul
  • OV2640-Kamera
  • USB-zu-Seriell-Schnittstellenkarte (USB-TTL)
  • Dupont-Leitung
  • 5V 2A-Netzteil

Das ESP32-CAM-Modul wird separat mit Strom versorgt, U0TXD, U0RXD und GND werden an die Seriellschnittstellenkarte und den Computer angeschlossen, und die Kamera wird über ein Kabel mit dem Modul verbunden.

Vor der Programmierung muss der GPIO0 des ESP32-CAM-Moduls geerdet und zurückgesetzt werden. Nach Abschluss der Programmierung wird GPIO0 angehalten und zurückgesetzt, um in den Arbeitsmodus zu wechseln.

Systemumgebung

ESP32 kann auf verschiedenen Systemen entwickelt werden. Hier finden Sie eine Einführung in die Entwicklungsumgebung der Ubuntu-Desktop-Version (die Version ist Ubuntu 18.04.3).

Download-Server einrichten

Führen Sie „Software & Updates“ aus, klicken Sie auf das Dropdown-Feld „Herunterladen von“ auf der Registerkarte „Ubuntu-Software“, wählen Sie „Andere…“, suchen Sie „China“ und wählen Sie einen beliebigen Server aus, klicken Sie auf „Server auswählen“ und geben Sie dann das Passwort zur Bestätigung ein. Wenn es geschlossen ist, werden Sie aufgefordert, die Informationen zu aktualisieren. Klicken Sie auf „Neu laden“, um die Aktualisierung durchzuführen.

ESP32 Cam system environment: choose a download server
ESP32 Cam system environment: choose a download server
Software installieren
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
Abhängige Umgebung installieren
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

Projektcode und Entwicklungsumgebung

Pull-Element

Projekt und Submodule gleichzeitig ziehen:

git clone --recurse-submodules https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git

Wenn der Pull unterbrochen wird, müssen Sie das Projektverzeichnis aufrufen, um das Submodul erneut zu ziehen:

cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
Entwicklungsrahmen

Nachdem das Projekt abgerufen wurde, sehen Sie, dass sich im Projektverzeichnis ein Verzeichnis namens „esp-idf“ befindet. esp-idf (Espressif IoT Development Framework) ist das esp-Entwicklungsframework. Die Projektentwicklungsumgebung wird über esp-idf erstellt. Die idf-Version in diesem Projekt ist esp-idf-v4.0.

Legen Sie den Pfad IDF_PATH fest.

Bearbeiten Sie die Konfigurationsdatei .bashrc:

cd esp-idf/
vim ~/.bashrc


Öffnen Sie .bashrc mit dem Befehl vim, bewegen Sie den Cursor mit der Tastatur an das Ende der Datei, drücken Sie a, um die Eingabe zu bestätigen, drücken Sie am Ende die Eingabetaste, um zu einer leeren Zeile zu gelangen, und geben Sie den entsprechenden Inhalt gemäß dem folgenden Format ein, um die Variable IDF_PATH festzulegen:

# export IDF_PATH=<esp-idf absolute path>, the example is as follows
export IDF_PATH=/home/user/Desktop/esp32/Ai-Thinker-Open_ESP32-CAMERA_LAN/esp-idf


Nachdem Sie die Eingabe abgeschlossen haben, drücken Sie esc, um die Bearbeitung abzubrechen, :wq, um zu speichern und zu beenden, und führen Sie den folgenden Befehl aus, damit die Änderung sofort wirksam wird:

source ~/.bashrc


Überprüfen Sie, ob die Variable gültig ist:

echo $IDF_PATH


Wenn der angezeigte Pfad mit der Einstellung übereinstimmt, fahren Sie mit dem nächsten Schritt fort, andernfalls müssen Sie den Vorgang wiederholen.

Entwicklungswerkzeuge installieren

Führen Sie das Skript install.sh im Verzeichnis esp-idf aus:

./install.sh

Anschließend zeigt das Terminal die Download-Informationen an. Nach der Meldung „All done!“ ist die Installation abgeschlossen. Führen Sie nun das Skript export.sh aus, um die Umgebungsvariable festzulegen:

. ./export.sh

Beachten Sie, dass nach dem ersten „.“ ein Leerzeichen steht, das jedes Mal ausgeführt werden muss, wenn Sie das Terminal für die Projektentwicklung und das Debugging öffnen.

Nach der Ausführung des Skripts wird „Done!“ angezeigt, um den erfolgreichen Abschluss zu bestätigen. Anschließend kann das Projekt konfiguriert, kompiliert und heruntergeladen werden.

Konfigurieren, kompilieren und herunterladen

Projektkonfiguration

Geben Sie das Verzeichnis des Demoprojekts „Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server” ein.

cd ../examples/single_chip/camera_web_server/

Dann beginnen wir mit der Konfiguration des Projekts:

make menuconfig

Die Meldung „recipe for target 'mconf.o' failed” ist ein Abhängigkeitsproblem. Geben Sie sudo apt-get install libncurses5-dev ein, um die entsprechenden Abhängigkeiten zu installieren, und versuchen Sie es erneut.

Die Konfigurationsoberfläche sieht wie folgt aus:

ESP32 Cam Project - Espressif IoT Development Framework Configuration
ESP32 Cam Project - Espressif IoT Development Framework Configuration

Verwenden Sie die Pfeiltasten und die Eingabetaste, um den Cursor zu bewegen, rufen Sie die Schnittstelle „Serial flasher config“ auf und nehmen Sie die Einstellungen gemäß der folgenden Abbildung vor. Hier ist die serielle Schnittstelle auf „/dev/ttyUSB0“ eingestellt und muss so konfiguriert werden, dass während des Betriebs eine Verbindung zum ESP32-CAM-Modul hergestellt wird.

ESP32 Cam Project - Serial Flasher Config
ESP32 Cam Project - Serial Flasher Config

Rufen Sie die Schnittstelle „Camera Web Server“ -> „Camera Pins“ -> „Select Camera Pinout“ auf und wählen Sie „ESP32-CAM by AI-Thinker“ aus.

ESP32 Cam Project - Select Camera Pinout

Rufen Sie die Oberfläche „Camera Web Server“ -> „Wifi Settings“ auf, um den WLAN-Modus, „Wifi STA SSID“ und „Wifi STA Password“ sowie „Wifi AP SSID“ und „Wifi AP Password“ einzustellen.

(Wifi STA bedeutet Stationsmodus, ESP32-CAM verbindet sich mit dem WLAN-Netzwerk anderer Geräte; Wifi AP bedeutet AP-Modus, Computer oder Mobiltelefon verbinden sich mit dem von ESP32-CAM geöffneten WLAN-Hotspot)

Hier wird der WLAN-AP-Modus verwendet, und unter „WLAN-AP-IP-Adresse“ wird die IP-Adresse des Moduls im WLAN-AP-Modus festgelegt.

ESP32 Cam Project - WIFI Settings

Nachdem die Einstellung abgeschlossen ist, bewegen Sie den unteren Cursor mit den Pfeiltasten nach links und rechts auf „<Speichern>“ und drücken Sie die Eingabetaste, um zu speichern. Bewegen Sie sich dann zu „<Beenden>“, um die Konfiguration zu beenden.

Kompilieren und Herunterladen

Kompilieren:

make

Herunterladen:

make flash

Es ist zu beachten, dass das Modul GPIO0 vor der Programmierung geerdet und zurückgesetzt werden muss.

Beim Herunterladen von make flash wird standardmäßig der zuvor konfigurierte Port „/dev/ttyUSB0“ verwendet. Andere Ports können mit dem Parameter -p angegeben werden: make flash -p [PORT]

Wenn eine Meldung angezeigt wird, dass das Öffnen des seriellen Ports möglicherweise aufgrund eines Berechtigungsproblems fehlgeschlagen ist, können Sie alle Berechtigungen für den seriellen Port mit sudo chmod -R 777 <port> öffnen, z. B. sudo chmod -R 777 /dev/ttyUSB0. Alle Berechtigungen für den geöffneten seriellen Port werden jedoch ungültig, sobald der serielle Port getrennt wird. Außerdem kann der aktuelle Benutzer zur Dialout-Gruppe hinzugefügt werden sudo usermod -a -G dialout <Benutzername>

Empfangen von Druckinformationen über die serielle Schnittstelle:

make monitor

Es ist zu beachten, dass das Modul GPIO0 beim Betrieb zum Einschalten oder Zurücksetzen angehalten werden sollte.

Darüber hinaus können Sie auch den seriellen Port-Assistenten verwenden, um die Modul-Druckinformationen anzuzeigen.

Foto & Video aufnehmen

Nach dem Herunterladen der Demo-Firmware wird das ESP32-CAM-Modul eingeschaltet und ausgeführt. Verbinden Sie den Computer oder das Mobiltelefon mit dem Netzwerk, in dem sich das Modul befindet, und rufen Sie die Moduladresse im Browser auf.

Im Station-Modus ist die Moduladresse die IP-Adresse, die dem Modul vom WLAN-Hotspot-Gerät zugewiesen wurde; im AP-Modus ist es die Adresse, die unter „WLAN-AP-IP-Adresse“ festgelegt wurde.

Klicken Sie auf der Modul-Webseite unter der Bedienleiste auf der linken Seite auf die Schaltfläche „Get Still“, um ein Foto aufzunehmen, und auf die Schaltfläche „Start Stream“, um ein Video aufzunehmen. Nach der Aufnahme eines Fotos oder Videos wird das Bild auf der Webseite angezeigt.

Zeigen Sie die Modulbedienungsschnittstelle wie folgt auf dem Mobiltelefon an. Sie können auf „Save“ (Speichern) in der oberen rechten Ecke des Bildes klicken, um das Bild zu speichern.

ESP32-CAM module taking photogram

Abonnieren

Tragen Sie sich in unsere Abonnentenliste ein, um monatliche Blog-Updates, Technologie-News und Fallstudien zu erhalten. Wir versenden niemals Spam, und Sie können sich jederzeit wieder abmelden.

Nach oben scrollen

Instant Quote