Arduino-Saunatimer mit Temperatur-/Luftfeuchteanzeige und Audioausgabe

0,00
Aus ELVjournal 03/2014     0 Kommentare
 Arduino-Saunatimer mit Temperatur-/Luftfeuchteanzeige und Audioausgabe

Inhalt des Fachbeitrags

PDF- / Onlineversion herunterladen

Der hier vorgestellte Beitrag aus unserem Leserwettbewerb beschreibt ein interessantes und zudem sehr nützliches Projekt: ein komplettes Sauna- Timer-und-Informationssystem, das, da es auf einem normalen Arduino-Board basiert, recht einfach nachgebaut werden kann. Das Projekt stammt von unserem Leser Jens-P. Stern aus Much, der sich auch sonst der Haustechnik, insbesondere auf Homematic Basis, mit interessanten Projekten verschrieben hat [1].

Der Arduino in der Sauna

Moderne Saunen verfügen häufig über umfangreiche Steuerungs- und Informationssysteme. Dieser Beitrag beschreibt ein Gerät zur Nachrüstung älterer bzw. traditionell ausgestatteter Saunakabinen, das den Saunagast über das Klima innerhalb der Sauna und optisch sowie akustisch über die Dauer des Saunagangs informiert. Dabei wurden folgende Funktionen realisiert:

  • Anzeige der Temperatur im Vorraum
  • Anzeige der Temperatur in der Sauna
  • Anzeige der Luftfeuchtigkeit in der Sauna
  • Anzeige der Saunagangdauer mit zusätzlicher akustischer Erinnerung alle 5 min
  • Optischer Laufindikator des Timers
  • Abschaltbare Entspannungsmusik
  • Statusinformationen
  • Automatisches Zurücksetzen des Timers

Dem Projekt liegt die Idee zugrunde, einen Saunatimer mit den oben genannten Fähigkeiten zu realisieren, der sich ohne große mechanische Eingriffe in die bestehende Sauna-Infrastruktur integrieren lässt und auf teure temperaturresistente Komponenten verzichtet. Daher besteht das Projekt aus einem außen angebrachten Steuergerät, einer abgesetzt von außen an einer Glasscheibe befestigten Anzeige und (nur) einer Lautsprecher- und Sensoreinheit innerhalb der Kabine. Bild 1 zeigt die mit Fritzing [2] erstellte Schaltung des Projekts.

Bild 1: Die Schaltung des Saunatimers
Bild 1: Die Schaltung des Saunatimers
Entsprechend erfolgt auch später der Aufbau auf Streifenleiterplatten in Form zweier Shields für den verwendeten Arduino Uno R3. Der Prototyp wurde mit einer Steckplatine realisiert und der Arduino Uno zu Testzwecken mit einem Sensor-Shield versehen (Bild 2).
Bild 2: Der Prototypen-Aufbau des Saunatimers
Bild 2: Der Prototypen-Aufbau des Saunatimers
Dieser Prototyp bot bereits die nahezu volle Funktionalität, die Lautstärke des nicht in ein Gehäuse eingebauten Lautsprechers war jedoch noch viel zu gering für die praktische Anwendung [3].

Der Arduino


Für die Umsetzung der oben genannten Funktionen werden alle 20 Pins des Arduino Uno benötigt. Für weitere Funktionen kann auf einen Arduino mit mehr verfügbaren Pins ausgewichen werden (z. B. Arduino Mega). Dabei ist jedoch zu beachten, dass das verwendete Programm möglicherweise nicht unmittelbar auf anderen Arduino-Plattformen läuft und angepasst werden muss. Tabelle 1 zeigt die von mir verwendete Pinbelegung des Arduino.

Die Sensoren

