既然走到這一步,肯定和上次的天氣預報有著不可分開的關系,上次的天氣預報,通過網上的天氣預報分析得到,溫度和濕度,相對實際情況,還是有點不準確,這次采用了,DHT11,檢查環境的溫度和濕度,,這個模塊很簡單,gnd和vcc連接后,再去讀取他的一個data管腳,就完畢了,模塊圖如下:
走到這一步,基本解決了上次的天氣預報的檢測,溫度和濕度,準確問題,接下來,用熱釋傳感器,檢測活物體,最開始我計劃用超聲波測距來做這個事情,最后發現比較麻煩,當時的思路是,檢測物體是否移動,計算距離,達到效果,網上搜了下,還有更好的模塊,那就是熱釋傳感器,但是這個受環境影響大,不過基本沒啥問題,開始入手這個模塊有點悶逼,他的out管腳,一會兒1一會0,測試了半天才找到規律,測試也不好測試,我測試一次,自己跑的老遠看電腦,通過昨天測試,今天編碼,基本解決問題,來看看效果吧,淘寶賣4元,
有了這兩個模塊基本數據就可以準確測試出來,但是這個并不是我們想要的效果,what??,我們檢測,還是希望遠程檢測對吧?哈哈,沒事,自己會PHP,然后自己用PHP和硬件通訊,把數據都傳輸到了我的網站,這樣,我們可以直接在任何地點查看,房間的溫度濕度,是否有人,效果如圖
到這里,我們整個流程就演示完畢,現在我們來分析代碼吧,
首先是dht11模塊的數據讀取,這個很簡單,我做成了一個函數,代碼如下
function hdt()
status, temp, humi, temp_dec, humi_dec = dht.read(pin)
if status == dht.OK then
-- Float firmware using this example
print("DHT Temperature:"..temp..";".."Humidity:"..humi)
wendu=temp
shidu=humi
elseif status == dht.ERROR_CHECKSUM then
print( "DHT Checksum error." )
elseif status == dht.ERROR_TIMEOUT then
print( "DHT timed out." )
end
end
以上代碼基本是官方文檔提供的,接下來我們來看看,熱釋傳感器的代碼
function check()
gpio.mode(6, gpio.INPUT)
timer = tmr.create()
runTime = tmr.time()
tmr.register(timer, 1000*1, tmr.ALARM_AUTO, function ()
if gpio.read(6)==1 then
--開啟提交
print("有人")
url_web="http://lovehxm.top/yzw/app_api.php?insert=wifi&wendu="..wendu.."&shidu="..shidu.."&weather="..weather
print(url_web)
http.get(url_web, nil, function (code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)
end
end)
tmr.start(timer)
end
改函數每秒讀取一次熱釋傳感器數據,當發現有人時,就把數據發送到web服務器端,核心的差不多事這些,接下我們來看看,整體效果,
差不多是這樣,源碼代碼我發出來,有興趣的可以去玩玩,源碼包含,esp和web源碼,app源碼就不發了,需要app的可以看上次的天氣預報app,基本一樣,需要定制的可以聯系我哦