日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自制遥控小车,遥控距离可达2000米? (nrf24l01射频模块+Arduino nano+L297N)

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自制遥控小车,遥控距离可达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”

    在軟件里面直接搜索添加下載即可


    2,小車基本動作的實現方法以及L298N的原理

    這里上篇文章也說過了,沒有看過的朋友建議去上篇文章了解一下,當然,如果你只是想做出來,不用了解也能做出來

    傳送門:不受距離限制的無線小車


    3,接線圖

    小車接線圖

    遙控器接線圖

    面包板上面的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)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。