Für Arduinos stehen mehrere Sensortypen zur Verfügung. Neben den unter [4] verglichenen Typen beinhaltet auch der ELV-I2C-4DLED-Bausatz einen Sensor zur Temperaturmessung.
Bild 3: Lautsprecher und der DHT22 sind an einer vergleichsweise kühlen Stelle unter einer Liege untergebracht.
Bild 3: Lautsprecher und der DHT22 sind an einer vergleichsweise kühlen Stelle unter einer Liege untergebracht.
Da dessen Messbereich jedoch nur bis 85 °C reicht, was für die meisten Saunafreunde etwas zu kühl sein dürfte, wurde er am LED-Modul belassen und nicht weiterverwendet. Bei Bedarf können diese Daten für eine Überwachung der Temperatur im Anzeigemodul herangezogen werden. Der Temperaturmessbereich des Temperatur-/Luftfeuchtesensors DHT22 endet ebenfalls bei nur 80 °C. Dieser wird daher einzig für die Messung der Luftfeuchtigkeit an der Lautsprecher- und Sensoreinheit in der Saunakabine verwendet, die an einer vergleichsweise kühlen Stelle nicht sichtbar unterhalb einer Liege montiert ist (Bild 3).
Bild 4: Der in einem LED-Haltering untergebrachte Temperatursensor
Bild 4: Der in einem LED-Haltering untergebrachte Temperatursensor
Zur Temperaturmessung in der Saunakabine und im Vorraum dient jeweils ein günstiger 1-Wire-Sensor vom Typ DS18x20, dessen Messbereich bis 125 °C für eine Sauna ausreicht. Die Möglichkeit, diese Sensoren an einem einfachen 1-Draht-Bus zu betreiben, ist für den vorliegenden Anwendungsfall ideal. Einer der beiden DS18x20 (Saunavorraum) ist an der Seite des Steuermodulgehäuses in einer LED-Halterung aus Gummi verbaut (Bild 4).
Bild 5: Der zweite Temperatursensor ist etwas unterhalb der Decke platziert
Bild 5: Der zweite Temperatursensor ist etwas unterhalb der Decke platziert
Der zweite Sensor (Kabine) wurde, ausgehend von der Lautsprecher- und Sensoreinheit, kaum sichtbar in einer Ecke der Saunakabine, etwas unterhalb der Decke angebracht ( Bild 5). Diese Sensoren lassen sich grundsätzlich auch rein parasitär speisen, nur Masse und der Bus werden angeschlossen, der Bus aber über einen 4,7-kΩ-Pull-up-Widerstand mit +5 V verbunden. Da zwischen Steuergerät und Kabinensensor mehrere Meter Distanz und 4 Schraubverbindungen liegen, wurde die Versorgungsspannung für die Sensoren zur Sicherheit dennoch mitgeführt und mit deren Anschluss VDD verbunden.

Optische Anzeigen

Bild 6: Das verwendete Display erlaubt auch eine gut ablesbare Textdarstellung.
Bild 6: Das verwendete Display erlaubt auch eine gut ablesbare Textdarstellung.
Für Statusmeldungen am Steuergerät wird ein Grafik-LC-Display mit Hintergrundbeleuchtung und einer Auflösung von 128 x 64 Pixeln verwendet, das in 4 Zeilen hinreichend große Zeichen darstellt, um diese möglichst auch ohne Lesebrille noch einigermaßen erkennen zu können (Bild 6). Um Pins zu sparen, wird das Display im seriellen „3-Wire-Mode“ (Methode 2) betrieben. Details hierzu können im zugehörigen Wiki [5] nachgelesen werden.
Bild 7: Die Datenanzeige durch die Glasscheibe hindurch übernimmt die LED-Anzeige des ELV I2C-4DLED.
Bild 7: Die Datenanzeige durch die Glasscheibe hindurch übernimmt die LED-Anzeige des ELV I2C-4DLED.
Zur Anzeige der Saunagangdauer, der Temperatur und der Luftfeuchtigkeit in der Kabine wird die LED-Anzeige des ELV I2C-4DLED (Bild 7) genutzt, die groß und hell genug ist, um sie durch das Gehäuse und eine getönte Scheibe hindurch einwandfrei erkennen zu können.

Audioausgabe

Die Ausgabe der Audioansagen wurde mit einem ELV Mini Wave Player MWP1, einem einfachen und kostengünstigen Audio-Player, realisiert, der WAV-Dateien von einer microSD-Speicherkarte abspielt. Der Player besitzt hierzu 4 Auswahleingänge für jeweils einen Kanal. Die jeweilige WAV-Datei wird abgespielt, wenn der zugeordnete Eingang mit Masse verbunden wird. Da die Eingänge binär kodiert sind, können bis zu 15 Logikzustände abgefragt und somit über eine Diodenmatrix max. 15 verschiedene Audioausgaben realisiert werden.

