zoukankan      html  css  js  c++  java
  • ESP8266低功耗解决的其中一个问题(芯片发热,影响旁边的温湿度芯片)

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

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

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

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

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

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

    1S定时器

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

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

    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();

    注:

    node.dsleep(600000000,1)
    执行该函数,设备休眠10分钟以后,会自动重新启动
    不过您需要
    GPIO16 和 RST 连接上

     注:其实咱都知道最好的方式是可以保持着通信,就是可以处理网络接受的数据
    这个以后再搞吧,先用这种方式应急.
    现在的wifi模块一点都不会发热了.....

    以前我的PCB板子也做了处理,也是可以减小芯片发热对温度传感器的影响,不过呢!这种板子的PCB板子不要密封....因为密封以后热量就散不出去了
    因为我的PCB基本上是密封的,所以只能使用休眠了

    基本上分隔开PCB板的发热部分和传感器部分
    连接传感器的线加长....








  • 相关阅读:
    辅助工具链接
    参考资料链接
    oracle sql 查询前十条数据
    oracle sql 按照汉字规则排序
    oracle sql 修改timestamp数据
    eclipse闪退
    js 数组Array
    面试题:树的子结构
    面试题:二叉树中和为某一路径
    面试题:二叉搜索树的后序遍历
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/11300243.html
Copyright © 2011-2022 走看看