0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个遥控Arduino Air-Boat的教程

科技观察员 来源:circuitdigest 作者:Mr.X 2022-08-01 16:58 次阅读

在这个项目中,我们将构建一个遥控 Arduino Air-Boat,可以使用433 MHz 射频无线电模块进行无线控制。我们将使用自制遥控器通过构建我们自己的 433 MHz 发射器和接收器模块来控制这艘船。对于远程控制设备或两个设备之间的通信,我们有很多选择,例如 IR、蓝牙、互联网、RF 等。与 IR 通信相比,无线电通信具有范围更广等优点,但它没有需要在发射器和接收器之间建立视线连接。此外,这些模块可以进行两种通信方式,这意味着它可以同时发送和接收。所以使用这个 433MHz 射频模块,让我们构建一个Arduino RC 船在本教程中。

我们之前使用这些 433Mhz 射频模块构建了许多远程控制项目,用于控制像这种射频控制机器人这样的机器人,或者用于家庭自动化应用程序以使用射频控制家用电器。除了使用射频模块外,我们之前还构建了蓝牙控制的树莓派汽车和 DTMF手机控制的 Arduino 机器人。

Arduino RC 船所需的组件

pYYBAGLnlVuAN2piAAgxUwC8ci4736.png

433MHz 发射器和接收器

Arduino(任何 Arduino,以减小我使用 promini 的尺寸)

HT12E 和 HT12D

按钮 - 4Nos

电阻器 - 1mega ohm, 47k ohm

L293d 电机驱动器

9V 电池(我使用的是 7.4 伏电池)- 2Nos

7805调节器- 2Nos

直流电机 - 2Nos

电机叶片或螺旋桨(我使用的是自制螺旋桨)- 2Nos

.1uf 电容器 - 2Nos

普通PCB

433MHz 射频发射器和接收器模块

poYBAGLnlVeANT-2AAWPEFKFuo0580.png

这些类型的射频模块在制造商中非常受欢迎。因为它们的成本低且连接简单。这些模块最适合所有形式的短距离通信项目。这些模块是ASK(幅移键控)在 RF 模块中,幅移键控 (ASK) 是一种幅度调制形式,将数字数据表示为载波幅度的变化。在 ASK 系统中,二进制符号 1 通过在 T 秒的位持续时间内传输固定幅度载波和固定频率来表示。如果信号值为1,则传输载波信号;否则,将发送信号值 0。这意味着它们在传输逻辑“零”时通常不消耗功率。这种低功耗使它们在电池供电的项目中非常有用。

433MHZ射频发射器

pYYBAGLnlVKAEYrGAAY8KT08r48792.png

这种类型的模块非常小巧,带有 3 个引脚 VCC、地和数据。其他一些模块带有一个额外的天线引脚。发射模块的工作电压为3V-12V,该模块没有任何可调元件。该模块的主要优点之一是低电流消耗,它需要几乎为零的电流来发送零位。

Arduino RC船用发射器框图

poYBAGLnlUyAbIRVAABSRACiqrA355.png

在上面的框图中,有四个按钮(控制按钮),这些按钮用于控制船的方向。我们有四个用于向前、向后、向左和向右。从按钮,我们得到控制船的逻辑,但不能直接连接到编码器,这就是我们使用 Arduino 的原因。你可能会想我为什么在这里使用 Arduino,只是因为我们需要同时拉下编码器的两个并行数据输入,以实现仅靠按钮无法实现的向后和向前运动。然后编码器将即将到来的并行数据编码为串行输出。然后我们可以在射频发射器的帮助下传输该串行数据。

Arduino RC 遥控器(发射器)的电路图

pYYBAGLnlUmAYVAMAACIIzjzPFw787.png

在上面的电路中,您可以看到所有四个按钮的一侧都连接到 Arduino (D6-D9) 的四个数字引脚,其他四个都连接到地。也就是说,当我们按下按钮时,相应的数字引脚会变为逻辑低电平。HT12E编码器的四个并行输入连接到 Arduino (D2-D5) 的另外四个数字引脚。所以在Arduino的帮助下,我们可以决定编码器的输入。

