Elektronik_Header_3Lüftersteuerung mit ESP-01

 

WordClock mit ESP-01

Nachdem ich mehrere WordClocks mit Arduino und ESP-12E aufgebaut hatte, kam mir die Idee, die Pin-Knappheit des ESP-01 mittels I²C-Bus zu umgehen. Der Vorschlag dazu findet sich an verschiedenen Stellen im Netz, ich habe die Ideen von Matthew Ford umgesetzt und einen kleinen Adapter entworfen, der die Anbindung des “Ambient Light Sensor BH1750” mittels I²C-Bus an den ESP-01 realisiert.

Die Schaltung ist unspektakulär und besteht aus zwei Steckern und drei Widerständen. R1 zieht den Anschluss CH_PD des ESP-01 auf High, das ist zum Betrieb des ESP notwendig. Die beiden 330 Ω Serienwiderstände in der SDA- und SCL-Leitung sind normalerweise unnötig, es sei denn, der ESP-01 wird auch in dieser Schaltung programmiert. Dann verhindern die Widerstände schädliche Ströme zwischen Programmer und Sensor.

ESP-01 Adapter für eine WordClock         (Click auf das Bild für größere Darstellung)

Die zugehörige Platine sieht so aus (Blick von oben auf die Stecker):

ESP-01 Adapter für eine WordClock         (Click auf das Bild für größere Darstellung)

Rechts wird der BH1750 aufgesteckt, die Platine zeigt nach außen (nach Rechts), Pin 1 bleibt frei, das Sensor-Breakoutboard hat nur 5 Anschlüsse. Pin 1 führt das Datensignal für den LED-Stripe, Masse zwischen dem LED-Stripe und der Platine muss natürlich ebenfalls verbunden werden.

Hinweis
In dieser einfachen Schaltung sind keine PullUp-Widerstände für die beiden I²C-Leitungen vorgesehen, müssen aber angeschlossen werden, da das verwendete Breakoutboard des BH1750 diese nicht aufweist.

Hinweis
Die Versorgungsspannung des LED-Stripe darf nicht für den ESP bzw. für diese Erweiterungsplatine verwendet werden, die LEDs laufen mit 5 V, der ESP verträgt maximal 3,6 V. Die anderen Komponenten in dieser Schaltung sind alle kompatibel zu der 3,3 V Versorgung des ESP, es müssen also keine Pegelwandler vorgesehen werden.

Die Versorgungsspannung (Achtung, nur 3,3 V anschließen!!) wird über zwei Drähte zugeführt, die an Pins 5 und 6 auf der Unterseite des Boards angelötet werden müssen.

GPIO0 ist noch unbenutzt und kann ggf. für das Einlesen der IR-Fernbedienung genutzt werden. Auch dieser Anschluss muss, falls gewünscht, auf der Unterseite am Pin des ESP-01-Steckers angelötet werden.

Am jetzt implementierten I²C-Bus können natürlich weitere I²C-Slaves angeschlossen werden, verifiziert habe ich das mit einem parallel zum BH1750 angeschlossenen OLED -Display. Geeignet ist z.B. auch der AT42QT1070, ein Sensor-IC aus der Atmel QTOUCH-Serie für 7-Touchsensoren. Um zusätzliche Ein- und Ausgänge zu realisieren kann auch ein Remote IO Extender for I²C, der PCF8574 von Texas Instruments, eingesetzt werden. Im Netz finden sich unzählige Anwendungsbeispiele für Arduino und dieses IC. Die Anbindung an die Firmware muss dann noch umgesetzt werden, es existieren Arduino-Libraries.

Somit ist die Verwendbarkeit dieses kleinen und sehr preiswerten ESP-Derivats deutlich erweitert. Die Schaltunterlagen im EAGLE Format stelle ich zur Verfügung.

Update
Inzwischen existiert eine erwachsene Variante dieser Testschaltung mit allen notwendigen Widerständen und vernünftigen Anschlusspunkten für die externen Baugruppen. Etwas schmaler ist sie notgedrungen ebenfalls geworden.

Bleibt noch zu erwähnen, dass der ESP-01 ohne einen entsprechenden Adapter nicht programmierbar und nicht betreibbar ist. Er benötigt mindestens einen PullUp-Widerstand an Pin CH_PD, dieser ist auf dem oben beschriebenen Adapter bereits vorgesehen. Weitere Widerstände und/oder Taster werden für die Programmierung benötigt, siehe dazu auch die Beschreibung zu meinem Programmier-Adpater.


