脑电波控制小车的研究与设计

摘 要

脑电波是一种记录大脑在活动的时候脑电信号产生变化的方法,脑电信号指的是活体大脑所携带的一种生物电信号,这种信号可以记录大脑神经元的活动信息。随着科学技术的不断进步以及相关领域的快速发展,对脑电信号的采取的技术变的越来越简单也更加准确。
Mindwave Mobile设备是Neurosky的一款产品,它能提取用户的脑波信息并进行量化分析,在此基础上结合嵌入式系统Arduino控制模块,HC-05蓝牙模块和脑-机接口技术,构建了MindWave - Arduino智能小车系统。项目通过脑电设备采取脑电信号,通过蓝牙模块发送数据至控制模块来控制小车的移动。
论文主要从课题背景和意义、硬件和软件的设计原理、测试和实现来介绍项目所采用的技术。脑波目前应用与各种领域,项目在MindWave Mobile脑信号采取设备的基础上进行二次开发,通过脑电信号数据来控制智能小车的状态,从而对大脑注意力进行训练,在课堂教育上也能够起到非常大的作用。

关键词:MindWave;智能小车;Arduino;HC-05蓝牙

1 绪论

本章主要简述了脑电波控制的智能小车开发的技术背景以及该产品的实际意义,并对脑电波技术的国内外研究现状与发展状态进行分析,其次介绍该项目在脑电设备的基础上做二次开发的研究方向。最后,明确的说明了各章节的内容安排。
1.1 课题背景及意义
脑电波(Electroencephalogram,EEG)是一种使用电生理指标记录大脑活动的方法,脑电图的变化可以表示脑电活动中电波的变化,脑电波的活动变化是在大脑皮层的大脑神经元的电生理活动的改变。早在19世纪的时候,著名的生理学家R. Caton(英国)以兔子的大脑和猴子的大脑为实验品,进行脑电图的记录,并对自己的研究成果写为一篇论文进行发表,只是在当时过于先进并没有使科学界注意到。同一个年代,在 R. Caton之后,另一名科学家A. Beck通过研究并记录研究成功将成功通过论文的形式进行公开,不同于上次,这一篇论文掀起了科学界对脑电图现象研究的热潮,直到德国精神病专家H. Berger在1924看到电鳗电,人体必须有同样的现象,这实际上记录了H中的脑电波。乌曼的大脑,创造了人类脑电图。脑电波或脑电图(EEG)是一项较为敏感的客观指标,不仅可以应用于脑科学的基础理论,而且在临床实践中更为重要,这与人类的生命和健康息息相关。
正如众多科幻电影一样,大脑意念控制物体的运动状态是那么的神奇,人类也是特别的向往那种生活。在科幻电影的影响下,人类开始对大脑意念控制物体产生浓厚的兴趣,由此,脑电接口采集设备市场开始一步一步走向繁华。大脑意念控制也就是通过脑电信号采集设备提取脑电信号并进行分析,然后转换为相应动作信号对物体进行操控。伴随着科学技术的不断进步,人类开始研究使用传感器来检测脑电波。该课题使用的是一款来自Neurosky叫做MindWave mobile的产品,如图 1-1所示,形状类似与耳机,它的核心技术是生物电传感器,生物电传感器能够采集身体和心理状态。用户的脑电波数据的采集是经过有图耳机正前方的传感器来采集,通过采集的数据可以推断出佩戴者的心理活动,并在数字信号处理之后输出准确和详细的人类相关信息。该设备也可以与IOS或者Android等移动设备进行连接,从而移动设备中读取数据,可以做到有意识地控制游戏。
脑电波控制的思想来源于对残疾群体进行行动帮助,该方向的研究有助于解决人体实际生活中的需求问题,具有非常重要的意义。此次课题是在MindWave的基础上做二次开发,通过脑电设备获取用户大脑信息,并进行分析,然后通过HC-05蓝牙模块将数字信号传输到Arduino模块,通过Arduino Uno控制芯片控制智能小车的运动状态,这种搭配不仅可用于大脑的健康训练,还能够制作相应的儿童游戏设备,使儿童在游戏的同时,大脑得到训练。
在这里插入图片描述

图 1-1 MindWave设备图

2 开发环境及技术简介

2.1 开发环境

在这里插入图片描述