而说编码器HT12E是一个12位编码器和一个并行输入-串行输出编码器。在 12 位中,8 位是可用于控制多个接收器的地址位。引脚 A0-A7 是地址输入引脚。在这个项目中,我们只控制一个接收器,所以我们不想改变它的地址,所以我将所有地址引脚接地。如果你想用一个发射器控制不同的接收器,你可以在这里使用 DIP 开关。AD8-AD11 是控制位输入。这些输入将控制 HT12D 解码器的 D0-D3 输出。我们需要连接一个振荡器进行通信,振荡器频率应为 3KHz用于 5V 操作。那么 5V 的电阻值为 1.1MΩ。然后我将HT12E的输出连接到发射器模块。我们已经提到,Arduino 和 rf 发射器模块,这两个设备在 5V 高压下工作都会杀死它,所以为了避免这种情况,我添加了 7805,稳压器。现在我们可以连接 (Vcc) 6-12volt 任何类型的电池输入。

poYBAGLnlUWADxgfAAEuKNE4mBk436.png

构建 RC BOAT 发射器电路

我将每个组件焊接在一个普通的 PCB 上。请记住,我们正在开展一个射频项目,因此存在很多不同类型干扰的机会,因此请尽可能紧密地连接所有组件。最好为 Arduino 和发射器模块使用母排针。此外,尝试将所有东西焊接在铜垫上,而不是使用额外的电线。最后,将一根小线连接到发射器模块,这将有助于增加总范围。在连接 Arduino 和发射器模块之前,请仔细检查 lm7805 输出的电压。

poYBAGLnlUGAZ3CiAAbsmwW228Y783.png

上图显示了完成的 RC 船发射器电路的顶视图,完成的 RC 船发射器电路的底视图如下所示。

pYYBAGLnlTyAVvTCAAY_GkNZ32E226.png

构建 Arduino RC 船用发射器外壳

遥控器需要一个体面的身体。这一步是关于你的想法,你可以用你的想法创建一个远程主体。我正在解释我是如何做到的。做遥控器的时候,我选择4mm的MDF板,你也可以选择胶合板、泡沫板或纸板,然后我从上面剪下两块,长10cm,宽5cm。然后我标记了按钮的位置。我将方向按钮放在左侧,将前进、后退按钮放在右侧。在工作表的另一面,我将按钮连接到主发射电路。请记住,普通按钮有 4 个引脚,每侧两个引脚。将一个引脚连接到 Arduino,另一个引脚连接到地。如果您对此感到困惑,请用万用表检查或查看数据表。

pYYBAGLnlTiAJdBPAAiTE_0iVLg940.png

连接所有这些东西后,我将控制电路放在两个 MDF 板之间,并用一些长螺栓拧紧(如果需要,请参考下图)。再一次,创造一个好的身体完全取决于你的想法。

poYBAGLnlTSAHIV-AAVcV1foQWE815.png

433Mhz 接收模块

pYYBAGLnlTCAOlzsAAnRbo-ciPc745.png

这个接收器也非常小,带有 4 个引脚 VCC、接地,两个中间引脚是数据输出。该模块的工作电压为5v。与发射器模块一样,这也是一个低功耗模块。有些模块带有一个额外的天线引脚,但在我的情况下,它不存在。

Arduino RC 船接收器的框图

poYBAGLnlSyAV5WSAABo0N0htDE159.png

上面的框图描述了射频接收器电路的工作原理。首先,我们可以使用射频接收模块接收发射的信号。该接收器的输出是串行数据。但是我们无法用这个串行数据控制任何东西,这就是我们将输出连接到解码器的原因。解码器将串行数据解码为我们原始的并行数据。在本节中,我们不需要任何微控制器,我们可以直接将输出连接到电机驱动器。

Arduino RC船用接收器电路图

pYYBAGLnlSiAVBYHAACOKJeMzcA904.png

HT12D是一个 12 位解码器,它是一个串行输入并行输出解码器。 HT12D 的输入引脚将连接到具有串行输出的接收器。在 12 位中,8 位(A0-A7)是地址位,HT12D 将解码输入,只要它匹配其当前地址。D8-D11 是输出位。为了将该电路与发射器电路匹配,我将所有地址引脚接地。模块输出的数据为串行类型,解码器将此串行数据解码为原始并行数据,我们通过D8-D11输出。为了匹配振荡频率,应将 33-56k 电阻连接到振荡器引脚。第 17 脚的 LED 指示有效传输,只有在接收器连接到发射器后才会亮起。接收器的电压输入也是6-12伏。

