基于SVM的智能夜灯设计*
2021-03-05刘欣宇杨延宁卜文嘉
刘欣宇,杨延宁,2,卜文嘉,刘 珂,吕 杨
(1.延安大学 物理与电子信息学院,陕西 延安 716000;2.陕西省能源大数据智能处理省市共建重点实验室,陕西 延安 716000)
0 引 言
随着人们的生活水平不断提高,在如今的各种压力下,睡眠质量不高成为日常生活中较为普遍的问题。现在很多人晚上都有开台灯的习惯,灯光会在黑夜中给人带来安全感,同时也可以解决诸多不便。为此,很多人在卧室安装了夜灯。传统夜灯在使用时对身体有一定的危害,夜晚光线的照射容易造成睡眠失调,夜间灯光的照射同时会使睡眠时褪色素的分泌紊乱,尤其是儿童和青年。动物实验表明,全天都被灯光照射时,某些种类癌症的发病率会急剧增加。实验中发现夜间长时间被灯光照射或经常在夜晚苏醒的女性,乳腺癌的发生率提高[1]。基于以上问题,本文研究基于模型识别的助眠夜灯控制系统,设计出适合大众使用的助眠夜灯控制设备,来代替传统的夜灯。对用户的心率和运动数据进行判断获取用户的睡眠状态[2],在夜间休息时可播放角调音乐帮助用户有效缓解疲劳[3,4],快速进入睡眠状态,提高用户的睡眠质量。
1 硬件设计
系统采用MSP430G2553作为主控芯片,硬件主要分为手环模块、夜灯模块、蓝牙模块。其中手环模块包括心率模块和运动运动状况传感器的设计。夜灯模块又细分为主控制器(micro programmed control unit,MCU)、灯光控制、时钟和显示模块以及音乐模块的设计。系统利用MSP430G2553控制器通过心率传感器和三轴加速度传感器ADXL362进行数据采集,并在MSP430G2553上通过顺序最小优化算法(sequential minimum optimization,SMO)实现[5],采用支持向量机(support vector machine,SVM)算法模型识别出用户是否穿戴手环、是否处于睡眠,并通过蓝牙将识别的用户状态发送给夜灯部分,夜灯处理器MSP430G2553接受来自手环的用户状态数据并结合时钟芯片DS1302的时间数据控制不同颜色灯光亮灭和音乐播放。硬件部分包括充放电模块、手环模块和夜灯模块部分,手环模块和夜灯模块的控制芯片和电源管理都采用相同的方式,两部分之间通过蓝牙CC2541进行数据通信,硬件设计原理如图1所示。
图1 硬件设计原理
1.1 充放电模块设计
供电部分采用锂电池供电,在夜灯部分采用18650型号的锂电池,而在手环部分采用体积较小的602030锂电池。充电模块采用锂电池专用充电芯片TP4056。充放电电路如图2所示,放电时通过线性稳压器1117—3.3使得输出电压维持在3.3 V。
图2 电池充放电模块
1.2 手环模块设计
手环模块的硬件连线如图3所示,除了电源、蓝牙和控制器外还包括了心率传感器和三轴传感器的设计。
图3 手环部分原理图设计
1)心率模块的设计。采用了光线的反射原理,当一束光照在皮肤时,将会在皮肤表层发生反射与透射[6]。当心脏收缩时,血管中的血液变多,被血液吸收的光变多,反射光变少;心脏舒张时,血管中的血液变少,将会有更多的光线被反射。而红色的血液对绿光的吸收率最大,使用绿光将会使得测得的数据更加准确,因此选择光电容积波描述法采集心率数据[7]。心律采集模块电路如图4所示,由三极管Q3控制心率采集模块的工作,D2为发绿光的二极管,Q2接收发射回来的光线并转换为电信号。通过运放OPA2320两级放大后,将放大的电信号输入单片机进行数据采集与处理。
图4 心率采集模块设计
2)运动状况采集电路设计。为了得到用户使用时的加速度情况,采用三轴加速度传感器识别出用户的状态,采用低功耗、高分辨率的ADXL362三轴传感器ADXL362,对运动状况进行采集,运动时功耗可低至270 nA。
1.3 夜灯模块设计
夜灯模块电路图如图5所示,主要包括主控MCU、蓝牙部分、灯光控制部分、时钟、显示和音乐控制等部分。
图5 夜灯模块电路
由于CKE8002功放芯片中不含自举、耦合电容或缓冲网络,该功放芯片适合用在音量较小,重量较轻的低功耗系统设计之中。因此,采用CKE8002功放芯片将以上解码后的MP3进行功率放大。屏幕显示选取了OLED液晶显示屏,其为I2C接口,便于用户编程使用。该显示屏没有字库,在程序的编写时,需要自己建立相应的字库文件。
2 软件设计
2.1 手环程序设计
在数据处理中采用SVM算法判断睡眠状态[8,9]。在睡眠状态的判断中设置了三种睡眠状态,采用一对多的方式首先识别出清醒状态与睡眠状态,其次再对睡眠状态进行分类,识别出深度睡眠与浅度睡眠。手环的程序流程图如图6所示,程序中主要有两处判断语句,首先判断用户是否佩戴手环,其次判断夜灯是否能和手环正常连接[10,11]。当用户未能正确佩戴手环时或者手环未能收到来自夜灯的指令时,将开启节能模式,节能模式只有当串口接收到来自夜灯的指令时才能退出。
图6 手环程序逻辑
2.2 夜灯程序逻辑设计
夜灯程序逻辑设计如图7所示,夜灯在处于非夜间的情况下,先给手环发送指令,然后再接收手环的数据。如果时间为白天或者未能接收到手环的数据,则开启节能模式[10]。系统的夜间时间,用户可通过按键自行设定,接收到不同的数据时,夜灯会根据相应的时间做出不同的处理。
图7 夜灯程序逻辑
3 系统调试
1)音乐与灯驱动电路调试。采用光耦PC817进行了数字电路和模拟电路的隔离,当MCU输出高电平时光耦导通,MOS管处于导通状态,由于IRF3205的导通电压为4.5 V,因此可不用电阻进行分压。在输出端为了防止光耦不导通时的悬空状态,因此加入一下拉电阻,使得不导通时为低电平。并且导通后音乐模块得到的电压为Q4的导通电压。
2)OLED显示的调试。在使用OLED进行显示时,需要用到不同大小、不同分辨率的字。在写入不同大小的字时需要建立不同的字库,采用不同的写入函数来实现每行的写入。例如显示分辨率为8×16的符号时,采用一次点亮一行中16个相应的发光OLED,并重复8次点亮,得到相应的字符显示。
3)三轴加速度传感器调试[12]。调试三轴加速度时,测了传感器上10组典型数据,将三轴数据相比较可得出,每个相应的轴竖直时,得到的数据为1 024;水平放置时,得到的数据为0(负数部分采用了反码格式存储),表明传感器正常工作。在采集睡眠数据时,利用数据之间的变化情况,进行模型识别,得到相应的睡眠状态数据。
4)心率检测模块调试[13]。心率检测模块得到得波形图如图8所示,图中左上波形来自左手食指,右上波形来自右手食指,左下波形来自左手手腕,右下波形来自右手手腕。
图8 人体不同部位心率模块测得波形
由波形图可看出每次心跳时,输出信号将会有所变换,得到波形变换的频率就能得到每分钟的脉搏数。并且左手和右手之间测得的波形存在不同。在调试心率模块中,采用了AD采样的方式,避免了外接比较器使得手环体积变大。首先测的未佩戴手环时心率模块得到的AD数值如表1所示。
表1 未佩戴手环时心率模块得到的AD值
而佩戴手环时得数据如表2所示,佩戴手环时,最大测得AD值为533,最小值为490。
表2 佩戴手环时心率模块得到的AD值
由表1与表2的数据可知测脉搏时波形最大AD值在533左右,因此可以通过定时器测得两个波峰之间的时间差。为了避免不同人的脉搏得到的AD值不一样,采用了取中间值525作为波形的开始,调试中采用了20 ms的定时器,采用t计量两个波形之间的时间(及第一个AD值为525到第三个AD值为525一共经历的20 ms的个数),最后的心率可通过以下等式计算得到,n取计算结果的整数部分
(1)
5)软件调试。除开硬件的控制外,对于夜灯与手环之间蓝牙的联合调试。定义蓝牙收发命令后,进行手环与夜灯的联合调试,检查夜灯各部分工作状况。
4 结 论
设计了一种基于SVM的智能睡眠夜灯。主要从硬件和软件两个部分进行设计,系统可以实现高准确性控制。相比传统的夜灯,增加了帮助睡眠的功能。本文还有一些工作有待研究和改进,主要有几个方面:1)在睡眠状态的检测中,还需加入更多参数,比如声音、呼吸、体温等可以进一步增加睡眠状态检测的准确性,提高系统的可信度,也使系统更加全面。2)使用该手环检测白天的运动数据,根据睡眠状况和白天的运动情况给出健康指标。3)设计上位机,形成一个健康管理,这样能实时检测用户的健康水平,建立一个用户完整的健康系统。