Aufgrund des Limits der zur Verfügung stehenden Arduino-Pins werden im Saunatimer lediglich 7 Kanäle verwendet, deren Zuordnung in Tabelle 2 zu sehen ist. Die WAV-Dateien können z. B. aufgesprochen oder auch über einen der bekannten Text-to-Speech-Dienste [6] erstellt werden. Die Entspannungsmusik sollte ca. 4:55 min lang sein und am Ende ausgeblendet werden, da nach jeweils 5:00 min eine Zeitansage erfolgt. Nach der Zeitansage wird die Musik erneut gestartet, sofern die Musikausgabe eingeschaltet ist.
Der Player ist über die Datei 000.txt so zu konfigurieren, dass er bereits bei einem kurzen Tastendruck getriggert wird und eine „Retriggerung“ möglich ist (Mode 3):
1    3 # Trigger mode (0..3)
2    # 0:Level triggered
3    # 1:Level triggered (sustained)
4    # 2:Edge triggered
5    # 3:Edge triggered (retriggerable)

Details zur Konfiguration und der „Tasten“-Erweiterung können der dem MWP1-Bausatz beiliegenden Bauanleitung entnommen werden. Entgegen meiner ursprünglichen Befürchtung ist die Lautstärke des MWP1 mit dem 5-cm-/50-Ω-Laut-sprecher in der Zigarrenbox so hoch, dass ich überlege, noch einen Lautstärkeregler nachzurüsten. Als Lautsprecher wurde eine Variante mit Kunststoffmembran gewählt, da diese den klimatischen Bedingungen in der Sauna besser standhalten dürfte als eine Papiermembran.

Die Baugruppen des Saunatimers

Betrachten wir nun den Aufbau und die Bedienung der einzelnen Baugruppen.

Das Steuergerät

Bild 8: Das Steuergerät und die darin unterzubringenden Komponenten
Bild 8: Das Steuergerät und die darin unterzubringenden Komponenten
Im Steuergerät sind der MWP1, der Arduino Uno, ein selbst gebauter Arduino-Shield mit den Pin-Anschlüssen und dem Pull-up-Widerstand (4,7 kΩ, 5 %) für den 1-Wire-Bus sowie eine weitere Shield-Platine mit der Diodenmatrix verbaut. Aufgrund der Lochrastermaße des Arduino Uno müssen bei Realisierung mit einer einfachen Lochrasterplatine 2 getrennte Shields verwendet werden. Außerdem sollte die masseführende USB-Buchse des Arduino Uno mit einem Stück Isolierband versehen werden, damit sie nicht mit einer der darüber liegenden Dioden in Kontakt kommt. Mit einem kleinen Anschlusspanel und dem Vorraum-Temperatursensor DS18x20 an der Seite ist das Steuergerätegehäuse komplett (Bild 8).
Bild 9: Im Deckel des Steuergeräts sind das LC-Display und der Platinenteil des ELV I2C-4DLED mit den Tasten untergebracht.
Bild 9: Im Deckel des Steuergeräts sind das LC-Display und der Platinenteil des ELV I2C-4DLED mit den Tasten untergebracht.
Im Deckel des Steuergeräts befinden sich die Platinenhälfte des ELV I2C-4DLED mit den Tasten und das LC-Display. Alternativ zu der Darstellung im Schaltplan wurde die Masse für die Tasterplatine nicht mit dem Shield, sondern dem LC-Display verbunden (Bild 9). In Bild 10 ist noch einmal das betriebsfähig aufgebaute Gerät zu sehen.
Bild 10: Das betriebsfertig aufgebaute Steuergerät. Hier sieht man die als Shield gesteckten Streifenleiterplatten.
Bild 10: Das betriebsfertig aufgebaute Steuergerät. Hier sieht man die als Shield gesteckten Streifenleiterplatten.
Die Bedienung des Geräts ist sehr einfach gehalten. Nach der Spannungszufuhr bootet der Arduino und testet die Anzeige. Danach wird das Gerät zurückgesetzt, was auch angesagt wird, und es erscheint in der LCD-Anzeige „Das System ist betriebsbereit“. Die obere Taste startet den Saunagang. Nach dem Start läuft die Stoppuhr, und per Voreinstellung wird Entspannungsmusik abgespielt. Mit der unteren Taste kann die Entspannungsmusik ein- und ausgeschaltet werden („toggle“). Die Einstellung bleibt auch für den Start des nächsten Saunagangs erhalten. Beim Abschalten der Musik wird zur Bestätigung der Kanal 4 „Der Saunatimer wurde zurückgesetzt“ abgespielt. Aufgrund der begrenzten Pin-Verfügbarkeit am Arduino Uno wurde hier auf eine spezielle Ansage verzichtet. Beim Einschalten wird unmittelbar der Kanal 1 „Entspannungsmusik“ getriggert. Mit der zweiten Taste von oben wird der Saunagang angehalten. Er wird bei erneutem Drücken der oberen Taste dann mit dem gleichen Zählerstand fortgesetzt. Die dritte Taste von oben setzt den Timer zurück. Nach Ablauf von 20 min wird er automatisch zurückgesetzt.