Damit die Firmware “QlockWiFive” von Manuel Bracher auf dem ESP-01 läuft müssen natürlich Anpassungen durchgeführt werden. Die umfangreichste Änderung ist die Implementierung der BH1750-Klasse in einer Weise, dass die vorhandenen Routinen zur Helligkeitsanpassung auch mit diesem Sensor anstelle des ursprünglich eingesetzten LDR funktionieren.

Bei Interesse bin ich gerne bereit, den funktionierenden Code zur Verfügung zu stellen, allerdings hoffe ich, dass Manuel diese Option in seine Sourcen einbaut. Meine Version der Firmware basiert auf der Bracci-FW vom 02.09.2018, inzwischen gibt es aktuellere Stände über seine Homepage (Stand 01/2019 noch ohne meine Erweiterung für den BH1750).


Ich habe mal auf die Schnelle einen Adapter entworfen, der alle oben beschriebenen Features unterstützt, also den ESP-01 als Gehirn der WordClock, einen BH1750 als Helligkeitssensor, einen DS3231 als RealtimeClock (falls das wirklich jemand benötigen sollte) sowie einen PortExpander PCF8574 um Tasten, Piezo-Lautsprecher oder sonstige Erweiterungen anschließen zu können.

ESP-01 Adapter WordClock V2          (Click auf das Bild für größere Darstellung)

Die Platine hat die Abmessungen 76,5 x 18,5 mm und passt damit auch in sehr schmale Rahmen einer WordClock hinein.

ESP-01 Adapter WordClock V2         (Click auf das Bild für größere Darstellung)

Die beiden roten Leitungen sind als Drahtbrücke auf der Oberseite vorgesehen, damit kann die Platine einseitig gefertigt werden.

Wie oben bereits erwähnt, dürfte der PortExpander für das Einlesen von IR-Signalen zu langsam sein, dafür muss dann ggf. der einzig verbliebene GPIO0 des ESP-01 herangezogen werden. Der Lötanschluss dieses Signals muss dann leider direkt am Pin des Steckers erfolgen, ich habe keinen Platz gefunden um diesen Anschluss auf einen Steckkontakt zu legen (ohne die Platine dafür verbreitern zu müssen).

Wird der IO-Expander nicht benötigt, kann die Platine rechts vom Stecker für den DS3231 abgesägt werden. Wird die RTC bestückt, sitzt das Breakout Board der RTC über dem PCF8574.

Randnotiz: Der IO-Expander hat drei Adresseingänge, prinzipiell können also über den I²C-Bus bis zu acht solcher Expander angeschlossen werden, mithin also 64 IOs.

Als RTC-Modul ist diese Variante vorgesehen:

DS3231 Mini RTC-Modul

Die Ausgänge des PCF8574 sind OpenCollector-Ausgänge, benötigen also für die Erzeugung eines High-Signals einen PullUp-Widerstand. Ich habe an allen IOs diesen PullUp als SMD Bauteil der Größe 0603 vorgesehen, wird ein IO als Eingang verwendet, muss der PullUp weggelassen werden. Um die Platine nicht verbreitern zu müssen, musste der achte IO auf einen einzelnen Pin wandern.

Alle SMD-Bauteile (Widerstände und PCF8574) sind auf der Unterseite der Platine platziert. Der PCF8574 muss das schmale SO16-Gehäuse haben.


Hinweis
Ich habe dieses Board nicht aufgebaut und getestet, nur das Design entworfen. Falls jemand den unbändigen Wunsch verspürt, seine WordClock mit einen ESP-01 aufbauen oder von einer Arduino-Version umrüsten zu müssen und dafür die hier vorgestellte Lösung verwendet, bitte ich um Rückmeldung, ob die Platine wie vorgesehen funktioniert. Die Schaltunterlagen im EAGLE Format stelle ich gerne zur Verfügung.

Vielen Dank!


Nachtrag
Inzwischen gibt es eine auf das Wesentliche reduzierte Version dieser Platine. Sie ist in der 19er Wort-Uhr zum Einsatz gekommen.

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000