图 2-1 Arduino 开发环境界面图
Arduino 是我在本科三年级的时候在太原某家公司所接触到的,这家公司对外开放,为大学生提供了一个创新平台,当时对智能产品异常感兴趣的我,几乎天天有时间就会沉浸在智能产品研究开发的氛围中,甚至可以熬过几个通宵。Arduino是一款便捷灵活、方便上手的开源且免费的单片机程序开发平台,主要为Arduino电子产品设计,安装方便,不需要去配置系统变量等配置,类似于傻瓜操作,只需要将压缩包解压即可。Arduino开发过程中所需要的函数库等等数据都可以存在于该压缩文件。由图2-1可以看出,Arduino界面简单易懂,但是不要看它界面简单,它的功能还是十分强大的,开发的过程中,当我们的代码出现错误是,它可以准确的指出代码所在的行数并且指出错误所在,在项目选项中,我们可以从保存到源文件的库中加载库,Arduino的库是十分强大,这是因为各大厂商回去兼容它,利用它的开发平台开发自己的单片机,Arduino还可以格式化代码,让你的代码更加整齐有序,它还提供串口监视器,在研究的过程中可以监听数据改变。类似于VC当我们写完代码后,需要先进行验证也就是编译,然后编译完成后将单片机用数据线接入电脑端口,我们就可以将代码上传到单片机。Arduino开发所采用的是一种自己的开发语言,类似于C/C++语言的形式。这里需要注意的是,当我们接入单片机时,我们首先需要在工具(如图2-1)里面选择开发板型号以及端口号,不然的话程序是无法上传到单片机的。
特别方便的是,很多的创客爱好者会将技术上传与一个叫做极客工坊的网站,极客工坊是专门针对Arduino制作产品的技术介绍平台,所有资料都是开源免费的,创客爱好者将自己的作品上传到该论坛供其他人参考或者进一步改进,推进了Arduino的快速发展,同时也有利于新手的学习。
2.2 技术简介
Arduino开发语言类似于C/C++语言,C语言是一种面向过程的编程语言,C++是一种面向对象的编程语言,起初Arduino库函数使用C语言进行编程,后来随着技术的不断进步,程序越来越复杂,又引进了面向对象的编程思想,至此Arduino编程语言是由C/C++语言混合编写而成。Arduino拥有自己的语法手册以及对应的函数库,比如:主函数:setup()、loop(),结构控制,字符,扩展语法,运算符等等。同时也是因为Arduino开发语言基于C/C++语言,开发人员上手特别容易,不需要去学习新的语言,正是如此,我可以在短时间内进入单片机开发的领域。
智能小车的控制逻辑也是相当重要的,小车控制器可以使小车匀速行驶,也可以采用PWM控速使小车变速行驶,该项目需要通过注意力的数据变化去控制小车的行驶速度,需要采用PWM模式控制行驶速度,所以开发者需要学习PWM控速,以及程序逻辑的的编写。
HC-05蓝牙模块通讯也是相对简单的,在产品中也是非常关键的一部分,这里我们需要了解蓝牙模块属性的设置,学习如何进入蓝牙模块的AT指令设置模式,如何进入工作模式,进入AT指令设置模式后设置相应的属性以至于蓝牙模块可以主动MindWave设备,连接成功后数据就可以传输到单片机中,同时我们也可以借助于Arduino IDE来监听数据的变化。
智能小车作为现代科技的新发明,可以说是汽车以后的发展方向,智能小车可以按照程序中预定的小路进行行驶,不需要认为进行管理,倾向于智能化这方面。智能小车在该项目中主要分为执行部分和控制部分,控制部分主要是指单片机中的控制代码,执行部分是指小车硬件的驱动以及电机执行代码。这里我们在搭建智能小车时需要了解物理电路,电压、电流大小。各种硬件之间的布线都有一定的要求,新手的话需要一步一步做起,我们可以先画出线路图,然后按照线路图进行搭建小车,防止发生短路的情况,导致单片机等模块烧坏。

3 需求分析

