亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Arduino技术的受脑电波操控的智能小车

发布时间:2021-08-13
分享到:

基于Arduino技术的受脑电波操控的智能小车

发布时间:2021-08-13
分享到:

你想用你的意念来控制物品吗?这个教程描述了如何使用脑电波驾驶遥控卡车。耳机感应我的脑电波并将它们传输到一台小型计算机。当我提高注意力或眨眼时,计算机会转换信号并将它们传递到我已连接到计算机的卡车遥控器。当我集中注意力时,车轮就会旋转。单眼强烈眨眼使小车左转。强烈的双眨眼会右转。 

该项目中使用的耳机是NeuroSky MindWave Mobile 2,电脑是Arduino Uno微控制器,蓝牙模块是HC-05。

实际应用

一些开发人员已经应用这些想法来帮助瘫痪的人。例如,驾驶轮椅、家庭设备自动化或在屏幕上选择字母和单词以在屏幕上或通过语音进行交流。他们的项目可以在 YouTube 上找到。

项目的主要步骤

这个项目有5个主要步骤:

  1. 将 HC-05 连接到 Arduino,对其进行配置,然后将其与 MindWave 配对。
  2. 将舵机连接到遥控器。
  3. 连接Arduino。
  4. Arduino代码。
  5. 上传 Arduino 草图并使用它。

如果您不熟悉这些设备,以下链接可能有用:

控制机器人车辆的方法

在开始我的项目之前,我在互联网上搜索了 NeuroSky 项目,找出开发人员选择使用的脑电波信号。许多项目只使用了注意力和冥想级别,还有一些还使用了眨眼。对于我的项目,我决定使用注意力级别来控制前进和停止,单次闪烁向左或双闪烁向右。

有一个项目使用了一种非常不同的方法:当用户眨眼时,软件开始向前、向后、向左、向右循环各 2 秒。如果用户眨了两下眼睛,那么车辆会在那个瞬间朝着循环所在的任何方向行驶。这种方法提供了很大的灵活性,但速度可能很慢。例如,如果用户向右转,他们将在大约 6 秒内无法向左转,

将 NeuroSky MindWave Mobile 2 连接到 Arduino 的方法

一些开发人员通过蓝牙将他们的 NeuroSky MindWave Mobile 直接连接到 Arduino 板,这种方法比下一种方法更容易,但检测眨眼所需的时间稍长(略多于 1 秒)。

其他开发人员通过计算机或智能手机对信号进行实时预处理,然后再将数据发送到 Arduino。这允许进行更复杂的分析或处理,并且可以更快地检测到眨眼(大约半秒)。NeuroSky 在这个网站上有关于这种方法的教程,适用于 PC Windows、Apple Mac OSX、Android 和 IOS:我决定不使用这种方法,因为它需要学习如何在计算机或智能手机上对软件进行编程。

如何训练注意力水平

最大化注意力水平的方法因人而异。以下是一些建议:

  1. 专注于一个对象
  2. 仔细阅读食品容器上的成分清单
  3. 在食物容器上记住一些营养成分
  4. 从 100 以 6 或 7 倒数
  5. 在头脑中进行算术运算
  6. 听一首说唱歌曲并试着理解歌词
  7. 用你不流利的语言阅读一些东西

眨眼监测

强烈的眨眼才能被检测到,正常的眨眼会被忽略。

头部应保持不动,以避免错误的眨眼检测。该项目中检测眨眼的方法包括检查从耳机接收的信号的质量。强烈的眨眼会移动前额上的皮肤,从而降低信号质量,这被解释为眨眼。如果头部移动,耳机的传感器可能会轻微移动,从而降低信号质量,这将被识别为眨眼。

电子零件

  1. NeuroSky MindWave Mobile 2 耳机和 1 节 AAA 电池
  2. 一台电脑(我用的是苹果 iMac)
  3. Arduino Uno 或其他型号及其 USB 电缆
  4. HC-05 蓝牙模块
  5. 两个伺服电机(我使用的是 Solarbotics HXT900 微型伺服电机)
  6. 面包板和面包板电线
  7. 绿色、黄色和红色 LED
  8. 3 x 330 欧姆电阻
  9. 2 x 1K 欧姆电阻
  10. 2 x 2K 欧姆电阻
  11. 电源,约 5 伏,例如支架中的 3 节 AA 电池

第 1 步:将 HC-05 连接到 Arduino,对其进行配置和配对

有关详细信息,请查看我之前的教程之一中的第 1 步第 2 步

第 2 步:将舵机连接到遥控器

有两种方法可以将 Arduino 连接到卡车的遥控器:

遥控器可能会被破解如下:移除或绕过由控件推动的开关,然后将 Arduino 连接到控制器的电路板,并对 Arduino 进行编程,以在正确的电线上施加电压。我遥控器中的开关太小了,我觉得尝试将新电线焊接到电路板上的适当位置太棘手了。如果我犯了一个小错误,董事会可能会毁了。
我使用伺服器来移动控件。将伺服系统连接到遥控器被证明是一个“有趣”的挑战。
幸运的是,有一个大小合适的小塑料盒,经过一些切割和安装后,可以将伺服系统连接到卡车的遥控器上。尺寸为 2-56 的螺母和螺栓将盒子的各个部分固定在一起。两个螺丝将盒子固定到遥控器上。

左/右控制的伺服臂在末端有一个小凹口,给它一些摆动空间。伺服臂的中心不太可能与控制器的中心完全对齐。固定该臂末端的螺钉需要稍微松动。

