5.6 arduino+HC12+joystick制作远距离1000米遥控

简介:

在这篇文章中,我将向您展示如何制作长距离 机器人的遥控器。是的,使用 HC12 模块为您的机器人提供便宜的 DIY遥控器。在这里,我将为您提供完整的详细信息,包括电路图、PCB 布局和视频教程,以及为您的机器人构建自己的遥控器的完整详细信息。

材料清单:

  • 面包板1个
  • arduino ps2摇杆1个
  • 加速度计1个
  • 按钮
  • led发光二极管
  • arduino nano 开发板 2个
  • hc12 无线模块

控制方案:

我们将我们的远程遥控器分为 3 个部分

输入
处理器
发射机
输入是遥控器从用户那里获取数据所使用的单位。例如操纵杆、加速度计、按钮、电位计等。对于这个项目,我们将使用加速度计、操纵杆和按钮。

所述处理器是从输入单元,处理/条件他们发送单元发送读出该数据的部分。在这里,我们将使用Arduino Nano 来处理输入。

所述发射机是从遥控器将数据发送到机器人的接收单元无线部分。对于我们的项目,我们将使用 HC12 无线模块。

用于廉价遥控器的 HC12 无线模块
这是机器人和其他远程控制应用领域最常用的无线模块之一。它非常易于使用并且具有非常远的通信距离;最多 1 公里 LOS。

5.6 arduino+HC12+joystick制作远距离1000米遥控

它是一个 5 针无线模块,可以很容易地连接到 arduino Raspberry Pi或其他微控制器板而不会造成任何麻烦。此无线模块可在 5 伏电压下工作。因此您无需使用任何逻辑转换器即可将此无线模块与大多数 arduino 板一起使用。

首先,我们将在面包板上构建电路。一旦我们一切顺利,我们将使用该电路来制作我们自己的 PCB。

为什么选择 HC12 模块?

  • 比较便宜
  • 容易获得
  • 数据传输只需要2个Pin
  • 长距离(使用外置天线可达 1 公里)

操纵杆

这是最常用的模拟操纵杆之一 模块它旨在与 Arduino 一起使用。它有两个模拟电位器——一个检测操纵杆的垂直运动,另一个检测操纵杆的水平运动。操纵杆. 这真的很便宜,可以很容易地用于各种项目,如遥控车、视频游戏操纵杆。

5.6 arduino+HC12+joystick制作远距离1000米遥控

您可以从以下链接下载用于测试操纵杆工作的示例草图。

代码:

void setup() 
{
  pinMode (A0, INPUT);
  pinMode (A1, INPUT);
  pinMode (A6, INPUT);
  pinMode (A7, INPUT);
  pinMode (A2, INPUT);
    pinMode (13, OUTPUT);

  Serial.begin(9600);

}
int fb,lr,sw;
void loop() 
{
  digitalWrite(13, HIGH);

  fb=analogRead(A0);
  lr=analogRead(A1);
  sw=analogRead(A2);
  Serial.print(fb);
  Serial.print("     ");
  Serial.print(lr);
  Serial.print("     ");
  Serial.print(sw);
  Serial.print("     ");
  Serial.println("  ");
  delay(100);
}

在上传主文件之前 长距离遥控器代码,请使用此代码确保您的操纵杆工作。从上面的链接下载代码。在这个例子中,我们所做的只是使用 Arduino 的模拟引脚(A0、A1、A2)从操纵杆收集数据模拟输出。这些值存储在变量中,稍后打印在串行监视器上。

制作远程遥控器

面包板上的遥控器原型

在使用 PCB 之前,最好在面包板上构建整个电路。在面包板中构建和排除电子电路故障是更容易,因为它不需要焊接。一旦测试了最终设计,我们就可以创建 PCB 并对其进行永久焊接。

5.6 arduino+HC12+joystick制作远距离1000米遥控

这就是我在面包板上组装所有组件的方式。在这里,我有一个加速度计添加操纵杆 Arduino Nano 和无线模块 HC12。