3.1 系统可行性研究
系统可行性是对项目从技术、经济、操作等各个方面分析,并对该项目的收益进行判断是否符合投资者要求来判断该项目是否可以着手实施。无论是软件硬件或者软硬结合的项目研究开发,开发人员都会受到时间、经济、技术等各种因素的限制,这些因素可能会导致项目的整体失败。于是,在项目着手实施开发之前我们都需要先对产品进行可行性研究,判断能够完全克服各种因素的概率是多少,以至于达到降低产品的开发风险,直接的避免人力、时间、财力等资源的浪费,使产品的收益达到最大,同时满足产品需求者的要求,接下来我们对产品开发的技术可行性、经济可行性、操作可行性进行依次分析。
3.1.1 技术可行性
本项目使用的开发工具是Arduino,开发语言Arduino编程语言,通讯是通过蓝牙进行通讯,从智能小车硬件搭建,蓝牙模块的配置数据传输,代码的编写三个方面,作为开发人员我在大三的时候都有相对应的项目生产经验,并且成功搭建对应产品。所以本项目我的难点在于对MindWave设备的学习,在几个月时间里,通过不断的搜索资料,不断的学习探索,慢慢的开始精通MindWave的使用方法,并且确信可以将MindWave设备与HC-05蓝牙模块成功进行连接以及两者之间数据的无损传输,因此,本项目的开发在技术上是可行的。
3.1.2 经济可行性
项目的研发必须考虑开发所需要的各种成本,确定该项目是否能够获得收益,获得收益是否值得生产,从而判断是否着手开发该项目。开发成本包括人力成本,经济投入成本,自然资源占用资本等。本项目中各种部件之间联系相对较小,可以担任完成所有部分,也可以分工各部门负责各部分产品生产,所以在人力资源方面方面一个人对一套产品生产也是可行的,这样不会造成人力成本浪费。在经济方面我们需要购买相应的各种硬件设备,MindWave成本大致在1000元左右,小车硬件成本在120元 ,这是不可缺少的,由于当技术精通后,一套产品生产工时较小,人力成本技术相对比较低,大致在200元-300元左右,所以人力成本不高。1500元-1600元的范围购买产品对学生进行注意力训练相对于培训机构或者书籍的价格和效率来说都有一定优势,通过调查在家长心中这个价格是完全可以接受的,所以我认为经济方面是可行的。
3.1.3 操作可行性
本项目设计的产品是通过脑电设备采集脑电数据,对数据进行分析格式化,通过蓝牙模块进行数据传输至单片机,然后完成对小车的控制。使用人员只需要将脑电检测设备戴在大脑上,将耳电极夹在左耳,前额感应器依附于前额,打开小车开关,待小车上蓝牙模块指示灯有节奏闪动,便可进行注意力的训练。产品对于使用者而言容易上手不需要了解任何专业知识,便可完成对产品的操作,进行注意力的训练,因此在产品的操作方面是可行的。
3.1.4 可行性研究总结
在需求分析得到的数据的基础上,通过对项目的经济可行性、技术可行性、操作可行性的一一分析,我们认为该产品是符合开发要求的,产品开发市场需求广,经济价格可以接受,操作简单,所以我们可以进行项目研发。
3.2 需求分析概述
需求分析是项目开发的一个重要环节,从需求分析我们可以得出我们的项目是做什么。需求分析人员可以通过对用户的需求进行调查,然后进行总结得出一定的结论,开发者通过需求文档便可以知道需要做一个什么样的产品,在很大的程度上提高了产品开发的效率。
伴随着小康社会的不断进步,生活水平也不断的提高,父母越来越注重孩子的教育,大部分的孩子都可以受到良好的教育,但是由于小孩好动性特别强,控制力弱,导致在课堂上学习过程注意力不集中,成绩难以提高,这成了所有父母的共同心病。伴随着对注意力训练需求的产生,相应的产品也逐渐问世。刚开始的时候,市面上对注意力进行训练的方法大部分都是通过一些教育类书籍,或者通过去认真做某件事情来完成训练,培训费昂贵,并且耗时长,资源浪费较多,而且效果是十分微弱的。也就是由于如此,该项目的产品种类也就逐渐问世了。
该项目中产品的创新目的就是利用现有的技术和设备进行二次开发,制作一套操作简便,并且可以使孩子特别喜欢的注意力训练工具,这样的产品孩子可以自己完成对注意力的训练,完全不需要家长辅助。 脑电波控制的智能小车是一款以玩具为主题进行注意力训练的产品,首先孩子对玩具的感兴趣程度是非常高的,其次这套产品简便容易上手,只需要将设备戴到头上,打开小车开关即可。训练者可以在控制小车的游戏中完成对注意力的训练,并且该产品还可以进行注意力“拔河”大赛,两个人可以控制一个小车,以双方注意力为参数来控制小车不同方向的行驶,在比赛的过程中也可以完成对注意力的训练,这也是该产品的另一种特性,扩展性高。

4 硬件组成结构

4.1 脑机接口设备MindWave
在科学技术迅速发展的时代,智能产品、虚拟现实、可穿戴智能设备等高科技产品像是在一夜之间铺面而来。而在这个科技迅速发展的时代,有一家来自美国叫做NeuroSky的公司脱颖而出,这家公司专注于生物传感技术,并为其他公司提供解决方案,此时该公司把脑电波与智能产品、虚拟现实、可穿戴产品结为一体,通过意念来控制科技产品,将这些高科技产品的发展几乎推向巅峰。
NeuroSky能够为移动设备和可穿戴设备提供最具洞察力的生物识别技术,该公司可以检测心脏状况、血压、呼吸指数、注意力、冥想力、睡眠跟踪、疲劳等等指数。NeuroSky解决方案提供独特的身心健康和健康洞察,可以激励人们做出更好的生活方式选择。它凭借其在生物传感核心技术、传感器、算法上的优势,市场上大部分智能产品的数据检测功能都是由该公司来提供技术,同时也让智能可穿戴产品实现了从0到1的飞跃。除了受到相关行业的广泛认可外,NeuroSky曾获得包括TechAmerica美国技术奖、HiMSS(美国医疗信息与管理系统学会)创新大奖在内的诸多奖项,甚至被纳斯达克评为十年后可能取代Apple的企业之一,如图4-1是MindWave的部分应用图片。
在这里插入图片描述
在这里插入图片描述

