前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP8266低功耗解决的其中一个问题(芯片发热,影响旁边的温湿度芯片)

ESP8266低功耗解决的其中一个问题(芯片发热,影响旁边的温湿度芯片)

作者头像
杨奉武
发布2019-08-06 14:40:42
1.9K0
发布2019-08-06 14:40:42
举报
文章被收录于专栏:知识分享知识分享

这个项目的这个问题困扰了自己好长时间了,ESP8266芯片发热,导致了旁边的温湿度传感器采集不了空气中的温度....采集的温度是芯片发热的温度

 一直采集出来的是30多度......尽管空气温度10几度

其实我的方式很简单很简单,先应对现在的问题,现在没有时间做的更好一点了,测试更完善来不及了.....

由于设备的功能只是采集,采集完上传

我的做法其实很简单.....延时休眠,启动采集,延时休眠,启动采集,延时休眠

但是这种做法就不能实时的接收数据了...不过还好现在没有接收处理部分(主要是现在的接收处理现在并不是必须的)...

1S定时器

如果MQTT连接成功,就采集温湿度数据,第一次的不要,第二次的发送出去,如果判断cnt>=2 就让芯片休眠10分钟(就不会执行用户程序了)

如果cntTime>=10说明10S内都没有执行上面采集发送的操作,则芯片休眠5分钟

代码语言:javascript
复制
local status, temp, humi, temp_dec, humi_dec, globalSendData;
local cnt=0
local cntTime=0
local DHT11pin = 5--DHT11 GPIO
local DTH11Timer = tmr.create()
DTH11Timer:register(1000, 1, function() 
    if cnt >=2  then
       cntTime=0;
       node.dsleep(600000000,1)
       cnt=0;
    end

    cntTime = cntTime +1;
    if cntTime > 10  then
       cntTime=0;
       cnt=0;
       node.dsleep(300000000,1)
    end

    if  MqttConnectedFlage == true  then
        status, temp, humi, temp_dec, humi_dec = dht.read11(DHT11pin)--Gathering temperature and humidity  
        if  status == dht.OK or status == dht.ERROR_CHECKSUM then
            cnt = cnt +1;
            if  cnt >=2  then
                cntTime=0;
            
                temp_dec = temp;
                humi_dec = humi;
                
                temp = temp+TempAdd;
                humi = humi+HumiAdd;
                globalSendData = "{".."data:".."TH"..",".."bit:1,".."temperature:"..temp..",".."humidity:"..humi..",temperatureok:"..temp_dec..",humidityok:"..humi_dec.."}"
                if  Mymqtt ~= nil and MqttConnectedFlage == true then
                    Mymqtt:publish(PublishTopic,globalSendData, 0, 0, function(client)end)
                end
                print("DHT Temperature:"..temp..";".."Humidity:"..humi)
            end
        elseif status == dht.ERROR_TIMEOUT then
            --print( "DHT timed out." )
            --temp = 0;
            --humi = 0;
            --temp = temp+TempAdd;
            --humi = humi+HumiAdd;
            --globalSendData = "{".."data:".."TH"..",".."bit:1,".."temperature:"..temp..",".."humidity:"..humi.."}"
         
        end
    end
    tmr.softwd(60)
    --print( "wdclr()" )
end)
DTH11Timer:start();

注:

代码语言:javascript
复制
node.dsleep(600000000,1)
执行该函数,设备休眠10分钟以后,会自动重新启动
不过您需要
GPIO16 和 RST 连接上
代码语言:javascript
复制
 注:其实咱都知道最好的方式是可以保持着通信,就是可以处理网络接受的数据
这个以后再搞吧,先用这种方式应急.
现在的wifi模块一点都不会发热了.....

以前我的PCB板子也做了处理,也是可以减小芯片发热对温度传感器的影响,不过呢!这种板子的PCB板子不要密封....因为密封以后热量就散不出去了
因为我的PCB基本上是密封的,所以只能使用休眠了
代码语言:javascript
复制
基本上分隔开PCB板的发热部分和传感器部分
连接传感器的线加长....
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档