Hardware Wlan Temperatur-/Umweltsender

Bei der Entwicklung der Platine stand im Vordergrund günstige und gängige Komponenten zu nutzen die leicht und langfristig zu beschaffen sein sollten. Bei dem Mikrocontroller habe ich mich für einen Atmel Atmega 328 mit 32kB Flash entschieden, damit ist man für evtl. Programmerweiterungen gut gerüstet. Der ESP8266 (Partnerlink) wird per RS232 angebunden. Die Kommunikation läuft über ein paar wenige AT-Befehle. Diese sind von Espressif gut dokumentiert.

Bestückte Platine

Bestückte Platine des Temperatur-/Umweltsensors

Bei der Entscheidung einen Mikrokontroller mit ext. Wlan Modul zu nehmen, habe ich die Vorteile im geringeren Stromverbrauch gesehen. Wenn nur der Mikrocontroller aktiv ist, um z.B. eine Messung durchzuführen, wird nur sehr wenig Strom verbraucht (<2mA). Wird nach der Messung entschieden das der Wert gesendet werden muss, kann nun nur für die Kommunikation das Wlan Modul aufgeweckt werden. Der gesamte Sendevorgang inkl. anmelden des Funkmoduls im Wlan Netz dauert ca. 650ms. Hätte man die Messung auch mit dem Wlan-Modul (der einen Mikrocontroller enthält) durchgeführt, wäre der Stromverbrauch deutlich höher gewesen.

Die Hardware im Überblick:

  • Mikrocontroller: Atmel Atmega 328
  • Wlan Anbindung: ESP8266 (Partnerlink)
  • Temperatur-/Feuchtesensor: DHT22 (Partnerlink)
  • Optional – Barometer: Bosch BMP180
  • Optional – Lichttstärkemessung: GY-30
  • Optional – EEPROM

Schaltplan

Als Spannungswandler kommt ein Festspannungsregler mit einer Ausgangsspannung von 3,3V zum Einsatz. Er hat einen sehr geringen Eigenverbrauch und eignet sich damit gut, da der Sensor die meiste Zeit im Sleepmodus ist und so selbst nur sehr wenig Strom verbraucht. Ich war bis dahin immer der Meinung das Festspannungsregler eher Nachteilig sind, da sie die Spannungsdifferenz zwischen Eingangs und Ausgangsspannung einfach in Wärme umwandeln. Ich habe mir einige Schaltregler angeschaut, diese hatten aber durchgängig einen relevanten Ruhestromverbrauch, so dass die Standzeit deutlich nach unten gegangen wäre.

Der Mikrocontroller hat zwei Taktquellen: Ist er aktiv, wird er über den Internen 8MHz Oscillator betrieben, der über das Kalibrierbyte auf 7,3728MHz eingestellt wird. Dies hat Vorteile für die UART (RS232) Schnittstelle zum ESP8266. Das Aufwecken aus dem Standby wird über einen an einem Zähler angebundenen 32kHz Uhrenauarz realisiert. Der Interne Oszillator wird um Strom zu sparen Aufgabenabhängig mit einem Frequenzteiler betrieben. Ein Problem des Internen Oszillators ist das er den angegebenen Takt nicht sehr genau einhält, dies ist aber für die Asynchrone RS232 Verbindung zum Wlan-Modul ESP8266 (Partnerlink) notwendig. Da mit dem Uhrenquarz eine recht konstante Taktquelle zur Verfügung steht, wird er an dieser eingestellt.

Die Anbindung der Sensoren bzw. des optinalen EEproms geschieht über TWI bzw. I2C (BMP180, GY-30, EEPROM) und OneWire (DHT22 (Partnerlink))

Es können zwei LEDs zur Statusanzeige genutzt werden, in der Finalen Version habe ich aber darauf verzichtet, weil sie dort keinen nutzen haben.