图 4-1 MindWave的应用
MindWave Mobile正是一款来NeuroSky高科技产品,它是一款科学的大脑训练系统,它所采用脑机接口技术在科学技术排名上名列前茅,实际中可以用来在娱乐的过程中完成人类对大脑的训练,提高注意力的集中程度,并且可以改良多动等问题。MindWave Mobile中的算法可以把检测到的大脑内的各种脑电波包括注意力以及放松度,从而利用这些数据进行一些列产品的开发。NeuroSky的算法并不是完美的,利用这种算法仅仅可以可以测量到大脑的专注状态和放松状态,并且对这种状态的变化程度进行训练,这种算法不能检测到人类的具体思想,也就是说被控制的产品不能根据测试者的具体思想而产生相应动作,只能从检测出的注意力,放松度数据来一维的去控制被控制产品的动作。虽然只是如此,这种算法在科学界也掀起了轩然大波,并得到了重用。

4.1.2 MindWave的简介与应用
依图4-2所示,MindWave Mobile由可调节头箍、电源开关、电池盒、耳套、耳夹、前额传感器支臂和传感头组成,其中耳夹上带有参考电极和接地电极,传感器支臂带有脑电传感器,传感器支臂用于贴在前额额头上。MindWave Mobile形状类似于头戴式耳机,但它并不是一款普通的耳机,它可以通过探测你的脑电波变化,为你带来充满刺激的全新应用体验。该设备使用5号电池提供电力,不需要任何外需,就可以进行脑电波各种信号的检测,比如:专注度,放松度,还可以进行眨眼检测、疲劳检测、心脏功率检测、呼吸指数以及血压等等,并输出脑电功率谱。
MindWave目前已经应用于包括健康,教育,娱乐,智能产品,神经营销等五大领域。在健康方面可以检测心血管病患者的心率,使用脑电反馈疗法对儿童注意力进行训练,诊断睡眠健康等;教育方面比如在课堂上对学生的思维专注程度和心里放松状态进行训练,也可以进行注意力集中的训练等;娱乐应用上有意念猫耳朵等玩具以及脑控电影等;智能产品有智能服装等;神经营销比如优衣库用过检测顾客脑电波帮助消费者挑选衣服,博物馆通过脑波技术检测游客对艺术项目的喜爱程度等。同时,脑电波在类似于指纹使用中也是一种发展方向,比如脑电波锁等。脑电检测设备的应用一定程度上帮助人类解决了很大的困难。

在这里插入图片描述

图 4-2 MindWave介绍图
4.1.3 MindWave的数据采集与分析
图4-3是MindWave脑电传感器原理图,MindWave传感器技术的核心是TGAM,TGAM模块上载有干电极,干电极是采集脑电信号的重要设备,并将检测到的脑电信号转化为数字信号,并且具有过滤掉噪音和抗干扰的能力。TGAM模块以及该模块上边载有的芯片可以搭建在各种形式的脑机接口设备上,他的融合性很强,条件限制低。美国NeuroSky公司的在该行业一直位列前茅,该公司的大部分脑电检测产品核心都是采用的该模块,通过该模块,该公司的设备通过相应算法可以检测出人类大脑中几种简单的波形参数,并可以对这些数据进行相应的处理。其中的参数主要有大脑注意力和放

传感器可安全且被动 NeuroSky技术解释大脑信号 脑波信号会在应用程
地检测微弱的脑电波 的含 序中产生各种效果
信号
图 4-3 脑电传感器原理图
在这里插入图片描述

