Buchempfehlung:
Roboter-Autos mit dem Raspberry Pi

Roboter Autos mit dem Raspberry Pi - 2019

Nach dem jetzt das live Video Bild der Kamera über das Netzwerk übertragen wird geht es in diesem Artikel darum den I2C Bus zu aktivieren. Der I2C Bus wird benötigt um im Roboter Auto z. B. ein OLED Display verwenden zu können und um natürlich den Servo Kontroller ansteuern zu können. Nur so wird es möglich sein die Motoren des Roboter Autos auch steuern zu können um das Auto z. B. durch die Wohnung zu lenken zu können.

Viele Pins sind nicht mehr frei am ESP32-CAM. Aber die gute Nachricht ist, dass es möglich ist den I2C Bus auf die beiden RX und TX Pins zu legen die nur für das Programmieren des ESP32-CAM benötigt werden. Wenn der ESP32-CAM nicht programmiert wird können die beiden Pins für den I2C Bus genutzt werden. So ist es möglich den I2C Bus zu nutzen und eine Vielzahl an verschiedenen Sensoren, Treibern und Kontrollern anzusteuern.

Die noch freien Pins des ESP32-CAM wären die folgenden. In der Tabelle habe ich kenntlich gemacht welche Pins ich schon erfolgreich genutzt habe.

Pin am ESP32-CAM getestet
GPIO1 (TX) ja
GPIO3 (RX) ja
GPIO16 nein

Das folgende Bild zeigt auf welchen Pins die Anschlüsse für den I2C Bus am ESP32-CAM zu finden sind.

ESP32-CAM I2C connection

ESP32-CAM I2C connection

OLED Display via I2C Bus ansteuern

Für die Nutzung des I2C Bus werden wir jetzt den Pin 1 und den Pin 3 nutzen. Das bedeutet für den Fall das der EXP32-CAM programmiert wird die Kabel wieder so gesteckt werden müssen das der USB-Servial Adapter wieder angeschlossen ist und nicht das SSD1306 OLED Display.

Als erstes Gerät werden wir ein SSD1306 OLED Displa anschließen und können damit auch gleich testen ob der I2C Bus funktioniert. Damit das SSD1306 OLED Display angesteuert werden kann muss noch die entsprechende Bibliothek für das OLED Display installiert werden. Sucht bitte nach der Bibliothek mit dem folgenden Stichwort “ESP32 OLED” und installiert diese auf eurem PC in der Arduino Entwicklungsumgebung. Nach der Installation dieser Bibliothek kann das OLED Display SSD1306 verwendet werden.

ESP8266 NodeMCU OLED Display SSD1306 ESP8266_NodeMCU_OLED_Display_SSD1306 software

ESP32-CAM OLED Display SSD1306

Das Display wird die folgt nach dem das Programm auf das ESP32-CAM Modul geschrieben wurde angeschlossen.

Pins ESP32-CAM SSD1306 OLED Display
3,3V 3,3V
GND GND
GPIO1 SDA
GPIO3 SCL

Da es in der SSD1306Wire Bibliothek möglich ist die Pins anzugeben die als SDC und SDA des I2C Bus genutzt werden sollen ist es also möglich ein SSD1306 OLED Display anzuschließen. Ich habe mir dazu zwei Variablen wie folgt definiert.

#define I2C_SDA 1
#define I2C_SCL 3

Der Aufruf der SSD1306Wire Bibliothek sieht dann im Programm wie folgt aus.

#include "SSD1306Wire.h"
// Initialize the OLED display using Wire library
SSD1306Wire display(0x3c, I2C_SDA, I2C_SCL);

Jetzt ist soweit alles vorbereitet das nach dem Programmieren des ESP32-CAM auch das OLED Display etwas anzeigt. Die Ausgabe zeigt die IP Adresse des ESP32-CAM.

Nachfolgend nun das Beispielprogramm das ich verwendet habe für einen ersten Test ob auch wirklich das OLED Display über den I2C Bus angesteuert werden kann.

Download: CameraWebServer

Auf dem folgenden Bild ist das fertig verkabelte Roboter Auto zu sehen mit angeschlossenen OLED Display.

ESP32-CAM OLED display

ESP32-CAM OLED display

Zusammenfassung

Wenn alles geklappt hat dann sollte ab jetzt das OLED Display die aktuelle IP Adresse des ESP32-CAM Moduls anzeigen. Wenn das soweit geklappt hat dann haben wir jetzt die Sicherheit das der I2C Bus funktioniert und das als nächstes der Servo Kontroller als Gerät angeschlossen werden kann. Aber ab jetzt können natürlich auch beliebige andere Geräte an den I2C Bus angeschlossen werden. Wie das genau mit der Wire.h Bibliothek funktioniert wird im nächsten Beitrag am Beispiel des PCA9685 Servo Kontroller erklärt.

(Visited 12 times, 3 visits today)