hardware: ESP8266 (ESP-12), DHT22/AM2302, jumpers
firmware: nodemcu-dev096-21-modules-2015-09-20-05-43-31-float (custome f/w) http://frightanic.com/nodemcu-custom-build/
language: Lua
IDE : ESPlorer
VIDEO
WRITEKEY="thingspeak write key" -- set your thingspeak.com key
PIN = 2 -- data pin, GPIO2
wifi.setmode(wifi.STATION)
wifi.sta.config("ssid","password")
wifi.sta.setip({ip="192.168.0.115",netmask="255.255.255.0",gateway="192.168.0.1"})
wifi.sta.connect()
tmr.delay(1000000)
humi=0
temp=0
-- LED = 1
-- gpio.mode(LED, gpio.OUTPUT)
RST = 4
gpio.mode(RST, gpio.OUTPUT)
--gpio.write(RST, gpio.LOW)
function init_OLED(sda,scl) --Set up the u8glib lib
sla = 0x3c
i2c.setup(0, sda, scl, i2c.SLOW)
disp = u8g.ssd1306_128x64_i2c(sla)
disp:setFont(u8g.font_6x10)
disp:setFontRefHeightExtendedText()
disp:setDefaultForegroundColor()
disp:setFontPosTop()
end
init_OLED(5,6) --Run setting up
gpio.write(RST, gpio.HIGH)
function display_OLED(humi, temp)
disp:firstPage()
repeat
-- lines = 25
lines = 5
disp:drawFrame(0,0,128,64);
disp:drawStr( 5, 5, "Temp & Humi")
disp:drawStr( 5, 20, "Humidity : "..humi.."%")
disp:drawStr( 5, 31, "Temperature : "..temp.."C")
until disp:nextPage() == false
end
--load DHT module and read sensor
function ReadDHT()
dht=require("dht")
-- dht.read(PIN)
status,temp,humi,temp_decimial,humi_decimial = dht.read(PIN)
if( status == dht.OK ) then
-- gpio.write(LED, gpio.HIGH)
-- Integer firmware using this example
-- print(
-- string.format(
-- "\r\nDHT Temperature:%d.%03d\r\nHumidity:%d.%03d\r\n",
-- temp,
-- temp_decimial,
-- humi,
-- humi_decimial
-- )
-- )
-- Float firmware using this example
print("Humidity: "..humi.."%")
print("Temperature: "..temp.."C")
elseif( status == dht.ERROR_CHECKSUM ) then
print( "DHT Checksum error." );
elseif( status == dht.ERROR_TIMEOUT ) then
print( "DHT Time out." );
end
-- release module
dht=nil
package.loaded["dht"]=nil
end
-- send to https://api.thingspeak.com
function sendTS(humi,temp)
conn = nil
conn = net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload)success = true print(payload)end)
conn:on("connection",
function(conn, payload)
print("Connected")
conn:send('GET /update?key='..WRITEKEY..'&field1='..humi..'&field2='..temp..'HTTP/1.1\r\n\
Host: api.thingspeak.com\r\nAccept: */*\r\nUser-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n\r\n')end)
conn:on("disconnection", function(conn, payload) print('Disconnected') end)
conn:connect(80,'api.thingspeak.com')
-- gpio.write(LED, gpio.LOW)
end
-- ReadDHT()
-- sendTS(humi,temp)
tmr.alarm(1,60000,1,function()ReadDHT()display_OLED(humi, temp)sendTS(humi,temp)end)