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 , , , , ,

IC Design with Free Tools – Introduction

with one comment

dac_layout_small

As part of my curriculum I recently attended the Advanced Integrated Circuit Design Lab at my university. In lab we had to design a 3-bit resistor string DAC. We used Cadence Virtuoso, which seems to be the industry standard for analog IC design. It might be really powerful, but rather difficult to use and financially completely out of reach of students or hobbyists.

Being given access to a tool like Virtuoso as part of one’s studies is great, but what if you want to keep working on IC design after that? That’s the question I posed myself and started researching. To experiment with IC design you need two things: information on the topic (e.g. books) and software. Books you can buy used from places like Amazon and Abebooks for very little money. From what I’ve heard Hans Camenzind’s book Designing Analog Chips is a great resource and it can be downloaded for free from his website (server config seems broken, so delete the countdown.pl? part of the URL).

This brings us to software, which is the hard part. Tools from the likes of Cadence or Synopsys are out of reach so we have to find alternatives. One tool I kept stumbling upon is MAGIC. It looks like it’s a mature project and – best of all – there are even technology files available for it free of charge! It also supports parasitic extraction so you can cut your teeth at post-layout simulation.

Before you start a layout you might want to simulate your design to make sure it might work. Cadence has Spectre, Synopsys has HSPICE, so where does that leave us? Obviously SPICE (Simulation Program with Integrated Circuit Emphasis) is the way to go and there are several contenders. After some looking around I settled on LTspice. LTspice is free, but not open-source. It is however very powerful, easy to use and widely used. And according to its creator, Mike Engelhardt, LT’s engineers use it for IC design internally, so it should be good enough for hobbyists.

To sum it up, we now have a circuit simulator, an IC layout program and some resources on the topic. In the next installment of this small series I will built an opamp in LTspice and simulate it using MOSFET models for an existing technology.

Written by Ferdinand

August 24th, 2014 at 12:39