Arduino下自适应助眠系统设计探析

Arduino下自适应助眠系统设计探析

摘要:针对目前主流助眠系统只注重数据的检测而非睡眠的矫正,导致普通用户单凭专业性较强的睡眠检测数据无法得知自己的睡眠状况,更无从改善自身睡眠质量的缺陷,文中设计了一款基于Arduino的自适应助眠系统。通过传感器采集室内温湿度、光照度、气压等,并经由WiFi模块上传至程序端,程序根据采集到的数据修改内置的睡眠模型,进而借助Arduino实现对空调、加湿器、风扇、灯光等的控制,循环重复上述过程,可达到自适应调节的效果。测试结果表明,所设计系统可以在一般环境中稳定运行,并能起到较好的助眠效果。

关键词:Arduino;助眠系统;睡眠环境监测;物联网;传感器网络;睡眠模型

0引言

如果每天按睡眠8h计算,那么人的一生有1/3的时间是在睡眠中度过的。睡眠质量的好坏与人的心理和身体健康息息相关,而影响睡眠质量的重要因素之一就是睡眠环境。随着物联网技术的迅猛发展,带动了传感器网络和智能家居的快速发展[1]。智能家居基于物联网等技术,对家居环境内的家电控制、环境监控、信息处理、娱乐等功能进行集成化管理[2],已成为人、物、环境之间互联互通的重要表现[3]。现有与睡眠相关的物联网产品几乎均只能对睡眠质量进行监测,仅由传感器采集睡眠数据,虽然可以得到睡眠质量的数据,但对改善睡眠质量并无裨益。因此依托智能家居的助眠系统便应运而生。本文系统以改善睡眠质量为突破点,借助传感器网络进行数据采集,通过手机端程序进行数据分析,并经由Arduino实现对智能家居的控制,实时自适应调节睡眠环境,以达到改善睡眠质量的目的。

1系统整体架构

基于健康行为学理论,并查阅相关文献[4]对影响用户睡眠质量的影响因子进行调查研究,并将其结果转化为计算机可以处理的数据。系统架构如图1所示,主要包括如下几方面。(1)监测系统:运用传感器网络对睡眠环境(例如环境光、温湿度、气压等)进行实时监测,并通过WiFi模块将数据上传至小程序端。(2)矫正系统:程序端接收到监测系统传来的数据之后,通过Arduino控制智能家居(米家),对用户睡眠环境中偏离正常值的环境因子进行矫正。(3)反馈系统:通过手机内置的陀螺仪对用户睡眠状态进行检测[5],并作为反馈因子作用于前述矫正系统,实现系统的自适应调节。

2系统硬件设计

2.1传感器网络。2.1.1BMP180气压传感器BMP180是一款高精度、小体积、超低能耗的气压传感器[6],其工作电压为1.8~3.6V,典型工作电压为2.5V,内部包含电阻式压力传感器、A/D转换器和控制单元,其中,控制单元包括E2PROM和I2C接口。读取BMP180时会直接传送没有经过补偿的温度值和压力值,而在E2PROM中则储存了176位单独的校准数据,这些数据将对读取的温度压力值进行补偿,176位的E2PROM被划分为11个字,每个字16位,这样就包含有11个校准系数,每个器件模块都有自己单独的校准系数,在每一次计算温度、压力数据之前,单片机先读出E2PROM中这些校准数据,然后再开始采集温度数据和压力数据。2.1.2DHT11温湿度传感器DHT11是一款有已校准数字信号输出的温湿度传感器[7],尺寸为28mm×12mm×7.2mm,其湿度精度为±5%RH,温度精度为±2℃,湿度量程为20%RH~90%RH,温度量程为0~50℃,它的数据端口带上拉电阻,连线长度小于20m时使用5kΩ的上拉电阻,采用3.3V供电时连线长度不得大于1m,必要时在VCC和GND间连接一个0.1µF的电容用于去耦滤波。2.1.3HC-SR04超声波测距模块HC-SR04超声波测距模块提供了2~400cm的非接触式距离,性能稳定、测量精度高[8]。HC-SR04需要提供一个10µs以上的脉冲触发信号来激活模块进入工作状态,进入工作状态后,模块内部发出8个40kHz周期电平并检测回波,当检测到有回波信号时输出回响信号,回响信号脉冲宽度与所测距离呈线性相关,为了防止发射信号对回响信号的干扰,触发信号周期取60ms以上。2.1.4WiFi模块WiFi模块保持了ESP-12F的优势。ESP-12F使用的PCB板层为四层,使用上更加稳定,创乐博公司对其进行升级,增加了WiFi模式和远程模式。WiFi模式下该模块产生一个局域网,手机在同一个局域网内控制该模块;而远程模式下只需要模块接入本地的WiFi,理论上就可以实现手机APP远程控制该模块。2.1.5雨滴传感器雨滴传感器是一个模拟/数字输入模块,也叫雨水、雨量传感器,常用于农业[9]检测是否下雨及雨量的大小,转成数字信号(DO)和模拟信号(AO)输出,AO模拟输出可以连接单片机的模拟I/O口,检测滴在上面的雨量大小。DO数字输出可以连接单片机的数字I/O口,检测是否有雨。2.1.6光敏传感器光敏传感器是对外界光信号或光辐射有响应或转换功能的敏感装置。光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。

