用Arduino通过脑电波控制一个遥控飞机制作方法

更新时间:2023-05-12 03:41:02 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Puzzlebox轨道:使用一个Arduino

来控制红外线直升机

在这个造说明,我们将解释如何红外信号所使用的远程控制玩具或设备,然后介绍如何用简单的电路可以被添加到一个Arduino的通过自由,开放源码的软件操作相同的设备。

本文是系列涵盖了部分Puzzlebox轨道 ,脑控直升机采用开放式设计,开放的硬件和开源软件。 直升机可通过脑电图耳机加上任一移动装置或专用Puzzlebox金字塔遥控装置来操作。 该Puzzlebox金字塔包括基于微控制器的Arduino 。

而我们指的是Puzzlebox轨道中的例子,但其原理,源代码,并在很大程度上软件都直接适用于大多数的任何玩具或其中使用红外(IR)远程控制

通过移除这些广告

签约

1步:在远程控制

在这里,我们在一个非常广泛的意义如何红外遥控器可以解释的。

至少有1个红外LED(或红外发射器,红外灯,红外发射器),每一个红

外遥控器里面,包括您使用来控制你的电视之一。 当您按下遥控器上的一

个按钮,红外发光二极管会发出一定的一系列“低”和“高”代表一连串的“0”

和“1”。(要严格,这是常见的“高”和相应的“低”是由“0”和“高”和“低”不同时 期的另一个组合代表一个“1”) 。不同系列的“0”和“1”意味着不同的事情,比 如可能“1100100000111”可指“关掉电视”和“001101011100”可以指“降低音 量”。

红外也投你周围光源和热源:灯泡,阳光,暖风机,甚至还有人。 因此, 遥控器需要具有发送红外线代码到接收装置(电视机,直升机,汽车等) 的独特方法。这就是为什么红外线通常与“载体”传送-高频方波序列(通常 36KHZ,38KHz 的和 40kHz 的) 。 所以,如果你是捕捉和放大的红外线 信号,你会发现每一个“高”包括一个序列的方波 ,而不是一个连续的“高” 电压电平。我会用较高的基极电阻,或者使用 n 沟道 MOSFET 摆在首位(没有“基地”电阻 需要),并连接发射器(源的 MOSFET)直接接地,然后把红外灯旁边的 R2。 谢谢。 真棒项目。

puzzlebox (作者) nbeched1 年前 回复

再次感谢您的留言反馈! 虽然我们同意你的方式建议将工作,你能解释一下你 的电路设计的精确优势?

skrubol puzzlebox1 年前 回复

连接的 NPN / N 型接地的发射极/源的原因是为了简化计算。 由于 nbeched 提到, 你可能想的电阻串联与红外发光二极管做限流,而不是晶体管,在这种情况下, 你计算出电阻(VCC-压差)/ ILED,这通常是(5-1.2)/。 1 = 38。 然后,分 别可以计算出基极电阻为<=(输出电压-0.7)* alpha_min / ILED。 阿尔法至少 应该是 10-20,这样你就可以通常只是欺骗和

做出抵抗 10 倍的其它电阻。 如果你试图将尽可能高效使用 BJT(场效应管会更有效,)你的方法更好(上述 废物的基极电流),但有点痛来计算,并且在某些情况下可能会不工作(如工作 电压过低。)ILED = IE 浏览器= IB + IC。 RB 现在将(输出电压,压差-0.7)* alpha_min / ILED。

nbeched puzzlebox1 年前 回复

我会尽量不要有太多人混淆视听,这是很难做到的评论没有图片,没有什么,但 我会尽力。 当您使用晶体管作为开关, 你想要的集电极 - 发射极 (漏极 - 源极与 MOSFET 的)电压要么是最小或最大。 最小表示 ON 状态(负载)和最大(因为你已经 猜到了) OFF 状态。最小的 Vce 相当于最小 RCE (集电极 - 发射极电阻) - 理 想(当然,理论上)短路。 最大的 Vce(和最大 RCE)蕴涵着极高的电阻(理 想情况下,开路或电阻无穷大)。 所绘制的方式, 它可以是细为一个 LED, 但是, 如果该晶体管不会“达到”饱和度, 更高的功率载荷将导致晶体管过热和可能燃烧。 为这个原因,它是利用一个 NPN 晶体管(或 n 沟道 MOSFET)最靠近地面,并 从正电源到集电极(在 MOSFET 的漏极)连接的负载的普遍做法。 相反可以与 pnp 型或 p 沟道 MOSFET 来完成,但是 npn 型/ N 沟道通常优选用于如果地面 是常见的,负载可以从一个更高的电压,只要你的晶体管可以处理它供电。 同样,这只有当你做,你希望它是在有源区类似的配置,你所拥有的模拟放大器 (如音频)运行的晶体管作为开关应用时,... 如果你按照我的建议, 你可以把它放到一个更高的价值电阻 R2 时, 晶体管饱和, 你可能最终会拉动更多的电流,可能烧毁 LED 作为。 希望这是很清楚,希望我没有混淆的人太多了。

