From 560ad8e029238c9a3da28a0e91bd282427bb157a Mon Sep 17 00:00:00 2001 From: funshine Date: Mon, 6 Apr 2015 00:11:12 +0800 Subject: [PATCH] remove dht22 lib, use dht_lib instead --- lua_modules/dht22/README.md | 91 -------------------- lua_modules/dht22/dht_lib.lua | 157 ---------------------------------- 2 files changed, 248 deletions(-) delete mode 100644 lua_modules/dht22/README.md delete mode 100644 lua_modules/dht22/dht_lib.lua diff --git a/lua_modules/dht22/README.md b/lua_modules/dht22/README.md deleted file mode 100644 index ab7b30f9..00000000 --- a/lua_modules/dht22/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# DHTxx module - -This module is compatible with DHT11, DHT21 and DHT22. -No need to use a resistor to connect the pin data of DHT22 to ESP8266. - -##Integer Verison[When using DHT11, Float version is useless...] -### 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 - - print("Temperature: "..((t-(t % 10)) / 10).."."..(t % 10).." deg C") - - print("Temperature: "..(9 * t / 50 + 32).."."..(9 * t / 5 % 10).." deg F") - - -- humidity - - print("Humidity: "..((h - (h % 10)) / 10).."."..(h % 10).."%") -end - --- release module -DHT = nil -package.loaded["dht_lib"]=nil -``` -##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 - -### getHumidity -getHumidity() -Returns the humidity of the last reading. - -**Returns:** -* last humidity reading in per thousand - -### getTemperature -getTemperature() -Returns the temperature of the last reading. - -**Returns:** -* last temperature reading in(dht22) 0.1ºC (dht11)1ºC -* - diff --git a/lua_modules/dht22/dht_lib.lua b/lua_modules/dht22/dht_lib.lua deleted file mode 100644 index 641f2e17..00000000 --- a/lua_modules/dht22/dht_lib.lua +++ /dev/null @@ -1,157 +0,0 @@ --- *************************************************************************** --- DHTxx(11,21,22) module for ESP8266 with nodeMCU --- --- 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 = {} - ----------------------------Read bitStream from DHTXX-------------------------- -local function read(pin) - - local bitlength = 0 - humidity = 0 - temperature = 0 - - -- Use Markus Gritsch trick to speed up read/write on GPIO - local gpio_read = gpio.read - - - for j = 1, 40, 1 do - bitStream[j] = 0 - end - - - - -- Step 1: send out start signal to DHT22 - gpio.mode(pin, gpio.OUTPUT) - gpio.write(pin, gpio.HIGH) - tmr.delay(100) - gpio.write(pin, gpio.LOW) - tmr.delay(20000) - gpio.write(pin, gpio.HIGH) - gpio.mode(pin, gpio.INPUT) - - -- 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 - while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end - -- bus will always let up eventually, don't bother with timeout - while (gpio_read(pin) == 0 ) do end - c=0 - while (gpio_read(pin) == 1 and c < 500) do c = c + 1 end - - -- Step 3: DHT22 send data - for j = 1, 40, 1 do - while (gpio_read(pin) == 1 and bitlength < 10 ) do - bitlength = bitlength + 1 - end - bitStream[j] = bitlength - bitlength = 0 - -- 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) - end - end - for i = 1, 16, 1 do - if (bitStream[i + 16] > 3) then - temperature = temperature + 2 ^ (16 - i) - end - end - for i = 1, 8, 1 do - if (bitStream[i + 32] > 3) then - checksum = checksum + 2 ^ (8 - i) - end - end - - checksumTest = (bit.band(humidity, 0xFF) + bit.rshift(humidity, 8) + bit.band(temperature, 0xFF) + bit.rshift(temperature, 8)) - checksumTest = bit.band(checksumTest, 0xFF) - - if temperature > 0x8000 then - -- convert to negative format - temperature = -(temperature - 0x8000) - end - - -- conditions compatible con float point and integer - if (checksumTest - checksum >= 1) or (checksum - checksumTest >= 1) then - humidity = nil - end -end - ----------------------------Check out the data-------------------------- -function M.getTemperature() - return temperature -end - -function M.getHumidity() - return humidity -end - -return M