Beaglebone Black – 透過 NodeJS 使用 RF24 Library

RF24 是一個相當完整的 nRF24L01 函式庫(library),它目前支援許多平台,例如 Arduino、樹莓派等等,先前有草草的介紹過。

最近因為在使用 Beaglebone Black (BBB) 這個單板電腦在做些實驗,需要用到 nRF24L01,本來是想直接用已寫好並放在 NPM 中的套件,結果發現無法使用,於是就想起了 RF24 有支援到 BBB,但遇到了些麻煩。

因為我只想用 NodeJS 去做大部分的控制,並不想要用 RF24 那種全 C/C++ 的方式來做,所以我就寫了一個簡單的程式來讓 NodeJS 與 RF24 能夠傳遞訊息並且操作 nRF24L01 模組。

閱讀全文〈Beaglebone Black – 透過 NodeJS 使用 RF24 Library〉

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

nRF24L01

我在大學研究的專題可以說是自幹一個 Zigbee 的無線網路系統,我所採用無線傳輸模組是不在 IEEE 規範中的 2.4GHz 無線網路模組 nRF24L01,並且利用 Arduino 以及 Raspberry Pi 做雛形開發。很久之前還有為了它與 Launchpad 之間的通訊而寫過一篇文章。至於我專題的細節,改天再來說說。

閱讀全文〈RF24 專屬於 nRF24L01 的程式函式庫。〉

當LaunchPad遇上nRF24L01

時間過得真快,又到了一週一文的截止時間後了(?),今天要來跟大家談談Jack和Rose相遇的故事,讓我們把時間回到1912年的鐵達尼號…

啊,不對,是LaunchPad與nRF24L01才對。LaunchPad我相信有在關注Single.9的朋友們應該不會很陌生才是,假如你是隨Google大神的指引而來到寒舍的話,那麼你可以先參考這篇文章後在來看也不遲。

開始之前

今天的豬腳是清蒸的主角是這個小小的傢伙,nRF24L01。別看他如此嬌小的樣貌,他的內部功能可以說是應有盡有,而且能力不輸ZigBee呢!

nRF24L01

特色:

  • 使用2.4GHz全球開放頻寬
  • 126個可選擇頻道
  • 可設定收發位址及頻率
  • 1 與 2 Mbps 的資料傳輸速率
  • 可程式控制的輸出功率(最大0dBm,消耗11.3mA)
  • 1.9~3.3V低電壓
  • 使用SPI界面控制
  • 詳細請參考Data Sheet

硬體設定

節錄自SPI的紀錄,大概就是長這樣:

白話文解釋:

nRF24L01模組上的第12腳分別接上電壓不可超過3.6V

程式設定

網路上已經有人幫nRF24L01寫了API以及SPI,這大大的減少了我們在軟體上面的設定時間,我們要作的就是把API以及SPI給包到我們的程式裡面這樣就算是做完基本定義了。之後在參考SPI.c的內容與註解來進行更細節的程式規劃,當然,如果需要的話,你也可以參考Data Sheet來作其他的細節設定,無論如何,真要謝謝這不知名的朋友無私的分享這樣的東西。

檔案請點這邊下載(含UART以及收發範例),註解翻譯並不是完全的,因為實在很不想翻(別打我)。

下載完之後,請將之放到與你主程式相同的資料夾裡,然後如以下include到你的程式。對了main.c裡面是簡易的範例程式可以參考看看。

話說我好像還沒寫 CCS 的使用說明,下次文章更新的時候我會順便寫的…(鞠躬)

如何使用

使用方法請參考SPI.c以及範例程式…基本上都有稍做翻譯了,這邊貼上接收與發射的主要程式片段。

發射(Tx)

以上,是 nRF24L01 與 LaunchPad 邂逅的方式,而他們的邂逅當然也有拍下珍貴的紀錄喔!(咦?)