一个L298N模块可以驱动2个电机,OUT1,OUT2和OUT3,OUT4分为两组可以控制两个电机,该项目我们使用一个L298N模块,来控制两个电机。通过控制模块5,7,9,10,四个引脚作为输出端,通过这四个端口将控制模块和L298N连接在一起,程序中产生的控制信号从单片机传输到L298N模块,进而对智能小车进行控制。
L298N电机驱动模块特点:可控制电机的正转反转以及对电机进行PWM调速,模块工作标准电压可以达到36V,可以完美的驱动小车行驶,一个模块可以同时驱动两个电机,尽可能的降低了车轮速度差,并且成本较低,在智能小车中使用特别合适。当使用L298N模块作为控制模块来控制电机时,将控制模块的两对四个输入引脚分别接入单片机上与之对应的5、7、9、10接口。从单片机上传出的控制信号数值的大小来控制电机的转速,同一组两个接口数据的正反来控制电机的正转与反转。
L298N模块说明:
(1)IN1-IN4逻辑输入:其中IN1、IN2为第一组控制第一个电机;IN3、IN4为第二组控制第二个电机。当IN1输入高电平,IN2输入低电平时,对应的第一个电机正转;IN1输入低电平,IN2输入高电平时,对应的第一个电机反转。当单片机输出端为analogWrite模式时(即数字信号),我们可以从单片机程序中传入相应的控制数值,进行电机速度控制,也就是之可以动态改变电机的转速。
(2)VIN:模块供电接口,通过该接口进行供电,将外部电源正极介入VIN,负极接入模块的GND即可供电。
(3)VCC:L298N模块自带给其他模块供5V电压的接口,将其他模块正极接入该接口,负极接入GND即可获取到5V电压。
(4)需要注意的一点,L298N供电的5V如果不采用单片机供电而是用另外电源供电的话,此时单片机的GND需要和L298N的GND连接在一起,当连接在一起是,从单片机传输到L298N模块的信号才会有共同的参考点,否则没有参考点。
表 4-2 L298N逻辑功能表
IN1 IN2 ENA 电机状态
X X 0 停止
1 0 1 顺时针
0 1 1 逆时针
0 0 0 停止
1 1 0 停止
4.2.4 Arduino控制芯片
Arduino是针对Arduino单片机而制作的一款开发工具,开源免费,因此它的用户量非常大。Arduino IDE使用方便,特别适合于其他领域学者进行研发自己喜欢的产品。Arduino是一个统称,可以分为单片机和开发环境。在2005年冬季由欧洲一个团队开发,Arduino使用的开发语言类似于Java、C语言,它是一种叫做Processing/Wiring的专用,并且拥有自己的编译工具。Arduino即有自己的单片机以及开发模块,同时也有自己专用的编译工具,开发环境。其中硬件部分包括Arduino电路板,电路板可以用来做智能产品控制器;软件部分包括是Arduino 编译器,它是我们对Arduino控制板进行编程时的必然选择开发环境。我们可以在IDE中敲入程序,然后将写好的程序烧录到Arduino板,Arduino硬件部分作为产品核心便会自动获取程序,然后去控制各种基于Arduino板做二次开发的硬件设备。我们不仅可以通过代码控制Arduino单片机还可以控制单片机上接入的其他模块。Arduino还有一个特点是,如果你做的是Arduino项目,这个项目不仅可以包含Arduino,还可以与其它软件相结合,共同来使用方便通信研发。
Arduino已经成为一类平台,它不仅仅只是包含Arduino。在它本身含有大量的硬件产品以及自身的编程软件IDE之外,它还拥有这各种各样硬件开发厂商。这也是因为Arduino发展的速度是非常快的,导致大量的厂商做出的硬件设备都可以在Arduino开发环境中使用,并且这些其它厂商的硬件设备都包含Arduino函数库。也正是由于这种原因,Arduino爱好者在开发的时候非常方便, 可用硬件范围广,辅助软件齐全,利于研发。
起初,Arduino的设计者仅仅是为了让创客的制造者更加方便的自己研发和控制智能产品。只是可能是上帝的照顾,或者是实力的使然,大量的领域中都出现了Arduino的影子,并且展现出它的价值,Arduino现在拥有的函数库几乎没有哪一家单片机厂商可以与之进行匹敌,Arduino几乎可以兼容市面上大部分的单片机。这种情况也并不是偶然产生的,Arduino体系中无论是硬件系统还是软件系统,它的所有产品都是开源的,公司不收取任何版权费,任何人厂商都可以自己改造产品,也可以自己去制作相应的单片机,将单片机与其它模块继承,使用更加方便。不仅仅是可以自己制作自己使用,用户甚至可以自己制作然后去出售给其他人从中获取相应的报酬,但是无论任何情况,版权都贵公司所有。正是因为如此,它可以迅速得到大量的用户以及爱好者,短时间内超越其他单片机。市面上有非常多的Arduino硬件种类,比如:Arduino Uno、Arduino Mega 2560 、Arduino Nano、等等,我们这个项目使用的是Arduino Uno模块,如图4-9。

在这里插入图片描述

图 4-9 Arduino UNO单片机

线路部署完成之后,按照上述所述,将蓝牙模块接入到整体车身。到此,完成所有电路接线。部署完毕硬件车身如图4-13。
在这里插入图片描述