nadkarsushant4 个月前 回复

dmb00581 年前 回复

嗨! 我已经试过你造说明,因为我有一个“机器人飞碟”直升机的球,我觉得是一 样的,你用一个,而所有其他位在我的垃圾邮件箱。 我发现一个问题,虽然, 不知道你是否有过任何想法。 该命令不产生任何反应。 相反,什么似乎是一个 随机的时间间隔后,“直升机将进入全油门,升空几秒钟后,进入零功耗! 手机 控制它细如往常一样, 和 IR 电路 blipping 距离 (可以看到它在我的手机摄像头 漂亮的提示),所以我不知道去哪里找真的。

cogit0 dmb00587 个月前 回复

我有同样的问题,因为 dmb0058 和 hopkinsbizz:指示灯闪烁很好相处,但发 出的指令没有任何效果。 支柱启动(“p”的指令?) 10 秒后,保持 2 秒钟,然 后再关闭。我已经添加调试语句都在我的代码, 看看是否有什么正被随机发送,

和 COM 端口看起来安静。 不知道是否是否有输

出代码生成或故障有一些微妙 的在我的线路,我很想念。 任何帮助表示赞赏!

hopkinsbizz dmb005811 个月前 回复

我想知道,如果你曾经有这个问题解决了吗? 我有相同的问题。 我把一切都成 立, 但它只会来吧随机。 据我所看到的, 我使用的是相同的直升机作为 Puzzlebox 轨道项目是。 谢谢

techhobbit1 年前 回复

供参考:我见过的任何这些直升机的最便宜的是现在在 JCPennys ...在线(和我 的本地存储)...每个 12 美元!

mid_life_crisis1 年前 回复

我有这些直升机之一,我不能飞了。 我买了它,同时出状况,所以我不能再回 到购买的地方。 当施加足够的油门让它飞, 而不是往上走, 这竹笋在地板上。 如 果您有任何调整的想法,我会非常感激。 顺便说一句,学习有关的 Arduino 和面包板电路简单好看的项目。

puzzlebox (作者) mid_life_crisis1 年前 回复

首先想到的是使肥大的仔细检查,特别是与周围的转子叶片。 有时,一个流浪 的头发可以收集和环绕在这里,摆脱了导航。 除此之外损坏转子叶片或低(或 坏)的电池可能会诱发因素。 我们提供更换刀片的 Puzzlebox 轨道。

MIC1001 年前 回复

良好的造说明,并真的不错的项目:)

埃德加 1 年前 回复

大项目,去我的博客: http://faz-VOCE-mesmo.blogspot.pt/2012/11/muahahaha-instructables-E-idei as-geniais.html

nbeched1 年前 回复

请周围的红外灯在这两张图片说明效果添加少许的评论框, 因为当我第一次看这 一步,我想:“为什么地球上,你把你的手机走的是电路的画面图片?” :)

puzzlebox (作者) nbeched1 年前 回复

感谢伟大的反馈。 注释框中加入!

dgateley1 年前 回复

优秀的项目。 一会学到一大堆的复制是非常有用的东西,并有很好的机会,去 更深。 一个理想的 Arduino 开始的项目。

amandaghassaei1 年前 回复

我爱直升机的外骨骼设计! 感谢您的信息。

第 2 步:捕获控制信号

你可能有一个问题:你怎么能学会使用遥控器的红外代码?

一种方法是使用逻辑分析仪 。

逻辑分析仪是一种电子仪器,这在数字电路中显示的信号。 (数字电路表

示的信号由模拟电平的离散的条带,而不是一个连续的范围,基本上,如

果有一个电路只有两个不同的电压电平,比如5V和0V,那么它是一个数

字电路,如果电路中的电压可二者之间的任何电压,那么它是一个模拟电

路。)

既然我们已经知道,一个IR代码是一个数字信号,而不是模拟信号,可

以利用逻辑分析仪来捕捉和记录由红外LED发射的代码。 在对普通的第

一夹子(有时标记为GND,意思是“ 地面 ”) 阴极的IR LED的引脚,然

