基于物联网的智能米桶的设计
2021-01-08沈周锋
沈周锋
(漳州职业技术学院 电子工程学院,福建 漳州 363000)
近几年来,物联网技术深入人心,各种设备纷纷升级物联网功能. 对于普通民众,各种家电加入物联网,极大的方便了人们的生活. 同时,促进了家用电器的更新换代,成为了我国的主要的经济增长点之一. 2020年初,受新冠疫情的影响,人们减少了不必要的出行和聚集,使物联网进一步融入人们生活的需求更加迫切.
以传统的生活品销售模式,人们需要经常关注家中大米的库存量,自己预测是否需要采购,并进入销售门店采购. 此销售模式,既要求人们关注库存量,又增加了不必要的出行,增加了人员聚集的可能性. 网络时代的今天,物联网技术手段已经非常成熟,且成本非常低廉[1]. 笔者旨在设计一种智能米桶,用于存储大米的同时,每次开启桶盖时[2-3]自动检测大米重量. 通过一种预测算法,根据大米消耗的速度,预测下次购买大米的时间. 在库存少于设定量时,通过WiFi模组连入互联网,通知供应商特定时间点送货上门. 设计一套电源的线路,智能的唤醒和休眠,达到极低功耗运行[4].
1 基本原理
采用STM8S103F3芯片作为核心,控制整机的运行. 该芯片具有16个IO口,具有UART串口,I2C接口,SPI接口,AD转换端口和定时器等单元. 该芯片价格低廉且功能强大,足以满足智能米桶的控制需求. 整机电路框图如图1所示. 称重传感器采用应变片,受到库存大米的重力压迫时产生微弱形变,导致电阻值发生变化. Hx711单元检测称重传感器信号变化,模数转换后得到24 bit数字信号,输入到单片机中. 单片机将AD值换算为实际重量,驱动墨水屏显示电路显示重量值. 该屏幕具有耗电极低的优点,满足智能米桶的应用需求[5]. 通电时段,单片机刷新墨水屏显示数值后,即可断电. 该屏幕将继续显示读数,直到下一次上电刷新操作,极大的提高了整机电池的续航. 单片机内部集成了EEPROM存储器,具有断电保存功能. 每次采集到的重量值后,将数据存入片内的EEPROM,当数据量超过一定个数后,单片机即可预测下一次购买大米的时间. 当大米存量少于阈值时,通过ESP8266模块,连接家庭WiFi从而接入互联网,将购买大米的需求发送给供应商.
图1 电路结构示意图
智能米桶属于按键少、显示屏幕小的家用电器,直接设置WiFi ID和密码需要非常繁琐的操作. ESP8266模块提供一键配网功能,利用手机端在近端设置模块的WiFi ID和密码,极大方便了用户[6].
本设计采用3节AA干电池供电,电源电路的设计极大的影响了电池的续航. 采用霍尔传感器安装于米桶盖上,用户掀开桶盖时,霍尔传感器控制电源电路接通,检测库存重量,刷新显示屏,连接互联网后,单片机控制电源电路关机,大大减少了电池电量的消耗.
2 电路设计
电源电路采用TPS62203 DC-DC芯片作为核心产生3. 3 V直流电压,以HAL248霍尔传感器控制电源电路启动. TPS62203芯片是一款高效率的同步降压型直流转换器,允许输入电压范围2. 5~6. 0 V,最大负载电流300 mA. 智能米桶接入互联网时,峰值电流200 mA左右,该电源芯片满足负载电流需求. 如图2所示,BT为3节AA电池,为U1供电. U1采用双极型的开关型霍尔传感器HAL248. 当磁铁接近传感器时,VO端子输出低电平;反之,输出高电平. 由于该传感器双极型,安装时无需区分磁铁南北极,方便生产调试. 打开桶盖时,桶盖上的磁铁靠近U1,VO端子输出低电平,通过电容C1将Q2的基极电平拉低,三极管导通. U2上电后,生成3. 3 V电源,使单片机开机. 开机后,拉高PowerHold节点电平,保证Q2持续导通. 单片机开机完成既定任务后,拉低该节点电平,使Q2截止即可关机. C1和R3起到缓冲作用,使PowerHold节点对电源的控制优先权高于U1. 例如,假设用户开启桶盖后忘了关闭,VO端子保持低电平. 此时单片机拉低PowerHold节点电平,Q1截止,BT正极通过R5,R4,R3对C1充电约0.2 s后,Q2截止整机断电. 此时,用户关闭桶盖时C1放电,经过0.2 s后再次开启桶盖,仍然能够正常开机. R6,R7,C2对BT进行分压,模拟电压送入单片机进行AD转换,判断电池电量,提示用户及时更换电池. U2,C3,C4,C5,L1,R8,R9组成DC-DC同步稳压电路,生成3.3 V直流电源. L1电感作为储能元件,须采用功率电感,布线时紧靠U2.
图2 电源电路
采用Hx711芯片为核心设计的一种重量检测电路. 该电路芯片采用了海芯科技的集成电路专利技术,是一款带低噪声稳压功能,信号放大功能,24位AD转换功能的称重专用芯片. 该芯片采用3. 3 V供电,C9为去耦电容,通过PD_SCK和DOUT引脚与单片机普通IO口连接,输出AD值. Q3在BASE引脚控制下实现导通和关闭,为应变片电桥和ADVDD供电. R10和R12组成分压电路,送入VFB引脚. U3内部的CPU检测VFB引脚电压. 当VFB电压大于1. 25 V时,BASE引脚高电平,Q3关断;反之,BASE引脚低电平,Q3导通. 此闭环回路,可得到2.5 V的电源. 应变片电桥R17在无形变状态下处于平衡状态,Hx711的PIN7和PIN8差分放大后AD输出为0. 当承受重物,应变片发生形变时,阻值发生变化,电桥输出一个与重量成正比的微电压,送入Hx711做放大和AD转换. 根据大米包装和米桶体积,将量程设置为0. 01~12 kg,读数分辨力为0. 01 kg.
图3 重量检测电路
显示屏采用微雪电子的1. 02英寸墨水屏模块,电路连接如图4所示. 该模组显示区域32. 6 mm×18. 6 mm,支持3. 3 V工作电压,分辨率128×80,完全满足智能米桶显示重量、电池电量的需求. 该模块缺点是刷新速度较慢,局部刷新需要0. 3 s,全局刷新需要2 s,对于智能米桶这类屏幕读数更新不频繁的电器而言,无任何影响. 刷新时工作电流典型值8 mA,待机电流典型值5. 2 uA,极大的增加了电池续航能力. 该模组具有8个引脚. 其中CLK引脚连接单片机SPI单元的CLK脚,DIN引脚连接单片机SPI单元的MOSI引脚,实现SPI单向通信. DC引脚连接单片机普通IO口,单片机控制该脚的数字电平切换命令/数据传送状态. BUSY引脚为墨水屏模块的输出脚,低电平表示模块处于忙状态,高电平时单片机可发送命令或者数据.
图4 墨水屏电路
WiFi模块选用ESP8266-01S模块,电路如图5所示. 该模块支持3. 3 V供电,采用UART串口与单片机连接,单片机即可使用AT命令集执行模块复位、WiFi连接、数据发送接收等动作. 该模块具有AirKiss或者SmartConfig功能,用户可以利用手机端给模块设置待连接的WiFi ID和密码. 用户可以很方便的使智能米桶连接到家中的宽带网络中. 该模块CH_PD引脚为使能脚,连接单片机IO口. 该引脚低电平时模块进入低功耗模式,需要接入互联网时单片机将该点置位高电平进入正常模式.
图5 ESP8266-01S模块电路
3 软件设计
软件流程如图6所示. 米桶桶盖打开时,霍尔传感器使能整机电源电路. 单片机上电后,内部单元初始化,然后拉高PowerHold节点电平使电源持续导通. 进入程序主循环,检测电池电量和库存大米重量. 多次检测大米重量,对比判断是否为取米后的值. 如果否,则返回继续主循环;如果是,则将墨水屏刷新,并将重量值存入EEPROM中. 单片机根据多次取米的数据,预测下次订购大米时间. 单片机通过WiFi模块连接互联网,查询当前北京时间. 按照时间区分早餐、午餐和晚餐,遍历历史数据,推测出一日三餐的大米消耗量,达到预测大米订购时间的效果. 当库存量低于阈值时,连接互联网,将下一次大米送货上门时间传输给供应商. 当开机超过3 min或者完成既定任务后,单片机拉低PowerHold节点关机.
图6 软件流程图
用户须将家中的WiFi ID和密码存入米桶电路中,才能接入互联网. 传统的做法是设计一个设置界面和若干按钮,用户经过繁琐的操作,将两串英文和数字存入电路中. 该做法缺点很多,一方面操作繁琐,另一方面增加了智能米桶的制造成本,不适合按键和屏幕资源少的电器使用. 采用ESP8266-01S模块的AIRKISS功能,可以解决此问题. 长按米桶按键后,单片机发送AT命令迫使ESP8266模块进入AIRKISS模式. 此时,打开手机微信端,登陆支持微信配网的公众号(如“安信可科技公众号”),即可将ID和密码通过特定信道发送给米桶[7]. 每当ESP8266模块上电使能时,会自动连接该WiFi信号. 此功能采用单片机的中断接口来完成,流程图如图7所示.
图7 一键配网程序流程
4 测试与小结
对整机进行了长时间测试,其中部分数据如表1所示. 对连续十天的数据进行分析推测,推测出一日三餐大米消耗量大约为:0. 25 kg,0. 46 kg,0. 49 kg,并成功在6月8日8点03分发送数据到服务器,要求6月8日下午购进大米,与实际情况相符. 最小的检测量为0. 01 kg.
以单片机为核心,设计的这款智能米桶,利用霍尔传感器、称重传感器适时检测大米库存,墨水屏显示读数,达到极低平均功耗的效果.根据大米消耗情况预测补充库存时间,利用WiFi模组接入互联网并通知供应商. 验证试验表明,米桶性能稳定,能有效的预测进货时间,给用户带来方便快捷的使用体验.
表1 称重数据记录