FireBeetle 2 ESP32-C6 als günstiger Sensor für die ESP32 Wetterstation
Der Nachbau der ESP32 Wetterstation ist im Grunde recht einfach. Die Beschaffung der Sensorplatinen gestaltet sich jedoch etwas schwieriger, da diese erst bei einem Hersteller wie JLCPCB bestellt werden müssen. Es ist jedoch nicht garantiert, dass immer alle Bauteile verfügbar sind und vor allem sind Bestellungen in kleinen Stückzahlen recht kostspielig. Meine zehn Platinen haben mit Versand etwa 200 Euro gekostet, dazu kommen dann noch die Kosten für den Zoll.
Vor Kurzem bin ich jedoch auf das FireBeetle 2 ESP32-C6 Board von DFROBOT gestoßen, das sehr interessant klingt. DFROBOT hat mir freundlicherweise einige Boards zur Verfügung gestellt, um eine kostengünstigere und einfacher nachzubauende Version des Sensors zu entwickeln.
Der ESP32-C6
Der ESP32-C6 kombiniert erstmals in der ESP32-Familie den schnellen und effizienten Wi-Fi 6-Standard mit der offenen RISC-V-Prozessorarchitektur, die bereits in den Modellen ESP32-C2, ESP32-C3 und ESP32-H2 zum Einsatz kommt. Der Wechsel von der proprietären Xtensa-Architektur zu RISC-V in den neueren ESP32-Modellen bietet eine Reihe von Vorteile:
- Offenheit und Flexibilität: RISC-V ist eine offene Befehlssatzarchitektur, die von einer breiten Gemeinschaft entwickelt und unterstützt wird. Dies ermöglicht eine größere Flexibilität und Anpassungsfähigkeit im Vergleich zu proprietären Architekturen wie Xtensa.
- Kosteneffizienz: Da keine Lizenzgebühren anfallen, können RISC-V-basierte Prozessoren kostengünstiger hergestellt werden.
- Zukunftssicherheit: Die wachsende Popularität von RISC-V und die breite Unterstützung durch die Industrie stellen sicher, dass diese Architektur auch in Zukunft eine wichtige Rolle spielen wird.
Die wichtigsten Merkmale des ESP32-C6
Der ESP32-C6 bietet eine Reihe von Funktionen, die ihn zu einer attraktiven Wahl für eine Vielzahl von IoT-Anwendungen machen:
- Zwei RISC-V Kerne: Ein leistungsstarker Kern mit bis zu 160 MHz Taktfrequenz für anspruchsvolle Aufgaben und ein stromsparender Kern mit bis zu 20 MHz Taktfrequenz für den Betrieb im Hintergrund.
- Speicher: Der Chip verfügt über 320 KB ROM, 512 KB SRAM und unterstützt externen Flash-Speicher.
- Wi-Fi 6 (802.11ax): Ermöglicht schnellere Datenübertragungsraten, höhere Kapazität und bessere Leistung in Umgebungen mit vielen Geräten.
- Bluetooth 5 (LE): Unterstützt Bluetooth Low Energy für energieeffiziente Verbindungen mit Smartphones, Wearables und anderen Geräten.
- 802.15.4-Protokoll: Ermöglicht die Integration in Mesh-Netzwerke wie Zigbee und Thread, die insbesondere für Smart Home-Anwendungen relevant sind. Die Unterstützung von Thread ist dabei von besonderer Bedeutung, da es das primäre Netzwerkprotokoll für den neuen Smart Home-Standard Matter darstellt.
- Umfangreiche Peripherie: Der ESP32-C6 bietet eine Vielzahl von Schnittstellen, darunter SPI, UART, I2C, I2S, RMT, TWAI, PWM, SDIO und Motor Control PWM.
- ADC und Temperatursensor: Ein integrierter 12-Bit-ADC und ein Temperatursensor erweitern die Einsatzmöglichkeiten des ESP32-C6.
Das folgende Diagramm zeigt einen Überblick des ESP32-C6:
Der ESP32-C6 bietet ein flexibles Energiemanagement durch Anpassung von Taktfrequenz, Wi-Fi-Modi und Leistungsaufnahme interner Komponenten. Zur Vereinfachung stehen vordefinierte Modi zur Verfügung, die verschiedene Kombinationen von Komponenten mit Strom versorgen:
- Aktiver Modus: Alle Komponenten sind aktiv, um Datenverarbeitung, Senden und Empfangen von Daten zu ermöglichen.
- Modem-Sleep-Modus: Die Haupt-CPU bleibt aktiv, kann aber mit reduzierter Taktfrequenz arbeiten. Die Funkverbindungen können durch periodisches Ein- und Ausschalten der HF-Schaltungen aufrechterhalten werden.
- Light-Sleep-Modus: Die Haupt-CPU wird angehalten, kann aber optional mit Strom versorgt werden. Low-Power-Komponenten und die Low-Power-CPU können periodisch aktiviert werden. Der Chip kann durch verschiedene Mechanismen aufgeweckt werden, während Funkverbindungen aktiv bleiben können.
- Deep-Sleep-Modus: Nur das Low-Power-System bleibt aktiv. Die Daten der Funkverbindungen werden im Low-Power-Speicher abgelegt, um eine schnelle Wiederherstellung beim Aufwachen zu ermöglichen. In diesem Modus beträgt die Stromverbrauch lediglich 7 µA.
Diese flexible Steuerung der Leistungsaufnahme ermöglicht es, den ESP32-C6 optimal an die jeweiligen Anforderungen anzupassen, wodurch er sich besonders gut für den Einsatz in batteriebetriebenen Geräten eignet.
Das FireBeetle 2 ESP32 C6 Board
Es gibt inzwischen schon viele Entwicklungsboards mit dem ESP32-C6 am Markt. Das Board von DFROBOT hat jedoch einige Eigenschaften, die es ideal für den Einsatz als Sensor für die Wetterstation machen:
- Geringer Stromverbrauch mit 16 uA im Deep-Sleep-Modus.
- Stromversorgung über USB-C oder Lithium-Ionen-Akku
- Eingebauter Laderegler zum Laden des Akkus über Solarzellen
- Spannungsteiler zur Überwachung der Batteriespannung
Das Board bietet auch eine GDI-Schnittstelle für die einfache Verbindung zu Displays, was ich im Moment aber noch nicht verwende. Aber es wäre sicher interessant, auch am Sensor selbst eine kleine Anzeige für die aktuellen Messwerte des Sensors zu haben.
Alle technischen Details sind in einem Wiki beschrieben und es gibt auch einige Arduino und MicroPython Tutorials.
Dadurch dass das DFROBOT Board bereits viele Komponenten integriert, fehlen nur noch der der DIP Schalter zur Einstellung der Sensor-Nummer und der BME280 zur Erfassung von Temperatur, Luftfeuchtigkeit und Luftdruck. Dazu habe mir einen Prototyp mit einer Lochrasterplatine zusammengelötet, die einfach auf das Board gesteckt werden kann:
Die Platine wird zwar keinen Schönheitspreis gewinnen, aber sie funktioniert. Da sich inzwischen immer mehr Menschen in meinem Umfeld so eine Wetterstation wünschen, wäre es wohl vernünftig, auch eine passende Platine zu entwerfen. Ich werde den Artikel aktualisieren, falls es soweit ist.
Natürlich habe ich auch den Stromverbrauch des Firebeetle Boards mit dem Power Profiler-Kit II vermessen. Hier sind die Ergebnisse. Zunächst der Verbrauch im Deep-Sleep-Modus:
Der Wert von 18.13 µA ist nur knapp über der Angabe von DFROBOT, aber bei mir kommt ja auch noch der Stromverbrauch des BME280 dazu.
In der aktiven Phase sieht der Stromverbrauch folgendermaßen aus:
Beim Senden der Daten erreicht das Board hier mit 439 mA einen recht hohen Wert. Der ESP32 auf meinem selbst entworfenen Board erreicht hier nur 309 mA.
Der wirklich interessant Wert ist aber der Durchschnitt über das 10 Minuten Intervall, mit dem der Sensor arbeitet:
Der Wert von 80,81 µA ist beinahe identisch zu meinem Board, das einen Wert von 80,40 µA hat. Somit ist diese Kombination also bestens als Sensor für die Wetterstation geeignet. Auch der Preis für diese Version des Sensors ist deutlich niedriger als mein eigenes Board. Der FireBeetle 2 ESP32-C6 kostet nur knapp 5,90 Euro, dazu kommt noch der BME280, den man auf AliExpress schon für 2,60 Euro bekommt und der DIP Schalter, der etwa 16 Cent kostet. Insgesamt also unter 10 Euro. Allerdings sind hier mögliche Versandkosten nicht miteingerechnet.
Den Code für den Sensor habe an den ESP32-C6 angepasst und er ist auf GitHub verfügbar.
Bei Gelegenheit werde ich auch noch ein passendes Gehäuse entwerfen. Es müssen aber nur die Bohrungen für die Platine angepasst werden, der Rest ist identisch.