基于ATmega328P单片机的智能婴儿床系统设计
2021-09-23吴冬雨
吴冬雨
(福州软件职业技术学院智能产业学院,福建福州 350003)
1 智能婴儿床的整体设计
本文介绍的智能婴儿床系统采用ATmega328P单片机作为主控芯片基于Arduino IDE设计摇篮电机、温湿度采集、哭声检测、遮阳板控制、红外电子围栏、助眠音乐播放、通风加热及辅助照明等系统的控制程序。基于App Inventor平台设计智能婴儿床手机App上位机系统。婴儿床能够接收手机App上位机下发的控制指令,对婴儿床的工作模式、摇晃频率、助眠音乐等进行控制,并能够接收和显示婴儿床实时回传的温湿度数据,同时根据环境温湿度自动控制风扇调速及加热垫温度为婴儿提供舒适的休息环境。
2 智能婴儿床的硬件设计
智能婴儿床由采用ATmega328P单片机的Arduino NANO控制板作为核心控制器。采用12V电压为电机及加热系统供电,集成5V稳压电路为控制系统供电[1]。婴儿床由9大电路子系统组成,能够实现对婴儿床的实时监控和智能化控制(如图1所示)。
图1 总体系统框图Fig.1 Overall system diagram
(1)蓝牙通信系统。采用串口通信的方式,由JDY-31蓝牙模块接收手机App下发的控制指令,通过串口TXD信号线传输指令到单片机的RXD接收端口。单片机根据指令,控制婴儿床的工作模式。
(2)MP3助眠系统。由5路单片机I/O控制信号进行控制,用户可将自行录制或在互联网上下载的MP3格式助眠音频文件使用MICRO USB数据线连接MY-2480 MP3模块进行存储。由单片机控制播放音量及曲目。
(3)温湿度监测系统。采用内置AD采样控制器的DHT11温湿度传感器对婴儿床内的环境进行实时监测。通过数据总线方式将测得的温湿度数据回传给单片机处理。单片机能够根据当前环境温湿度智能调节散热风扇转速及加热垫功率。
(4)LED照明系统。采用3W LED照明灯,由继电器进行控制,用户可通过手机App控制照明灯的开光。照明系统搭载有柔光灯罩,能够在给婴儿喂食或查看婴儿状态时提供温和的环境补光。
(5)电机控制系统。采用TB6612电机驱动模块独立驱动调速风扇电机及摇篮摇摆电机。通过4路单片机电平变化信号控制摇篮左右摇摆及调速风扇的工作模式。单片机通过定时器产生PWM(脉宽调制)信号,根据正脉宽的占空比控制电机的转速[2]。
(6)加热垫控制系统。婴儿床的加热垫由MOS管驱动,通过分布在婴儿床底部的电热丝均匀加热。同时搭载有NTC热敏电阻,能够对加热区域的温度进行实时采样监控,温度超过设定阈值时单片机将控制加热回路自动断电。
(7)遮阳板控制系统。由MG90舵机控制遮阳板的转角,用户可在手机App上滑动遮阳板角度调节滑块在0-180°区间内实现无极调控。通过发送周期为20ms的脉冲信号控制舵机转角,20ms内高电平占空比越高,舵机转角度数越大。
(8)哭声检测系统。采用电容式麦克风采集环境声音,当检测到尖锐且高分贝的婴儿哭声时,会向单片机的D8 I/O口输出一个低电平信号。单片机接收并处理收到的预警信号,通过手机App向用户弹窗预警。用户亦可在App上设置“自动带娃”模式,当检测到哭声时自动播放催眠音乐并启动摇篮电机摇晃摇篮。
(9)红外电子围栏。在婴儿床的围栏区域安装红外传感器,当开启红外预警功能时,系统能够检测婴儿床上的婴儿是否有尝试翻越“围栏”的异常动态,并发出提示音,同时手机App发送弹框提醒。
3 智能婴儿床软件设计
软件系统主要包括ATmega328P单片机的控制程序和智能婴儿床手机App上位机程序。
ATmega328P单片机的控制程序是在Arduino IDE集成开发环境下设计完成的。当智能婴儿床通电时,系统将等待对硬件系统的初始化。初始化完成,进入正常工作模式后,单片机的2个线程将轮询执行实时温湿度数据采集及蓝牙串口数据扫描。当扫描到蓝牙串口有控制指令传入时,将接收到的控制指令传入buff[]数组临时存储。并根据buff数组调度对应的子程序工作。控制及采集子程序主要包括:
(1)蓝牙串口接收子程序:通过Arduino的串口缓存区扫描指令Serial.available()扫描串口缓存区是否接收到控制指令字符串,若接收到字符串且字符串的长度等于4,则调用Serial.read()函数接收串口数据,并将串口接收到的数据依次存入buff[]字符串数组。手机App下达的控制指令由“单字节控制指令+三字节控制参数”字符串组成。例如:控制调速风扇全速工作,则手机App将发送字符串控制指令“F255”。
(2)温湿度采集子程序:DHT11温湿度传感器与单片机采用“单总线”方式通信,采集数据时首先由单片机I/O口在输出模式下发送40ms的拉低信号和30us的高电平信号,告知传感器可以开始回传数据。信号发送完成后立即将单片机I/O口切换至输入模式,等待接收DHT11传感器回传的温湿度数据。数据传输部分由“湿度高字节”、“湿度低字节”、“温度高字节”、“温度低字节”及“校正位”组成,共计40位二进制数据。数据“0”由54us低电平和一个68-74us的高电平组成。单片机将接收到的温湿度数据进行处理、转换后传输至手机App显示。
(3)摇篮电机控制子程序:摇篮电机的控制是由单片机的3个I/O口发送控制信号给TB6612电机驱动模块。在电机运动方向的控制上由D2、D3两个I/O组合控制。当D2输出高电平,D3输出低电平时,摇篮电机向左侧运动;当D2输出低电平,D3输出高电平时,摇篮电机向右运动;D2、D3均输出低电平时电机停止运转。电机的速度控制是由单片机的D11 I/O口通过调用analogWrite( )函数以490Hz的频率输出PWM控制信号进行控制。当电机驱动模块接收到高电平信号时使能电机工作,接收到低电平信号时终止电机工作。
(4)助眠音乐播放子程序:智能婴儿床的助眠功能是由MY-2480 MP3模块播放助眠音频辅助婴儿进入睡眠。MP3模块由单片机的A0-A4 I/O口控制。当A0、A2输出高电平,A1、A3、A4输出低电平时控制播放音量增加;当A0-A4全部输出低电平时,控制播放音量减小[3]。
(5)加热及温控子程序:温控系统由10KRT NTC热敏电阻实时监测加热垫表面温度。利用ADC对温控回路进行模拟量采样,并将采样电压数据换算为热敏电阻阻值,并根据公式Rt=R*EXP(B*(1/T1-1/T2))计算当前加热垫表面温度。其中Rt为当前温度下测得的热敏电阻阻值,R是热敏电阻在T2常温下的标称阻值,由于选用的是10KRT的热敏电阻,R为常量10k,B值为热敏电阻的固有参数,依数据手册查询,本设计中采用的热敏电阻B值为3470,T2为常温温度即25℃下的开尔文温度273.15+25。婴儿床的加热丝则是由MOS管控制,用户可通过手机App设置自动加热模式,当检测到环境温度低于15摄氏度且加热垫表面温度低于25℃时,单片机的D9口输出高电平时驱动加热丝工作;当加热垫表面温度高于37.5℃时,D9口输出低电平加热丝停止工作[4]。
在手机App上位机的设计上采用App Inventor平台进行软件设计(如图2所示)。在手机App上位机的设计上分为“用户界面”设计及“逻辑设计”两大板块。“用户界面”设计上通过添加“列表选择框”控件实现蓝牙设备的选择与连接;添加“按钮”控件实现婴儿床的助眠音乐播放、加热功能、风扇功能、红外电子围栏等功能的启动;添加“标签”控件实现对实时回传的温湿度数据的显示;添加“滑动条”控件实现对摇篮电机转速及风扇速度的控制;添加“对话框”控件实现红外电子围栏的预警提示功能。“逻辑设计上”通过创建蓝牙客户端实现与婴儿床的JDY-31蓝牙模块通信,当功能按键被按下时通过手机蓝牙向婴儿床发送对应控制指令。通过建立定时器控件,以每秒200次的扫描频率扫描蓝牙客户端是否有数据传入,若有数据传入则对数据进行拆包和解析,并在用户界面的温湿度显示区域显示接收到的数据。
图2 App用户界面Fig.2 App user interface
由单片机向手机App上位机发送的每帧数据包由12个字符的字符串组成。数据包的第1位、第4位、第9位、第11位为固定标识符,当App获取到数据包时会先对标识符进行校验,若标识符不符,则认为这一帧数据为无效数据。App接收到有效数据包时,将对数据进行拆包处理。数据包的第2~3位为湿度参数、第5~8位为温度参数。第10位和第12位为哭声检测报警状态位及红外电子围栏报警状态位,当参数为0时代表没有检测到异常,参数为1为触发报警。例如:当前温度是30.1℃,湿度为68%RH,此时红外电子围栏检测到异常报警,但没有检测到婴儿哭声,则这帧数据包为“H68T30.1K0B1”。
4 结语
智能婴儿床系统,引入了智能化控制的理念,改变了传统功能单一的婴儿床。通过传感器检测婴儿床的环境参数,并能够通过单片机控制婴儿床的通风及加热,为小宝宝提供冬暖夏凉的舒适体验,用户仅需通过手机App操作即可轻松完成婴儿床的使用。