后夹在分析仪的信号通道中,以相同的红外LED的阳极端子。 然后告诉

逻辑分析仪开始记录的信号。 如果你不知道用哪个采样率,然后使用可用

的最高的选项。

这很容易识别红外LED的极性很简单,他们甚至焊接后:有内部的红外灯

的两个电极,做大/

再一个是阴极,而较小的一个是阳极。 看到照片。

注意 :它应该提到的是,如果逻辑分析仪无法读取的IR信号,但控制器

能够使直升机飞行,它是可能的测试导线夹在以错误的方式围绕,并且接

地和信号引线应切换。

第3步:了解如何红外指令是由二进制代码表示的

在这里,我们解释的原始控制信号是如何被解码,这样的算法可以被写入

重现。

看看图1,你可以看到红外灯发出红外线指令,几乎每0.1秒。

看看图2,并注意时间戳,并把它比作1张 ,加载A_H3RMFM.logicdata

文件(在zip文件)与Saleae逻辑的软件 ,信号数据移动到4S,放大,

和你会看到完全相同的数据作为显示的图像。

让我们举一“高”一“低”的名称相结合,说“ 有点 ”。 然后,在图2的第2位

是从其他地方用高= 0.768ms,低

= 0.477ms不同,所以IET的把它们放

在一边,因为它很可能是这两位是专门定时来表示一个IR命令的开

始。 (事实上,如果你看看其他的命令,他们总是用这两位领导。)

那么让我们来看看其他地方。 只有两种左位,一个是高= 0.715ms,低=

0.759ms,另一个则是高= 0.377ms,低= 0.422ms。 让我们称第一类位“7”,

在第二类位“4”的。 然后在图2中所示的代码是4 4 7 4 7 7 4 7 7 7 4 7 4 4

7 7 4 4 7 4 4 7 7 7 7 7 4 7 7 4 7,我们可以重新分配7为“1 “和4为”0“(或

反过来)。 如果我们这样做了,然后这个命令等于

0010110111010011001001111101101。

第4步:解码控制信号

接下来,我们需要解码的指令,这基本上意味着要了解的COMAND工作,

什么信号的每一位代表。 这个过程是相当具有挑战性的,有很多猜测的成

分。 的算术,逻辑和想象力有时一个很好的基础,是必需的。

我们对Puzzlebox轨道的信号进行解码的结果已经摆在一个开放式办公室

的电子表格文件(在.ZIP)。 该文档的屏幕截图也包括在这一步。

在测试我们提出的油门和方向摇杆到不同的位置,用逻辑分析仪记录每一

个。 然后我们试图将命令从记录的信号进行解码。

在A列中,T1 T5是指节气门等级1 5,二级是指左最大,R2是指权

利最大,F2是指远期最大,B2表示回最大。 AB和C指三种不同的“信道”

(不同的信道可用于在同一时间没有他们的信号相互干扰,以控制在相同

的位置的多个不同的直升机)。

的信号的意义开始变得明显,一旦组织并以这种方式显示。 的7个比特中

的黄色块定义的油门水平时,7位中的绿色块定义的左,右转动的速度,6

位红色定义前倾和向后,并且在蓝色定义哪些信道要使用的两个位。 (同

样,当你有一个以上的直升机在同一个地方,要分别控制它们的渠道被使

用。有三个渠道意味着有一个最大的三架直升机可以在同一个房间里,仍

然独立悬挂)。

这是怎么回事青色块?

这是指一个校验和。校验和是在你需要确保接收到的信息内容相匹配发送

的任何通信系统的通用机制。 校验和是一个数字,从代码的其余部分计算

的,预定义的算法。 当设备接收的码,它会先尝试计算校验和本身的话,

就比较附加在邮件中的校验和。 如果它们相等则消息是正确的,否则很多

事情已经传输,例如照明系统在明亮的房间可以用红外感应器会干扰过程

中出错。 如果校验和不匹配,则接收设备通常会再次询问的发送器,用于

将相同的消息。 如果该设备是不能够进行双向通信(如在大多数红外设备

的情况下),则该消息必须被忽略。

用于生成校验码的算法可以是简单的或极为复杂。 一些常见的方法包括按

位之和按位异或运算。

下面的算法所使用的Puzzlebox轨道:

从第3位开始(包括领先的2位,并将它们分配到0)

加起来每4位

从结果得到的最后4位

使用0B10000(二进制10000等于十进制16),减去的最后四位

以T1为例:

0B0100 + 0B0111 + 0B0100 + 0B1100 + 0B1001 + 0B1111 = 0B110011

