赵剑, 毕京晓, 史丽娟*, 匡哲君, 王柳, 彭雄
( 1.长春大学 计算机科学技术学院, 长春 133000; 2.长春大学 电子信息工程学院, 长春 133000;3.吉林省人体健康状态辨识与机能增强重点实验室, 长春 130000 )
为了提高舌机接口系统的稳定性,进一步改善失能患者的生活质量,近年来舌头-计算机交互领域对数据采集精度的要求越来越高.舌机接口技术是一种由舌头操控的辅助技术,由该技术建立的舌控智能辅助系统可以为中重度失能患者(特别是因脊柱神经损伤造成上肢或手部失能的患者)在失能早期能够自主康复和失能后能够恢复生活自理提供有效的治疗手段.精确采集舌部运动特征信号是研究舌机接口技术的关键问题之一.在舌机接口技术中,目前记录舌部运动生理数据的方法主要有电磁记录仪(EMA)、核磁共振成像技术(MRI)、超声仪(ultrasound)以及X光技术(X-ray)等,但这些技术存在携带不便以及有害人体等问题[1-4];因此,这些方法目前仍然无法满足现代舌机接口技术的发展需求.鉴于此,本文采用STM32H743作为控制器,结合由美国NI公司研制的LabVIEW(laboratory virtual instrument engineering workbench)进行编程[5],设计了一种对舌机接口系统进行信号采集的装置,并对其可行性进行了验证.
本文所采集的舌控信号是基于人口腔内部生理结构所制作的人造假腭.采集信号时,舌部需触碰嵌入人造上腭的16个微小电极传感器.信号经过校正、放大和采样后用于阈值设定.设定阈值的目的是决定是否选择该电极.当某一电极的电压超过设定的阈值时,表示该电极产生触碰电极信号,用“1”表示;当电极电压低于设定的阈值时,表示该电极未产生触碰电极信号,用“0”表示.该装置所采集的舌控智能辅助系统的指令数据通过模数转换后输出.
本文设置的通信装置系统主要由电极传感器、信号处理模块、电源模块组成,如图1所示.由图1可以看出,电极传感器的输入信号经由信号采集模块调整处理后发送给A/D转换模块(将模拟信号转换为数字信号),信号经A/D转换后再通过信号传输模块传输给计算机并实时保存.16个电极传感器的触发情况由LabVIEW显示.
图1 系统结构图
图2为通信装置系统的信息采集与获取过程.该系统采用单片机控制系统检测电极传感器信号(单片机内部由恒压源串接电阻作为开关激励信号[6]);采用比较器比较反馈的开关信号与预设的电阻值等效电压信号[7](由此得到各引脚的电平状态);利用AD转换模块将模拟信号转化为数字信号;利用LabVIEW中的VISA库函数实时检测单片机信号,以此实现计算机与单片机的通讯并最终获取舌控数据.由上述可看出,该通信装置能够实现信号的采集、数据传输与存储.
图2 通信装置的信息采集与获取过程
为了消除由人为因素和外部环境对系统造成的轻微擦碰、抖动等不良触碰,本文采取以下措施:上电复位后初始化串行口,并设定内部定时器每隔20 ms检测一次电平.如果每次测得的电平状态与上次所测的相同,则认为是人为且稳定的信号;如果某一次测得的电平状态与上次所测的电平状态不同,则观察下一次检测的状态,若与本次相同,说明信号发生了改变.测得的数据信号由串口传输给上位机[8],由此实现数据的获取.计算机与单片机通信过程中,单片机串口与上位机USB口之间采用CH340芯片进行串口连接[9].考虑到主控性价比和稳定性,本文选用STM32H743单片机作为核心控制器,其供电电源为一个9~24 V正负电源[10].
系统的软件设计流程为: 开始 → 初始化 → 端口配置 → 串口通信设置 → 接收数据 → 结束.
LabVIEW程序由数据流驱动[11],其数据接收端通过虚拟仪器软件结构(virtual instrument software architecture,VISA)来判断是否有新数据接收[12],并对新接收的数据进行处理.LabVIEW的VISA库包含有串口配置、数据写入、数据读取等一系列子VI[13],这些VI用于搭建串口通信的通道,以此实现计算机和设备之间的双向通信.为了实现LabVIEW与单片机的快速通信,本文采用同步调用来传输数据(数据为数组形式).
由于数据传输过程中会遇到误码的情况,因此为了保证接收数据的正确性,本文在通信协议中严格定义了数据起始码、结束码以及数据位的长度(数据位的值介于5和8之间,默认值为8).接收端接收数据时,若发现数据有误则自动舍弃当前所接收的数据,并重新开始下一帧数据的接收.通信协议如下: ①传输数据为每秒50条.②数据段由起始位(FFAA)、数据位和结束位(FF55)组成.③传输数据的波特率为9 600.
上位机软件的整体设计思路如图3所示,其具体实现步骤为:
图3 上位机整体设计图
1)配置串口,设置波特率、字节数、停止位[14].
2)绘制直观图,观察舌部执行某一指令时触到的极点数和各指令的极点接触范围.
3)将测得的舌控信息保存为文本格式(为方便后续进行数据处理).
4)设置数据回放(为在实验时便于查看历史数据).查询历史数据时,需首先确定读取数据的路线和参数.
上位机将采集的舌触信息、时间以及采集次数等参数自动保存到所选择的文件中.保存的具体方法为:首先在存储单元的最外层使用桢顺序结构函数来实现文件路径的数据流传递,用以控制节点的执行顺序;然后将最先执行的代码放在桢0边框内执行,然后依次执行其他帧中的程序即可完成参数的保存.软件程序的结构和循环由带寄存器的While和Case结构来完成,部分软件程序如图4所示.
图4 上位机的部分数据采集程序
系统应用程序由虚拟仪器LabVIEW平台开发,该程序可实时读取16个电极传感器产生的信号.当启动系统数据接收程序后,系统将接收到的串口数据(舌触信息)以界面的形式实时显示,并将数据保存于Excel中.
为了验证系统的性能及可靠性,本文对系统进行了硬件测试.硬件测试装置如图5所示.该测试装置主要包括舌控智能辅助系统采集装置、STM32核心处理器及其他硬件模块.
图5 硬件测试装置图
测试装置在测试过程中执行有目的的指令控制,系统筛选过滤非人为触碰信号,并将处理后的数组传输给上位机.图6为测试装置执行10次控制指令(包括前后左右)的触碰电极显示情况.由图6可以看出,各指令的接触电极基本在同一区域,这表明该通信装置能够准确地采集舌控智能辅助系统的控制信号.
(a) 前指令触碰电极情况
(b) 后指令触碰电极情况
(c) 左指令触碰电极情况
(d) 右指令触碰电极情况图6 电极触发显示情况
研究表明,本文设计的舌控智能辅助系统的通信装置能够快速、准确地获取STM32测得的电极传感器信号,并具有实时显示、自动保存和查询历史数据等功能.另外,该通信装置还具有应用方便、稳定性高、功耗低等优点.因此,该通信装置可为舌控智能辅助系统的信号采集提供有效帮助.