项目总结——NB-IOT烟感报警器

一、概述

         最近做了一个烟雾报警的项目,其中碰到一些问题,总结起来

 

二、项目介绍

        项目主要包含stm8L151G6单片机,烟感检测,红外检测,蜂鸣器,LED,NB-IOT模块,烟感检测采用红外对管,红外对管并不是直接对射,而是通过烟雾漫反射来检测。这个项目主要在于低功耗。

 

三、问题汇总

        1、唤醒问题

            为了实现功耗,单片机采用RTC唤醒,在设置这个RTC寄存器的时候碰到幻想不了的问题,最后发现是有个寄存器设置顺序的问题。如下

        T_S32 DRIVER_RTC_Open(T_VOID)
{
    memset(&g_RtcCtl, 0, sizeof(g_RtcCtl));
g_RtcCtl.u32WakeInt = RTC_DEFAULT_WAKE_INT;
    
///*
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); //32768/16  = 2048
    RTC_SetWakeUpCounter(2048 * g_RtcCtl.u32WakeInt); //这个要放在开中断前
//*/
  
    /*
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_HSE, CLK_RTCCLKDiv_64); //250000
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); //250000/16  = 15625
RTC_SetWakeUpCounter(15625);
*/
  
RTC_ITConfig(RTC_IT_WUT, ENABLE);
RTC_WakeUpCmd(ENABLE);

return RET_SUCCESS;
}

        2、stm8 串口在唤醒后乱码

            我主频本来是采用HSE的,但是在唤醒后,本来好的串口发送有问题。后来我把主频改成HSI就好了,这里具体什么原因还没分析清楚,后面再来看

        3、NB-IOT模块

            我们采用的m5310 的NB-IOT模块,模块在入网之后的电流还是挺小的只有3ua

        4、串口

            进入休眠时可以采取将串口置成输入口来降低功耗

        5、报警

            在蜂鸣器报警的时候,电流可能很大,这时候可能会影响通信芯片 的稳定性,所以看需要在通信模块电源旁边加上一个大点的电容

        6、入网

            对通信来说,一般都会存在入不了网的情况,所以需要一个比较合理的入网及检查过程来判断网络情况。

     7、红外功耗

          板子的功耗由两部分组成,1是静态功耗,2是间隔检测红外的功耗。我们本来板子静态功耗挺低的,只有4.7ua。整体平均功耗由200多ua,而泛海三江的只有16ua.。后来发现是我们的红外管打开时间过长,泛海三江的只打开100us。而我们的有10几ms。这里我程序其实打开时间很短的,但用示波器测就是有10几毫秒。后来发现是驱动电路有问题,我们采用MOS管控制红外的电源,这里会导致延时。

项目总结——NB-IOT烟感报警器_第1张图片

项目总结——NB-IOT烟感报警器_第2张图片

所以需要都改成三极管控制

项目总结——NB-IOT烟感报警器_第3张图片

 

8、NB IOT卡

      nb模块实现低功耗是根据卡的接入点不同来设置的,不同的卡功耗会不一样,这里在买卡的时候要注意

 

9、弹簧天线

            弹簧天线需要套热缩管,这样性能会更好

 

10、烟感断网问题

              给客户的烟感出现一个问题,他的卡流量正好没了,导致所有设备都断网了,我在设备里面是又做重连网络的,但是是每隔30分钟重现入网,这里可能在断网之后耗电量是比较大的情况,所以这里最好改过。

 

11、湿度大的地方误报的情况

            可上电的时候采集一个当地的基值,然后与这个基值对比来报警

你可能感兴趣的:(项目总结)