Elektronik_Header_3LŘftersteuerung mit ESP-01

 

Vierfach Temperaturanzeige

Um eine in die Tage gekommene Anzeige f├╝r vier Temperaturen mit Minimum- und Maximumspeicher zu ersetzen, deren LCD Anzeigemodule nicht mehr ablesbar sind, habe ich eine Modernisierung ins Auge gefasst. Die Verwendung der vorhandenen PT100 Temperaturaufnehmer erschien mir zu aufw├Ąndig, nach einschl├Ągigen Hinweisen w├Ąren daf├╝r Messverst├Ąrker o.├ä. notwendig gewesen.

Ein Arduino als Hirn, dazu ein OLED Display und vier moderne Temperatursensoren mit OneWire Anschluss des Typs DS18b20 kommen da schon eher in Frage. Allerdings w├╝nscht sich der Besitzer des Originals die gewohnten vier Anzeigen und die Minima/Maxima sollten getrennt f├╝r jede Anzeige l├Âschbar sein.

Ok, die vier Displays sind eine Herausforderung, denn die normalerweise k├Ąuflich zu erwerbenden OLED Anzeigemodule haben alle dieselbe I┬▓C Adresse 0x3C.

Es kursieren Anleitungen im Netz, die den Umbau solch einer Anzeige auf eine alternative Adresse beschreiben, aber der Umbau gestaltet sich kompliziert und knifflig, den potentiellen Verlust der Anzeige inbegriffen. Zudem h├Ątte ich dann immer noch zwei Anzeigen zu wenig, weshalb ich auf diesen Ansatz verzichtet habe und lieber auf die OLED Library U8g2 von Oli Kraus ausgewichen bin, die unkompliziert erlaubt, beliebige Pins des Arduino als Software I┬▓C Bus zu verwenden. Der Arduino steuert also die vier OLEDs ├╝ber jeweils einen eigenen I┬▓C Bus an. Das hat Performanceeinbu├čen zur Folge, aber gemeinhin ├Ąndern sich Temperaturen eher langsam, die geringe Geschwindigkeit gegen├╝ber dem Hardware I┬▓C Bus sollte also kein Hindernis darstellen.

Da der Arduino Pins im ├ťberfluss hat, habe ich zus├Ątzlich jedem Temperatursensor einen eigenen Pin f├╝r die Daten spendiert. Im Prinzip k├Ânnten diese Sensoren alle ├╝ber einen einzigen OneWire Bus betrieben werden.

Nur bei der Bedienung habe ich geknausert und lediglich einen einzelnen Taster in Form eines TTP223 Sensors vorgesehen, der ├╝ber die Library “PinChangeInterrupt.h” von Nico Hood angebunden ist. Eine ausgebuffte Men├╝f├╝hrung ist dann nat├╝rlich Ehrensache, die Telefonhotline soll ja nicht allzuoft in Anspruch genommen werden m├╝ssen :-)


Soweit geplant wurde die Schaltung und das Layout in EAGLE erstellt um die Abmessungen f├╝r das notwendigen Geh├Ąuse ermitteln zu k├Ânnen. Da ich die Freeware Version von EAGLE verwende, darf die Platine nicht breiter als 100 mm sein, grenzwertig bei einer Breite von 25 mm je OLED Anzeige. Das hat aber gerade so noch hingehauen, die Pins der OLEDs sitzen innerhalb dieses Rahmens, die Platine selbst ist etwas gr├Â├čer.

Die Schaltung ist recht unspektakul├Ąr, ein Arduino, vier Displays, vier Temperatursensoren und ein Touchsensor. Die Datenleitungen der vier Temperatursensoren habe ich mit jeweils einem PullUp Widerstand versehen, die internen PullUps des Arduino h├Ątten aber wahrscheinlich ebenfalls ausgereicht.

Temperaturanzeige 4-fach          (Click auf das Bild f├╝r gr├Â├čere Darstellung)

Das Board dazu ist einseitig entflochten, es m├╝ssen sechs Drahtbr├╝cken anstelle der blauen Leiterbahnen eingesetzt werden.

Temperaturanzeige 4-fach          (Click auf das Bild f├╝r gr├Â├čere Darstellung)

Das Ergebnis in Natura, hier noch mit Dummywerten in der Anzeige:

Temperaturanzeige mit Dummywerten

Die Temperatursensoren werden ├╝ber die links unterhalb des ersten OLED sichtbaren Steckkontakte angeschlossen und nach unten aus dem Geh├Ąuse gef├╝hrt.