2.2效应器网络。考虑到可靠性和成本,本文选择米家效应器[10]。米家基于家庭网关和系统软件建立智能家居平台[11],在测试中表现优异。但由于米家暂时不支持个人开发者接入,因此本文选择点灯科技的Blinker库作为中继站,接入小爱音响,进而接入米家智能家居系统,小程序通过前述传感器网络的数据智能调度米家设备,实现环境调节。

3系统软件设计

助眠系统通过ArduinoIDE集成环境完成对睡眠环境数据的采集和处理,系统工作流程如图2所示。系统工作步骤具体如下:将WiFi模块和传感器接入Arduino开发板之后,各个模块开始初始化并准备接受ArduinoIDE信号输入;ArduinoIDE信号经过串口指令发送给Arduino开发板和各个模块;手机通过APP输出规定标准广播信号,WiFi模块识别信号并开始执行操作;各个传感器传回检测到的睡眠环境变化数据。

3.1WiFi模块和手机连接。综合性能和成本,本项目最终采取创乐博公司提供的通信解决方案。通信方案有局域网和远程模式两种连接方式,由于本系统要求持久的信号连接且信号控制的范围较大,因此选择远程模式。在连接远程模式之前,先要将WiFi模块的开关拨到局域网模式,等待WiFi模块上的指示灯长亮,说明已产生热点信息,通过手机搜索热点,再将WiFi模块的开关拨到远程模式,指示灯快速闪烁说明正在配对,输入WiFi密码和模块密码之后,控制手机产生一个广播信号,当WiFi模块指示灯的闪烁频率变慢,说明连接成功。

3.2手机和各个模块传输通信。手机发送的信息由WiFi模块识别,而WiFi模块和手机的通信满足规定的格式化输出,在该格式化的规划内实现自由通信。远程控制RGB灯的输出输入格式如图3所示。在图3中:设备发送的数据以“#”结尾;手机发送的数据以“^”结尾;“$”符号后为模块的名称;RGB代表红、绿、蓝三通道的颜色占比;Arduino开发板读取到WiFi模块中的数据之后,会控制I/O输出,最终控制RGB灯不同颜色的变化。经测试,传感器模块数据可以上传到手机APP中保存,存储于数据库中方便后续分析和数据处理。

3.3可视化界面的使用。在程序端输入设备ID,即WiFi模块密码,便可进入后台数据界面。在界面上可以发送手机信号,显示采集的传感器参数,方便用户查看睡眠环境的参数,同时也有利于程序迭代。远程温湿度采集与曲线的可视化界面如图4所示。

3.4系统测试。各个传感器模块均搭建完成并经过多次的环境测试和数据采集后,与集成度较高的小米传感器相比,该系统传感器对室内环境变化响应快,数据和米家传感器一致,同时,可视化界面的数据样本采集快、显示迅速,APP运行稳定,该系统可以满足用户的长期使用需求,未出现不良记录的现象。所有数据均存储于本地服务器后台,供后期分析睡眠质量的影响因素,为改善睡眠环境提供建议,以达到改善用户睡眠质量的目的。同时,考虑到心理因素对于睡眠质量的影响(例如工作压力)[12],在程序端加入了白噪音,通过舒缓的音乐引导用户减轻压力,提高睡眠质量。

4结语

本文采用Arduino开发板、WiFi模块和手机端程序设计了高效率、低成本、高可靠性、高精度的自适应助眠系统。经一定规模样本测试后证明,本文所设计系统可以在一般环境中正常运行,并能起到较好的助眠效果。

作者:陶恒屹 汤志曹 车行 单位:四川大学