ferdinandkeil.com

Drahtloser Temperatur- und Luftfeuchtesensor mit dem ESP8266

without comments

20150629_224111-600

Über den ESP8266 der chinesischen Firma Espressif ist ja schon an vielen Stellen berichtet worden, aber hier nochmal die Kurzfassung: für ca. 3,– € bringen die verschiedenen ESP8266-Platinen einen Mikrocontroller mit WLAN-Schnittstelle, mehrere MB Flash und diverse Schnittstellen mit. Der Mikrocontroller kann mit eigenen Programmen beschrieben werden und damit eigene Projekte an das Internet anbinden.

Ich habe vor Kurzem ein ESP12-Modul mit passender Adapterplatine geschenkt bekommen. Als ersten Versuch mit diesem neuen Modul habe ich einen drahtlosen Temperatur- und Luftfeuchtesensor gebaut. Als Sensor habe ich den günstigen DHT11 verwendet. Dazu noch ein 3,3 V Linearregler und eine Spannungsquelle – das war’s. Das Programm habe ich in Lua geschrieben und mittels dem genialen NodeMCU Projekt auf dem ESP8266 laufen lassen. Dabei habe ich auf Code von Martin Han aufgebaut.

Der Code setzt die dht_lib ein um den Sensor auszulesen. Diese liegt im Repository von NodeMCU und muss mit auf den ESP8266 hochgeladen werden. Für den Upload des Programms habe ich ein günstiges USB-zu-seriell Modul und den ESPlorer von 4refr0nt benutzt.

-- ***************************************************************************
-- Drahtloser Temperatur- und Luftfeuchtesensor
--
-- von Ferdinand Keil
-- basierend auf Code von Martin Han
--
-- Public Domain
-- ***************************************************************************
--==================================================================
-- HTML Template
--==================================================================
CSS_Sheet=[[<html>
<head>
<meta http-equiv="refresh" content="2">
<style type="text/css">
#sensor {
  font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
  width:800px;
  border-collapse:collapse;
}
#sensor td, #sensor th {
  font-size:1em;
  border:1px solid #98bf21;
  padding:3px 7px 2px 7px;
}
#sensor th {
  font-size:1.1em;
  text-align:left;
  padding-top:5px;
  padding-bottom:4px;
  background-color:#A7C942;
  color:#ffffff;
}
#sensor tr.alt td {
  color:#000000;
  background-color:#EAF2D3;
}
</style>
</head>
<body>
<table id="sensor">
<tr>
<th>Input Source</th>
<th>Temperature</th>
<th>Humidity</th>
</tr>
<tr>
<td>DHT Temp&Humi Sensor</td>
<td>]]
CSS_2=[[ deg C</td>
<td>]]
CSS_3=[[ %</td>
</tr>
</table>
</body>
</html>
]]
--==================================================================
-- Hauptprogramm
--==================================================================
pin = 4 -- Pin mit dem der DHT11 verbunden ist
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","PASSWORD") -- WLAN Zugangsdaten
wifi.sta.connect()
dht = require("dht_lib")
humi = "Fehler"
temp = "Fehler"
-- Server starten wenn Verbindung steht
tmr.alarm(0,1000,1, function()
  if wifi.sta.getip() ~= nil then
    tmr.stop(0)
    print("NodeMcu's IP Address:"..wifi.sta.getip())
    srv=net.createServer(net.TCP, 10)
    srv:listen(80,function(conn)
      conn:on("receive",function(conn,payload)
        payload = nil
        print("Got request")
        conn:send("HTTP/1.0 200 OK\r\nServer: nodemcu-httpserver\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n")
        conn:send(CSS_Sheet..temp..CSS_2..humi..CSS_3)
        conn:close()
      end)
    end)
  end
end)
-- regelmäßig den Sensor abfragen
tmr.alarm(1,1000,1, function()
  repeat
    dht.read(pin)
    tmr.wdclr()
  until dht.getHumidity() ~= nil
  temp = dht.getTemperature()/10
  humi = dht.getHumidity()/10
  print("Temperature: "..temp.." deg C, Humidity: "..humi.." %relH")
end)

Sobald sich das Modul mit dem WLAN verbunden hat können die Messwerte über einen Browser angezeigt werden. Dazu muss nur die IP-Adresse die dem Modul zugewiesen wurde aufgerufen werden. Sie Ausgabe sieht dann in etwa so aus:

browser_esp8266_dht11-600

Written by Ferdinand

Juli 1st, 2015 at 21:47

AVR Dragon mit avrdude nutzen

without comments

cmd_avrdude

