[ESP-IDF系列]使用ESP32驅(qū)動NRF24L01實現(xiàn)單點通訊
1 簡介
最近想DIY一個四軸飛行器(簡易的十字形遙控飛行器),也從晚上找了很多的視頻和做了相關(guān)的簡易研究(如果搞出來了會分享,沒有經(jīng)驗)。除去電機根據(jù)MPU6050的姿態(tài)計算PID進行輸出不談。還有一點比較重要的就是通訊功能。飛行器接收或者向遙控器發(fā)送指令然后執(zhí)行對應的數(shù)據(jù)處理或者動作。因此考慮到多種的數(shù)據(jù)傳輸方式。如下是一個簡要的對比。
通信技術(shù)通信速率(最大)通信距離(典型)通信頻段特點說明:由于之前并沒有接觸過飛行器相關(guān)的。因此我讓GPT對常見的無人機通訊方案進行了一下分析。下述表格為GPT生成的不同通訊協(xié)議對應的無人機應用的方向。
表:無人機通信方式一覽表
2 場景通信技術(shù)選型
所以最后選用的是NRF24L01,根據(jù)某寶店家介紹,其在空曠場地下通訊的距離可以達到1000米左右(已經(jīng)是一個非常大的距離了,再遠人眼可能就不可視了)。
上圖為經(jīng)典的NRF24L01
當然國內(nèi)也有很多其他系列的2.4 G模塊,比如安信可的NF-02-PA或者NF-02-PE(使用的SI24R1 芯片)。
但是考慮到本次使用的是ESP32,結(jié)合對應的庫文件的豐富程度。因此我準備了兩個不同的NRF24L01和ESP32來進行這次通訊實驗。
3 驅(qū)動步驟
主要介紹如何在IDF框架下結(jié)合組件管理器來快速實現(xiàn)通過組件nopnop2002/mirf來快速驅(qū)動2.4G模塊:
1.首先新建一個IDF的項目,基于HelloWorld 的項目
2.新建idf_component.yml,然后輸入下面的內(nèi)容
view plaincopy to clipboardprint?
1.dependencies:
2.protocol_examples_common:
3.path: ${IDF_PATH}/examples/common_components/protocol_examples_common
4.nopnop2002/mirf:
5.path: components/mirf/
6.git:https://github.com/nopnop2002/esp-idf-mirf.git
3.編譯一次當前的項目,然后組件管理器會自動下載組件:
4.訪問https://github.com/nopnop2002/esp-idfmirf.git,來查找對應的example
可以使用Clone到本地,或者是直接拷貝文件內(nèi)容。
5.使用Menuconfi g配置2.4G模塊PIN的連接情況。
6.配置項目目錄的KConfi g,在menuconfi g中進行搜索Application Configuration
view plaincopy to clipboardprint?
1.menu “Application Confi guration”
2.
3.endmenu DIRECTION
4.prompt “Communication polarity”
5.default SENDER
6.help
7.Select Communication polarity.
8.config SENDER
9.bool “As the sender”
10.help
11.As the sender.
12.config RECEIVER
13.bool “As the receiver”
14.help
15.As the receiver.
16.endchoice
17.
18.endmenu
將兩個ESP32分別以Sender和receiver的方式進行燒錄。
這樣的話,sender task 便會根據(jù)地址FGHIJ 進行數(shù)據(jù)發(fā)送,
另一個receiver的task便會進行接收.
4 實驗現(xiàn)象
5 總結(jié)
在上文中,我們主要是用nopnop2002/mirf庫快速實現(xiàn)和調(diào)試了2.G模塊的通訊和調(diào)試,目前來看效果還是非常不錯的,符合預期。但是對于通訊的距離和穩(wěn)定性還需要進一步進行拉鋸測試。
(本文來源于《EEPW》202506)
評論