遥控器连接(面包板)

Arduino – 加速度计

  • 5 Vout – VCC Arduino
  • 地 – 地
  • X – A0
  • Y – A1

Arduino – 操纵杆

  • 5 Vout – VCC Arduino
  • 地 – 地
  • X – A2
  • Y – A3
  • 开关 – A4

Arduino – HC12

  • 5 Vout – VCC Arduino
  • 地 – 地
  • 10 – TX
  • 11 – 接收

远程遥控器 Arduino 代码

只需使用下面的下载链接下载下面的代码并将其上传到您的控制器。



#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial HC12(10, 11);

int x;
int y;
int lr;
int bf;
int sw;

void setup()
{ 
HC12.begin(9600);
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(2, OUTPUT);

}
void loop()
{
digitalWrite(A0,0);
digitalWrite(2, HIGH);
x = analogRead(A0);
y = analogRead(A1);

lr = analogRead(A3);
bf = analogRead(A2);
sw = analogRead(A4);

HC12.print(x);
HC12.print(",");
HC12.print(y);
HC12.print(",");
HC12.print(lr);
HC12.print(",");
HC12.print(br);
HC12.print(",");
HC12.print(sw);
HC12.println("");

delay(100);
}

代码解释

基本上,这段代码的作用是,它将在引脚 10 和 11(我们连接 HC12 无线模块的 Tx 和 Rx 引脚)处启动软件串行连接。Arduino 将读取连接输入单元(加速度计和操纵杆)的引脚 A0 – A4 的模拟电压,并将它们的值存储在不同的变量中。然后它将通过组合所有数据来创建一个长字符串,然后被发送 到遥控机器人。

将代码上传到Arduino 长距离机器人的遥控器。完成后,打开串行监视器。您将看到 Arduino 正在读取的所有传感器数据作为以逗号分隔的单行( ,)。这就是我们将数据发送到远程机器人的方式。

我们的面包板组装远程 偏僻的控制器,使用 HC12 现在已准备就绪。现在我们将使用机器人的 HC12 接收器接收这些数据。

从DIY遥控器接收数据

现在是时候从遥控器接收数据了。在接收单元(机器人)中,我使用了 Arduino nano clone 其中。

第一的 我们将来自接收模块的数据读取到名为“input”的变量中。

include <SoftwareSerial.h>
 String input;
 int x,sx;
 int y,sy;
 int lr;
 int bf;
 int sw;
 String input;
 int boundLow;
 int boundHigh;
 const char delimiter = ',';
 SoftwareSerial hc12(4, 5);
 void setup()
 {
 Serial.begin(9600);
 hc12.begin(9600);
 delay(2000);
 }
 void loop()
 {
 if(HC12.available())
   {
   input = HC12.readStringUntil('n');
   if (input.length() > 0)
       {
        Serial.println(input);

       boundLow = input.indexOf(delimiter);
       x = input.substring(0, boundLow).toInt();
       
       boundHigh = input.indexOf(delimiter, boundLow+1);
       y = input.substring(boundLow+1, boundHigh).toInt();

       boundLow = input.indexOf(delimiter, boundHigh+1);
       lr = input.substring(boundHigh+1, boundLow).toInt();

       boundHigh = input.indexOf(delimiter, boundLow+1);
       bf = input.substring(boundLow+1, boundHigh).toInt();
 
       sw = input.substring(boundHigh+1).toInt();

       delay(10);  
 }
 }
 }

这个“输入”是一长串用逗号分隔的十进制数字。这个字符串被分解成更小的数字,然后存储在单独的变量中。

您现在可以使用这些变量以您想要的方式驱动您的机器人。

参考资料:https://rootsaid.com/long-range-remote-controller/

更新记录:

2021.11.07创建

微信群
微信群
联系我们

联系我们

微信:13823392571

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息

微信客服
微信客服
分享本页
返回顶部