標題: [技術文章] 無線WI FI模組 NRF24L01程式函式庫
無頭像
s6351301

註冊 2013-3-2
用戶註冊天數 4045
狀態 離線
發表於 2017-5-7 21:35 
219.84.242.121
分享  私人訊息  頂部
http://single9.net/2015/01/rf24-nrf24l01-library/

RF24 專屬於 nRF24L01 的程式函式庫。





我在大學研究的專題可以說是自幹一個 Zigbee 的無線網路系統,我所採用無線傳輸模組是不在 IEEE 規範中的 2.4GHz 無線網路模組 nRF24L01,並且利用 Arduino 以及 Raspberry Pi 做雛形開發。很久之前還有為了它與 Launchpad 之間的通訊而寫過一篇文章。至於我專題的細節,改天再來說說。nRF24L01 是一個非常便宜,便宜到可以說是不可思議的無線傳輸模組,且透過 SPI 的方式與微處理器溝通與傳輸資料。以下是 nRF24L01 的一些特色。
  • 使用2.4GHz全球開放頻寬
  • 126個可選擇頻道
  • 可設定收發位址及頻率
  • 最高 2Mbps 的資料傳輸速率
  • 可程式控制的輸出功率(最大0dBm,消耗11.3mA)
  • 1.9~3.3V低電壓
  • 使用SPI界面控制
  • 細節可以參考官方網站
如果你剛剛有去翻閱一下先前寫的那篇文章的話,應該會對於這個傳輸模組有些微的概念。但那篇文章的操作環境主要是在 Launchpad 這個由 TI 出品的開發板上,而今天要介紹的,則是讓你能透過 Raspberry Pi 的 GPIO 來操作這個無線傳輸模組。RF24RF24 是一個支援多種單板電腦的 C++ 程式函式庫(Library),因為這種外接模組並不像是 USB 裝置那樣,可以隨插隨用,而是要透過一些特殊的程式才能運作,而通常這些程式都是由一些義工愛好者們所提供的。RF24便是其中之一。RF24 提供許多方便好用的 function 讓你可以快速的掌握 nRF24L01 ,並且讓他可以跟 Raspberry Pi 緊密結合,做更多你想用他做的事情。目前支援的單板電腦除了 Raspberry 以外,還有…
  • Intel Galileo
  • Arduino Uno, Nano… ATMega 328 核心的
  • Arduino Mega Boards
  • Arduino Due
  • ATTiny
  • 其他細節可以參考他的 Git Page
RF24 Github:https://github.com/maniacbug/RF24Class Reference這部分可以直接參考官方的內容,因為項目繁多,我就不一一介紹了。範例範例程式其實包在所下載下來的資料包中,不過都是英文,但我想我把 GettingStarted.cpp 這個範例給簡單的翻譯一下,也順便讓你了解這個函式庫的使用方法。GETTINGSTARTED.CPP這是一個 Raspberry Pi 的範例,執行時需要兩個 nRF24L01 的裝置才能運作,一個可以是 Raspberry Pi 另一個是 Arduino。Arduino 的範例程式你可以在這邊看到。




總結其實個人覺得這個無線模組不難用,但問題在於傳輸距離。雖然宣稱可以長達 100 公尺以上的傳輸距離,但那只限定在沒有過多障礙物且傳輸速率較慢的環境下才有可能抵達這麼遠的距離,在我的實測過程中,2Mbps的速率下,最多只能到30M左右。但是他的便宜、小巧以及低功耗可以讓它在小區域的無線控制上佔上一席之地。