pYYBAGLnlSGASgwYAADV3maOhKU346.png

为了控制电机,我使用了L293D IC,我选择了这个IC,因为它可以减小尺寸和重量,而且这个IC最适合控制两个方向的两个电机。L293D 有 16 个引脚,下图显示了引脚排列。

poYBAGLnlRyAWBj0AAD3NaC78M4446.png

pYYBAGLnlRmAcyLWAACq_Ij-ADg679.png

1, 9 个引脚是启用引脚,我们将其连接到 5 V 以启用电机 1A、2A、3A 和 4A 是控制引脚。如果引脚 1A 变低,2A 变高,电机将向右转,如果 1A 变低,2A 变高,电机将向左转。所以我们将这些引脚连接到解码器的输出 ps。1Y、2Y、3Y 和 4Y 是电机连接引脚。Vcc2 为电机驱动电压引脚,如果您使用的是高压电机,则将此引脚连接到相应的电压源。

搭建Arduino RC船的接收电路

在构建接收器电路之前,您应该记住一些重要的事情。重要的是尺寸和重量,因为在构建电路后,我们需要将其固定在船上。因此,如果重量增加,则会影响浮力和运动。

因此,与发射器电路一样,将每个组件焊接在一个小型通用 PCB 中,并尽量使用最少的电线。我将电机驱动器的引脚 8 连接到 5v,因为我使用的是 5V 电机。

pYYBAGLnlRSAGFL7AArBHJbF-xY495.png

建造遥控船

poYBAGLnlRCAbl04AAV0F10Vwxg123.png

我尝试了不同的材料来建造船体。我用 thermocol 片材得到了更好的结果。所以我决定用thermocol建造身体。首先,我拿了一个 3cm 厚的 thermocol 片并将接收器电路放在上面,然后我在 thermocol 中标记了船的形状并切割。所以这就是我造船的方式,大家可以按照自己的想法来造。

用于 Arduino 空气船的电机和螺旋桨

体重再次很重要。所以选择正确的电机很重要,我选择了 5 伏、n20 型的普通直流电机,它体积小、重量轻。为避免射频干扰,应将 0.1uf 电容并联到电机输入端。

poYBAGLnlQuABCnkAAdnlFwCQc0847.png

在螺旋桨的情况下,我用塑料片制作螺旋桨。您可以从商店购买螺旋桨,也可以自己制造,两者都可以正常工作。为了制造螺旋桨,首先,我拿了一块小塑料片,从上面切下两小块,然后在蜡烛热的帮助下弯曲这些小块。最后,我在电机的中心放了一个小孔,并固定在电机上。

pYYBAGLnlQaAB9vMAAf48kXjCIg922.png

Arduino RC 船的工作

这艘船有两个马达让我们称它为左和右。如果电机也顺时针移动(螺旋桨的位置也取决于),螺旋桨会从前面吸入空气并从后面排出。这会产生向前的阻力。

向前运动:如果左右电机都顺时针旋转,则向前运动

向后运动:如果左右电机都逆时针旋转(即螺旋桨从后侧吸入空气,向前侧排气),则会向后运动

向左移动:如果只有右电机旋转即船,只需从右侧拖动,船就会向左侧移动

向右移动:如果只有左电机旋转,即船只从左侧得到阻力,这将使船向右移动。

我们将电机驱动器的输入连接到解码器(D8-D11)的四个输出位。我们可以通过将 AD8-AD11 连接到遥控器中的按钮接地来控制这 4 个输出。例如,如果我们将 AD8 连接到将激活 D8 的接地。因此,我们可以使用这 4 个输出在两个方向上控制两个电机。但是我们不能只通过一个按钮来控制两个电机(我们需要它来进行前后运动),这就是我们使用 Arduino 的原因。在 Arduino 的帮助下,我们可以根据需要选择输入数据引脚。

遥控船的 Arduino 编程