Das Anzeigemodul

Bild 11: Das in einem transparenten Gehäuse untergebrachte Anzeigemodul
Bild 11: Das in einem transparenten Gehäuse untergebrachte Anzeigemodul
Im transparenten Anzeigemodul ist die zweite Platinenhälfte (LED-Anzeige) des ELV I2C-4DLED eingebaut (Bild 11).

Die Lautsprecher- und Sensoreinheit

Diese Einheit enthält ein Anschlusspanel, den Lautsprecher für die Audioausgabe, den Temperatur-/Luftfeuchtesensor DHT22 und etwas abgesetzt einen 1-Wire-Temperatursensor DS18x20 zur Messung der Temperatur in der Kabine (Bild 12).
Bild 12: Die in einer Zigarrenkiste untergebrachte Lautsprecher- und Sensoreinheit
Bild 12: Die in einer Zigarrenkiste untergebrachte Lautsprecher- und Sensoreinheit

Spannungsversorgung

Die Spannung für den Betrieb des ELV I2C-4DLED, des ELV MWP1 und der Sensoren wird am +5-V-Pin des Arduino abgegriffen. Daher erfolgt die Spannungsversorgung der gesamten Schaltung über das an den Arduino angeschlossene Steckernetzteil, das nicht zu leistungsschwach gewählt werden sollte. Die maximale Leistungsaufnahme meiner Schaltung liegt bei 3,7 W. Mit einem 12-V-/1000-mA-Netzteil hat man noch gute Reserven.

Software


Bei der Programmierung des Saunatimers wurde auf einige verbreitete Bibliotheken und Programmschnipsel zurückgegriffen, so wurde z. B. die Stoppuhr-Funktionalität aus der Demo-Software des ELV I2C-4DLED [7] entnommen. In Tabelle 3 sind die verwendeten Libraries aufgeführt, zum Einsatz kam die Arduino-IDE der Version 1.0.5. Der Arduino-Sketch für den Saunatimer wird hier aus Platzgründen nicht abgebildet, er steht im Online-Bereich des ELVjournals und unter [1] zum Download bereit.

Bugs und Entwicklungspotenzial

Bei Einschalten des Geräts kommt zunächst die Ansage von Kanal 6 „Es sind 10 min vergangen“, da dieser an Pin 13 angeschlossen ist, mit dem auch die interne LED verbunden ist. Anscheinend wird der Pin 13 ganz am Anfang des Initialisierungsvorgangs auf „low“ gesetzt und triggert damit den angeschlossenen Kanal des MWP1. Die Temperaturanzeige zeigt manchmal ganz kurz einen negativen Temperaturwert (-12 °C) an. Dies kommt vor, wenn der Arduino vom jeweiligen 1-Wire-Sensor – warum auch immer – keine Daten empfangen kann – ein nicht ganz unbekanntes Phänomen. Bei Betätigen der Reset-Taste, während die Stoppuhr noch läuft, geht der Timer zuweilen in den Stopp-Modus. Zum Reset ist die Reset-Taste länger gedrückt zu halten oder 2-mal zu drücken.

Anzeige der Uhrzeit

Aus mehreren Gründen wurde dies hier nicht realisert. Der Timer wird zusammen mit der Saunabeleuchtung ein- und ausgeschaltet und ist daher meist vom Netz getrennt. Hier müsste entweder die Uhrzeit immer manuell eingestellt, gepuffert oder über entsprechend aufwendige technische Lösungen (DCF77-Modul, Netzwerk-Shield etc.) in das System eingebracht werden. Darüber hinaus widerspricht eine Uhr innerhalb der Saunakabine auch ein wenig dem Entspannungsgedanken und ist für mich durchaus entbehrlich.