Um den günstigen AVR Dragon Programmieradapter von Atmel mit dem verbreiteten, quelloffenen Tool avrdude nutzen zu können wird der libusb-win32 Treiber benötigt. Dieser lässt sich aufgrund der erforderlichen Signatur nicht ohne weiteres auf modernen Windows Systemen installieren. Abhilfe schafft hier das Tool Zadig. Einfach herunterladen, als Treiber libusb-win32 (v…) auswählen und auf Install Driver klicken. Fertig.

zadig_dialog

Written by Ferdinand

Juni 4th, 2015 at 23:34

Posted in Allgemein

Tagged with , , , , ,

Reparatur MBO DIGIMED 2/30 Blutdruckmessgerät

with one comment

mbo_digimed_lcd_defekt

Dieser Tage erreichte mich ein defektes Blutdruckmessgerät MBO DIGIMED 2/30. Das LC Display war gestört und zeigte nicht mehr alle Segmente an. Günstige Consumer Geräte setzen in der Regel maßgeschneiderte LCDs ein die dann von einem entsprechenden Treiberbaustein oder Mikrocontroller angesteuert werden. Ist der Kontakt zwischen dem Treiber und dem eigentlichen Display Glas gestört macht sich das durch fehlende Segmente bemerkbar.

Da das LCD in diesem Gerät nicht durch einen flexibel Kontaktstreifen (Zebrastrip) kontaktiert wird war es mit Kontakte reinigen und wieder zusammenbauen nicht getan. Trotzdem konnte ich die Funktion wieder herstellen.

Diese Anleitung dürfte sich auf ähnliche Geräte ohne Probleme übertragen lassen.

Benötigtes Werkzeug:

  • Schraubenzieher Philips Größe 0 (PH 0)
  • Pinzette
  • Bügeleisen

Schritt 1

Zunächst muss das Gerät geöffnet werden. Dazu zuerst die Batterien entnehmen und die Armmanschette entfernen. Die Manschette wird durch zwei Schrauben im Batteriefach gehalten.

mbo_digimed_schrauben_manschette-1 mbo_digimed_schrauben_manschette-2

Anschließend müssen die zwei Schrauben auf der Rückseite entfernt werden um diese abnehmen zu können. Die Rückseite wird zusätzlich durch mehrere Rastnasen gehalten, diese lösen sich durch leichten Druck.

mbo_digimed_schrauben_rueckseite mbo_digimed_rastnasen_rueckseite

Schritt 2

Nun muss die Elektronik aus dem Gehäuse entfernt werden. Diese besteht aus zwei gestapelten Platinen die durch einen Pfostenstecker verbunden werden. Zunächst sollte das weiße Luftauslassventil und die Batteriekontakte gelöst werden. Das Ventil wird durch zwei Haken gehalten. Die Batteriekontakte können mit der Pinzette vorsichtig aus der Halterung gezogen werden.

mbo_digimed_elektronik-1

Anschließend die Platine gerade nach oben abziehen. Die untere Platine ist nun sichtbar. Sie wird durch 4 Schrauben gehalten. Diese lösen und die Platine vorsichtig entnehmen.

mbo_digimed_elektronik-2 mbo_digimed_elektronik-3

Schritt 3

Auf der Hauptplatine befindet sich eine Art Flachbandkabel. Dieses schwarz-weiß gestreifte Kabel verbindet das LCD Glas mit dem Mikrocontroller. Der Fehler bei meinem Gerät lag in den Kontakten vom Kabel zur Platine. Das Kabel scheint dem Aussehen nach eine kohlebasierte Leitschicht zu enthalten. Deren Kontakt zur Platine ist im Laufe der Zeit (durch Luftfeuchtigkeit?) immer schlechter geworden bis das Display dann ausfiel. Um den Kontakt wieder herzustellen kommt jetzt das Bügeleisen zum Einsatz. Ich habe das Bügeleisen dazu auf Stufe 1 gestellt und dann die Kontaktstelle auf der Platine mit leichtem Druck über die Kante der Bügelsohle gezogen. Anschließend das Gerät Testen (Platinen zusammenstecken, Batteriekontakte einsetzen und anschalten) und gegebenenfalls die Prozedur wiederholen.

mbo_digimed_buegeleisen

Schritt 4

Nun muss das Gerät nur wieder zusammengebaut werden. Dazu die Schritte oben in umgekehrter Reihenfolge durchgehen. Mit etwas Glück und Geschick hat man danach wieder ein funktionierendes Blutdruckmessgerät.

mbo_digimed_fertig

Written by Ferdinand

August 22nd, 2014 at 18:37