iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
自我挑戰組

arduino基礎實作系列 第 20

day20:NRF24L01模組(1)

  • 分享至 

  • xImage
  •  

第20天我要實作的是NRF24L01模組來傳送及接收訊號。

那首先是這次需要的模組
這次因為要使用兩個模組,所以會使用Arduino nano版

接著是nrf24lo1模組,為了要穩定電壓所以我焊了一個10uf的電容上去。
這邊是發送端。

接線圖

實體圖

再來是arduino部分

首先要先下載函數庫,SPI是內建的函數庫,nRF24L01的函數庫因為在程式管理器上找不到所以要去網路上自己找,printf.h這個也是,基本上打檔名上去都找的到。

接著一樣設定代數,在來用一個代數去儲存要傳送的訊息。

接著是nrf24l01所需要的基本設定,首先一如往常地先開啟模組,再來比較重要需要設定到的有setChannel(),這個是要設定發送時的頻道,再來是openWritingPipe(),這個則是設定在頻道的哪個位址,基本上隨便打都可以,在接下來是setPALevel()及setDataRate(),這兩個是設定發送強度及傳輸速率,接著要關掉它的接收模式(stopListening()),最下面兩行這是讓它啟動時印出模組的基本資料。

主程式的部分就只有傳送得資料。

接著就可以上傳程式碼。

在上傳時要記得先切換arduino的版本,根據版本要把它切換到old bootloader的選項,不然會無法上傳。

接著打開監控器就會看到模組的基本訊息。

程式碼

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

RF24 radio(7,8);

const char msg[] = "Hello World!";

void setup() {
  Serial.begin(9600);
  
  radio.begin();
  radio.setAutoAck(false);
  radio.openWritingPipe(0xF0F0F0F0AA); 
  radio.setChannel(64);
  radio.setPALevel(RF24_PA_MAX);
  radio.setDataRate(RF24_2MBPS);
  radio.stopListening();       
  printf_begin();
  radio.printDetails();  
}

void loop() {
  radio.write(&msg, sizeof(msg)); 
  delay(1000);
}

上一篇
day19:紅外線接收模組接收訊號
下一篇
day21:NRF24L01模組(2)
系列文
arduino基礎實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言