陈若曦 刘立才
(安顺学院电子信息工程学院,贵州 安顺 561000)
随着工作压力的不断增加,拥有一个好的睡眠变得越来越重要。有关数据统计,在全球患有睡眠相关医学问题的人群中,中国人占到了 38.2%。此外,每年发生的道路交通事故中,有 80%的重大交通事故都是与司机睡眠不足有关的。相关的调查研究表明,现在全球睡眠呼吸障碍人群在成年人中的比例已经达到 2%~4%,患睡眠障碍的人数已经达到 42.7%左右,中国失眠人数已经超过 3 亿,睡眠障碍人群近 5000 万[1]。枕头和人们是睡眠质量息息相关,拥有一款能够带来舒适感的同时又能缓解疲劳的枕头变得尤为重要。然而,功能齐全效果较好的类型其价格都十分昂贵,普通人群难以消费,现在市面上很难找到既经济实惠又具有完善功能性的枕头。针对功能性睡眠枕的开发设计也很少。本文以孙世昌等[2]研究的“基于嵌入系统技术的新型智能枕头开发研究”为基础,探索设计一款新型依赖于嵌入式技术的便携式多功能枕头,更好地改善人们的睡眠质量。
本文设计的多功能枕头系统,可以实现在睡眠使用时的按摩、换气的智能化。通过单片机搭配体温监测模块进行相关环境数据的智能化监测。体温监测模块通过相关的传感器进行环境数据采集,后通过管脚传输到单片机处理单元,单片机处理单元对数据进行处理,利用显示模块将相关信息展现出来。在整个设计的流程中,以 STM32 单片机作为控制核心,包含了体温监测模块、OLED 显示模块、电机振动驱动模块、电机换气驱动模块、电源模块和按键模块,系统整体原理框图如图 1 所示。
图1 系统总体框图
由于本设计对于环境监测数据及时性的要求,STM32 单片机能够轻松胜任工作要求。该单片机在当下微控制系统中的市场占比比较大,相关的开发环境、开发文档、开发技术也比较完善。非常适合相关检测系统的开发。本设计设计的控制核心由 3.3V 的稳压电源电路、 LC(π 型)滤波电路、系统按键复位电路、程序下载及串口调试电路等共同组合而成。3.3V 稳压电路采用芯片 AMS1117-3.3 为主要支撑元件,可以将通过电源线从外部输入的 5V 直流电压转换为本设计主控核心所需要的 3.3V,并且外接电容用于滤波增强输出电压的稳定性,如图 2 中 I 所示。此外本设计所使用的单片机可使用其内置晶振,因此无需外接晶振电路。
图2 STM32单片机主控模块的电路原理图
本设计使用的 LM75A 芯片作为温度监测系统的核心。LM75A 能提供较为精准的温度信息,通过简单计算便能直接得到当前温度,且能直接编程温度阈值等为高效的工作提供帮助。其连接如图 2 中 II 所示,LM75A 这款温度传感器不仅拥有 I2C 数字控制接口,还同时拥有三个可选的(A0、A1、A2)地址选择引脚。但在本设计中我们仅使用一个传感器即可,因此这三个逻辑地址选择引脚(A0、A1、A2)接地,此外,SDA、SCL 两串行接口分别与10k 的上拉电阻连接后再与主控制核心相连[3]。引脚功能如表 1 所示。
表1 温度检测模块引脚功能描述
OLED 显示模块是现在嵌入式系统中人机交互显示工作主要的作用模块,如图 2 中 III 所示,该模块通过电流控制二极管发光,不需要背光源进行显示发光工作。工作温度广泛,能够兼容不同困难的工作环境,OLED 模块的分辨率也较高。该模块显示的数据比较全面,同时兼容多种数据显示格式,OLED 显示模块在保证数据显示的高效下也兼容了低功耗的特点,供电电压的选择也比较多,兼容 3.3V 和 5V。OLED 显示模块也有多种工控制指令,能够设置显示亮度、显示对比度等。该显示模块也能够兼容多种接口(并行数据接口方式、 SPI 接口方式、IIC 接口方式),OLED 显示模块通过硬件控制进行不同接口模式的设置[4]。多种接口方式铸就该显示模块的兼容性,不同的数据接口模式的相关控制信号发送不同、需要的引脚数量也不同。但是系统的复位引脚 RST 引脚的控制方式不变。系统在进行工作的时候,搭配数据传输引脚、信号选择引脚实现数据显示工作。在本设计中的引脚功能如表 2 所示。
表2 OLED功能描述
本设计所使用的按摩和换气电机的驱动电路如图2中IV所示,在该电路中使用了L298N电机驱动模块,用于驱动和调速两个振动按摩电机以及两个换气电机。将四个电机分别连接电机驱动模块两端,去掉使能通道跳线帽并与单片机连接,控制通道 A 负责振动按摩电机的逻辑输入,控制通道B负责换气电机的逻辑输入。通过调节占空比达到控制 PWM 对使能端的输出实现对振动按摩电机以及换气电机的控制。引脚及功能描述见表3。
表3 电机引脚及功能描述
关于降温换气风扇设计,由于 30 至 40 分贝是人体睡眠时的理想环境,当噪声超过 50 分贝时就会一定的影响睡眠和休息,因此系统采用静音风扇设计,通过降低风扇的转速达到降低噪音的效果。此外,振动按摩设计所采用的振动电机预设振动频率为 100Hz,由于振动强度整体较弱,避免了强度按摩可能对颈部造成的伤害,通过按键调节不同的振动强度也可用于肩部、颈部等不同的部位按摩,因此更加适宜于本设计想要达到的舒缓按摩及提供中老年人使用的目的。
本设计使用了三个独立按键为整个系统的功能进行设置和切换,如图 2 中 V 所示。其中三个功能性的独立按键分别与 STM32F103C8T6 的 PC13、PC14、PC15 端口相连。以 KEY1 按键为例,当按键按下后按键内部导通,PC13 直接接到 GND 上检测为低电平,当按键松开后按键内部断开,PC13 悬空默认为高电平,单片机程序通过判断 PC13 的高低电平的状态就可以知道按键是否有按下操作[5]。同理 KEY2 和 KEY3 检测也是一样的原理。在本设计中,三个按键分别为切换、加/开启和减/关闭功能。
本设计使用 STM32F103 作为主控,通过主控单片机、外围检测设备进行环境数据的采集以及转化功能,该系统能够对检测到的数据进行及时监控。整个系统的逻辑处理过程中,首先要进行各个检测设备、传输引脚的初始化。能够在系统工作之前对相关的硬件进行检测,方便相关问题的进一步定位,能够及时的进行外围检测设备的监测,避免逻辑阶段数据获取问题。通过编程手段对硬件模块的配置进行封装,方便后期数据获取。当各个外围模块初始化成功后,进行数据的逻辑处理工作,命令温度传感器 LM75 检测人体接触枕头的体温,并通过 OLED 将相关的数据显示出来,通过切换按键切换各个功能,通过开启与关闭按键设定是否需要按摩功能或者是否需要换气功能。如果开启按摩功能,那就启动两个振动电机进行振动按摩;如果开启换气功能,那就驱动两个风扇转动进行模拟换气;如果开启唤醒功能,则设定现在时间及唤醒时间,当到达指定时刻,振动模块及蜂鸣器模块将同时启动,唤醒使用者;如果开启自动降温功能,则设定一个最高温度阈值,当达到温度阈值时,将开启两个换气电机进行降温。
LM75A 温度检测电路具体的温度获取及控制流程图如图 3 所示,其中温度获取显示流程如图 3(a)所示,该温度检测模块所使用的温度检测芯片拥有一个只读寄存器,其包含高八位和低八位的两个数据字节。其中有 11 位通过二进制补码的形式来存放温度数据。相关电压的上拉、下拉是通过增加时序信息进行传输。单片机读取点能够进行数据的还原,实现温度数据的读取。温度控制程序主要是判断温度检测模块测得的温度是否大于或等于用户自主设立的温度上限阈值,来开启或关闭降温换气电路,以达到自动控温的目的,其流程图如图 3(b)所示。
图3 温度获取及控制流程图(a) 温度获取显示流程 b)温度控制程序流程
OLED 显示模块主要通过多个信号选择引脚以及数据传输引脚进行数据的显示工作。相关数据的显示主要通过初始化、指令操作、数据操作三个步骤进行实现。通过信号引脚设置数据读写控制信号、数据写入信号、命令/数据标志信号。系统首先把准备好数据源,然后通过 DC 引脚设置命令/数据模式(高电平数据、低电平命令模式)。当读取数据时,将片选管脚 CS 拉低,设置 RD 引脚上拉,把数据存储到数据线上,再将片选管脚 CS 拉高。当写入数据时,将片选管脚 CS 拉低,设置 WR 引脚上拉,使得数据写入到 OLED 内嵌的驱动中,再片选管脚 CS 拉高。流程图如图 4 所示。
图4 显示模块工作流程图
基于本设计简单便捷的设计理念,我提出了这种可携带可放置的装置外形,如图 5 所示,该装置可适用于现有的枕头:将枕头置于通风管道之上,后侧接触温度检测装置,使用者可通过上方的显示屏以及按键区域来开启装置的功能。也可用同样方式制作成一体化的枕头投入使用。可拆卸的通风管道从枕头下部穿过,出风口置于肩膀两侧,根据伯努利原理,由于通风管道的入口处压强小于肩膀两侧的出口,而为了减小压强,通风管道内的气体的流速就会越来越大,以达到一个较高的流速,使吹出的气体送到使用者上半身的大部分,满足降温的效果。
图5 外壳部分概念图
本文设计的多功能枕头系统在投入实际使用前,要进行相关硬件性能测试。对于每个模块是否能够在各种环境中进行数据的获取工作进行了检测。在五组测试结果中提取重要部分列出,具体的情况如表4所示。
表4 不同环境下各模块测试结果
运行测试步骤如下:将系统接入电源,开启振动按摩功能、按加键提高振动强度、按减键减弱震动强度、关闭振动按摩功能,振动电机随之开启关闭;开启换气降温功能、按加键提高电机转速、按减键降低电机转速、关闭降温换气功能,换气电机随之开启关闭;设定当前时间及定时唤醒时间,当达到指定时刻,振动电机与蜂鸣器同时开启,按动任一按键,定时唤醒功能关闭;设定温度上限,当温度检测到当前环境温度大于或等于设定的上限值,换气电机自动开启,当温度检测到当前环境温度小于设定的上限值,换气电机自动关闭。实物详情如图 6、图 7、图 8 所示。
图6 振动按摩、换气功能演示
图7 定时唤醒功能演示
图8 温度阈值自动降温功能演示
课题使用嵌入式 STM32F103C8T6 单片机控制 LM75A 温度检测芯片来监测用户的实时睡眠温度,通过按键实现功能切换以及参数设置。现在市场上大部分功能枕头监测数据都集中在计算翻身次数和深度睡眠时长上,本设计监测睡眠温度同时实现按摩或换气功能,旨在减缓使用者的疲劳和改善睡眠质量。所设计的多功能枕头便于携带,功能完善,有很大的市场价值和发展前景,能带给人们更加舒适的睡眠体验。