蔡友宏
摘要
STM32 MCU接收GY-BME2 8 0三合一传感器测得的温湿度、气压参数和MAX44009光照强度传感器测得的光照强度参数,通过WH-NB7 3 NB-IoT模块上传至OneNet云平台,PC端通过浏览器或移动端通过APP可实时查看环境参数,以图形的方式直观的显示。
【关键词】NB-IoT OneNet 环境监测 STM32
NB-IoT是窄带物联网(Narrow BandIntemet of Things)的简写,是基于蜂窝移动通信网络的一种物联网技术,目前中国的三大运营商都己展开了商用。NB-IoT相比于传统的移动通信网络,具有覆盖广、海量连接、功耗低等多个优点;相比于蓝牙、ZigBee、WiFi等短距离无线通信技术,具有传输距离长、功耗更低、能直接连接运营商网络等优点。随着NB-IoT商用部署的不断推进和相应通讯模块价格的不断降低,基于NB-IoT的物联网应用将广泛应用于人们的生产生活当中。
OneNet是中国移动物联网有限公司面向公共服务推出的开放云平台,能助力各类终端设备方便、快捷的接入互联网。为各种跨平台物联网应用、行业解决方案提供简便的海量连接、云端存储、消息分发和大数据分析等优质服务。
本设计利用NB-IoT和OneNet,选用合适的传感器、MCU和通讯模块,设计了一环境监测系统,仅需使用2节AA或AAA电池供电,可适用于各种室内外环境,特别是农田、牧场、林地等野外需要远距离无人监测的场合,也可以作为便携式移动气象监测站使用。
1系统设计
本系统选择温度、湿度、气压参数三合一传感器、光照强度傳感器通过I2C通信接口上传环境参数至STM32 MCU,MCU通过NB-IoT通讯模块将参数上传至OneNet云平台,通过PC端浏览器、移动端APP查看参数。图1为系统总体图。
2硬件设计
2.1 GY-BME280三合一传感器电路
GY-BME28是一款温度、湿度、气压参数三合一传感器,具有8个引脚,可以通过I2C或SPI通信模式与MCU进行数据通信。本设计采用I2C通信模式,GY-BME280传感器与STM32MCU相连,电路图如图2所示。其中VDD是传感器内部模拟电路电源端;VIO传感器内部数字电路电源端;SCL、SDA分别是12C通信模式时钟信号、数据信号;SDO是传感器地址控制位,接GND时I2C中器件地址为11101100,接高电平为11101101,本设计该引脚接低电平。CSB是SPI通信模式下用到的引脚,本设计未使用,故悬空。
2.2 MAX44009光照强度传感器电路
MAX44009光照强度传感器具有6个引脚,工作在1.7V至3.6V供电电压范围,器件工作电流小于1uA,且提供I2C数字输出,非常适合于NB-IoT应用场景。图3是MAX44009与STM32MCU通过I2C总线连接的电路图。其中AO为地址选择端,高电平时选择地址lOOlOllx,低电平时选择地址lOOlOlOx,本设计该引脚接地即低电平;INT为中断输出,由于本设计采用STM32 MCU周期性读取数据的方式,故没有使用该引脚。
2.3 WH-NB7 3-B8通讯模块电路
本设计采用WH-NB73-B8是一款透传版NB-IoT通讯模块,适用于中国电信、中国移动、中国联通三家运营商的NB-IoT网络,支持3GPP标准指令、UDP指令传输、CoAP指令传输、云服务、UDP透传、CoAP透传、心跳包、DTLS加密等。该模块内置了天线和SIM卡,可通过USART串口与STM32 MCU相连,进行数据传输。
2.4 STM32主控电路
本设计采用STM32最小系统板,主芯片采用STM32L151C8,该MCU是ST公司出品的高性能低功耗系列MCU之一,供电电压范围1.65V-3.6V,采用超低漏电工艺技术,使得MCU的运行速度和功耗与其供电无关;具有48个引脚、128kB程序Flash、lOkBRAM、8个16位定时器、2路USART、2路SPI、2路I2C和1路USB通信接口;内置16MHz和38kHzRC振荡器,使得电路无需外部晶振也能正常运行。该系列MCU可长时间运行在低功耗状态,具有周期性唤醒功能,快速唤醒时间低至4us,非常适合电池供电,且数据量较小、数据传输间隔周期较大,需要长时间(以年计)不更换电池的应用场合,例如本设计的环境监测系统。
为了尽可能降低功耗,本设计未使用外部晶振,而使用内部16MHz的MSI RC振荡器作为系统主时钟源,经160分频成lOOkHz供I2C外设使用,I2C采用低速率,可以稳定传输且降低功耗。MCU长时间处于停止状态,内部除RTC实时时钟(采用内部LSI 40kHzRC振荡器,低于luF电流)外,其余定时器全部停止计数,RTC实时时钟每隔30秒唤醒MCU,内部16MHz RC振荡器开始工作,主控程序正常运行,读取传感器参数,并上传至OneNet云平台。
为了进一步降低功耗,最小系统板上电后,IO端口全部初始化为无上拉的模拟输入模式,以降低漏电电流;USART的Rxd引脚设置成模拟输入模式,Txd引脚设置成开漏无上下拉输出模式;关闭中断源;MCU停止前关闭USART、I2C等所有外设,然后进入停止状态;当RTC时钟周期性唤醒MCU后重新初始化之前配置的10和外设设置。
图5是STM32主控电路图,采用最小系统板,其中VBAT为系统电源,使用2节AA或AAA电池供电;BOOTO和BOOT1引脚都接地,系统上电后默认从用户Flash启动。STM32L151C8通过I2C接口连接GY-BME280温湿度传感器、MAX44009光照强度传感器;通过USART串口连接WH-NB73-B8 NB-IoT模块。
3软件设计
3.1 0neNet接入流程
本设计采用中国移动物联网有限公司的OneNer方案,OneNet接入流程如图6所示。其中账号注册、创建产品、添加设备3个步骤需要用户在https://open.iot.10086.cn/页面上进行操作,过程比较简单。账号注册时填写用户的个人信息;创建产品时,产品信息的联网方式须选择“NB-IoT”,协议须选择“LWM2M”;添加设备时填写“环境监测系统”,并添加WH-NB73-B8模块上的IMEI和IMSI号码;STM32主控程序完成接入流程中的上报数据步骤,将传感器参数上传至OneNet云平台;通过浏览器或中国移动的“和物”APP可以查看展示数据。
3.2上报数据
STM32主控程序完成接入流程中的上报数据步骤,其流程如图7所示。
4测试
完成上述开发后,编写相应程序,下载至STM32最小系统板,运行后成功将传感器测得的环境参数数据上传至OneNet云平台;通过浏览器或中国移动的“和物”APP可以查看展示数据,如图8所示。
参考文献
[1]何英杰,孙涵,李启伟.低功耗NB-IoT透传模块的设计[J].电子测试,2018 (15):15 -17.
[2]廉小亲,周栋,成开元,龚永罡,基于NB-IoT的空调远程控制系统设计及实现[J].测控技术,2018,37 (05): 51-55.
[3]徐俊俊.基于NB-IoT技术的智能指纹锁系统设计[J].计算机产品与流通,2017 (12):1 33.
[4]王能辉,胡国强,基于NB-IoT的农田远程监测系统的设计[J].陕西农业科学,201 7,63 (12): 82-85.
[5]王纯龙,李贺强.NB-IOT的关键技术及在农业物联网中的应用[J].电子技术与软件工程,2 017 (16):20.