在这篇文章中,我们将构建一个可以在2.4 GHz无线通信链路上使用操纵杆控制的汽车机器人。提议的项目不仅是作为一辆RC车,但你可以添加你的项目,如监视摄像头等在车上。
概述
项目分为两部分;遥控器和接收器。
汽车或基座,我们放置所有接收器组件的地方可以是三轮驱动或四轮驱动。
如果你想要底盘车更稳定,或者如果你想驾驶汽车在不平坦的表面,比如户外,那么推荐4轮底盘车。
你也可以使用3轮驱动的基础车,这给你更大的机动性,而转弯,但它可能提供的稳定性低于4轮驱动。
4个轮子的汽车,但是,2个电机驱动也可行。
遥控器可以使用9V电池供电,接收器可以使用12V, 1.3 AH密封铅酸电池供电,它比12V, 7AH电池占地更小,也适合这种四处漂泊的应用。
NRF24L01模块之间建立2.4 GHz的通信,根据两个NRF24L01模块之间的障碍物,NRF24L01模块之间的信号传输距离可以超过30 - 100米。
NRF24L01模块示意图:

它工作在3.3V和5V上,可以杀死模块,所以必须注意,它工作在SPI通信协议。引脚配置在上面的图像中提供。
远程:
遥控器由Arduino(推荐Arduino nano/ pro-mini)、NRF24L01模块、操纵杆和电池电源组成。试着把它们装在一个小垃圾箱里,这样更容易处理。
遥控器原理图:

图中提供了NRF24L01模块和操纵杆的引脚连接,如有混淆,请参考给出的引脚连接表。
通过向前(向上)、向后(向下)、左右移动操纵杆,汽车随之移动。

请注意,所有的电线连接都在左边,这是参考点,现在你可以移动操纵杆到移动的车.
通过按Z轴操纵杆可以控制汽车上的LED灯。
远程程序:
//-------------- 项目由R.Girish ---------------//
# include < nRF24L01.h >
# include < RF24.h >
# include < SPI.h >
int X_axis = A0;
int Y_axis = A1;
int Z_axis = 2;
Int x = 0;
Int y = 0;
Int z = 0;
RF24电台(9、10);
Const字节地址[6]= "00001";
Const char var1[32] = "向上";
Const char var2[32] = "down";
Const char var3[32] = "左";
Const char var4[32] = "右";
const char var5[32] = "ON";
const char var6[32] = "OFF";
Boolean light = true;
int thresholdUP = 460;
int thresholdDOWN = 560;
int thresholdLEFT = 460;
int thresholdRIGHT = 560;
无效的设置()
{
radio.begin ();
Serial.begin (9600);
pinMode (X_axis、输入);
pinMode (Y_axis、输入);
pinMode (Z_axis、输入);
digitalWrite (Z_axis、高);
radio.openWritingPipe(地址);
radio.setChannel (100);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_MAX);
radio.stopListening ();
}
无效循环()
{
x = analogRead (X_axis);
y = analogRead (Y_axis);
z = digitalRead (Z_axis);
如果(y < = thresholdUP)
{
收音机。写(var1 sizeof (var1));
}
如果(y > = thresholdDOWN)
{
收音机。写(&var2 sizeof (var2));
}
如果(x < = thresholdLEFT)
{
收音机。写(&var3 sizeof (var3));
}
如果(x > = thresholdRIGHT)
{
收音机。写(&var4 sizeof (var4));
}
如果(z = =低)
{
如果(光= = true)
{
收音机。写(&var5 sizeof (var5));
光= false;
延迟(200);
}
其他的
{
收音机。写(&var6 sizeof (var6));
光= true;
延迟(200);
}
}
}
//-------------- 项目由R.Girish ---------------//
遥控器就这样结束了。
现在让我们看一下接收器。
接收电路将放置在基车上。如果你有任何想法将你的项目添加到这个移动的基础上,为放置接收器和你的项目规划适当的几何形状,这样你就不会用尽空间。
接收器由Arduino、L298N双h桥直流电机驱动模块、置于车前的白色LED、NRF24L01模块、12V 1.3AH电池组成。发动机可能与基础车。
接收机原理图:

请注意,Arduino板和NRF24L01的连接在上图中没有显示,以免布线混乱。请参考遥控器原理图。
Arduino板由L298N模块供电;它内置了5V稳压器。
白色LED可能被放置作为头灯或您可以定制此pin到您的需要,通过按下操纵杆,销#7转高,按下操纵杆再次将销低。

请注意接收机原理图中规定的左右电机。
接收方方案:
//------------------ 项目由R.Girish ---------------//
# include < nRF24L01.h >
# include < RF24.h >
# include < SPI.h >
RF24电台(9、10);
Const字节地址[6]= "00001";
Const char var1[32] = "向上";
Const char var2[32] = "down";
Const char var3[32] = "左";
Const char var4[32] = "右";
const char var5[32] = "ON";
const char var6[32] = "OFF";
Char input[32] = "; "
Const int output1 = 2;
Const int output2 = 3;
Const int output3 = 4;
Const int output4 = 5;
Const int light = 7;
无效的设置()
{
Serial.begin (9600);
radio.begin ();
收音机。openReadingPipe(0,地址);
radio.setChannel (100);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_MAX);
radio.startListening ();
pinMode (output1、输出);
pinMode (output2、输出);
pinMode (output3、输出);
pinMode (output4、输出);
pinMode(光、输出);
digitalWrite (output1、低);
digitalWrite (output2、低);
digitalWrite (output3、低);
digitalWrite (output4、低);
digitalWrite(光、低);
}
无效循环()
{
而(! radio.available ())
{
digitalWrite (output1、低);
digitalWrite (output2、低);
digitalWrite (output3、低);
digitalWrite (output4、低);
}
收音机。读(输入,sizeof(输入));
如果((strcmp(输入、var1) = = 0))
{
digitalWrite (output1、高);
digitalWrite (output2、低);
digitalWrite (output3、高);
digitalWrite (output4、低);
延迟(10);
}
Else if((strcmp(input,var2) == 0))
{
digitalWrite (output1、低);
digitalWrite (output2、高);
digitalWrite (output3、低);
digitalWrite (output4、高);
延迟(10);
}
Else if(((strcmp(input,var3) == 0))
{
digitalWrite (output3、高);
digitalWrite (output4、低);
延迟(10);
}
Else if((strcmp(input,var4) == 0))
{
digitalWrite (output1、高);
digitalWrite (output2、低);
延迟(10);
}
Else if(((strcmp(input,var5) == 0))
{
digitalWrite(光、高);
}
Else if(((strcmp(input,var6) == 0))
{
digitalWrite(光、低);
}
}
//------------------ 项目由R.Girish ---------------//
这就是接收器。
项目完成后,如果汽车向错误的方向移动,只需反转极性电机。
如果你的基础车是4电机轮驱动,连接左电机平行相同的极性,做同样的右侧电机,并连接到L298N驱动器。
如果你有任何问题关于这个操纵杆控制2.4 GHz RC车使用Arduino,请在评论区自由表达,你可能会收到一个快速的回复。
先生,我们怎样才能制造一种能够跟踪射频信号源的机器人车辆?在这种情况下你能帮助我们吗?
乔伊迪普,你是说射频遥控机器人吗?对不起,我不明白你所说的“追踪射频信号源”是什么意思…请详细解释一下