如何用Arduinos和NRF24L01模块创建发射器和接收器

此项目所需的组件如下:
2 arduino
2 nrf24l01模块
操纵杆模块
伺服电机
连接电线
伺服电机控制如何工作
在变送器侧我们有一个操纵杆模块,arduino和nrf24l01,而在接收端我们有一个nrf24l01,arduino和一个伺服电机。
当我们在水平方向移动操纵杆时,操纵杆模块将发送ardui的模拟值没有。我们已将nrf24l01模块设置为发射器模式,并将操纵杆移动值发送到特定地址。
在接收端,我们已将nrf24l01模块设置为接收模式。我们在接收端给出了相同的地址,其他nrf24l01模块正在传输数据。因此,只要模块接收数据,arduino就会读取它并根据它移动伺服电机。
nrf24l01引脚
此模块的功耗非常低。它在传输过程中消耗大约12ma的功率,甚至低于led。
该模块工作在3.3v,所以不要直接连接到5v的arduino,因为它可能会损坏。 nrf24l01模块的其他引脚具有5v容限,因此您可以将它们直接连接到arduino。
sck,mosi和miso引脚用于spi通信,csn和ce引脚用于设置待机或激活模式以及设置发送或命令模式。
电路图
连接有点冗长,所以我将分别解释发送器和接收器的连接。
对于发射器
使用arduino建立发射器侧的连接,如下所示:
将nrf24l01的3.3v引脚与3.3v的arduino连接
将nrf24l01的gnd引脚与arduino的gnd连接
将nrf24l01的csn引脚连接到arduino的引脚8
将nrf24l01的ce引脚与arduino的引脚7连接
连接nrf24l01的sck引脚arduino的第13针
将nrf24l01的mosi引脚与arduino的引脚11连接
将nrf24l01的miso引脚与arduino的引脚12连接?/li》
然后将操纵杆模块与arduino连接如下:
操纵杆模块的vcc到arduino的5v电源
gnd of操纵杆模块到arduino的gnd
操纵杆模块的ver到arduino的a1
操纵杆模块的hor到arduino的a0
对于接收器
在接收器端,nrf24l01与arduino的连接 相同作为发射器侧的那些。使用arduino进行伺服电机连接如下:
红线到arduino的5v电源
arduino的gnd到布线》
黄色电线到arduino的第6针
代码发射器
#include
#include
#include
rf24 radio(7, 8); // csn, ce
const byte address[6] = “00001”;
int x_key = a1;
int y_key = a0;
int x_pos;
int y_pos;
void setup() {
radio.begin();
radio.openwritingpipe(address);
radio.setpalevel(rf24_pa_min);
radio.stoplistening();
pinmode (x_key, input) ;
pinmode (y_key, input) ;
}
void loop() {
x_pos = analogread (x_key) ;
y_pos = analogread (y_key) ;
radio.write(&x_pos, sizeof(x_pos));
delay(100);
}
接收者代码
#include
#include
#include
#include
servo servo;
rf24 radio(7, 8); // csn, ce
const byte address[6] = “00001”;
int servo_pin = 6;
void setup() {
serial.begin(9600);
radio.begin();
servo.attach (servo_pin ) ;
radio.openreadingpipe(0, address);
radio.setpalevel(rf24_pa_min);
radio.startlistening();
}
void loop() {
if (radio.available()) {
int x_pos ;
radio.read(&x_pos, sizeof(x_pos));
serial.println(x_pos);
x_pos = map(x_pos, 0, 1023, 0, 180);
if (x_pos》400 && x_pos《600)
{
}
else{
servo.write (x_pos) ;
}
}
}
代码细分和解释
首先,包含库对于nrf24l01和伺服电机。
#include
#include
#include
#include
然后,定义我们连接nrf24l01的csn和ce引脚的引脚。之后,我们初始化将发送和接收数据的地址。该地址在发射机和接收机侧应该相同。该地址可以是任意五个字母的字符串。
rf24 radio(7,8);//csn,ce
const字节地址[6] =“00001”;
在发送器的设置功能中,我们设置发送数据的地址。然后我们将功率放大范围设置为最小,因为我们的模块彼此更接近。
radio.openwritingpipe(地址);
radio.setpalevel(rf24_pa_min);
对于接收方,我们使用以下命令并设置模块以从该地址接收数据。
radio.openreadingpipe(0,address);
in发送器的循环功能,我们从操纵杆模块读取并在我们之前设置的地址发送值。
radio.write(& x_pos,sizeof(x_pos));
接收器侧的以下命令将从发送器获取数据,并且在将数据映射到0-180之后,我们将移动伺服。
radio.read(& x_pos,sizeof( x_pos));

虚拟机器人在福州融入市民生活,迎来了良好的发展
高通将推出28纳米工艺Krait系芯片
2019将是关键的一年 因为苹果将引领一个后iPhone时代
索泰RTX 4070 SUPER X-GAMING OC欧泊白评测
视频监控进入数据爆炸时代 安防厂商抢占赛道
如何用Arduinos和NRF24L01模块创建发射器和接收器
基于base test如何来构造测试用例
5G信号如何覆盖 5G基站的概念是什么
关于YK-AD系列通信电源的基本常识
为什么要成为高级程序员
变频技术对污水循环利用的应用
SEMICON China 2023盛大启幕 汉高粘合剂创新技术“连接未来”
科技巨头跨界造车哪家强?
有种SPD叫RUILON
vlookup使用后怎么让数值固定
劳动力管理厂商Kronos签约艾默生过程控制
继三星Note7爆炸后,惠普也因电池存在安全隐患,召回全球部分笔记本电脑
RAS(二)Intel MCA初探
经纬仪的使用方法和步骤 经纬仪的用途有哪些
NVIDIA公布未来绘图芯片的发展路线图 7纳米制程芯片将由台积电代工