久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

2.4G無線通信:通過NRF24L01遙控LED

作者:白櫟旸   來源:本站原創   點擊數:  更新時間:2014年04月30日   【字體:

    Rainbow上面預留了2.4G無線通信模塊NRF24L01的插口,將無線通信模塊插入到指定的接口中,多個Rainbow之間就可以通過2.4G無線通信模塊實現無線通信了,通過無線通信模塊可以實現無線開關控制、無線數據采集等功能。無線通信實驗要求至少兩個Rainbow,每個上面都插有NRF24L01模塊,他們一個作為發送端、另外一個作為接收端,接收端接收到指令后,根據指令的內容去執行相應的操作。

 
    在軟件包的“Projects\NRF24L01-Send”文件夾包含了無線發送端的程序、“Projects\NRF24L01-Recv”文件夾包含了無線接收端的程序,可以直接編譯、燒寫和調試。我們先來看看無線發送端的程序代碼:
#include "WProgram.h"
#include "24l01.h"
 
void setup()
{
  //初始化Rainbow
  boardInit();
  //初始化默認串口
  Serial.begin();
  //初始化無線通信模塊
  NRF24L01_Init();
  //設置成發射模式
  NRF24L01_TX_Mode();
  Serial.println("NRF24L01-Send start...");
}
 
void loop()
{
  //定義NRF24L01發送的數據包,為32個字節長度
  uint8_t txData[32] = {0};
  //將串口收到的輸入數據通過NRF24L01發射出去
  if(Serial.available())
  {
    txData[0] = Serial.read();
    NRF24L01_TxPacket(txData);
  }
}
 
int main()
{
  setup();
  while(1) loop();
}
 
    這個發送端的功能非常簡單:從串口讀取一個字節的數據,并通過NRF24L01發射出去。在程序中,我們定義了一個32個字節的數組,這是因為我們封裝的函數庫,是以32個字節為單位將數據組織成一個數據包,再通過無線通信模塊發送出去。無線通信模塊的函數庫采用C的方式進行封裝,要使用無線通信模塊,需要按照下列步驟進行:
    1、調用NRF24L01_Init()對無線通信模塊進行初始化
    2、調用NRF24L01_TX_Mode()或者NRF24L01_RX_Mode()設置無線通信模塊的模式:發送/接收
    3、定義一個32byte的數組,準備好發送的數據,調用NRF24L01_TxPacket(txData)發送數據;或者通過NRF24L01_RxPacket(txData)接收數據
 
    我們再來看看接收端的程序代碼:
#include "WProgram.h"
#include "24l01.h"
 
void setup()
{
  //初始化Rainbow
  boardInit();
  //初始化默認串口
  Serial.begin();
  //初始化無線通信模塊
  NRF24L01_Init();
  //設置成接收模式
  NRF24L01_RX_Mode();
 
  //使用LED作為指示,客戶端發送0x31的時候LED發光;發送0x30的時候LED熄滅
  pinMode(LED1_PIN, GPIO_Mode_Out_PP);
  Serial.println("NRF24L01-Recv start...");
}
 
void loop()
{
  //定義NRF24L01接收的數據包,為32個字節長度
  uint8_t rxData[32] = {0};
  //接收數據,返回0表示成功
  if(NRF24L01_RxPacket(rxData) == 0)
  {
    if(rxData[0] == 0x30)
    {
      //LED滅
      digitalWrite(LED1_PIN, HIGH);
    }
    else if(rxData[0] == 0x31)
    {
      //LED亮
      digitalWrite(LED1_PIN, LOW);
    }
  }
}
 
int main()
{
  setup();
  while(1) loop();
}
 
    使用無線通信模塊進行通信的步驟前面都已經說明了,在發送的時候雖然一個數據包是32個字節,我們實際上只填充了一個字節的數據,因此在接收端將根據第一個字節的內容來執行響應的動作:當接收到‘1’就點亮LED;當接收到‘0’就關閉LED。
 
    將無線發送端、接收端的程序分別編譯無誤后,燒寫到不同的Rainbow中,將接收端放到離發送端有一定距離的地方,然后將發送端通過USB-TTL模塊接入到PC,在PC上打開串口調試工具,通過串口調試工具發送一個1,此時接收端的LED點亮;如果接收端的LED處于點亮狀態,在串口工具中給無線發送端輸送一個0,此時LED熄滅。
 
關閉窗口

相關文章

主站蜘蛛池模板: 国产精品成人69xxx免费视频 | 国产高潮好爽受不了了夜色 | 久久91av| 午夜视频在线免费观看 | 视频在线一区二区 | 国产男女视频网站 | 国产成人影院 | 在线一区二区国产 | 国产剧情一区二区三区 | 精品国产一区二区三区性色 | 成年人的视频免费观看 | 激情毛片 | 国产精品视频免费播放 | 2018天天干天天操 | 亚洲综合国产 | 91在线一区二区三区 | 在线成人免费观看 | 国产精品有限公司 | 91视频大全 | 亚洲免费人成在线视频观看 | 毛片大全 | 中文字幕视频在线观看免费 | 国产一区 | 成人av在线播放 | 天堂在线1 | 欧美日韩国产在线观看 | 日韩在线免费视频 | 欧美二区三区 | 看毛片的网站 | av 一区二区三区 | 金莲网 | 伊人超碰在线 | www.欧美| 日韩一区二区福利视频 | 中文字幕一区二区三区四区 | 久久精品在线免费视频 | 成人区精品一区二区婷婷 | 欧美精品一区二区三区在线播放 | 欧美电影免费观看 | 欧美日本在线观看 | 色视频网站在线观看 |