From f5a7448d3974fe039f6a26c6e6f97f5696fc99da Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Mar 2015 20:48:09 +0100 Subject: [PATCH 1/3] corr typo wrong ip in example --- examples/fragment.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/fragment.lua b/examples/fragment.lua index 67aa2c378e..fc42632672 100644 --- a/examples/fragment.lua +++ b/examples/fragment.lua @@ -14,7 +14,7 @@ sk:connect(80,"115.239.210.27") sk:send("GET / HTTP/1.1\r\nHost: 115.239.210.27\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") sk:connect(80,"192.168.0.66") -sk:send("GET / HTTP/1.1\r\nHost: 1192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") +sk:send("GET / HTTP/1.1\r\nHost: 192.168.0.66\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n") i2c.setup(0,1,0,i2c.SLOW) function read_bmp(addr) i2c.start(0) i2c.address(0,119,i2c.RECEIVER) c=i2c.read(0,1) i2c.stop(0) print(string.byte(c)) end From 4ca371f473f5780fb6c3280b51b9190e19e4b18d Mon Sep 17 00:00:00 2001 From: Martin Han Date: Fri, 3 Apr 2015 23:34:12 +0800 Subject: [PATCH 2/3] Add support to DHT11 and add some comments. Change function names. read->-read11() support DHT11 ->read22() support DHT21 DHT22 --- lua_modules/dht22/{dht22.lua => dht_lib.lua} | 77 +++++++++++++++++--- 1 file changed, 66 insertions(+), 11 deletions(-) rename lua_modules/dht22/{dht22.lua => dht_lib.lua} (54%) diff --git a/lua_modules/dht22/dht22.lua b/lua_modules/dht22/dht_lib.lua similarity index 54% rename from lua_modules/dht22/dht22.lua rename to lua_modules/dht22/dht_lib.lua index a80a1bd61a..641f2e170c 100644 --- a/lua_modules/dht22/dht22.lua +++ b/lua_modules/dht22/dht_lib.lua @@ -1,34 +1,43 @@ -- *************************************************************************** --- DHT22 module for ESP8266 with nodeMCU +-- DHTxx(11,21,22) module for ESP8266 with nodeMCU -- --- Written by Javier Yanez +-- Written by Javier Yanez mod by Martin -- but based on a script of Pigs Fly from ESP8266.com forum -- -- MIT license, http://opensource.org/licenses/MIT -- *************************************************************************** +--Support list: +--DHT11 Tested ->read11 +--DHT21 Not Tested->read22 +--DHT22 Tested->read22 + +--==========================Module Part====================== local moduleName = ... local M = {} _G[moduleName] = M - +--==========================Local the UMI and TEMP=========== local humidity local temperature +--==========================Local the bitStream============== +local bitStream = {} -function M.read(pin) - local checksum - local checksumTest +---------------------------Read bitStream from DHTXX-------------------------- +local function read(pin) + + local bitlength = 0 humidity = 0 temperature = 0 - checksum = 0 -- Use Markus Gritsch trick to speed up read/write on GPIO local gpio_read = gpio.read - local bitStream = {} + for j = 1, 40, 1 do bitStream[j] = 0 end - local bitlength = 0 + + -- Step 1: send out start signal to DHT22 gpio.mode(pin, gpio.OUTPUT) @@ -39,7 +48,7 @@ function M.read(pin) gpio.write(pin, gpio.HIGH) gpio.mode(pin, gpio.INPUT) - -- Step 2: DHT22 send response signal + -- Step 2: Receive bitStream from DHT11/22 -- bus will always let up eventually, don't bother with timeout while (gpio_read(pin) == 0 ) do end local c=0 @@ -59,8 +68,53 @@ function M.read(pin) -- bus will always let up eventually, don't bother with timeout while (gpio_read(pin) == 0) do end end - +end +---------------------------Convert the bitStream into Number through DHT11 Ways-------------------------- +function M.read11(pin) +--As for DHT11 40Bit is consisit of 5Bytes +--First byte->Humidity Data's Int part +--Sencond byte->Humidity Data's Float Part(Which should be empty) +--Third byte->Temp Data;s Intpart +--Forth byte->Temp Data's Float Part(Which should be empty) +--Fifth byte->SUM Byte, Humi+Temp + read(pin) + local checksum = 0 + local checksumTest --DHT data acquired, process. + for i = 1, 8, 1 do -- Byte[0] + if (bitStream[i] > 3) then + humidity = humidity + 2 ^ (8 - i) + end + end + for i = 1, 8, 1 do -- Byte[2] + if (bitStream[i + 16] > 3) then + temperature = temperature + 2 ^ (8 - i) + end + end + for i = 1, 8, 1 do --Byte[4] + if (bitStream[i + 32] > 3) then + checksum = checksum + 2 ^ (8 - i) + end + end + + if(checksum ~= humidity+temperature) then + humidity = nil + temperature = nil + end + +end +---------------------------Convert the bitStream into Number through DHT22 Ways-------------------------- +function M.read22( pin ) +--As for DHT22 40Bit is consisit of 5Bytes +--First byte->Humidity Data's High Bit +--Sencond byte->Humidity Data's Low Bit(And if over 0x8000, use complement) +--Third byte->Temp Data's High Bit +--Forth byte->Temp Data's Low Bit +--Fifth byte->SUM Byte + read(pin) + local checksum = 0 + local checksumTest + --DHT data acquired, process. for i = 1, 16, 1 do if (bitStream[i] > 3) then humidity = humidity + 2 ^ (16 - i) @@ -91,6 +145,7 @@ function M.read(pin) end end +---------------------------Check out the data-------------------------- function M.getTemperature() return temperature end From 1bc81f4c3e30b5bcb77fb06d69f512d1e4286261 Mon Sep 17 00:00:00 2001 From: Martin Han Date: Fri, 3 Apr 2015 23:44:26 +0800 Subject: [PATCH 3/3] Add support to DHT11 and add some comments. --- lua_modules/dht22/README.md | 77 ++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 22 deletions(-) diff --git a/lua_modules/dht22/README.md b/lua_modules/dht22/README.md index b68a3278bb..ab7b30f909 100644 --- a/lua_modules/dht22/README.md +++ b/lua_modules/dht22/README.md @@ -1,46 +1,78 @@ -# DHT22 module +# DHTxx module -This module is compatible with DHT22 and DHT21. -Supports nodemcu with or without floating point. +This module is compatible with DHT11, DHT21 and DHT22. No need to use a resistor to connect the pin data of DHT22 to ESP8266. -## Example +##Integer Verison[When using DHT11, Float version is useless...] +### Example ```lua PIN = 4 -- data pin, GPIO2 -dht22 = require("dht22") -dht22.read(PIN) -t = dht22.getTemperature() -h = dht22.getHumidity() +DHT= require("dht_lib") + +--dht.read11(PIN) +DHT.read22(PIN) + +t = DHT.getTemperature() +h = DHT.getHumidity() if h == nil then - print("Error reading from DHT22") + print("Error reading from DHT11/22") else -- temperature in degrees Celsius and Farenheit - -- floating point and integer version: + print("Temperature: "..((t-(t % 10)) / 10).."."..(t % 10).." deg C") - -- only integer version: + print("Temperature: "..(9 * t / 50 + 32).."."..(9 * t / 5 % 10).." deg F") - -- only float point version: - print("Temperature: "..(9 * t / 50 + 32).." deg F") -- humidity - -- floating point and integer version + print("Humidity: "..((h - (h % 10)) / 10).."."..(h % 10).."%") end -- release module -dht22 = nil -package.loaded["dht22"]=nil +DHT = nil +package.loaded["dht_lib"]=nil ``` -## Functions -### read -read(pin) -Read humidity and temperature from DHT22. +##Float Verison +###Example +```lua +PIN = 4 -- data pin, GPIO2 + +DHT= require("dht_lib") + +--dht.read11(PIN) +DHT.read22(PIN) + +t = DHT.getTemperature() +h = DHT.getHumidity() +if h == nil then + print("Error reading from DHT11/22") +else + -- temperature in degrees Celsius and Farenheit + -- floating point and integer version: + print("Temperature: "..t.." deg C") + print("Temperature: "..(9 * t / 50 + 32).." deg F") + + -- humidity + print("Humidity: "..h.."%") +end + +-- release module +DHT = nil +package.loaded["dht_lib"]=nil +``` +## Functions +### read11 +read11(pin) +Read humidity and temperature from DHT11. +###read22 +read22(pin) +Read humidity and temperature from DHT22/21. **Parameters:** -* pin - ESP8266 pin connect to data pin in DHT22 +* pin - ESP8266 pin connect to data pin ### getHumidity getHumidity() @@ -54,5 +86,6 @@ getTemperature() Returns the temperature of the last reading. **Returns:** -* last temperature reading in 0.1ºC +* last temperature reading in(dht22) 0.1ºC (dht11)1ºC +*