智慧浇花神器

在大数据爆发的时代,物联 的数据提供了海量的信息。所以物联 设备如同井喷似的蓬勃发展,未来的物联 设备将要比地球上的沙子加起来都要多。

为了能与时俱进,本人通过自学的物联 知识制作了一个智慧浇花神器,整体的实物图如下:

演示效果:

设备浇水演示.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进行处理,非常感谢!

上一篇 2019年4月25日
下一篇 2019年4月25日

相关推荐