使用433MHz RF模块制作一艘简易的Arduino遥控小船

使用433MHz RF模块制作一艘简易的Arduino遥控小船原文地址:https://www.yiboard.com/thread-1567-1-1.html使用433MHzRF模块制作一艘简易的Arduino遥控小船https://www.yiboard.com/forum.php?mod=viewthread&tid=1567&fromuid=2110本篇文章中,我们将制作一个远程控制的Arduino小船,可以使用433MHzRF无线模块进行控制。我们将制作自己的433MHz发射器和接收器模块,使用自制遥控器来控制这艘小船。对于远程控

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原文地址:https://www.yiboard.com/thread-1567-1-1.html

使用433MHz RF模块制作一艘简易的Arduino遥控小船

https://www.yiboard.com/forum.php?mod=viewthread&tid=1567&fromuid=2110

本篇文章中,我们将制作一个远程控制的Arduino小船,可以使用433 MHz RF无线模块进行控制。我们将制作自己的433MHz发射器和接收器模块,使用自制遥控器来控制这艘小船。对于远程控制的设备或两个设备之间的通信,我们有很多选择,例如IR、蓝牙、互联网、RF等。与IR通信相比,无线射频通信具有一些优势,例如范围更广,并且不需要在发射器和接收器之间建立视线连接。同样,这些模块可以执行两种通信方式,这意味着它可以同时发送和接收。因此,让我们使用此433MHz RF模块,开始制作一艘小船。

所需的组件

● 433MHz发射器和接收器

● Arduino开发板

● HT12E和HT12D

● 按钮-4个

● 电阻

● L293d电机驱动器

● 9V电池

● 7805调节器

● 直流电动机

● 叶片

● 1uf电容img 433MHz射频发送器和接收器模块[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWuHQrsk-1620703376506)(C:/Users/Administrator/Pictures/typora/105815bpl5wlcp2jmmdedc.jpg)]这些类型的RF模块在创客中非常受欢迎。由于其成本低廉且连接简单。这些模块最适合所有形式的短距离通信项目。这些模块是ASK(幅移键控)类型的RF模块,幅移键控(ASK)是幅度调制的一种形式,它将数字数据表示为载波幅度的变化。在ASK系统中,二进制符号1通过在T秒的比特持续时间内发送固定幅度的载波和固定频率来表示。如果信号值为1,则将发送载波信号;否则,将发送信号值0。这意味着当发送逻辑”零”时,它们通常不消耗功率。这种低功耗使其在电池供电的项目中非常有用。

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

Arduino遥控小船发射器功能框图img

在上面的框图中,有四个按钮(控制按钮),这些按钮用于控制船的方向。分别是前进、后退、左和右。通过按钮,我们获得了控制船只的逻辑,但无法直接连接到编码器,这就是我们使用Arduino的原因。您可能会想为什么在这里使用Arduino,这仅仅是因为我们需要同时下拉编码器的两个并行数据输入,才能实现向前和向后移动,而仅通过按钮就无法实现。然后,编码器将到来的并行数据编码为串行输出。然后,我们可以借助RF发送器发送该串行数据。

Arduino遥控小船发射器的电路图img在上面的电路中,您可以看到所有四个按钮的一侧连接到Arduino(D6-D9)的四个数字引脚,而所有其他四个侧面都接地。当我们按下按钮时,相应的数字引脚变为逻辑低电平。 HT12E编码器的四个并行输入连接到Arduino(D2-D5)的另外四个数字引脚。因此,借助Arduino,我们可以确定编码器的输入。 编码器HT12E是12位编码器和并行输入-串行输出编码器。在12位中,有8位是地址位,可用于控制多个接收器。引脚A0-A7是地址输入引脚。在本文中,我们仅控制一个接收器,因此我们不需要更改其地址,因此我将所有地址引脚都接地了。如果要用一个发射器控制不同的接收器,则可以在此处使用DIP开关。 AD8-AD11是控制位输入。这些输入将控制HT12D解码器的D0-D3输出。我们需要连接一个振荡器进行通信,并且在5V操作下,振荡器频率应为3KHz。然后,对于5V,电阻值将为1.1MΩ。然后,我将HT12E的输出连接到发射器模块。

制作遥控小船发送电路

我将每个组件焊接在一块PCB面包板上。请记住,我们正在开发一个射频项目,因此有可能会遇到多种类型的干扰,因此请尽可能紧密地连接所有组件。另外,请尝试将所有东西焊接在焊盘上,而不要使用多余的电线。最后,将一根细电线连接到发射器模块,这将有助于增加总范围。img

制作Arduino遥控小船发射器外壳
发射器需要有一个好看的外壳。我选择了4mm MDF薄板,也可以选择胶合板、泡沫薄板或硬纸板,然后从中切出两块,长度分别为10cm和宽5cm。然后标记了按钮的位置。我将方向按钮放在左侧,将前进、后退按钮放在右侧。在纸张的另一侧,我将按钮连接到主发送电路。请记住,一个普通的按钮有4个引脚,每侧有两个引脚。将一个引脚连接到Arduino,将另一个引脚连接到地。img 连接所有这些东西之后,我将控制电路放在两个MDF板之间,并用一些长螺栓拧紧。img 433Mhz接收器模块
该接收器也非常小巧,有4个引脚:VCC、接地,中间的两个引脚是数据输出。该模块的工作电压为5v。