这艘船的编程非常简单,因为我们只需要一些逻辑切换。我们可以用基本的 Arduino 功能实现一切。这个项目的完整程序可以在这个页面的底部找到。你的程序的解释如下

我们通过定义四个输入按钮和解码器输入引脚的整数来启动程序。

int f_button = 9; 
int b_button = 8; 
诠释 l_button = 7; 
int r_button = 6; 
诠释m1=2;
国际平方米=3;
诠释 m3=4; 
诠释 m4=5;

在设置部分,我定义了引脚模式。也就是说,按钮连接到数字引脚,因此这些引脚应该定义为输入,我们需要为解码器的输入获取输出,因此我们应该将这些引脚定义为输出。

   pinMode(f_button,INPUT_PULLUP);
  pinMode(b_button,INPUT_PULLUP);
  pinMode(l_button,INPUT_PULLUP);
  pinMode(r_button,INPUT_PULLUP);
  pinMode(m1,输出);
  pinMode(m2,输出);
  pinMode(m3,输出);
  pinMode(m4,输出);

接下来在主循环函数中,我们将使用 Arduino 的digitalread函数读取按钮状态。如果引脚状态变低,表示相应的引脚被按下,那么我们将执行如下条件 -

如果(数字读取(f_button)==LOW)

这意味着按下了前进按钮

{
   数字写入(m1,低);
   数字写入(m3,低);
   数字写入(平方米,高);
   数字写入(m4,高);
}

这将下拉编码器的 m1 和 m2,这将激活接收器侧的两个电机。同样,对于向后移动

{ 
   digitalWrite(m1, HIGH); 
   数字写入(m3,高);
   数字写入(平方米,低);
   数字写入(m4,低);
}

对于左移

{
   数字写入(m1,低);
   数字写入(m3,高);
   数字写入(平方米,高);
   数字写入(m4,高);
}

为了正确的运动

{ 
   digitalWrite(m1, HIGH); 
   数字写入(m3,低);
   数字写入(平方米,高);
   数字写入(m4,高);
}

编译代码后,将其上传到您的 Arduino 板。

故障排除:将船放在水面上,如果不尝试改变电机和螺旋桨的极性,请检查它是否正确移动。另外,尝试平衡体重。

poYBAGLnlQGALyMgAAecFupj8eA231.png