图 4-13 小车整体展示图
在供电方案上,项目采用两节相同的18650电池,将这两节电源电池进行串联,串联之后输出电压变为7.4V,电源供电给L298N模块。这里需要特别说明一下, L298N这个芯片模块,用来驱动直流电机或者步进电机,由于单片机输出电压为5V,而L298N允许输入电压为5V~12V,当输入电压为5V时,很难驱动电机转动,所以我们这里不采用单片机给L298N模块供电,我们直接通过电源给L298N模块供电。这样做还有一个原因是因为当输入电压不足时,很容易导致L298N模块的损坏。这里我们直接用电源给L298N模块供电,同时使用L298N模块的5V输出端口,对Arduino Uno模块进行供电,这样完美的解决供电问题。如果使用电源直接对Arduino Uno模块供电,首选需要降压模块将电源电压降低到3V~5V,并且需要再次从电源接线到L298N进行供电,这也就变得相对复杂,更容易引起短路。

5 软件设计与实现

5.1 软件系统设计
项目产品中每种硬件都有与之对应的软件系统,HC-05模块有它对应的参数设置,以及工作状态蓝牙连接功能系统的代码。Arduino UNO单片机有对小车行驶状态进行控制的代码以及接收蓝牙传输数据的代码,智能产品硬件离不开软件产品的支持,产品的智能化依赖于软件系统。
5.1.1 智能小车程序设计
小车硬件整体搭建完毕后,我们需要对小车整体进行行驶测试,这样防止在项目整体完成后由于小车部分不能行驶问题导致项目失败产生相应的损失。我们需要编写代码,先让小车跑起来,测试小车是否可运行,我们可以编程测试小车匀速以及变速行驶,当然变速行驶没有问题,匀速行驶也自然没有问题。代码编写完成后,我们需要将代码上传到单片机中,我们这里首先需要将Arduino Uno芯片通过数据线和PC机进行连接,然后打开Arduino IDE软件开发环境并且选择对应单片机型号和接入笔记本的对应端口,对Arduino Uno烧录程序,烧录的代码如下:
//定义L298N接入Arduino四个端口
#define OUT1 5
#define OUT2 6
#define OUT3 9
#define OUT4 10
//定义5,6,9,10四个端口为输出端口
void setup()
{
pinMode(OUT1, OUTPUT);
pinMode(OUT2, OUTPUT);
pinMode(OUT3, OUTPUT);
pinMode(OUT4, OUTPUT);
}
//控制主体循环体
void loop(){
// 逐渐加速行驶
for(int i=0;i<=255;i+=5)
analogWrite(5,i);
analogWrite(6,0);
analogWrite(9,i);
analogWrite(10,0);
delay(50);
}
}
测试完毕后如果小车可以逐渐加速行驶,则除HC-05蓝牙模块之外的小车所有硬件搭建布线是没有问题的。
5.1.2 蓝牙模块程序设计
下面我们介绍通过HC-05蓝牙模块的数据传输流程。
在这里插入图片描述

             图 5-1 蓝牙与小车关系图

如图5-1所示所示,蓝牙模块在接收到从MindWave发送过来的脑电信号后,将信号经过协议发送到Arduino Uno模块,Arduino控制器根据事先编写好的处理程序对信息做出响应,调节输出到舵机驱动板上的电信号,达到控制舵机速度的目的。脑波信号的专注度数据由Arduino控制器转化成 0 ~ 100的数字信号,专注度数值范围不同对应的舵机转速不同。并且这里利用冥想值控制小车倒退。
我们可以通过另一种方式来展示蓝牙模块的功能,我们将蓝牙模块与手机蓝牙相连接,在手机上下载蓝牙串口APP,然后通过手机向蓝牙传入参数来控制小车的行驶状态。示例代码如下,首先定义单片机上所采用的接口,并将这些接口设置为输出模式。
#define OUT1 5
#define OUT2 6
#define OUT3 9
#define OUT4 10
void setup()
{ Serial.begin(9600);
pinMode(OUT1, OUTPUT);
pinMode(OUT2, OUTPUT);
pinMode(OUT3, OUTPUT);
pinMode(OUT4, OUTPUT);
}
程序主循环体读取从蓝牙模块接收到的参数,并对接收到的数据进行相应的输出表型,如当输入为1时,手机端界面回收到小车匀速行驶的文字,系统流程图如图5-2。

                                                N
	

Y

在这里插入图片描述

图 5-2 蓝牙小车系统流程

5.2 软件系统流程
智能小车控制系统是MindWave Mobile操纵智能小车的中间环节,中间系统用于接收MindWave Mobile经蓝牙模块传输的脑电信号,脑电信号经过中间系统处理后智能小车的控制信号,并将控制信号传输到智能小车。中间系统的设计也是整个项目中的软件部分最重要的环节。本章详细的讲述了关于中间控制系统的开发过程并详细解释部分代码。
Arduino UNO控制芯片通过HC-05蓝牙模块接收由MindWave脑电设备传输的控制参数根据控制程序对数据进行处理,并将数据传输到L298N控制芯片,由控制芯片达到控制舵机转速的目的。图5-3是小车控制参数与小车状态对应流程图。