Die mir zur Verf├╝gung stehenden Stecksockel bzw. DIP Streifen sind eigentlich viel zu hoch, ich muss unbedingt mal nach einer flacher bauenden Alternative suchen. Damit die OLEDs sicher an die Unterseite des Geh├Ąusesdeckels angedr├╝ckt werden, lege ich einen Streifen Depron in passender Dicke unter die Displays.

Abstand...

Die Stromversorgung wird auch im harten Dauereinsatz mittels USB Netzteil erfolgen, das hat sich bei den Wortuhren bew├Ąhrt. Im hier gegebenen Fall ist allerdings ein abgewinkelter USB Stecker notwendig, da das Geh├Ąuse sonst unn├Âtig gro├č h├Ątte werden m├╝ssen. Die USB-Leitung wird nach links aus dem Geh├Ąuse heraus gef├╝hrt.

Stromversorgung


Mit den jetzt gegebenen Ma├čen der Platine wird das Geh├Ąuse in Designspark mechanical entworfen.

Geh├Ąuseoberteil

Geh├Ąuseunterteil

Geh├Ąuse exploded

Nach ca. neun Stunden hat der kleine Ender-2 seinen Job erledigt.

Geh├Ąuse

Die beiden Teile passen sauber ineinander, lediglich die Ausschnitte f├╝r die Displays mussten etwas nachgearbeitet werden, damit auch die untersten Zeilen komplett sichtbar sind. Die vier Eckpfosten fixieren zusammen mit zwei Kanten im Oberteil des Geh├Ąuses die Platine im passenden Abstand zur Geh├Ąuseoberseite.

Das Geh├Ąuse hat rechts eine f├╝hlbare Markierung der Stelle an der der Touchsensor im Innern liegt.


Und jetzt die Hauptsache des ganzen Projekts, die Firmware f├╝r den Arduino. Wichtige Hinweise zu Voraussetzungen und der Bedienung sind im Sourcecode zu finden.

Zur gef├Ąlligen Kenntnisnahme hier die wesentlichen Bedienschritte:

Die Bedienung erfolgt ├╝ber einen einzelnen Sensor des Typs TTP223, der an der rechten Geh├Ąuseseite angebracht ist.

(1) Um die Displays vor fr├╝hem wear out zu sch├╝tzen (aktive Pixel von OLEDs werden ├╝ber die Zeit dunkler), werden sie - die Displays - nach einer Minute abgeschaltet.

Beim ersten Tastendruck werden alle Displays wieder eingeschaltet um die Temperaturen abzulesen.
Jede Anzeige zeigt jetzt den Namen des Sensors sowie die aktuelle Temperatur in gro├čer Schrift, darunter in kleiner Schrift das jeweilige Minimum und Maximum seit dem letzten R├╝cksetzen (oder Spannungsausfall).

Ohne weitere Interaktion geht die Anzeige aus jedem Zustand nach der vorgesehenen Zeit wieder AUS (1).

(2) Wird innerhalb der aktiven Zeit die Taste ein weiteres Mal KURZ gedr├╝ckt, wird die erste Anzeige invers, die anderen drei Anzeigen normal eingestellt. Die jeweils INVERSE Anzeige ist die AKTIVE Anzeige.
Bei jedem weiteren KURZEN Tastendruck wandert die AKTIVE Anzeige eins weiter, immer reihum.
Wird die Taste l├Ąnger als 1,5 Sekunden festgehalten (LANGER Druck) wenn eine der Anzeigen im AKTIVEN Modus ist, wird diese AKTIVE Anzeige in den L├ľSCHMODUS geschaltet.
Im L├ľSCHMODUS wird abgefragt, ob wirklich Min und Max dieser Anzeige gel├Âscht werden soll.
Mit KURZEM Druck wird Nein/Ja umgeschaltet, immer wechselnd, mit LANGEM Druck die momentane Selektion ausgew├Ąhlt.
Ist momentan "Nein" aktiv, wird der L├Âschvorgang abgebrochen, die komplette Anzeige geht wieder in den Status (2), jetzt kann mit KURZEM Druck wieder die aktive Anzeige ausgew├Ąhlt werden.
Ist momentan "Ja" aktiv, werden mit einem LANGEN Druck Min und Max dieser AKTIVEN Anzeige auf die momentane Temperatur gesetzt. Anschlie├čend geht es bei (2) weiter.

Wird die Taste l├Ąnger als 5 Sekunden gedr├╝ckt, wird die VersionInfo (Version und Build Datum) ausgegeben.

nota bene

  • KURZ bedeutet k├╝rzer als 300 Millisekunden (kurz antippen)
  • LANG bedeutet l├Ąnger als 1,5 Sekunden (im Geiste bis 3 Z├Ąhlen)

 


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