Arduino kennen die meisten ja. Aber von NodeMCU (http://www.nodemcu.com/index_en.html) haben noch die wenigsten gehört. Und trotzdem scheint sich ein gewisser Hype um diese Dinger zu entwickeln.
Für nicht ganz 5 EUR bekommt man ein kleines Board, welches wie der Arduino einiges an Ein-/Ausgängen hat und zusätzlich noch über WLAN verfügt:
http://de.aliexpress.com/item/New-Wi.../www.wemos.cc/
Wer nicht direkt bei den Chinesten bestellen will: In der Bucht bekommt man das gleiche Modul für knapp 8EUR. Kommt auch aus China, lässt sich aber mit Paypal statt Kreditkarte bezahlen.
Und so sieht das Ding aus:
esp.png
Hersteller-Webseite (Achtung, nix professionelles erwarten...): http://www.wemos.cc/
Unterschied zum Arduino:
* Man kann es zwar über USB mit 5V versorgen, aber es arbeitet komplett mit 3.3V. D.h. die GPIO-Pins haben 3.3V Pegel statt wie die normalen Arduinos die 5V haben.
* Man entwickeln nicht in C/C++, sondern in "Lua".
Nun, aus einer kleines Sammelbestellung heraus, hab ich mir den AMS iAQ Core VOC Sensor gegönnt:
http://ams.com/eng/content/download/...heet_EN_v1.pdf
Bekommt man unter anderem bei digikey....
Dank einer kleinen, aber recht feinen IDE ist der erste Kontakt mit NodeMCU ganz einfach:
http://esp8266.ru/esplorer/
Wenn man unter Windows arbeitet, muss man sich noch den CH340 Treiber für den USB-RS232 Adapterchip installieren. Den bekommt man von oben genannter Herstellerseite.
Esplorer installieren (bzw. entpacken und dank Java starten), COM-Port auswählen, LUA Script schreiben, speichern und schon wir der Code auf den NodeMCU geschickt und auch gleich ausgeführt.
Hier mal mein Code um die VOC Sensordaten über einen Socketserver auszuliefern:
Verkabelung: 3.3V und Gnd bekommt man vom NodeMCU Board. SDA hängt an Pin D1 und SCL an Pin D2.
Man verbindet sich zu Port 44444 (Telnet z.B.) des NodeMCU, sendet "irgendein byte" und bekommt als Antwort sowas hier im JSON Format:
Wenn Status den Wert 0x10 hat, dann ist der Sensor noch in der Start-Phase. Bei einem Status-Wert von 0, kommen verlässliche Daten raus.
Nächster Schritt:
MQTT evaluieren.... (NodeMCU ist klein, aber doch recht mächtig...) Damit ließe sich wohl ein kleines aber feines Sensor/Aktor-Netzwerk aufbauen. Und wenn die NodeMCU Doku recht behält, dann ist die MQTT Kommunikation auch verschlüsselt möglich. Eigentlich eine super Sache. Aber Dokumentiert ist diese Verschlüsselung wohl überhaupt nicht. Werde mir da den Code anschauen müssen.
Soweit so gut. Viel Spaß beim basteln...
Gruß
Alex
P.S. Die ganze Bastelei hat gerade mal, inkl. einlernen in Lua und anlöten von Pins an den VOC, rund 3h gedauert.
Für nicht ganz 5 EUR bekommt man ein kleines Board, welches wie der Arduino einiges an Ein-/Ausgängen hat und zusätzlich noch über WLAN verfügt:
http://de.aliexpress.com/item/New-Wi.../www.wemos.cc/
Wer nicht direkt bei den Chinesten bestellen will: In der Bucht bekommt man das gleiche Modul für knapp 8EUR. Kommt auch aus China, lässt sich aber mit Paypal statt Kreditkarte bezahlen.
Und so sieht das Ding aus:
esp.png
Hersteller-Webseite (Achtung, nix professionelles erwarten...): http://www.wemos.cc/
Unterschied zum Arduino:
* Man kann es zwar über USB mit 5V versorgen, aber es arbeitet komplett mit 3.3V. D.h. die GPIO-Pins haben 3.3V Pegel statt wie die normalen Arduinos die 5V haben.
* Man entwickeln nicht in C/C++, sondern in "Lua".
Nun, aus einer kleines Sammelbestellung heraus, hab ich mir den AMS iAQ Core VOC Sensor gegönnt:
http://ams.com/eng/content/download/...heet_EN_v1.pdf
Bekommt man unter anderem bei digikey....
Dank einer kleinen, aber recht feinen IDE ist der erste Kontakt mit NodeMCU ganz einfach:
http://esp8266.ru/esplorer/
Wenn man unter Windows arbeitet, muss man sich noch den CH340 Treiber für den USB-RS232 Adapterchip installieren. Den bekommt man von oben genannter Herstellerseite.
Esplorer installieren (bzw. entpacken und dank Java starten), COM-Port auswählen, LUA Script schreiben, speichern und schon wir der Code auf den NodeMCU geschickt und auch gleich ausgeführt.
Hier mal mein Code um die VOC Sensordaten über einen Socketserver auszuliefern:
Code:
-- reference id id=0 -- D1 sda=1 -- D2 scl=2 iaqAddr = 0x5a; iaqReg = 0xb5; local measure = {} -- initialize i2c i2c.setup(id,sda,scl,i2c.SLOW); -- read data register -- i2c_addr: i2c address of i2c device to read -- reg_addr: register address to read -- lenght: number of bytes to read local function read_reg(i2c_addr, reg_addr, length) i2c.start(id) i2c.address(id, i2c_addr, i2c.RECEIVER) bytes = i2c.read(id, length) i2c.stop(id) return bytes end local function getByte(b, nr) return string.byte(b,nr+1) end -- read iaq data local function readIaq() data = read_reg(iaqAddr, iaqReg, 9) -- read 9 bytes -- print each byte to hex --for i=0,8 do -- print("byte["..i.."]="..string.format("%02x", string.byte(data, i+1))) --end -- prepare human-readable values voc = bit.lshift(getByte(data,0), 8) + getByte(data, 1); status = getByte(data,2); resistance = bit.lshift(getByte(data,3), 24) + bit.lshift(getByte(data,4), 16) + bit.lshift(getByte(data,5), 8) + getByte(data,5); tvoc = bit.lshift(getByte(data,7), 8) + getByte(data, 8); -- prepare json structure measure['voc'] = voc; measure['status'] = status; measure['resistance'] = resistance; measure['tvoc'] = tvoc; end wifi.setmode(wifi.STATION) wifi.sta.config("SSID", "PASSWORT") wifi.sta.connect() print("MAC: "..wifi.sta.getmac()) tmr.alarm(0, 1000, 1, function() if wifi.sta.getip() == nil then print("Connecting to AP...\n") else ip, nm, gw=wifi.sta.getip() print("IP Info: \nIP Address: ",ip) print("Netmask: ",nm) print("Gateway Addr: ",gw,'\n') tmr.stop(0) end end) -- Start a simple socket server srv=net.createServer(net.TCP) srv:listen(44444,function(conn) conn:on("receive",function(conn, c) readIaq(); print("response: "..cjson.encode(measure)); conn:send(cjson.encode(measure)) end) conn:on("sent",function(conn) conn:close() end) end)
Man verbindet sich zu Port 44444 (Telnet z.B.) des NodeMCU, sendet "irgendein byte" und bekommt als Antwort sowas hier im JSON Format:
{"status":0,"tvoc":206,"voc":744,"resistance":3 464 41}
Nächster Schritt:
MQTT evaluieren.... (NodeMCU ist klein, aber doch recht mächtig...) Damit ließe sich wohl ein kleines aber feines Sensor/Aktor-Netzwerk aufbauen. Und wenn die NodeMCU Doku recht behält, dann ist die MQTT Kommunikation auch verschlüsselt möglich. Eigentlich eine super Sache. Aber Dokumentiert ist diese Verschlüsselung wohl überhaupt nicht. Werde mir da den Code anschauen müssen.
Soweit so gut. Viel Spaß beim basteln...
Gruß
Alex
P.S. Die ganze Bastelei hat gerade mal, inkl. einlernen in Lua und anlöten von Pins an den VOC, rund 3h gedauert.
Kommentar