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

基于Arduino的脑电波控制无人机系统

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

基于Arduino的脑电波控制无人机系统

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

无人机非常的有趣,用脑电波操控无人机更令人激动。下面我给大家介绍一下我的项目,项目大概流程是这样的,耳机感应我的脑电波并将它们传输到一台小型计算机中。当我提高注意力时,计算机会转换信号并将它们传递给我已连接到计算机的无人机控制器。当我注意力分散的时候,无人机就会降落。

耳机选择的是NeuroSky MindWave Mobile 2,计算系统选择的是Arduino Uno微控制器,蓝牙模块是HC-05。

视频演示 :

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

  • 将 HC-05 连接到 Arduino
  • 配置 HC-05 并将其与 MindWave 配对
  • 将伺服器连接到无人机的控制器
  • 连接Arduino
  • 写 Arduino 代码
  • 上传 Arduino 代码

需要零件:

  • NeuroSky MindWave Mobile 2 耳机和 1 节 AAA 电池
  • 一台电脑
  • Arduino Uno 或其他型号及其 USB 电缆
  • HC-05 蓝牙模块
  • 伺服电机
  • 面包板和面包板电线
  • 绿色 LED 和黄色 LED
  • 2 x 330 欧姆电阻
  • 2 x 1K 欧姆电阻
  • 2 x 2K 欧姆电阻
  • 10K欧姆电位器
  • 5伏电源

用于与无人机控制器的伺服连接的部件:

  • 几根牙签
  • 一小块薄纸板
  • 剪刀
  • 胶水
  • 磁带

第 1 步:将 HC-05 连接到 Arduino

将 HC-05 插入面包板并将其连接到 Arduino,如图所示。

  • HC-05 的 RXD 通过由 2 个电阻组成的分压器连接到引脚 11 端口
  • TXD 到引脚 10 端口
  • 地对地
  • EN 通过由 2 个电阻器制成的分压器连接到引脚 9 端口
  • 暂时不要连接HC-05的VCC端口

使用分压器的原因是HC-05的RXD和EN在得到5伏一段时间后往往电压过高导致板子烧坏,电压应该降到3.3伏。分压器由一个 1K 欧姆电阻器组成,一端连接到 Arduino 的 5 伏电压,另一端连接到 2K 欧姆电阻器,另一端连接到 GND。需要两个分压器,一个用于 RXD,另一个用于 EN。

第 2 步:配对 HC-05

参考步骤如下:

1. 在电脑上启动 Arduino 应用程序

2. 将 Arduino 的 USB 线连接到电脑,Arduino 上的绿灯应该亮着。

3. 下载 ino 文件,复制以下代码,在 Arduino 的串行监视器和蓝牙模块之间中记录数据,并将其粘贴到新的 Arduino 代码中。
4. 将代码上传到 Arduino。

5. 按下 HC-05 上 EN 引脚上的小按钮,将 HC-05 的 VCC 连接到 Arduino 的 +5v 并按住按钮几秒钟,直到 HC-05 上的红灯开始闪烁 2秒,然后关闭 2 秒。

6.在电脑上打开Arduino的串口监视器(Arduino应用程序窗口右上角),将右下角的选项设置为“Both NL & CR”和“38400”波特率。

7. 在串行监视器窗口的输入行内单击。在计算机键盘上键入 AT 并按回车键。如果响应为“OK”,则继续。如果不是“OK”,则再试一次。有时它第一次不起作用。

8. 打开 MindWave

9. 键入 AT 命令,每个命令后的响应应该是“OK”

AT+UART=57600,0,0 定义 MindWave 使用的波特率

AT+ROLE=1 将 HC-05 设置为 Master 而不是 Slave

AT+PSWD=0000 设置 MindWave 使用的密码。

AT+CMODE=0 将 HC-05 连接到特定设备

AT+CLASS=0 指定设备类别

AT+INQM=1,9,48 设置配对参数

AT+INQ 查看 HC-05 是否识别 MindWave。这可能需要 15-20 秒才能找到 MindWave。显示的设备之一的地址应与 MindWave 标签上的地址相同,格式为 xxxx:xx:xxxxxx。此地址用于接下来的 3 个命令(显示为 addr),但冒号必须用逗号替换。

AT+PAIR=addr,30

AT+BIND=addr

AT+LINK=地址

10. HC-05 上的红灯应每 3-4 秒快速闪烁 2 次。第一次做LINK命令,红灯没变。因此,我仔细检查了 Arduino 和面包板上的电线引脚是否正确按下,从 HC-05 中拔出 +5v 电线,执行步骤 #5,并输入 PAIR、BIND 和 LINK 命令。这一次,红灯变为每 3-4 秒快速闪烁 2 次。这意味着设备已配对。下次您使用这些设备时,它们会在几秒钟内自动配对。

11. 将 HC-05 的 TXD 线从 Arduino 的 10 号针脚上断开并连接到 Arduino 的 RX(0 号针脚),将 HC-05 的线从分压器上断开并拆下,并拆下用作分压器的电阻。

12. 关闭串行监视器

13. 关闭 MindWave

14. 从 Arduino 或计算机上断开 USB 电缆

15. 退出 Arduino 应用程序

第 3 步:将舵机连接到无人机的控制器

