既然走到这一步,肯定和上次的天气预报有着不可分开的关系,上次的天气预报,通过网上的天气预报分析得到,温度和湿度,相对实际情况,还是有点不准确,这次采用了,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,基本一样,需要定制的可以联系我哦