- Arduino RC Boat所需的组件
- 433MHz射频发送器和接收器模块
- 433MHZ射频发射器
- Arduino RC船用变送器框图
- Arduino RC遥控器(发射器)的电路图
- 建立RC BOAT发送电路
- 构建Arduino RC船用变送器外壳
- 433Mhz接收器模块
- Arduino RC Boat Receiver的框图
- Arduino RC船用接收器电路图
- 构建Arduino RC Boat的接收器电路
- 建造RC-BOAT
- Arduino风船电机和推进器
- Arduino RC Boat的工作
- RC船的Arduino编程
在这个项目中,我们将构建一个可以使用433 MHz RF无线电模块进行无线控制的远程控制Arduino Air-Boat。我们将通过构建自己的433 MHz发射器和接收器模块,使用自制遥控器来控制这艘船。对于远程控制的设备或两个设备之间的通信,我们有很多选择,例如IR,蓝牙,互联网,RF等。与IR通信相比,无线电通信具有一些优势,例如范围更广,并且没有需要在发射器和接收器之间建立视线连接。同样,这些模块可以执行两种通信方式,这意味着它可以同时发送和接收。因此,使用此433MHz RF模块,让我们构建一个Arduino RC Boat 在本教程中。
以前,我们已经使用这些433Mhz射频模块构建了许多远程控制项目,这些项目可以控制诸如此类射频控制机器人之类的机器人,也可以用于家庭自动化应用以使用射频来控制家用电器。除了使用RF模块之外,我们之前还构建了蓝牙控制的Raspberry Pi汽车和DTMF手机控制的Arduino机器人。如果您有兴趣,也可以签出这些项目。
Arduino RC Boat所需的组件
- 433MHz发射器和接收器
- Arduino(任何Arduino,以减少我使用promini的大小)
- HT12E和HT12D
- 按钮-4个
- 电阻器-1mega ohm,47k ohm
- L293d电机驱动器
- 9V电池(我正在使用7.4伏电池)-2
- 7805调节器-2号
- 直流电动机-2个
- 叶片或推进器(我正在使用自制推进器)-2
- .1uf电容器-2个
- 普通PCB
433MHz射频发送器和接收器模块
这些类型的RF模块在制造商中非常受欢迎。由于其成本低廉且连接简单。这些模块最适合所有形式的短距离通信项目。这些模块是ASK(Amplitude Shift Keying)型RF模块,Amplitude-Shift Keying(ASK)是幅度调制的一种形式,它将数字数据表示为载波幅度的变化。在ASK系统中,二进制符号1通过在T秒的比特持续时间内发送固定幅度的载波和固定频率来表示。如果信号值为1,则将发送载波信号;否则,将发送信号值0。这意味着当发送逻辑“零”时,它们通常不消耗功率。这种低功耗使其在电池供电的项目中非常有用。
433MHZ射频发射器
这种类型的模块非常小,带有3引脚VCC,接地和数据。其他一些模块带有额外的天线引脚。发射器模块的工作电压为3V-12V,该模块没有任何可调组件。该模块的主要优点之一是低电流消耗,它几乎需要零电流来发送位零。
Arduino RC船用变送器框图
在上面的框图中,有四个按钮(控制按钮),这些按钮用于控制船的方向。我们有四个用于前进,后退,左和右。通过按钮,我们获得了控制船的逻辑,但无法直接连接到编码器,这就是我们使用Arduino的原因。您可能会想为什么在这里使用Arduino,这仅仅是因为我们需要同时拉下编码器的两个并行数据输入,才能实现向前和向后移动,而仅通过按钮就无法实现。然后,编码器将即将到来的并行数据编码为串行输出。然后,我们可以借助RF发送器发送该串行数据。
Arduino RC遥控器(发射器)的电路图
在上面的电路中,您可以看到所有四个按钮的一侧连接到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和射频发射器模块,这两个设备在5V高压下工作都会杀死它,因此为避免这种情况,我添加了7805稳压器。现在我们可以将(Vcc)6-12伏的任何类型的电池连接到输入。
建立RC BOAT发送电路
我将每个组件焊接在一块普通的PCB上。请记住,我们正在开发一个RF项目,因此存在多种类型的干扰的机会,因此请尽可能紧密地连接所有组件。最好为Arduino和发射器模块使用母排针。另外,请尝试将所有东西焊接在铜垫上,而不要使用多余的电线。最后,将一根细电线连接到变送器模块,这将有助于增加总范围。连接Arduino和发射器模块之前,请仔细检查lm7805输出的电压。
上图显示了完整的RC船用发射器电路的俯视图,下面显示了完整的RC船用发射器电路的底视图。
构建Arduino RC船用变送器外壳
遥控器必须有一个体面的身体。这一步是关于您的想法的,您可以使用您的想法创建一个远程主体。我正在解释我是如何做到的。为了制作远程机身,我选择4mm MDF薄板,也可以选择胶合板,泡沫薄板或硬纸板,然后从中切出两块,长度分别为10cm和宽5cm。然后我标记了按钮的位置。我将方向按钮放在左侧,将前进,后退按钮放在右侧。在纸张的另一侧,我将按钮连接到主发送电路。请记住,一个普通的按钮有4个引脚,每侧有两个引脚。将一个引脚连接到Arduino,将另一个引脚连接到地面。如果对此感到困惑,请用万用表检查或检查数据表。
连接所有这些东西后,我将控制电路放在两个MDF板之间,并用一些长螺栓拧紧(如果需要,请参考下图)。再一次创造一个好的身体就是你的想法。
433Mhz接收器模块
该接收器也非常小巧,带有4引脚VCC,接地,中间的两个引脚是数据输出。该模块的工作电压为5v。像发送器模块一样,这也是一个低功耗模块。有些模块带有一个额外的天线引脚,但在我的情况下,该引脚不存在。
Arduino RC Boat Receiver的框图
上面的框图描述了RF接收器电路的工作。首先,我们可以使用RF接收器模块接收发送的信号。该接收器的输出是串行数据。但是我们不能用此串行数据控制任何东西,这就是我们将输出连接到解码器的原因。解码器将串行数据解码为我们的原始并行数据。在本节中,我们不需要任何微控制器,我们可以将输出直接连接到电机驱动器。
Arduino RC船用接收器电路图
所述HT12D是一个12位的解码器,其是一个串行输入并行输出解码器。 HT12D的输入引脚将连接到具有串行输出的接收器。在12位中,有8位(A0-A7)是地址位,并且HT12D仅在匹配其当前地址时才对输入进行解码。 D8-D11是输出位。为了使该电路与发送器电路匹配,我将所有地址引脚接地。模块中的数据是串行类型,解码器将此串行数据解码为原始并行数据,然后通过D8-D11取出。为了匹配振荡频率,应将33-56k电阻连接到振荡器引脚。第17针上的LED指示灯指示有效的传输,只有在接收器连接到发送器后才会点亮。接收器的电压输入也是6-12伏。
为了控制电机,我使用了L293D IC,选择该IC是因为减小了尺寸和重量,并且该IC最适合在两个方向上控制两个电机。L293D有16个引脚,下图显示了引脚排列。
1、9个引脚为使能引脚,我们将其连接到5v以使电动机1A,2A,3A和4A为控制引脚。如果引脚1A变为低电平而2A变为高电平,则电动机将向右旋转;如果引脚1A变为低电平而2A变为高电平,电动机将向左侧旋转。因此,我们将这些引脚连接到解码器的输出ps。1Y,2Y,3Y和4Y是电机连接销。Vcc2是电动机驱动电压引脚,如果您使用的是高压电动机,则将该引脚连接到相应的电压源。
构建Arduino RC Boat的接收器电路
在构建接收器电路之前,您应该记住一些重要的事情。重要的是尺寸和重量,因为在建造电路之后,我们需要将其固定在船上。因此,如果重量增加,将影响浮力和运动。
与发射器电路相同,将所有组件焊接在一块小的公共PCB中,并尝试使用最少的导线。我使用的是5V电机,因此将电机驱动器的引脚8连接到5v。
建造RC-BOAT
我尝试了不同的材料来制作船体。使用Thermocol Sheet,我得到了更好的结果。所以我决定用Thermocol来制造身体。首先,我拿出一块3厘米厚的Thermocol片,并将接收器电路放在顶部,然后用Thermocol标记船的形状并切开。因此,这是我的建造方式,您可以根据自己的想法进行建造。
Arduino风船电机和推进器
重量再一次很重要。因此,选择正确的电动机很重要,因此我选择了体积小且重量轻的5伏,n20型普通直流电动机。为避免射频干扰,应将0.1uf电容器与电动机输入并联。
对于螺旋桨,我用塑料片制成螺旋桨。您可以从商店购买螺旋桨,也可以自己制造螺旋桨,都可以。为了制造螺旋桨,首先,我取了一个小塑料片,并从中切出两个小块,然后借助蜡烛加热将其弯曲。最后,我在马达中心放置了一个小孔,并将其固定在马达上。
Arduino RC Boat的工作
这艘船有两个马达,可以左右称呼。如果电动机也顺时针旋转(推进器的位置也取决于),则推进器会从前部吸入空气,并向后部排出废气。这会产生前向阻力。
向前运动:如果左右电机都顺时针旋转,则将向前运动
向后移动:如果左右电机都逆时针旋转(即螺旋桨从后侧吸入空气并排到前侧),则会向后移动
左移动:如果只有右马达旋转,那就是船只从右侧拖曳,这将使船向左移动
右移:如果仅左电动机旋转,则船只从左侧拖动,这将使船向右移动。
我们将电机驱动器的输入连接到解码器(D8-D11)的四个输出位。我们可以通过将AD8-AD11连接到作为遥控器按钮的地面来控制这4个输出。例如,如果我们将AD8接地将激活D8。因此,我们可以使用这4个输出在两个方向上控制两个电动机。但是我们不能仅通过一个按钮来控制两个电机(向前和向后移动都需要它),这就是我们使用Arduino的原因。借助Arduino,我们可以根据需要选择输入数据引脚。
RC船的Arduino编程
这只船的编程非常简单,因为我们只需要一些逻辑切换。而且我们可以使用Arduino基本功能来实现所有功能。该项目的完整程序可在本页底部找到。您的程序说明如下
我们通过定义四个输入按钮和解码器输入引脚的整数来启动程序。
int f_button = 9; int b_button = 8; int l_button = 7; int r_button = 6; int m1 = 2; int m2 = 3; int m3 = 4; int m4 = 5;
在设置部分,我定义了引脚模式。也就是说,按钮连接到数字引脚,因此这些引脚应定义为输入,我们需要获取解码器输入的输出,因此我们应将这些引脚定义为输出。
pinMode(f_button,INPUT_PULLUP); pinMode(b_button,INPUT_PULLUP); pinMode(l_button,INPUT_PULLUP); pinMode(r_button,INPUT_PULLUP); pinMode(m1,OUTPUT); pinMode(m2,OUTPUT); pinMode(m3,OUTPUT); pinMode(m4,OUTPUT);
接下来,在主循环功能中,我们将使用Arduino的digitalread函数读取按钮状态。如果引脚状态变低,则意味着相应的引脚被按下,那么我们将执行以下条件:
如果 (digitalRead(f_button)== LOW)
这意味着按下前进按钮
{ digitalWrite(m1,LOW); digitalWrite(m3,LOW); digitalWrite(m2,HIGH); digitalWrite(m4,HIGH); }
这将下拉编码器的m1和m2,这将激活接收器侧的两个电机。同样,向后移动
{ digitalWrite(m1,HIGH); digitalWrite(m3,HIGH); digitalWrite(m2,LOW); digitalWrite(m4,LOW); }
左移
{ digitalWrite(m1,LOW); digitalWrite(m3,HIGH); digitalWrite(m2,HIGH); digitalWrite(m4,HIGH); }
为了正确的运动
{ digitalWrite(m1,HIGH); digitalWrite(m3,LOW); digitalWrite(m2,HIGH); digitalWrite(m4,HIGH); }
编译代码后,将其上传到Arduino开发板。
故障排除:将船放在水面上,如果不尝试改变电动机和螺旋桨的极性,请检查船是否在正确移动。另外,尝试平衡体重。
您可以在本页底部的视频链接中找到该项目的完整工作。如果您有任何问题,请在评论部分中保留。