简介:
在这篇文章中,我将向您展示如何制作长距离 机器人的遥控器。是的,使用 HC12 模块为您的机器人提供便宜的 DIY遥控器。在这里,我将为您提供完整的详细信息,包括电路图、PCB 布局和视频教程,以及为您的机器人构建自己的遥控器的完整详细信息。
材料清单:
控制方案:
我们将我们的远程遥控器分为 3 个部分
输入
处理器
发射机
输入是遥控器从用户那里获取数据所使用的单位。例如操纵杆、加速度计、按钮、电位计等。对于这个项目,我们将使用加速度计、操纵杆和按钮。
所述处理器是从输入单元,处理/条件他们发送单元发送读出该数据的部分。在这里,我们将使用Arduino Nano 来处理输入。
所述发射机是从遥控器将数据发送到机器人的接收单元无线部分。对于我们的项目,我们将使用 HC12 无线模块。
用于廉价遥控器的 HC12 无线模块
这是机器人和其他远程控制应用领域最常用的无线模块之一。它非常易于使用并且具有非常远的通信距离;最多 1 公里 LOS。
它是一个 5 针无线模块,可以很容易地连接到 arduino Raspberry Pi或其他微控制器板而不会造成任何麻烦。此无线模块可在 5 伏电压下工作。因此您无需使用任何逻辑转换器即可将此无线模块与大多数 arduino 板一起使用。
首先,我们将在面包板上构建电路。一旦我们一切顺利,我们将使用该电路来制作我们自己的 PCB。
这是最常用的模拟操纵杆之一 模块它旨在与 Arduino 一起使用。它有两个模拟电位器——一个检测操纵杆的垂直运动,另一个检测操纵杆的水平运动。操纵杆. 这真的很便宜,可以很容易地用于各种项目,如遥控车、视频游戏操纵杆。
您可以从以下链接下载用于测试操纵杆工作的示例草图。
代码:
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 并对其进行永久焊接。
这就是我在面包板上组装所有组件的方式。在这里,我有一个加速度计添加操纵杆 Arduino Nano 和无线模块 HC12。
只需使用下面的下载链接下载下面的代码并将其上传到您的控制器。
#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 接收器接收这些数据。
现在是时候从遥控器接收数据了。在接收单元(机器人)中,我使用了 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创建