在这个项目中,我们将构建一个遥控 arduino air-boat,可以使用433 mhz 射频无线电模块进行无线控制。我们将使用自制遥控器通过构建我们自己的 433 mhz 发射器和接收器模块来控制这艘船。对于远程控制设备或两个设备之间的通信,我们有很多选择,例如 ir、蓝牙、互联网、rf 等。与 ir 通信相比,无线电通信具有范围更广等优点,但它没有需要在发射器和接收器之间建立视线连接。此外,这些模块可以进行两种通信方式,这意味着它可以同时发送和接收。所以使用这个 433mhz 射频模块,让我们构建一个arduino rc 船在本教程中。
我们之前使用这些 433mhz 射频模块构建了许多远程控制项目,用于控制像这种射频控制机器人这样的机器人,或者用于家庭自动化应用程序以使用射频控制家用电器。除了使用射频模块外,我们之前还构建了蓝牙控制的树莓派汽车和 dtmf手机控制的 arduino 机器人。
arduino rc 船所需的组件
433mhz 发射器和接收器
arduino(任何 arduino,以减小我使用 promini 的尺寸)
ht12e 和 ht12d
按钮 - 4nos
电阻器 - 1mega ohm, 47k ohm
l293d 电机驱动器
9v 电池(我使用的是 7.4 伏电池)- 2nos
7805调节器- 2nos
直流电机 - 2nos
电机叶片或螺旋桨(我使用的是自制螺旋桨)- 2nos
.1uf 电容器 - 2nos
普通pcb
433mhz 射频发射器和接收器模块
这些类型的射频模块在制造商中非常受欢迎。因为它们的成本低且连接简单。这些模块最适合所有形式的短距离通信项目。这些模块是ask(幅移键控)在 rf 模块中,幅移键控 (ask) 是一种幅度调制形式,将数字数据表示为载波幅度的变化。在 ask 系统中,二进制符号 1 通过在 t 秒的位持续时间内传输固定幅度载波和固定频率来表示。如果信号值为1,则传输载波信号;否则,将发送信号值 0。这意味着它们在传输逻辑“零”时通常不消耗功率。这种低功耗使它们在电池供电的项目中非常有用。
433mhz射频发射器
这种类型的模块非常小巧,带有 3 个引脚 vcc、地和数据。其他一些模块带有一个额外的天线引脚。发射模块的工作电压为3v-12v,该模块没有任何可调元件。该模块的主要优点之一是低电流消耗,它需要几乎为零的电流来发送零位。
arduino rc船用发射器框图
在上面的框图中,有四个按钮(控制按钮),这些按钮用于控制船的方向。我们有四个用于向前、向后、向左和向右。从按钮,我们得到控制船的逻辑,但不能直接连接到编码器,这就是我们使用 arduino 的原因。你可能会想我为什么在这里使用 arduino,只是因为我们需要同时拉下编码器的两个并行数据输入,以实现仅靠按钮无法实现的向后和向前运动。然后编码器将即将到来的并行数据编码为串行输出。然后我们可以在射频发射器的帮助下传输该串行数据。
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 和 rf 发射器模块,这两个设备在 5v 高压下工作都会杀死它,所以为了避免这种情况,我添加了 7805,稳压器。现在我们可以连接 (vcc) 6-12volt 任何类型的电池输入。
构建 rc boat 发射器电路
我将每个组件焊接在一个普通的 pcb 上。请记住,我们正在开展一个射频项目,因此存在很多不同类型干扰的机会,因此请尽可能紧密地连接所有组件。最好为 arduino 和发射器模块使用母排针。此外,尝试将所有东西焊接在铜垫上,而不是使用额外的电线。最后,将一根小线连接到发射器模块,这将有助于增加总范围。在连接 arduino 和发射器模块之前,请仔细检查 lm7805 输出的电压。
上图显示了完成的 rc 船发射器电路的顶视图,完成的 rc 船发射器电路的底视图如下所示。
构建 arduino rc 船用发射器外壳
遥控器需要一个体面的身体。这一步是关于你的想法,你可以用你的想法创建一个远程主体。我正在解释我是如何做到的。做遥控器的时候,我选择4mm的mdf板,你也可以选择胶合板、泡沫板或纸板,然后我从上面剪下两块,长10cm,宽5cm。然后我标记了按钮的位置。我将方向按钮放在左侧,将前进、后退按钮放在右侧。在工作表的另一面,我将按钮连接到主发射电路。请记住,普通按钮有 4 个引脚,每侧两个引脚。将一个引脚连接到 arduino,另一个引脚连接到地。如果您对此感到困惑,请用万用表检查或查看数据表。
连接所有这些东西后,我将控制电路放在两个 mdf 板之间,并用一些长螺栓拧紧(如果需要,请参考下图)。再一次,创造一个好的身体完全取决于你的想法。
433mhz 接收模块
这个接收器也非常小,带有 4 个引脚 vcc、接地,两个中间引脚是数据输出。该模块的工作电压为5v。与发射器模块一样,这也是一个低功耗模块。有些模块带有一个额外的天线引脚,但在我的情况下,它不存在。
arduino rc 船接收器的框图
上面的框图描述了射频接收器电路的工作原理。首先,我们可以使用射频接收模块接收发射的信号。该接收器的输出是串行数据。但是我们无法用这个串行数据控制任何东西,这就是我们将输出连接到解码器的原因。解码器将串行数据解码为我们原始的并行数据。在本节中,我们不需要任何微控制器,我们可以直接将输出连接到电机驱动器。
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 个引脚是启用引脚,我们将其连接到 5 v 以启用电机 1a、2a、3a 和 4a 是控制引脚。如果引脚 1a 变低,2a 变高,电机将向右转,如果 1a 变低,2a 变高,电机将向左转。所以我们将这些引脚连接到解码器的输出 ps。1y、2y、3y 和 4y 是电机连接引脚。vcc2 为电机驱动电压引脚,如果您使用的是高压电机,则将此引脚连接到相应的电压源。
搭建arduino rc船的接收电路
在构建接收器电路之前,您应该记住一些重要的事情。重要的是尺寸和重量,因为在构建电路后,我们需要将其固定在船上。因此,如果重量增加,则会影响浮力和运动。
因此,与发射器电路一样,将每个组件焊接在一个小型通用 pcb 中,并尽量使用最少的电线。我将电机驱动器的引脚 8 连接到 5v,因为我使用的是 5v 电机。
建造遥控船
我尝试了不同的材料来建造船体。我用 thermocol 片材得到了更好的结果。所以我决定用thermocol建造身体。首先,我拿了一个 3cm 厚的 thermocol 片并将接收器电路放在上面,然后我在 thermocol 中标记了船的形状并切割。所以这就是我造船的方式,大家可以按照自己的想法来造。
用于 arduino 空气船的电机和螺旋桨
体重再次很重要。所以选择正确的电机很重要,我选择了 5 伏、n20 型的普通直流电机,它体积小、重量轻。为避免射频干扰,应将 0.1uf 电容并联到电机输入端。
在螺旋桨的情况下,我用塑料片制作螺旋桨。您可以从商店购买螺旋桨,也可以自己制造,两者都可以正常工作。为了制造螺旋桨,首先,我拿了一块小塑料片,从上面切下两小块,然后在蜡烛热的帮助下弯曲这些小块。最后,我在电机的中心放了一个小孔,并固定在电机上。
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 板。
故障排除:将船放在水面上,如果不尝试改变电机和螺旋桨的极性,请检查它是否正确移动。另外,尝试平衡体重。
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,高);
}
}
ITO薄膜湿法刻蚀研究
什么是边缘计算网关以及什么是边缘计算?
RC522读写程序代码分享
滴滴与北汽集团联合推出新一代L4级自动驾驶车
飞腾与成都芯谷产业园合作助力西南区域的产业升级快速深入推进
构建一个遥控Arduino Air-Boat的教程
扫地机直流无刷电机有哪些核心技术?
汽车业及采矿业怎样用区块链来创造新价值
美的集团与国华投资签署战略合作协议
LDC1000的主要性能优势
Switch模拟器更新已大幅提升性能
镀锌板有哪些种类
数字资产交易所开发币币交易网站开发
开源合规标准实践-“心寄源”法律沙龙(2023第六期 | 总第十一期)成功召开
基于Matlab的IIR数字滤波器设计
拆解探索“iPad”外壳上没有螺丝
新的变步长LMS算法及DSP设计
贸泽电子开售Analog Devices ADIS16507精密MEMS惯性测量单元
荣耀8xmax对比荣耀note10哪个好
智能眼镜道路曲折,多方势力不离不弃