为了连接左/右舵机,我使用了 2-56 号螺母和螺栓,并且不得不稍微扩大舵机上的螺栓孔。实芯线将 Go/Stop 伺服器固定到位。

第 3 步:连接 Arduino

电路如图所示,描述如下:

  1. Arduino 的 +5V 在面包板上变为 +
  2. Arduino 的 GND 连接到 - 在面包板上
  3. 从引脚 2 到黄色 LED 的长线和另一条 LED 线到面包板上的 330 欧姆电阻
  4. 从引脚 4 到绿色 LED 的长线和另一条 LED 线到面包板上的 330 欧姆电阻
  5. 从引脚 7 到红色 LED 的长线和另一条 LED 线到面包板上的 330 欧姆电阻
  6. 引脚 9 连接到 Go/Stop 伺服的信号线。是黄色的。
  7. 引脚 10 连接到左/右舵机的信号线。
  8. 伺服器的橙色电线连接到单独的 4.5 伏电源的正极。
  9. 伺服器的棕色电线去 - 在面包板上。
  10. 独立电源的负号去 - 在面包板上。
  11. HC-05 TXD 连接到 Arduino 的 RX(引脚 0)
  12. HC-05 + 转到面包板上的 +
  13. HC-05 GND 到 - 在面包板上

第 4 步:Arduino 代码

代码有以下主要功能:

从 MindWave 耳机读取数据。
当注意力大于 70 时打开绿色 LED 并移动 Go/Stop 伺服臂以推动 Go/Stop 触发器。
当注意力小于 70 时关闭绿色 LED,并将 Go/Stop 伺服臂移回中点。
当检测到闪烁时打开黄色 LED 并将闪烁信号设置为 1。
1.2 秒后检查第二次闪烁。
如果是单次闪烁,将左/右舵机臂向“左”移动 2 秒钟,然后将其转回,并关闭黄色 LED。
如果是双闪,打开红色LED,关闭黄色LED,将左/右舵机臂向“右”移动2秒,然后将其转回来,然后关闭红色LED。
在每个主要步骤中,在计算机的串行监视器中显示数据。
Arduino (代码)可以从位于此步骤的 Truck.ino 文件点击下载。(在编写这些指令时,instructables 系统有时会删除位于代码开头的部分 #include 语句。第一个应该是 #include 后跟左箭头 < 后跟 Servo.h 后跟右箭头 > 和第二个应该是 #include 后跟左箭头 < 后跟 Mindwave.h 后跟右箭头 >)。

草图使用必须在运行代码之前安装的特殊库。可从以下网站获得:该网站还包含安装库的说明和示例。

这个项目可以在不使用库的情况下完成,但代码会更复杂。用于从耳机读取数据、提取注意力级别和检查信号质量的代码在本网站包含的示例代码中:http://developer.neurosky.com/docs/doku.php?id=mindwave_mobile_and_arduino

代码应该可以成功编译,但值得注意的是可能会为 MindWave.cpp 库显示一条警告消息。

第 5 步:上传 Arduino 代码并运行

  1. 在计算机上启动 Arduino 应用程序。
  2. 将伺服器连接到单独的电源。伺服臂移动几度,但当草图运行时,它们将移回中点。
  3. 将 Arduino 的 USB 电缆连接到计算机。HC-05 应该快速闪烁。
  4. 将 HC-05 的 TXD 线与 Arduino 的 RX(引脚 0)断开,上传草图,然后重新连接此 RX 线。
  5. 打开串行监视器。检查波特率是否为 57600。
  6. 打开遥控卡车的电源。
  7. 开启 MindWave。几秒钟后,HC-05 应每 3-4 秒快速闪烁 2 次,表明设备已配对。
  8. 将 MindWave 戴在头上并安装耳夹。它现在应该将数据发送到 Arduino。
  9. 完成后,关闭串行监视器。
  10. 关闭 MindWave。
  11. 断开 USB 电缆与 Arduino 或计算机的连接。
  12. 退出 Arduino 应用程序。
  13. 将伺服的电源线与单独的电源断开。
  14. 关闭卡车电源。

将代码上传到 Arduino 后,它可以使用单独的电源,而不是通过 USB 连接到计算机。唯一的区别是没有串行监视器来显示数据。步骤如下:

  1. 将伺服器连接到单独的电源。伺服臂移动几度,但当草图运行时,它们将移回中点。
  2. 将 Arduino 连接到电源。
  3. 打开遥控卡车的电源。
  4. 开启 MindWave。几秒钟后,HC-05 应每 3-4 秒快速闪烁 2 次,表明设备已配对。
  5. 将 MindWave 戴在头上并安装耳夹。它现在应该将数据发送到 Arduino。
  6. 完成后,关闭 MindWave。
  7. 断开 Arduino 与其电源的连接。
  8. 将伺服的电源线与单独的电源断开。
  9. 关闭卡车电源。

重要提醒

  1. 如果您的 HC-05 的固件是版本 2 或 3,我的理解是在 AT+INQ 命令之前需要命令 AT+INIT。我的HC-05的固件版本是4.0-20190815,无法识别AT+INIT命令。要检查您的 HC-05 的版本,请输入以下命令:AT+VERSION
  2. 如果您按下 Arduino 的重置按钮,这会将 HC-05 的设置恢复为出厂默认设置。所有配对步骤都必须重复。
  3. 使用舵机时,需要单独的电源,例如 3 节 1.5 伏电池。Arduino 的 GND 必须连接到外部电源的负极。在没有外部电源的情况下,USB 电源没有足够的电压,并且当伺服激活时 HC-05 会失去配对。它在几秒钟后配对,然后在下次伺服激活时取消配对。
加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论