Hardwarearchitektur
ESP32 CAM und RP Pico
Da bereits viele GPIOs durch die Kamera bzw. die verbaute Blitz-LED belegt sind, stehen nur noch die folgenden GPIOs zur Verfügung.
GPIO | Funktion | genutzt für |
---|---|---|
0 | Wird beim Booten zum Wechsel in den Flash-Modus benötigt. Auf LOW ziehen, um in den Flash-Modus zu gelangen. | Flash / DIR M1 |
1 | UART TX - Wird zum Flashen und für Debugging benötigt. | Flash |
2 | Muss während des Starts LOW sein. Kann nur verwendet werden, wenn keine SD-Karte genutzt wird. | DIR M2 |
3 | UART RX - Wird zum Flashen und für Debugging benötigt. | Flash |
4 | Ist durch Blitz-LED belegt. Könnte ggf. als Eingang verwendet werden. | Blitz |
12 | Muss während des Starts auf LOW sein. Kann nur verwendet werden, wenn keine SD-Karte genutzt wird. | PWM M1 |
13 | nutzbar ohne SD-Karte | PWM M2 |
14 | nutzbar ohne SD-Karte | I2C SDA |
15 | Muss während des Starts auf HIGH sein. Kann nur verwendet werden, wenn keine SD-Karte genutzt wird. | I2C SCL |
16 | wow, einfach so nutzbar | IR Receive |
In der Tabelle ist bereits gut zu erkennen, dass die Anzahl der IOs stark eingeschränkt ist. Mit der oben genannten Konfiguration könnte der Roboter fahren und über I2C ein Display ansteuern und Abstandssensorik auslesen. Der IR Empfänger sollte direkt am uC angeschlossen sein (IR Receive), da dieser schnell abgefragt werden muss. Der IO für das Senden von IR Signalen fehlt bereits, müsste aber auch direkt am uC sein.
Mochte man weiterhin nur einen uC einsetzen, so müsste massiv von Port-Extendern für I2C gebrauch gemacht werden. Da diese relativ langsam sind, sollten „wichtige“ IOs direkt am uC angeschlossen sein.
- MCP23017 - 16 GPIOs ca. 1,20€ (nur Chip) - 4,00€ (Basisboard)
- PCA9685 - 16 PWM Ausgänge ca. 2,00€ (nur Chip) - 7,00€ (Basisboard)
Eine weitere Möglichkeit wäre einen zweiten uC als Port-Extender bzw. als Haupt-uC und den ESP32 Cam nur für die Kamera, BT und Wi-Fi Funktionalität zu verwenden. Preislich würde sich hier ein RP2040 anbieten. Diesen gibt es bei Ali-Express ab 2,65€ (auf Board). Somit könnte man auch eine relativ günstige Basisversion, ohne Fernsteuerung, realisieren.
Nachteil dieser Lösung ist, dass zwei uC programmiert bzw. die Schnittstelle zwischen diesen programmiert werden muss. Je nach SW-Architektur könnte das Hauptprogramm, welches auch durch die „Kinder“ erweitert wird, auf einem uC laufen (Master / Slave).
Übersichtsdiagramm
Selbsthaltung (in Arbeit)
- High-Side Switch - Vermeidung von Problemen mit GND (einige Verbraucher hängen an UBatt)
- P-Kanal Anreicherungstyp z.B.: https://www.vishay.com/docs/70611/70611.pdf
- ggf. zwei getrennte Schaltungen für uC und Verbraucher mit hoher Last
Siehe auch
- I2C an der ESP32 CAM - https://github.com/abish7643/ESP32Cam-I2CSensors