在大数据爆发的时代,物联 的数据提供了海量的信息。所以物联 设备如同井喷似的蓬勃发展,未来的物联 设备将要比地球上的沙子加起来都要多。
为了能与时俱进,本人通过自学的物联 知识制作了一个智慧浇花神器,整体的实物图如下:
演示效果:
设备浇水演示.mp4
华为平台IOT演示.mp4
平台的历史数据
目录
一、整体结构
二、硬件结构
1.能量采集IC+太阳能板
2.NB-IOT模块
3.水泵
4.水流量计
5.湿度传感模块
6.总的静态功耗计算
三、软件结构
1.分布式结构
四、总结
一、整体结构
二、硬件结构
1.能量采集IC+太阳能板
为了能让设备长期运行,使用额定功率1W的太阳能板储能,实际上转化出来的电压一般都是2V左右,电流在20ma左右,可见光能的转化率并不高,如果能把这些能量存储起来,对于微安级别的低功耗IOT设备来说已经很足够使用。BQ25504是一个能量采集IC,专门用于采集毫微功率的电量,适用于低功耗领域的设备。在设计中,通过BQ25504给锂电池储能,为设备提供长久的电源。
i.原理图
ii.最大功率跟踪的设计
MPPT控制器会实时跟踪太阳能板中的最大的功率点,来发挥出太阳能板的最大功效。通过最大功率跟踪,就可以输出更多的电量,从而提高充电效率。对于光能收集来说最大功率点一般是开路电压的70%~80%。
根据手册中:
查询了0603的阻值表后,选择的阻值为Roc1=15M,Roc2=4.3M,这样计算出来的最大功率点的电压为77.7%的VCC。
iii.计算过压值和欠压值
当锂电池的电压上升到过压值时,BQ25504就会停止充电,然后VBAT_OK引脚输出高电平。当锂电池中的电压降至欠压值以下时,VBAT_OK引脚输出低电平。考虑到STM8L的VDD最大为3.6V,BC-28模块的工作电压最低为3.1V。所以在设计时,过压值为VBAT_OV=3.5V,欠压值VBAT_UV=3.2V。
根据手册中指出:
查询阻值表后,选择电阻Rov1=3.6M,Rov2=3.3M;Ruv1=3.3M,Ruv2=5.1M;
2.NB-IOT模块
i.原理图
ii.低功耗设计
在静态功耗的设计中,主要是与MCU通信的串口NB_TX、NB_RX的电路设计。我们来看看模块手册中串口电路设计的建议:
因为STM8L的串口TX引脚空闲时为高电平3.3V,明显大于VDD_EXT=3.0V,设计时采取了建议2如原理图所示。
3.水泵
使用的是直流水泵,参数如下:
i.原理图
通过STM8L配置的开漏输出引脚,控制PMOS管来使电机运转。
ii.低功耗设计
这里解释一下为什么要使用PMOS管而不是常用的NOMS管:
首先,在考虑设计开关三极管电路的时候,要么处于常开,要么处于常闭,总之为了稳定性考虑必须要确定一个常态,而STM8L单片机复位后引脚的状态都是浮空输入的,引脚电平不能确定,所以必须外加一个上拉或者下拉电阻,使控制端处于一个常态。
接着,对于功率设备来说,最好是不要用单片机引脚推挽输出的高电平直接控制MOS管,如果是大电压驱动的话,单片机的引脚会被烧坏。所以输出高电平最好是引脚配置开漏输出。
综上所述,设备进入低功耗休眠时,使用NMOS管在“关”状态下会有电流损耗,如下所示:
而使用PMOS管时,“关”状态不会存在上图这种现象。但是PMOS管的替换种类少、价格高,所以在设计产品的时候要权衡考虑。
4.水流量计
流量计监控流量的方式是输出霍尔脉冲,简单的说流量计内部有一个磁性转子,外部有一个霍尔集成电路,液体通过时会推动转子旋转产生霍尔效应,根据单位流量输出对应的脉冲。详细参数如下:
i.原理图
同样也是使用一个PMOS管来控制流量计的电源。
5.湿度传感模块
使用的是电容式土壤传感器模块,工作电压3.3V-5V,输出的湿度值对应模拟量0V-3V,湿度大时电压小,湿度小时电压大。
i.原理图
同样也是使用一个PMOS管来控制湿度传感模块的电源。
6.总的静态功耗计算
i.光能收集+太阳能板:
由于这个芯片的电源是从太阳能板获取的,所以对于系统的功耗来说是0uA。
ii.NB-IOT模块:
根据手册可以知道BC-28在休眠状态下的静态功耗是3uA:
iii.水泵、水流量计、湿度传感模块:
在休眠时,通过PMOS管关闭这些模块的电源,而PMOS管本身也有漏电流≤0.1uA :
iv.STM8L单片机:
在使用RTC定时唤醒的情况下,进入低功耗时的功耗为1.4uA。
总的最大静态功耗 4.7uA = 3+3X0.1+1.4
实际测量时,使用的是STLINK的电源供电3.3V。
测量如下:
再来看看未接入太阳能板的功耗视频:(电流突然增大是因为RTC定时唤醒进行数据采集)
未接入太阳能的功耗测量.mp4
最后看看接入太阳能板后的功耗视频:
接入太阳能的功耗测量.mp4
三、软件结构
1.分布式结构
在单片机软件设计中,使用分布式结构的好处:高内聚、低耦合、伸缩性强、易于移植、方便维护。
为了实现这个分布式结构,使用了实时的操作系统Atomthreads,这个超轻量级系统专门用于RAM和ROM非常小的单片机,可以说这个实时操作系统是为STM8单片机设计的,它具有实时操作系统该有的功能:优先级抢占、信 量、队列等。整体的结构为一主多从,从服务器使用硬件代理模式来设计,即把单独硬件用一个系统任务来包装成一个从服务器。
i.BC-28模块-从服务器
驱动层:MCU通过串口与BC-28模块进行通信,这里我使用了UART+DMA的方式接收任意的AT指令
功能接口层:这里面是BC-28的AT指令功能,发送方面以单一的AT指令或者组合的AT指令构成。接收方面以环形队列的数组对AT指令的反馈进行处理。
应用层:这里面包含了BC-28的初始化、发送数据帧、接收数据帧的处理、异常处理机制。
低功耗处理:模块可以通过PSM进入休眠模式或者关闭CFUN的方式,这样的功耗是3个uA。
UART外设的休眠唤醒如下:
ii.数据采集-从服务器
这里为了节省STM8L的RAM资源,把水流量计模块和湿度传感模块合并作为数据采集模块。
驱动层:通过ADC采集湿度传感模块的模拟量,通过tim定时器的计数方式来累计水流量计的脉冲
功能接口层:首先来看看湿度值的滤波,由于土壤内部的湿度值变化比较缓慢,通过平均移动滤波法来平滑数据。接着对于水流量计,根据单位的捕获的脉冲来计算流速。
应用层:这里对数据进行相应的激励反馈,比如说湿度值低于设定阈值的时候,就会产生“低湿度”的激励,这个激励会反馈到主服务器。
低功耗处理:对于湿度传感模块和水流量计模块的处理是通过PMOS管直接关闭电源。
ADC外设的休眠唤醒如下:
TIm外设的休眠唤醒如下:
四、总结
对于物联 产品的软件设计来说,韧性工程的设计是非常关键的。比如说电池的电量下降到50%,而且持续下降(连续阴雨天气,放电大于充电),这时候就要执行超省电的模式来进一步降低系统的耗电,可以通过增加NB定时上 的周期、减少单位采集时间、延长MCU的RTC的唤醒时间等方式。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!