本次设计主要运用的CPU控制器模块是STM32F103C8T6,此系统主要由语音控制模块和机械装置,还有心率检测模块组成,还有一个OLED显示屏来显示智能床的状态。系统总体框图,如下图所示。
image.png
1、主控芯片
选择STM32F103C8T6,是因为它具有提供足够的处理能力以应对大多数常见任务,同时价格便宜,性价比高。有比较成熟的数据资源,经过长时间的使用,在各种环境下表现出较好的稳定性。有比较好的兼容性,方便在系统扩展时进行移植和兼容。有丰富的串行接口,具有很强的通用性。STM32F103C8T6的应用领域非常广泛,上到工业级的设备控制,下到智能玩具。可以广泛应用于智能家居中。可以很好的解决兼容性的问题,如下图所示。
image.png
2、微电机模块
本次微电机,如下图所示。选择步进电机,为了精确地调节脉冲的数量、频率和顺序,需要借助特定的控制电路来执行操作。
image.png
选择步进电机,因为它具有以下优点:
步进电机能够精确控制位置,通常以固定的角度或步长进行移动,具有良好的定位能力。可以很好的控制床头抬起的角度。
相对于一些其他类型的电机,步进电机在大多数应用中不需要闭环反馈系统,可以简化控制系统的设计
结构较为简单,不易出现故障,能长时间稳定工作,适合在智能床这种长期使用的设备中应用。
步进电机在低速时也能提供较高的扭矩,适合需要高转矩的低速应用。
步进电机结构相对简单,通常由较少的部件组成,易于维护和控制。
步进电机与单片机芯片的连接有5个需要连接的接口,分别是VCC、GND、IN1、IN2、IN3、IN4,其中VCC和GND连接到电源上,IN1~IN4连接到STM32的GPIO引脚上。IN1连接到单片机芯片的PB4接口,IN2连接单片机芯片的PB5接口,IN3连接单片机芯片的PB6接口,IN4连接芯片的PB7接口,VCC连接到5V电源接口。GND连接GND,步进电机接线图,如下图所示。
image.png
3、语音操控功能
本次设计使用了ASR-01语音模块,ASR-01语音模块是一种集成了语音识别功能的模块。该模块通常用于嵌入式系统和互联网设备中,能够实现语音指令的识别和处理。通过麦克风将使用者的语音指令转换为电信号,然后将这些信号传送给模块内部的语音识别系统进行处理。
ASR语音模块和单片机芯片连接上有4个需要连接的接口,ASR模块(P3)的串行接口P3的第1接口连接电源,串口P3的第2和第3接口分别接PA9和PA10接口,串口P3的第4接口接GND接口。ASR-01接线图。如下图所示。
image.png
4、心率传感器
本次心率监测采用的是光电传感器,pulse sensor心率传感器作为光电传感器的一种,使用在本次设计中。光电传感器无需与皮肤直接接触或使用电极等侵入性手段,能在不影响用户舒适度的情况下进行检测。能够持续实时地获取心率数据,及时反映用户的身体状况,可以在用户睡眠等较长时间内进行稳定的心率监测。而且可以较为方便地兼容到智能床的结构中,不需要再增加额外的装置。成本较低。
5、电源设计
在本次设计中,针对整个系统的电源配置选取了USB线来供应5V直流电源。如此设计,一方面能够切实保障电源供应的稳固性,另一方面,因USB线的普遍使用,让整个系统在电源获取方面变得更为便利且通用。这种方式使得电路设计得以简化,也强化了系统的稳定性与可靠性。电源经由USB线直接进行供应,其次规避了复杂的电源管理模块,进而降低了系统的整体成本与体积。电源接线图,如下图所示。采用了USB线作为电源输入的电路原理图,从图中能够明确地观察到电源的接线情况与分配方式,这为电路设计提供了直观的认知和分析。这样的设计方式不但体现了出了电路设计的高效特性,而且还确保了系统在实际运用中的稳定运转以及电源供应的可靠程度。
image.png
6、芯片程序设计
智能床的主要主板为STM32F103C8T6,在程序编译语言的选择上采用了主流的C语言,而软件开发平台则选定了Keil5来进行程序编译。这是因为keil5是一款极具功能且得到广泛运用的集成开发环境,其具备丰富的工具与资源,能够高效地开展代码编写、调试以及编译等操作。它对众多微控制器有着良好的支持,从而让我们在针对具体硬件进行开发时变得更为便捷和精准。在后续的阶段中,需要去完成初步软件与程序的测试工作,以此来保障系统能够正常运行。
C语言拥有着无可替代的优势,其语法简洁高效,能够直接对硬件资源进行操作,这对于和底层硬件紧密相连的软件设计来说极为关键。C语言的移植性十分出色,能够轻易地在不同的硬件平台以及操作系统上运行,确保了软件的通用性。与此同时,它的广泛应用以及丰富的资源库,为开发者提供了大量可供借鉴的代码和解决方案。
首先,在运用keil5时,要先创建工程,接着选取系统所使用的STM32单片机,利用C语言进行程序编写,同时建立文件夹以便添加对应的驱动程序。在工程构建完毕之后,就能够进行相应的程序编写工作,最后展开相应的程序编译与调试,查看是否存在差错。Keil µVision5的界面,如下图所示。
image.png
并且软件能够生成HEX文件,将其烧录到单片机里,同时在软件的下方存在着错误和警告信息,这可供编程者去查找错误。
系统的主要程序流程图,主程序中的每个模块都完成初始化。首先,检测模块状态,分析是手动控制还是语音控制,根据手动控制还是语音控制进行不同的控制,进行不同执行指令,来控制单片机执行电机的转动,和显示屏会显示不同的状态参数。心率监测通过检测人体皮肤,得到数据后,经过模数转化,得到数据,显示在屏幕上。主系统具体流程图,如下图所示。
image.png
7、心率模块软件设计
心率模块,在STM32芯片对其串口PA0进行建立了连接并且已经确认心率检测模块状态正常后,完成对心率检测的初始化。然后在pulse. C的子程序中,通过库函数对脉搏波检测模块进行初始化,该函数接受一个函数指针作为参数,用于获取ADC的值,并初始化了一些全局变量,如当前时间、持续时间,原始值、低通滤波值等。在库函数中,作为定时器中断服务函数,每秒中断一次,更新当前时间和持续时间,获取ADC值并进行低通滤波,计算信号强度和自动阈值。根据信号强度和自动阈值判断是否有心跳,如果有心跳,则计算心率并进行滤波,更新有效标志和心率值。最后,通过库函数获取当前的心率值,函数获取当前的信号强度,库函数获取心率的有效性。具体流程图如下图所示。
当光电传感器检测到皮肤对光的吸收变化后,将光的变化转化成光信号,模数转化器光信号转化成电信号,输入到STM32控制器中,STM32将信号转化成数据传输到屏幕上。
image.png
8、系统硬件调试
本设计的硬件部分在Proteus中模拟电路图,并进行仿真测试来验证其它功能模块的兼容性。Proteus提供了强大的电路仿真功能,可以帮助工程师验证电路设计的正确性,确认功能和性能是否符合预期,可以快速调试电路的问题,识别并解决潜在的错误,使用Proteus进行仿真可以节省成本和时间,避免在物理原型上犯错造成不必要的损失。而且是熟悉的仿真软件,使用很方便。
开始先创建一个新的电路设计项目。使用Proteus的元件库中提供的元件工具,在工作区绘制仿真的电路图,包括继电器以及其他所需的元件和连接线路。然后对每个元件设置参数,通过绘制连接线路将各个元件连接在一起,构建完整的电路结构。设置仿真时间和其他相关参数。让Proteus运行仿真模拟设计的电路图。观察元件的工作状态、信号波形等信息。根据仿真结果,检查电路的工作情况,验证电路的功能和性能是否符合预期。Proteus仿真图如下图所示。
image.png
9、心率检测功能调试
智能床的心率检测,对智能床的心率检测传感器的指头的接触,心率传感器的数据会显示在显示屏上。
通过对心率检测手环,和对本此心率检测传感器比较,考虑对空气和光线的影响,通过心率检测手环和系统心率检测的多次测试,对心率的测试会有1%到5%之间的误差,再考虑到人在不同的环境和温度的影响,所得到的数据和实际有一定的差距,其心率检测传感器和心率手环检测图如下图所示。
image.png
10、语音控制功能调试
智能床的语音控制,通过对麦克风说:你好,升。LED显示屏上会出现单词“UP”的英文,模拟语音控制床头上升,继电器绿灯会灭掉,如图6.5所示。通过对麦克风说,你好,降。LED显示屏会出现单词“LOWER”的英文,模拟语音控制床头下降,继电器绿灯会亮起模拟床头的下降,如下图所示。
image.png