自制遥控小车,遥控距离可达2000米? (nrf24l01射频模块+Arduino nano+L297N)
之前介绍了用esp8266做了一个用手机app控制的WiFi小车,只要实现给小车的不断供网,基本实现了小车的无视距离范围的测试
没有看过的朋友可以去看看,传送门在下面:
不受距离限制的无线小车
但是做出来的小车也许不难发现控制的延迟度比较高,今天博主就给大家带来一个几乎0延迟的遥控小车,控制距离按照射频模块来说是有2000米距离,但是博主测试隔着墙体貌似只有50米到100米的控制距离
遥控小车
不多说直接进入正题
首先做我们这次的遥控小车需要什么呢
材料元件:
- 小车机身(包括4个轮子,4个电机)
- 2个nrf24l01射频模块
- 2个Arduino nano开发板
- 若干杜邦线(最好三种都有)
- 若干两脚立式按钮
- 1块小的面包板
- l298n(红板)
- 电源(可以使用充电宝,博主就是用的充电宝)
编程环境:arduino IDE
1、Arduino IDE根据自己的系统安装合适的版本
Arduino IDE的版本博主推荐1.8.9以上的版本,比较容易下载库
这次的项目用到的库有
#include “SPI.h”
#include “Mirf.h”
#include “nRF24L01.h”
#include “MirfHardwareSpiDriver.h”
![](/assets/blank.gif)
在软件里面直接搜索添加下载即可
2,小车基本动作的实现方法以及L298N的原理
这里上篇文章也说过了,没有看过的朋友建议去上篇文章了解一下,当然,如果你只是想做出来,不用了解也能做出来
传送门:不受距离限制的无线小车
3,接线图
小车接线图
![](/assets/blank.gif)
遥控器接线图
![](/assets/blank.gif)
面包板上面的4个按钮就是前进后退左转右转,遥控器可以直接充电宝供电哦
这次的有点复杂而且博主画的不是很好看,大家见谅
4,遥控器以及小车代码
Arduino的烧录过程就不用我多说了吧,不知道的朋友可以去看我以前的文章
小车代码:
#include "SPI.h" //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"int Y;void setup(){ pinMode(2,OUTPUT);pinMode(3,OUTPUT);pinMode(4,OUTPUT);pinMode(5,OUTPUT);Mirf.cePin = 9; //设置CE引脚为D9Mirf.csnPin = 10; //设置CSN引脚为D10Mirf.spi = &MirfHardwareSpi; //加载24L01 SPIMirf.init();Mirf.setRADDR((byte *)"serv1"); //接收地址" "Mirf.payload = sizeof(int); //数据类型(整数)Mirf.channel = 6; //数据通道 3Mirf.config(); Serial.begin(9600); //比特率 9600
}void forward(){digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,LOW);delay(30);
}void back(){digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,HIGH);delay(30);
}void Turnleft(){digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW);delay(30);
}void Turnright(){digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,HIGH);delay(30);
}void stop_run(){digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); }void loop(){if(Mirf.dataReady()){ //如果接收到数据则执行Mirf.getData((byte *)&Y); //接收数据if(Y==5){forward();Turnleft(); }else if(Y==6){forward();Turnright();}else if(Y==7){back();Turnleft(); }else if(Y==8){back();Turnright(); }else if(Y==1){ forward();}else if(Y==2){back();}else if(Y==3){Turnright();}else if(Y==4){Turnleft();}else{stop_run();}Serial.print("Y=");Serial.println(Y);Mirf.rxFifoEmpty(); //清理24L01缓存} }
遥控器代码
#include "SPI.h" //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"int X;
int A;
int B;
int C;
int D;void setup(){ pinMode(2,INPUT_PULLUP);pinMode(3,INPUT_PULLUP);pinMode(4,INPUT_PULLUP);pinMode(5,INPUT_PULLUP);Mirf.cePin = 9; //设置CE引脚为D9Mirf.csnPin = 10; //设置CSN引脚为D10Mirf.spi = &MirfHardwareSpi; //加载24L01 SPIMirf.init(); //开始Mirf.setTADDR((byte *)"serv1"); //发送到"接收地址"Mirf.payload = sizeof(int); //数据类型(整数)Mirf.channel = 6;Mirf.config(); Serial.begin(9600);
}
void loop(){A = digitalRead(2);B = digitalRead(3);C = digitalRead(4);D = digitalRead(5);if(A==LOW && D==LOW){X=5;}else if(A==LOW && C==LOW){X=6; }else if(B==LOW && D==LOW){X=7; }else if(B==LOW && C==LOW){X=8; }else if(A==LOW){ X=1;}else if(B==LOW){X=2;}else if(C==LOW){X=3; }else if(D==LOW){X=4; }else{X=0; }Serial.print("X=");Serial.println(X);Mirf.send((byte *)&X); //发送while(Mirf.isSending()){ //等待或继续发送}delay(100); // 等待20ms
}
烧录进去就可以控制小车了
遇到什么困难的地方可以联系博主,感谢您的浏览,不嫌弃的话点个收藏点赞,关注博主持续更新好玩的嵌入式项目
自制遥控小车,遥控距离可达2000米? (nrf24l01射频模块+Arduino nano+L297N)相关推荐
- ubuntu wifi固定ip_自制wifi遥控小车!ESP8266实践指南(二)
上次带大家利用ESP8266自制了wifi控制的LED点阵屏幕,大家觉得怎么样呢? 手把手教你用wifi控制显示屏!ESP8266实践指南(一) 今天我们来做点更有意思的~ wifi遥控小车! 一.所 ...
- 利用Nodemcu+Arduino nano+TB6612+点灯科技APP制作简易麦克纳姆轮Wi-Fi遥控小车
摘要 麦克纳姆轮小车由于车轮本身的特殊结构,可以实现全向行驶,可玩性非常强.麦克纳姆轮原理在这里不做展开,麦克纳姆小车主要是通过控制四个轮胎的转与不转以及转动的方向来实现多方向的运动,其中一种X型车轮 ...
- 不限距离4g/5g信号远程遥控小车
4g/5g不限距离遥控小车(1) 4g/5g不限距离遥控小车(2) 最开始学习编程也是源于一个想法, 无线遥控小车和飞机操作范围都是在几十米, 远的几百米, 再远的几公里, 那能不能把手机放在小车或飞 ...
- AIoT应用创新大赛-基于TencentOS Tiny 的遥控小车
AIoT应用创新大赛-基于TencentOS Tiny 的遥控小车 - 云+社区 - 腾讯云https://cloud.tencent.com/developer/article/1951791 一, ...
- 基于Arduino和Blynk的远程遥控小车
基于Arduino和Blynk的远程遥控小车 小车图片?ε=ε=ε=(~ ̄▽ ̄)~,其实很简单一起来看看叭 废话不多说.首先做这个智能小车所需要的东西有 硬件支持: 1.Arduino Uno 开发板 ...
- 基于STM32的最简易蓝牙遥控小车
基于STM32的最简易蓝牙遥控小车 硬件准备 硬件连接 STM32cubeMX配置 代码部分 视频演示 本篇博客主要针对的读者为有一定单片机基础,但是第一次自制蓝牙遥控小车的小白同学,所用物件型号选择 ...
- 开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴
发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32 ...
- ios 悬浮窗_多达2000个频道,支持7天回看!这才是我要的看电视app(安卓/ios)...
老Y前段时间给大家分享过可以观看全球电视直播的网站,推荐一个可以看全球直播的网站(支持手机端) 今天再给大家推荐一个更加厉害的看电视的工具,它不仅支持安卓.IOS而且还可以通过手机浏览器直接观看!最重 ...
- android控制手机强制手机横竖方向,使用android IOIO和安卓手机制作视频遥控小车(控制灯的开关、实时视频传输、方向控制)...
android IOIO是通过安卓手机的USB接口控制的电路板,通过android IOIO可以不需要太多的硬件知识,通过安卓手机转接的IOIO板控制外围设备,配件有纸盒.L298N电机驱动模块.旧手 ...
最新文章
- 如何使用facenet
- java中对象的生存期_JSP中JavaBean的生命周期
- JAVA8 ARRAY、LIST操作 汇【5】)- JAVA8 LAMBDA LIST统计(求和、最大、最小、平均)
- Arduino学习笔记-按钮控制LED实验
- keil c语言字符型变量的值,面向51单片机的Keil uVision4的四种基本数据类型
- [Ext JS]5.1.1 分组标题的表格(Grouped Header Grid)与使用技巧
- 【工具】VirtualBox装VBoxGuestAdditions增强工具失败解决方法和共享文件夹设置
- Jmeter个人使用部分整理2021
- python 全栈开发,Day122(人工智能初识,百度AI)
- unity blend混合
- 置剪辑板文本_实验背景剪辑:文本
- 【open stack】openstack从入门到放弃
- 个人项目(二)-- 自助点餐系统
- centos7 scons安装_安装Python和Scons
- Java全文搜索怎么弄的_全文搜索 简介
- KubeSphere 社区双周报 | 功能亮点抢“鲜”看 | 2022-09-30
- A. Frog Jumping
- vscode terminal主题配色
- ppt转换pdf转换器免费下载
- 如何成为一个合格的数据架构师?