Y N

在这里插入图片描述

图5-3小车控制参数与小车状态流程
下面是在Arduino IDE中编写的对采集数据处理并控制小车状态的核心代码:
// 放松度指数小于90时
if(meditation<90){
int i = 20;
// 依据注意力数据大小除以20得到的整数控制车速级别
switch(attention / 20) { case 0: analogWrite(OUT1,0); analogWrite(OUT2,i); analogWrite(OUT3,0); analogWrite(OUT4,i); break; case 1: analogWrite(OUT1,0); analogWrite(OUT2,i+10); analogWrite(OUT3,0); analogWrite(OUT4,i+10); break; case 2: analogWrite(OUT1,0); analogWrite(OUT2,i+20); analogWrite(OUT3,0); analogWrite(OUT4,i+20); break; case 3: analogWrite(OUT1,0); analogWrite(OUT2,i+30); analogWrite(OUT3,0); analogWrite(OUT4,i+30); break; case 4: analogWrite(OUT1,0); analogWrite(OUT2,i+40); analogWrite(OUT3,0); analogWrite(OUT4,i+40); break; case 5: analogWrite(OUT1,0); analogWrite(OUT2,i+50); analogWrite(OUT3,0); analogWrite(OUT4,i+50); break; } } // Medation>=90小车倒退 else{ // 小车匀速反向行驶 analogWrite(OUT1,40); analogWrite(OUT2,0); analogWrite(OUT3,40); analogWrite(OUT4,0); break;
}
5.3 串口通讯程序设计

名字来看,串口监视器就是用来监视蓝牙串口通信数据的工具。串口监视器,用好了,它可以帮助我们解决大多数烦恼的。Arduino从蓝牙模块接收到的数据,是通过串口监视器来展示到Arduino IDE上的,我们可以通过串口监视器展示界面来查看接收到的通信数据。Arduino IDE没有像其它高级IDE提供比较全面的debug工具。窗口界面各选项都比较容易理解,唯独右下方的下拉菜单中的波特率选择这个选项需要解释一下。这里的上拉框选择的是波特率(Baud Rate),即串口通信中每秒传输的数据位数。当使用Arduino编程时,开发环境选择的波特率必须和代码中Serial.begin(BAUDRATE)的BAUDRATE一致,串口监视器才会显示正确的信息,不然会出现乱码(一般来说会自动配齐),如图5-4是串口监视器界面。

图5-5 是该项目的系统逻辑,单片机收到数据后首先判断数据是否合格,如果数据质量合格那么就从合格数据中选取需要使用的参数:注意力、放松度,如果不合格则抛出数据。本次实验我们主要以专注度作为小车速度控制的参考数据。当脑电设备系统采集到相关数据时,系统会对脑电信号的值作出判断是否合格并以此转化为相应的控制参数。

