陆 锋
(太原工业学院电子工程系,山西太原030008)
儿童在学习时,不知不觉中坐姿产生变化,眼睛距离桌面越来越近。随着学习时间的增加,坐姿不端正会引起劲椎、腰椎的变形和眼睛近视,不利于以后的生长发育。为此设计一款儿童坐姿监测器,可以实时监测用户坐姿和学习时间,当坐姿不正确时做出报警,当学习时间超过预设值时闹铃提醒。
儿童坐姿监测系统主要由单片机核心控制模块、红外测距模块、时钟模块、液晶显示模块、蜂鸣器报警模块和按键输入模块等组成,系统设计总框图如图1所示。
图1 儿童坐姿监测系统总体方案框图
1.1.1 STM32系统电路设计
系统采用低成本、低功耗,专门为嵌入式应用设计的ARM Cortex-M3内核STM32系列单片机[1]。STM32F103VT6片内集成有32~128 K字节的闪存,从6~20 K字节的SRAM,DMA有7个通道,外设定时器、3个USART、2个I2C、2个 SPI、USB2.0全速接口和CAN接口。而且,STM32F103VT6采用封装为LQFP100,包含80个快速I/O口,所有I/O口与16个外部中断构成映射关系[2-3]。
1.1.2 超声波测距模块
SHARP公司的GP 2Y0A21YK0F和GP2Y0A02 YK0F测距模块是一种距离测量传感器单元,该类传感器基于三角测量原理工作,而且波束角比较小,在测量用户距离时,不会因为角度而造成误差[4]。红外传感器的发射端口会发射红外光束,当遇到物体的时候,光束会反射到接收端[5]。本设计中,因为监测儿童坐姿的水平距离较近,而斜方向的距离较远,所以测量角度较大的斜方向的两个传感器选用了测距范围为20~150 cm的GP2Y0A02YK0F测距模块,而水平的测距模块和斜向角度较小的传感器选用了测距范围为10~80 cm的GP 2Y0A21YK0F测距模块。
如图2所示,红外测距传感器测量两个不同角度的用户距离b和c值,根据公式(1)、余弦定理和已知的红外夹角α,计算三角形的第三边长a。然后再根据余弦定理和公式(2),计算用户与桌面所成的角度β。
图2 坐姿监测原理图
系统上电初始化完成后,首先开始采集DS1302时钟模块的数据,从DS1302时钟模块中读取日期、时间数据,将日期、时间数据进行字符串的拼接,将拼接好的数据通过串行的方式发送到LCD12864液晶显示屏上显示,重复进行这个采集时间数据并显示的过程。开启单片机的外部中断,等待用户按键被按下,当按键被按下时,检测是否改变时间,若修改时钟的时间信息,则将用户设定的时间存储到DS1302时钟芯片中。若不改变时间,则检测是否设定闹钟,若设定闹钟,则将设定的闹铃进行存储。单片机还需要每秒钟检测当前时间是否是闹铃设定的时间,若是闹铃设定的时间,则蜂鸣器实现闹钟提醒,否则不提醒。
单片机通过通过数模转换模块ADC采集50次水平红外测距模块的数据,将采集到的50次距离数据进行中值滤波,得到一个滤波后的距离值。再通过单片机的数模转换模块ADC,采集50次斜向红外测距模块的数据,将采集的50次斜向距离数据也进行中值滤波,得到滤波后的斜向距离值。通过两次测量的距离,计算用户与桌面所成的角度。依靠这个原理,用设计中安装的三个红外测距模块测出用户的三个坐姿角度,然后对三个坐姿角度再进行中值滤波得到最终的用户坐姿角度。最后,判断用户与桌面所成的角度是否介于规定的角度之间,若不在规定的范围内,则蜂鸣器进行报警,否则不做出任何提示信息。上述过程循环进行。
图3所示为超声波测距系统的机械结构图,3个超声波测距模块安装在由3D打印机打印的机械结构上。工作时,只需要将该系统放置在儿童的书桌前方即可完成儿童坐姿的监测。
图3 超声波测距系统的机械结构图
软件设计需要实现的功能主要有:坐姿监测、坐姿报警、显示时间、闹钟报警和按键调时。图3描述了儿童坐姿监测系统主要的程序设计流程。
以STM32单片机为控制器,采集红外测距模块的数据,通过对数据的计算分析,来判定使用者是否为正确的坐姿,重复监测,若发现坐姿不正确,则控制蜂鸣器模块报警,直到监测到使用者变成正确的坐姿才停止报警。同时,采集DS1302时钟模块的数据,通过得到的时钟数据得到当前的日期时间,并把时间信息显示在LCD12864液晶显示屏上,并且当儿童学习时间超过预设值时,系统闹铃提醒用户休息。
完成儿童坐姿监测系统的软、硬件设计后,验证了该系统是否可以按要求实现功能。首先,通过计算得出用户的坐姿角度理论值。然后启动系统,对坐姿监测器计算的坐姿角度进行测试,记录不同情况的坐姿角度参数。最后,将测试值与理论值进行比较分析,结果表明,本系统满足功能及精度的要求。
图4 程序设计流程图