最后4位是0B0011。

0B10000-0B0011 = 0B1101,它匹配于所述控制信号的结束发现校验和。

第5步:上传控制程序到Arduino

一旦红外线命令信号已被解码时,我们可以按照相同的算法来生成自己的控制命令,并通过IR LED连接到一个Arduino微控制器发送它们。

Arduino是一个开源的电子快速成型项目,被广泛用于生产商,艺术家,学生和业余爱好者。

Arduino的微控制器可以通过一个集成开发环境或IDE进行编程。 该

Arudino IDE是完全免费的软件。 如果您不熟悉如何设置的Arduino IDE您的计算机上,请访问

我们的源代码附后。 在这个项目中,我们使用了Arduino的乌诺(R3),

但代码应该能够在基础上,用ATmega三百二十八分之一百六十八其他

Arduino的机型上运行的。 解压缩zip文件,把一切都在你的速写本路径,

并重新启动的Arduino IDE。 单击文件,将光标移动到写生,你会看到

puzzlebox_orbit_Uno_V3。 上传该文件到您的UNO和你走了一半!

PS有一个包含的文件,这是需要的Arduino产生一定的PWM信

号。 衷心感谢作者萨姆骑士。

第6步:建立电路

接下来,我们需要建立一个简单的电路能够安全地连接的红外灯到

Arduino。

详情请参阅随附的原理图如下说明。

有4个元件中的电路2的电阻(4.7K,47欧姆),1个红外LED(IR333C /

H0 / L10),和1个NPN晶体管(2N3904)。

电阻器是不特定的方向,两端是相同的。

红外灯的符号,1脚为正极(长导线),2脚为正极(更短的交货)。

2N3904是NPN晶体管。 看的平坦面,左引线是发射极(引脚1中示

意),中间引线底座(引脚2中示意),右引线是集电极(引脚3

中示意)。

焊接部件(或使用面包板),如图示意图:

47欧姆的电阻,以收藏家的NPN晶体管

4.7K电阻基础上NPN晶体管

红外发光二极管的阳极(长铅)到发射极NPN晶体管

50欧姆的电阻到+ 5V上的Arduino脚的另一端。 (另一种方法是

使用更大的电阻,说100欧姆,以取代50欧姆之一,而另一端连接

到VIN引脚上的Arduino)这个电阻是为了确保我们不会烧坏红外

灯。 红外发光二极管只能接受最多100个mA电流,因此,如果我

们用5V驱动红外发光二极管,我们需要确保当前运行通过LED被限

制在小于100毫安,这将产生电阻R = 5V /100毫安= 50欧姆。最

近经常发现的电阻为47欧姆。

的5K欧姆的电阻的另一端连接到Arduino的宇野针10。 最近经常

发现的电阻是4.7K欧姆。

红外灯(更短的交货)的阴极GND上的Arduino欧诺。

有一个共6个连接。 之后每个连接都是由,你所有的设置。

第 7 步:完成电路

在这里,您可以看到完整的电路,组装使用面包板来连接各个组件。

第 8 步:测试电路

很多手机都有摄像头,实际上可以看到红外光。

在这一步中,我们将移动电话,进入拍照模式,按住镜头在红外灯。

在“实时预览”模式下,相机应该是足以看到来自IR LED闪烁灯发出的。

即使你看不到这个光用自己的眼睛,你的手机就可以显示了!

如果红外灯在闪烁,你应该能够通电直升机和保持它在红外灯。 叶片应开始几片刻的延迟后旋。

如果您使用的是iPhone, 请注意 ,这种方法可能无法正常工作。 而iPhone似乎采用了红外线滤镜,让你看不到的红外与iPhone的摄像头。 (我们与iPhone4S的测试)。

如果直升机不能正常工作,请确保在直升机后面的IR接收器一字排开的红外灯。

第9步:飞行的直升机

在这一点上,你应该有一个工作,测试电路,并准备开始飞行Puzzlebox轨道直升机。

在步骤5中,我们讨论了如何使用的Arduino IDE连接到您的Arduino板,并上传软件。 根据Arudino IDE的“工具”菜单中,你会发现一个选项“系列显示器。” 拉了起来,并确保波特率设置为9600将允许您使用键盘来设置控制命令发给直升机。

下面的命令可以进入,一次一个(依次按下“Enter”键):

U:加大油门略(该值会导致直升机抬离地面)

D:略有下降油门

L:增加横摆略(这应该导致直升机倾斜,飞向左边)

本文来源:https://www.bwwdw.com/article/b08e.html

Top