int f_button = 9;
int b_button = 8;
诠释 l_button = 7;
int r_button = 6;
诠释 m1 = 2;
诠释 m2 = 3;
诠释 m3 = 4;
诠释 m4 = 5;
无效设置(){
pinMode(f_button,INPUT_PULLUP);
pinMode(b_button,INPUT_PULLUP);
pinMode(l_button,INPUT_PULLUP);
pinMode(r_button,INPUT_PULLUP);
pinMode(m1,输出);
pinMode(m2,输出);
pinMode(m3,输出);
pinMode(m4,输出);
}
无效循环(){
如果(数字读取(f_button)==低)
{
数字写入(m1,低);
数字写入(m3,低);
数字写入(平方米,高);
数字写入(m4,高);
}
如果(数字读取(b_button)==低)
{
数字写入(平方米,低);
数字写入(m4,低);
数字写入(m1,高);
数字写入(m3,高);
}
如果(数字读取(l_button)==低)
{
数字写入(m1,低);
数字写入(平方米,高);
数字写入(m3,高);
数字写入(m4,高);
}
如果(数字读取(r_button)==低)
{
数字写入(m1,高);
数字写入(平方米,低);
数字写入(m3,高);
数字写入(m4,高);
}
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 射频模块
    +关注

    关注

    5

    文章

    81

    浏览量

    19704
  • 无线控制
    +关注

    关注

    0

    文章

    95

    浏览量

    19953
  • Arduino
    +关注

    关注

    187

    文章

    6455

    浏览量

    186444
收藏 人收藏

    评论

    相关推荐

    构建基于Arduino的吉他调音器

    在今天的教程中,我将分享如何构建自己的DIY Arduino吉他调音器。
    的头像 发表于 11-07 15:45 3933次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>基于<b class='flag-5'>Arduino</b>的吉他调音器

    基于Arduino构建自动饮水机

    在这个项目中,我们将使用Arduino构建自动饮水机和电磁阀,当玻璃杯靠近它时,它可以自
    的头像 发表于 11-09 16:22 2936次阅读
    基于<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>自动饮水机

    如何使用Arduino构建计算器

    在本教程中,我们将使用 Arduino 构建自己的计算器。这些值可以通过键盘(4×4 键盘)发送,结果可以在 LCD 屏幕上查看(16×2 点阵)。该计算器可以执行简单的运算,例如整数的加法,减法,乘法和除法。但是旦你理解了这
    的头像 发表于 11-21 17:43 5664次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>计算器

    如何使用Arduino构建消防机器人

    在这个项目中,我们将学习如何使用Arduino构建简单的机器人,它可以向火移动并在火周围抽水来扑灭火。这是
    发表于 11-23 17:10 1864次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>消防机器人

    基于Arduino控制器制作漂亮的遥控飞机

    描述M-控制器这张卡可以让我们控制遥控飞机。不幸的是,现在的遥控控制器非常昂贵。所以我做了基于A
    发表于 08-23 06:59

    使用Arduino构建数字罗盘

    描述几个人用机器人技术开发项目,其中大问题是确定他们的导航方向。换句话说,机器人在环境中移动,但系统不知道它的确切方向,这意味着它的导航过程。作为种解决方案,许多人采用GPS设备来辅助确定方向
    发表于 08-25 06:11

    如何利用Arduino构建功率计

    我们可能会想自己制作仪表。例如,当我们准备做一个太阳能光伏项目时,我们想计算负载的功耗,在这种情况下,我们就可以用
    的头像 发表于 04-12 16:23 3159次阅读
    如何利用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>功率计

    如何使用Arduino构建电子动画眼睛

    在这个项目中,我们将使用 Arduino 构建动画眼睛。在网上寻找新的项目创意时,我萌生了制作动画眼睛的想法,这个项目立即引起了我的注意。
    的头像 发表于 07-10 09:52 2456次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>电子动画眼睛

    基于IoT和Arduino构建IPL记分板

    今天我们将使用 NodeMCU 和 P10 显示模块构建基于 IoT 和 Arduino 的 IPL 记分板,它足够大,可以显示实时比分,而且制作起来非常简单。
    的头像 发表于 08-02 17:29 2340次阅读
    基于IoT和<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>IPL记分板

    使用无芯直流电机和nRF24L01构建最快Arduino遥控

    在这个项目中,我们将 使用 Arduino 构建完全不同类型的 RC 汽车,主要这辆车的目标是达到最高速度,因此我决定为遥控车试用 无芯
    的头像 发表于 08-18 16:50 3975次阅读
    使用无芯直流电机和nRF24L01<b class='flag-5'>构建</b>最快<b class='flag-5'>Arduino</b><b class='flag-5'>遥控</b>车

    如何使用Arduino构建无线门铃

     在这个项目中,我们将使用 Arduino 构建无线门铃。我们将有按钮,按下该按钮将无线
    发表于 08-19 15:57 1735次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>无线门铃

    使用Arduino构建摩尔斯电码转换器

    在本教程中,我们将使用 Arduino 构建摩尔斯电码转换器,它将任何字符作为串行监视器的输入,并通过蜂鸣器将其转换为等效的摩尔斯电码蜂鸣声。
    发表于 08-29 16:46 3867次阅读
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>摩尔斯电码转换器

    构建Arduino交通灯模块

    电子发烧友网站提供《构建Arduino交通灯模块.zip》资料免费下载
    发表于 12-13 10:39 0次下载
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>Arduino</b>交通灯模块

    如何构建简单的基于红外的车门遥控

    在这篇文章中,我们将学习如何构建简单但万无失的基于红外的遥控器,该遥控器可用于通过个人
    的头像 发表于 04-02 10:37 1243次阅读
    如何<b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>简单的基于红外的车门<b class='flag-5'>遥控</b>器

    如何使用Arduino构建数字电容表电路?

    在这篇文章中,我们将使用Arduino构建数字电容表电路,该电路可以以合理的精度测量从1微法拉到4000微法拉的电容器的电容。
    的头像 发表于 07-27 11:49 1532次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个</b>数字电容表电路?