Ansage, wenn eine bestimmte Sauna-Innentemperatur erreicht ist

Dies ließe sich bei Bedarf recht einfach realisieren. Mit dem Arduino Uno müsste dann allerdings auf eine andere Ansage verzichtet werden.

Integration in Homematic

Mithilfe des Projekts „Interface für 1wire, Analog- und Digitalsignale mit Arduino“ [8] sollte es über die USB-Schnittstelle und den CUxD problemlos möglich sein, die Daten des Timers in die Homematic Zentrale zu bekommen und dort weiterzuverwenden. Leider ist bei mir der Weg von der Sauna zur CCU2 etwas zu weit.

Weitere Infos:

[1] http://hausautomation.stern-av.de/
[2] http://fritzing.org
[3] Download Flash-Video Saunatimer: www.elv.de/l/?l=ay
[4] Vergleich Temperatur- und Feuchtigkeitsfühler : www.elv.de/l/?l=az
[5] Zum Wiki: www.dfrobot.com/wiki Suchwort „3-wire Serial LCD Module“
[6] Programm zur Sprachausgabe „Vocalizer“: www.elv.de/l/?l=b0
[7] Demo-Software: Webcode #1297 unter www.elv.de
[8] Homematic Forum „Interface für 1wire, Analog- und Digitalsignale mit Arduino“
     www.elv.de/l/?l=av
[9] www.dfrobot.com, Suchwort „3-wire Serial LCD Module“
[10] https://github.com, Suchwort „DHT-sensor-library“
[11] www.hacktronics.com/ Navigationspunkt: Tutorial „Arduino 1-Wire Tutorial“

Fachbeitrag als PDF-Download herunterladen

Inhalt

Sie erhalten den Artikel in 1 Version:

pdf  als PDF (6 Seiten)

Sie erhalten folgende Artikel:
  • Arduino-Saunatimer mit Temperatur-/Luftfeuchteanzeige und Audioausgabe
ProdukteForen
Rabatt
FRANZIS Arduino Uno-Platine R3

FRANZIS Arduino Uno-Platine R3


statt EUR 29,95**
EUR 27,95*
sofort versandfertig Lieferzeit:1-2 Werktage2
I2C-4-Digit LED Display I2C-4DLED, Komplettbausatz ohne Frontplatte

I2C-4-Digit LED Display I2C-4DLED, Komplettbausatz ohne Frontplatte


EUR 16,95*
sofort versandfertig Lieferzeit:1-2 Werktage2
Mini Wave Player MWP1, Komplettbausatz

Mini Wave Player MWP1, Komplettbausatz


EUR 14,95*
sofort versandfertig Lieferzeit:1-2 Werktage2
Rabatt
Intenso Speicherkarte microSDHC, Class 4, 21 MB/s, 4 GB

Intenso Speicherkarte microSDHC, Class 4, 21 MB/s, 4 GB


statt EUR 5,95**
EUR 4,50*
sofort versandfertig Lieferzeit:1-2 Werktage2
Metallfilmwiderstand 4,7 Kohm 1% (VP 10 Stk.)

Metallfilmwiderstand 4,7 Kohm 1% (VP 10 Stk.)


EUR 0,47*
sofort versandfertig Lieferzeit:1-2 Werktage2
Diode 1N4148

Diode 1N4148


EUR 0,04*
sofort versandfertig Lieferzeit:1-2 Werktage2
Universalgehäuse Midi schwarz, 158x55x96 mm

Universalgehäuse Midi schwarz, 158x55x96 mm


EUR 3,95*
sofort versandfertig Lieferzeit:1-2 Werktage2
Laborkarte, Streifenraster

Laborkarte, Streifenraster


EUR 3,95*
sofort versandfertig Lieferzeit:1-2 Werktage2
Universal-Netzteil Eco-Friendly 3-12 V / 1 A

Universal-Netzteil Eco-Friendly 3-12 V / 1 A


EUR 8,95*
sofort versandfertig Lieferzeit:1-2 Werktage2


Hinterlassen Sie einen Kommentar:
(Anmeldung erforderlich)
  Name
  E-Mail