Arduino遥控小船接收器的功能框图
在这里插入图片描述
上面的框图描述了RF接收器电路的工作过程。首先,我们可以使用RF接收器模块接收发送的信号。该接收器的输出是串行数据。解码器将串行数据解码为我们的原始并行数据。在本部分中,我们不需要任何微控制器,我们可以将输出直接连接到电机驱动器。

Arduino遥控小船接收器电路图
在这里插入图片描述
HT12D是一个12位解码器,它是一个串行输入并行输出解码器。 HT12D的输入引脚将连接到具有串行输出的接收器。在12位中,有8位(A0-A7)是地址位,并且HT12D仅在匹配其当前地址时才对输入进行解码。 D8-D11是输出位。为了使该电路与发送器电路匹配,我将所有地址引脚接地。来自模块的数据是串行类型,解码器将此串行数据解码为原始并行数据,然后通过D8-D11取出。为了匹配振荡频率,应将33-56k电阻连接到振荡器引脚。第17引脚上的LED指示灯指示有效的传输,只有在接收器连接到发送器后才会点亮。接收器的电压输入也是6-12伏。 为了控制电动机,我使用了L293D,选择该IC是因为减小了尺寸和重量,并且该IC最适合在两个方向上控制两个电动机。 L293D有16个引脚,下图显示了引脚排列。
在这里插入图片描述

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

制作Arduino遥控小船的接收器电路

与发射器电路相同,将所有组件焊接在一块小的PCB面包板中,并尝试使用最少的导线。我使用的是5V电机,因此将电机驱动器的引脚8连接到5v。
在这里插入图片描述
制作遥控小船
在这里插入图片描述
我尝试了不同的材料来制作船体。使用Thermocol Sheet我得到了更好的结果。所以我决定用Thermocol来制造船体。首先,我拿出一块3厘米厚的Thermocol片,并将接收器电路放在顶部,然后用Thermocol标记船的形状并切开。

Arduino小船电机和推进器选择正确的电动机非常重要,我选择了体积小且重量轻的5V,n20型普通直流电动机。
在这里插入图片描述
对于螺旋桨,我用塑料片制成螺旋桨。为了制作螺旋桨,首先,我取了一个小塑料片,并从中切下了两个小块,然后借助蜡烛加热将其弯曲。最后,我在马达中心放置了一个小孔,并将其固定在马达上。
在这里插入图片描述
遥控小船的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;

在setup函数中,定义了引脚模式。按钮连接到数字引脚,因此这些引脚应定义为输入;我们需要获取解码器输入的输出,因此我们应将这些引脚定义为输出。

  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);

接下来,在loop函数中,我们将使用Arduino的digitalread()函数读取按钮状态。如果引脚状态变为低电平,则意味着相应的引脚被按下,那么我们将执行以下条件:

if ( 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);
}

编译代码后,将其上传到Arduino开发板。 故障排除:将船放在水面上,请检查船是否在正确移动,如果没有,改变电动机和螺旋桨的极性。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191521.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 男人一辈子就喜欢一种类型的女人,至死不渝从一而终!

    男人一辈子就喜欢一种类型的女人,至死不渝从一而终!台湾某杂志做过一个调查,分四个年轻段对男女的择偶需求作了不同的问卷。发现,女人在不同年龄喜欢的男人差别很大,而男人正好相反,不同年龄的男人对女人的第一需求居然从未改变!18至20岁的女孩最喜欢帅哥;18至20岁的男孩最喜欢跟他年纪差不多或稍大一点的美貌女子。25至28岁的女人最喜欢有一定事业基础、成熟稳重的男人,帅不帅不太重要了;25至28岁的男人最喜欢22至25岁年轻貌美的女子。33…

  • quartus ii15.1安装教程_quartus ii9.1安装教程

    quartus ii15.1安装教程_quartus ii9.1安装教程安装步骤:安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,存放安装包的路径最好也不要有中文。1.解压安装包。2.安装前下载相应的器件库文件。再安装包–>器件库下载地址–>器件库下载地址.txt。复制器件库中需要的器件的下载地址。3.下载好库文件后将它放在软件安装程序同一路径。运行安装程序。4.点击NEXT。5.点击Iaccept,然后点击NEXT。…

    2022年10月15日
  • css经典布局——双飞翼布局

    圣杯布局的出现是来自由MatthewLevine在2006年写的一篇文章《InSearchoftheHolyGrail》,在国内最早是淘宝UED的工程师(玉伯大大)对圣杯布局改进并传播开来,在中国的叫法是双飞翼布局。圣杯布局和双飞翼布局达到的效果基本相同,都是侧边两栏宽度固定,中间栏宽度自适应。主要的不同之处就是在解决中间部分…

  • 2015阿里校招前端在线题目[通俗易懂]

    2015阿里校招前端在线题目

  • Python使用py2exe打包exe程序[通俗易懂]

    Python使用py2exe打包exe程序[通俗易懂]py2exe可以将Python程序打包成exe程序,使得可以在没有Python环境的机器上运行。

  • JS中innerHTML、outerHTML、innerText、outerText的用法与区别

    JS中innerHTML、outerHTML、innerText、outerText的用法与区别1、功能说明:innerHTML设置或获取位于对象起始和结束标签内的HTMLinnerText设置或获取位于对象起始和结束标签内的文本outerHTML设置或获取对象及其内容的HTML形式outerText设置(包括标签)或获取(不包括标签)对象的文本2、示例页面有如下代码:span1span2varinnerHTML=document.getElemen

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号