Die Spannungsmessung der Eingangsspannung wird über zwei Transistoren und einem Spannungsteiler gemacht. Hier hatte ich anfangs bedenken bezüglich der Genauigkeit, dieses scheint aber unbegründet. Bei 8 laufenden Sensoren ergeben sich nur abweichen von <0,1V. Diese sind aufgrund der Einfachheit (Standard Transistoren, einfache Widerstände mit 1% Genauigkeit) meiner Meinung nach gut zu tolerieren. Wer es genauer möchte könnte es noch per Software kalibrieren.

Der Konnektor ISP ist für den Programmieradapter vorgesehen. Darüber wird z.B., mittels STK500 oder Atmel ICE das Programm aufgespielt.

Das EEprom hat zur Zeit keine Funktion. Es war dazu gedacht Werte zu Speichern wenn kein Wlan zur Verfügung steht, so dass man den Temperaturverlauf im Rückblick sehen kann. Prinzipiell könnte der Sender also auch als Datenlogger dienen. Bei dem verbautem 256kbit EEProm würden ca. 2000 Datensätze gespeichert werden können (Temperatur, Feuchte, Lichtstärke, Druck und Zeit).

Layout

Beim Layout fällt vermutlich als erstes der etwas deplazierte GY-30 Lichtstärkesensor auf. Ich habe ihn so platziert, weil er bei den von mir verwendeten Gehäuse über ein Kabel angebunden wird. Im Grunde müsste er auf dem Layout nicht auftauchen. Ansonsten ist der Stromversorgungsstecker etwas nah am Kondensator C1. Dieser ist bei mir diskret ausgeführt, weil vergleichbare Typen in SMD verhältnismäßig teuer waren. In einer zukünftigen Version würde ich hier aber eine andere Lösung wählen, evtl. funktioniert hier auch ein etwas kleinerer Kondensator – dann in SMD.

Gehäuse

Die Platine wurde für ein Kunststoffgehäuse das man über den Elektronikversender Reichelt beziehen kann geplant. Es gibt dort zwei Gehäuseformen dies ist auch auf den Bildern zu sehen. Der Vorteil des Wandgehäuse ist das man dort die Platine mit zwei Schrauben befestigen kann. Diese Möglichkeit hat man im Tischgehäuse nicht. Problematisch ist dies nicht, da wie auch auf dem Bildern zu sehender Akkupack die Platine in Ihrer Position hält und dieser ja auch nicht ständig bewegt wird. Zu dem Temperatur-/Feuchtesensor (DHT22 (Partnerlink)) habe ich mit einem kleinen Bohrer (1,5-2mm) Lufteinlässe in das Gehäuse gebohrt damit dieser schneller anspricht.

Tischgehäuse mit innen liegender Platine und Akkupack

Tischgehäuse mit eingelegtem Akkupack

 

Wandgehäuse mit eingeschraubter Platine und Akkupack

 

 

 

 

 

 

 

 

Die Platine habe ich nach dem Löten mit einem Klarlack eingesprüht damit diese besser vor Staub und Feuchte geschützt ist. Dies ist insbesondere bei dem Einsatz des Sensors im Freien geboten. Hier würde ich auch darauf achten das die Bohrungen nach unten Zeigen und so kein Wasser in die Elektronik laufen kann.

 

Kostenaufstellung

Bauteil Firma Stück Preis
Platine 2-Lagig inkl. Lötstoplack und einseitigem Aufdruck Ätzwerk 1 8,50€
Atmel Atmega 328P-AU Alieexpress 1 1,50€
Espressif ESP8266 Alieexpress 1 1,80€
DHT22 – Temperatur und Feuchtesensor Alieexpress 1 2,20€
BMP180 Alieexpress 1 2,79€
GY-180 Alieexpress 1 1,15€
MCP1703CB Alieexpress 1 0,30€
Tisch-/Wandgehäuse ABS-Kunststoff Reichelt 1 3,55€
Batteriehalter inkl. Batterieclip Reichelt 1 0,68€
Crystal 32768Hz Reichelt 1 0,29€
Buchsenleisten (4×1, 5×1, 4×2) Reichelt 3 0,64€
ISP-Connector (3×2) Reichelt 1 0,16€
Kleinteile Reichelt 2,00€
Gesamt 25,56€

Insgesamt liegt man bei 22€-26€ je nach Ausstattung.