有两种方式连接到无人机控制器:

  • 移除操纵杆所连接的电位器,并将Arduino连接到控制器的电路板上,电位器的中间引脚已经连接。
  • 我的无人机控制器相对较小,因此,我决定根据注意力等级信号伺服来移动无人机油门的操纵杆。
  • 注意力信号容易获得,我在网上研究NeuroSky项目的时候,发现大部分项目都只用到了注意力信号。通常,如果注意力高,则冥想低,反之亦然。有些人可能可以很好的控制他们的注意力和冥想水平。

MindWave 耳机也可以检测到眨眼,获取和使用眨眼信号比注意力和冥想信号复杂得多。

第一张照片显示了伺服器是如何通过两个弹性体连接到我的控制器上的。如您所见,伺服臂和操纵杆之间存在间隙。然后将一端粘在伺服臂上,另一端安装在操纵杆上。

第 4 步:连接 Arduino


从配置和配对之后的电路开始,附加接线应如照片中所示。

  • 一根 330 欧姆电阻的导线连接到引脚 2 端口,另一根导线连接到绿色 LED 的长导线。绿色 LED 的短线在面包板上变为负极。
  • 一根 330 欧姆电阻的导线连接到引脚 4 端口,另一根导线连接到黄色 LED 的长导线。黄色 LED 的短线在面包板上变成负极。
  • 引脚 9 连接到伺服的信号线。
  • 伺服的橙色线连接到单独电源的正极。
  • 伺服的棕色电线在面包板上变成负极。
  • 独立电源的负极在面包板上变为负极。
  • 10K电位器到面包板正负,中间引脚到模拟引脚0。

要仔细检查,以下 7 条线应连接到面包板的负极:Arduino 的 GND、两个 LED 的短线、伺服、独立电源、HC-05 和电位器。以下 3 条线应连接到面包板的正极:Arduino 的 +5V、HC-05 和电位器。

第 5 步:Arduino 代码编写

当注意力等级高的时候,代码将打开 2 个 LED 并移动连接到无人机控制器油门操纵杆的伺服臂。

代码有以下主要功能:

  • 从 MindWave 读取数据
  • 获取注意力数据并将其显示在计算机上的串行监视器中
  • 当注意力大于 50 时打开黄色 LED,如果较低则关闭;当注意力大于 70 时打开绿色 LED,如果较低则关闭。
  • 当注意力等级大于50 时移动舵机臂。移动最大为30 度,因为我的油门操纵杆不允许超过30 度。电位器调到最大值(不高于30度)。使用充满电的无人机电池,电位计应处于中点。当无人机的电池快用完时,电位器应该调高。
  • 该代码通过将油门增加到电位器设置的最大值的 30% 0.3 秒,再增加 0.3 秒到 50%,0.3 秒到 70%,最后到 100% 来使无人机逐渐升起。在包含此功能之前,无人机会非常迅速地升起并在突然到达绳索末端时变得不稳定。而绳子的原因是为了防止无人机向上或横向飞走。

具体代码可以参考链接:点击下载

第 6 步:上传 Arduino 代码并调试

  • 在计算机上启动 Arduino 应用程序
  • 将 Arduino 的 USB 电缆连接到计算机,HC-05 应该快速闪烁
  • 将伺服的电源线连接到单独的电源,并将该电源的负极连接到 Arduino 或面包板的 GND
  • 将 HC-05 的 TXD 线与 Arduino 的 RX(引脚 0)断开,上传代码,然后重新连接此 RX 线
  • 打开串行监视器,检查波特率是否为 57600
  • 连接无人机的电池并将无人机放在平坦的表面上
  • 打开无人机控制器的电源
  • 同步无人机和控制器,我的指示是将油门一直拉到底,然后一直拉。为此,必须将伺服器从控制器上拉开(弹性装置仍在原位),然后可以用一根手指上下移动油门操纵杆。同步后,油门应位于中间下方,以便将伺服臂放回原位
  • 开启 MindWave。几秒钟后,HC-05 应每 3-4 秒快速闪烁 2 次,表明设备已配对
  • 将 MindWave 戴在头上并安装耳夹。它现在应该将数据发送到 Arduino,串口监视器应该显示注意力级别,当注意力级别超过50时黄色LED亮起无人机起飞,当注意力级别超过70时绿色LED亮起
  • 完成后,关闭无人机的控制器
  • 断开无人机的电池
  • 关闭串行监视器
  • 关闭 MindWave
  • 从 Arduino 或计算机上断开 USB 电缆
  • 退出 Arduino 应用程序
  • 将伺服的电源线与单独的电源断开
  • Arduino 可以使用单独的电源,而不是通过 USB 连接到计算机,唯一的区别是没有串行监视器来显示数据。

如何提高注意力

以下是一些建议:

  • 专注于阅读食品容器上的成分清单。
  • 在食物容器上记住一些营养成分
  • 在头脑中进行算术运算
  • 听一首说唱歌曲并试着理解歌词
  • 用你不流利的语言阅读一些东西

注意事项:

  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. 如果在上传代码之前 HC-05 的 TXD 未与 Arduino 的 RX 断开连接,则计算机屏幕上 Arduino 应用程序窗口的底部将出现一条错误消息。
  4. 如果使用舵机,则需要单独的电源,例如 3 节 1.5 伏电池。Arduino 的 GND 必须连接到外部电源的负极。在没有外部电源的情况下,USB 电源似乎没有足够的电源,并且在伺服激活时 HC-05 会失去配对。它在几秒钟后配对,然后在下次伺服激活时取消配对。
加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论