首页 > 编程知识 正文

射频仪器(nrf24l01无线模块教程)

时间:2023-05-06 01:48:37 阅读:64745 作者:1603

以前,我介绍过用esp8266制作用手机APP控制的WiFi购物车。 如果实现了对购物车的持续供应网,则几乎实现了无视购物车距离范围的测试。 没见过的人请去看。 传送门如下。

不受距离限制的无线购物车

但是,做好的购物车可能很容易看出控制的延迟度很高。今天博主就给大家带来一个几乎0延迟的遥控小车,控制距离根据射频模块有2000米的距离,但博主测试似乎隔着墙只有50米到100米的控制距离

遥控手推车

不说很多就进入正题

首先做我们这次的遥控车需要什么

材料:小车主机(含4个车轮、4个电机) 2个nrf24l01模块2个Arduino nano开发板几个杜邦电缆(也有3个马甲)几个双脚立式按钮1个小泛板l298n )

1、Arduino IDE推荐根据自己的系统安装相应版本的Arduino IDE版本博主1.8.9以上版本,便于下载库

这次项目使用的库是

#include “SPI.h”

#include “Mirf.h”

#include “nRF24L01.h”

# include“mirfhardwarespidriver.h”

在软件中直接搜索添加下载即可

2 )购物车基本动作的实现方法和L298N的原理在上一篇文章中也说过,建议没读过的朋友在上一篇文章中理解。当然,如果你只是想做出来,不用了解也能做出来

传送门:不受距离限制的无线购物车

3、接线图小车接线图

遥控器接线图

面板上的4个按钮前进后退左转右转,遥控器可以直接给充电器供电哦

这次有点复杂,博客上的画不太漂亮。 请谅解

4、遥控器和购物车代码Arduino的书写过程我不用多说了。 不认识的朋友可以去看我以前的文章

小车代码:

#include 'SPI.h' //24L01库文件# include ' mirf.h ' # include ' NRF 24l 01.h ' # include ' mirfhardwarespidriver . pinmode(3,输出; pinmode(4,输出; pinmode(5,OUTPUT ); Mirf.cePin=9; //ce引脚设为D9 Mirf.csnPin=10; //csn引脚设置为D10 Mirf.spi=MirfHardwareSpi; 加载24L01 SPI Mirf.init (; mirf.setraDDR((byte* ) ' serv1 ' ); //接收地址' ' mirf.payload=sizeof(int ); //数据类型(整数) Mirf.channel=6; //数据信道3 Mirf.config (; Serial.Begin(9600; //比特率9600}void forward () digitalwrite () 2,HIGH ); 数字写入(3,LOW ); 数字写入(4,HIGH ); 数字写入(5,LOW ); 戴尔(30; }void back ()数字写入) 2,LOW ); 数字写入(3,HIGH ); 数字写(4,LOW ); 数字写入(5,HIGH ); 戴尔(30; }void Turnleft () digitalwrite () 2,LOW ); 数字写入(3,HIGH ); 数字写入(4,HIGH ); 数字写入(5,LOW ); 戴尔(30; }void Turnright () digitalwrite () 2,HIGH ); 数字写入(3,LOW ); 数字写(4,LOW ); 数字写入(5,HIGH ); 戴尔(30; }void stop_run () digitalwrite ) ) 2,LOW ); 数字写入(3,LOW ); 数字写(4,LOW ); 数字写入(5,LOW ); }void loop () if (mirf.dataready ) )//收到数据后mirf.getdata ) ) (byte* ) y ); //接收数据if(y==5) {前向}; Turnleft (; }elseif(y==6) { forward ); Turnright (; }elseif(y==7) { back ); Turnleft (; }elseif(y==8) { back ); Turnright (; }elseif(y==1) { forward ); }elseif(y==2) { back ); }elseif(y==3) { Turnright ); }elseif(y==4) { Turnleft ); } else{ stop_run (; }序列. print (' y=' ); serial.println(y; Mirf.rxFifoEmpty (; 24L01缓存清理} } 遥控器代码

#include 'SPI.h' //24L01库文件# include ' mirf.h ' # include ' NRF 24l 01.h ' # include ' mirfhardwarespidriver . int B; int C; int D; void setup () pinmode )、INPUT_PULLUP ); pinmode(3,INPUT_PULLUP; pinmode(4,INPUT_PULLUP; pinmode(5,INPUT_PULLUP; Mirf.cePin=9; //ce引脚设为D9 Mirf.csnPin=10; //csn引脚设置为D10 Mirf.spi=MirfHardwareSpi; 加载24L01 SPI Mirf.init (; //mirf.settaddr((byte* ) ' serv1 ' ); //发送到“收件人”mirf.payload=sizeof(int ); //数据类型(整数) Mirf.channel=6; Mirf.config (; Serial.Begin(9600; }void loop () a=digitalread ) 2; b=数字读取(3; c=数字读取(4; d=数字读取(5; if(a==lowd==low ) { X=5; }elseif(a==lowc==low ) ) x=6; }elseif(b==lowd==low ) ) x=7; }elseif(b==lowc==low ) ) x=8; }elseif(a==low ) x=1; }elseif(b==low ) x=2; }elseif(c==low ) x=3; }elseif(d==low ) x=4; } else{ X=0; }serial.print('x=' ); serial.println(x; mirf.send () byte* ) x ); 发送//while (mirf.is sending ) ) (/等待发送还是继续发送(delay ) ) 100 ); //20ms等待(刻录后可以控制购物车)

如果有什么困难的话请联系博客,谢谢你的阅读。 如果你不愿意,请点击收藏做个好榜样,注意博客会继续更新有趣的嵌入式项目

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。