下面是该项目中获取通信数据展示部分核心代码,也就是MindWave设备如何去采集注意力和放松度的算法的实现。void loop() { // 寻找同步字节 if(ReadOneByte() == 170) { if(ReadOneByte() == 170) { payloadLength = ReadOneByte(); // PayloadLength不可以大于169 if(payloadLength > 169) return; generatedChecksum = 0; for(int i = 0; i < payloadLength; i++) { // 将读到的数据存入数组 payloadData[i] = ReadOneByte(); generatedChecksum += payloadData[i]; } // 从流中读取checksum checksum = ReadOneByte(); // Take one's compliment of generated checksum generatedChecksum = 255 - generatedChecksum; if(checksum == generatedChecksum) { poorQuality = 200; attention = 0; meditation = 0; for(int i = 0; i < payloadLength; i++) { // 解析payloadData switch (payloadData[i]) { case 2: i++; poorQuality = payloadData[i]; bigPacket = true; break; case 4: i++; attention = payloadData[i]; break; case 5: i++; meditation = payloadData[i]; break; case 0x80: i = i + 3; break; case 0x83: //ASIC EEG POWER INT i = i + 25; break; default: break; } // switch } // for loop #if !DEBUGOUTPUT if(bigPacket) { if(poorQuality == 0) digitalWrite(LED, HIGH); else digitalWrite(LED, LOW); Serial.print("PoorQuality: "); Serial.print(poorQuality, DEC); Serial.print(" Attention: "); Serial.print(attention, DEC); Serial.print(" Meditation: "); Serial.print(meditation, DEC); Serial.print(" Time since last packet: "); Serial.print(millis() - lastReceivedPacket, DEC); lastReceivedPacket = millis(); Serial.print("\n"); // *** Add code here *** } #endif bigPacket = false; } else { // Checksum Error } // end if else for checksum } // end if read 0xAA byte } // end if read 0xAA byte }

6 测试与结论

6.1 测试目的
产品测试目的主要是测试项目生产的产品是否符合需求,测试过程中依据先定的测试条件将项目中使用到硬件产品MindWave设备、HC-05蓝牙设备、智能小车组件进行单独一一测试,然后我们将智能小车搭建完成,对小车整体进行测试,最后将软件、硬件组合出的产品进行系统测试和确认测试,在测试过程中对存在隐患的硬件问题或者软件问题进行修改,通过多次运行测试所得到数据与理想状态进行比较,总结出产品与预定目标区别并进行改正。当然系统测试的对象不只包含产品的硬件的设计,还要包含产品的算法逻辑是否正确。因此,必须将系统中的软、硬件以及其它相关资源等条件结合,然后在适当的条件下进行整体测试。如果缺少测试,很有可能当我们项目硬件搭建完成后,发现蓝牙模块不能成功连接,或者数据无法传输,小车无法行驶等问题后处理起来会非常麻烦。所以,在我们项目实施过程中,在每个阶段性成果之间都要进行产品测试,并且在项目产品完成后我们需要对产品整体进行测试,以防项目产品完成后发现产品失败所造成的损失,这是开发者所不能接受的。
6.2 硬件测试
6.2.1 MindWave测试
MindWave Mobile是本项目对脑电波进行采集的设备,也是本项目的的核心设备,在项目中是价格最贵的硬件产品。所以,脑电设备的可用性是该项目的关键,NeuroSky公司为该设备提供了配套的游戏软件,我们这里将游戏软件安装至PC机,并将MindWave设备蓝牙连接至PC机,进行设备检测。首先我们将脑电设备戴于大脑上,将耳电极夹于左耳,将前额传感器头贴于前额,打开设备开关,打开PC端蓝牙,当脑电设备指示灯由红变蓝后连接成功。如果PC机没有蓝牙功能,我们可以购买蓝牙适配器然后将蓝牙适配器插于PC机端口,也可进行蓝牙连接。如果PC机蓝牙无任何问题而且连接失败表明脑电波设备可能存在缺陷,我们需要进行更换设备。如图6-1是展示MindWave与PC机蓝牙连接状态图,连接状态处显示已连接,连接口显示连接的是PC机的COM5端口。

在这里插入图片描述

图6-1 MindWave与PC机蓝牙连接状态
在这里插入图片描述

图 6-2 Meditation数据测试图
这里我们处理可以对MindWave的蓝牙连接状态进行测试,还可以对脑电设备采集大脑注意力和放松度数据进行检测,这里的测试我们需要配套NeuroSky公司提供的游戏软件进行两项数据测试。该公司提供的配套游戏软件产品可以以游戏画面展示的效果来展示用户的注意力和放松度。软件的左上角展示连接状态整体图形展示采集到的脑电参数数据,如图 6-2和图 6-3。

在这里插入图片描述

图 6-3 Attention 和 Meditation测试图
6.2.2 智能小车测试
通过Arduino IDE,我们可以将下列代码烧录至小车控制芯片:

void loop()                            
{
  for(int i=0;i<=255;i+=5){              
     analogWrite(5,i);
     analogWrite(6,0);
     analogWrite(9,i);
     analogWrite(10,0);
     delay(50);
  }

}

总结与展望

该项目研究了经脑电波检测设备MindWave Moibile的二次开发的脑波控制的智能小车,项目使用蓝牙技术进行数据传输,经过串行通讯方式对采集到的脑电数据进行分析,并设计智能小车控制系统。详细阐述了基于脑波的智能小车控制系统研究过程。实现了既定目标。
本论文完成的主要工作有:
1.通过对MindWave Mobile设备的的学习和深入研究,设计脑电数据采集系统。
2.完成了基于Arduino Uno控制模块的智能小车的选材、搭建等工作。
3.实现了蓝牙传输数据信息的工作。
4.将MindWave Mobile应用到智能小车的控制,独立设计控制程序,实现对小车的行驶速度渐变的控制。
实验结果表明,根据脑电波注意力信号完全可以控制小车的行驶速度,也就是说可以使用外部设备进行大脑注意力的训练。这个项目在这里并没有结束,它可以做很多的扩展,比如我们可以利用两个脑电设备来进行注意力拔河比赛,这种对注意力的训练效果相对于项目中所说是更加明显的,在今后的学习过程中我希望可以从脑电设备中获取到更多的脑电信号用来开发一系列的相似的应用,为教育方面奉献自己的一份力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值