找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4145|回復(fù): 28
收起左側(cè)

【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(116)--- 24L01無(wú)線模塊

[復(fù)制鏈接]
ID:513258 發(fā)表于 2019-9-18 20:16 | 顯示全部樓層 |閱讀模式
37款傳感器與模塊的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手試試做實(shí)驗(yàn),不管成功與否,都會(huì)記錄下來(lái)---小小的進(jìn)步或是搞不定的問(wèn)題,希望能夠拋磚引玉。

【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
實(shí)驗(yàn)一百一十六:NRF24L01+ 無(wú)線模塊 功率加強(qiáng)版 2.4G無(wú)線收發(fā)通信模塊 黑金剛



0.jpg

回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-18 20:43 | 顯示全部樓層
NRF24L01
是由NORDIC生產(chǎn)的工作在2.4GHz~2.5GHz的ISM 頻段的單片無(wú)線收發(fā)器芯片。無(wú)線收發(fā)器包括:頻率發(fā)生器、增強(qiáng)型“SchockBurst”模式控制器、功率放大器、晶體振蕩器、調(diào)制器和解調(diào)器。輸出功率頻道選擇和協(xié)議的設(shè)置可以通過(guò)SPI 接口進(jìn)行設(shè)置。幾乎可以連接到各種單片機(jī)芯片,并完成無(wú)線數(shù)據(jù)傳送工作。極低的電流消耗:當(dāng)工作在發(fā)射模式下發(fā)射功率為0dBm 時(shí)電流消耗為11.3mA ,接收模式時(shí)為12.3mA,掉電模式和待機(jī)模式下電流消耗更低。
01 (1).jpg


回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-18 21:06 | 顯示全部樓層
02-.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-18 21:46 | 顯示全部樓層
02 (1).jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-18 21:52 | 顯示全部樓層
01-.jpg
性能參數(shù)
◆ 小體積,QFN20 4x4mm封裝
◆ 寬電壓工作范圍,1.9V~3.6V,輸入引腳可承受5V電壓輸入
◆ 工作溫度范圍,-40℃~+80℃
◆ 工作頻率范圍,2.400GHz~2.525GHz
◆ 發(fā)射功率可選擇為0dBm、-6dBm、-12dBm和-18dBm
◆ 數(shù)據(jù)傳輸速率支持1Mbps、2Mbps [1]
◆ 低功耗設(shè)計(jì),接收時(shí)工作電流12.3mA,0dBm功率發(fā)射時(shí)11.3mA,掉電模式時(shí)僅為900nA
◆ 126個(gè)通訊通道,6個(gè)數(shù)據(jù)通道,滿足多點(diǎn)通訊和調(diào)頻需要
◆ 增強(qiáng)型“ShockBurst”工作模式,硬件的CRC校驗(yàn)和點(diǎn)對(duì)多點(diǎn)的地址控制
◆ 數(shù)據(jù)包每次可傳輸1~32Byte的數(shù)據(jù)
◆ 4線SPI通訊端口,通訊速率最高可達(dá)8Mbps,適合與各種MCU連接,編程簡(jiǎn)單
◆ 可通過(guò)軟件設(shè)置工作頻率、通訊地址、傳輸速率和數(shù)據(jù)包長(zhǎng)度
◆ MCU可通過(guò)IRQ引腳塊判斷是否完成數(shù)據(jù)接收和數(shù)據(jù)發(fā)送

回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-18 21:57 | 顯示全部樓層
03 (1).jpg
NRF24L01電原理圖
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 08:53 | 顯示全部樓層
04 (1).jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 09:02 | 顯示全部樓層
09.jpeg
NRF24L01無(wú)線模塊
(1) 2.4Ghz 全球開(kāi)放 ISM 頻段免許可證使用
(2) 最高工作速率 2Mbps,高效 GFSK 調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制場(chǎng)合
(3) 126 頻道,滿足多點(diǎn)通信和跳頻通信需要
(4) 內(nèi)置硬件 CRC 檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制
(5) 低功耗 1.9 - 3.6V 工作,待機(jī)模式下?tīng)顟B(tài)為 22uA;掉電模式下為 900nA
(6) 內(nèi)置 2.4Ghz 天線,體積種類多樣
(7) 模塊可軟件設(shè)地址,只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供中斷指示),可直接接各種單片機(jī)使用,軟件編程非常方便
(8) 內(nèi)置專門穩(wěn)壓電路,使用各種電源包括 DC/DC 開(kāi)關(guān)電源均有很好的通信效果
(9) 2.54MM 間距接口,DIP 封裝
(10)工作于 Enhanced ShockBurst 具有 Automatic packethandling, Auto packet transaction handling,具有可選的內(nèi)置包應(yīng)答機(jī)制,極大的降低丟包率。
(11)與 51 系列單片機(jī) P0 口連接時(shí)候,需要加 10K 的上拉電阻,與其余口連接不需要。
(12)其他系列的單片機(jī),如果是 5V 的,請(qǐng)參考該系列單片機(jī) IO 口輸出電流大小,如果超過(guò) 10mA,需要串聯(lián)電阻分壓,否則容易燒毀模塊! 如果是3.3V的,可以直接和RF24l01模塊的IO口線連接。比如AVR系列單片機(jī)如果是5V 的,一般串接2K 的電阻。

回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 09:29 | 顯示全部樓層
接口說(shuō)明
1) VCC 腳接電壓范圍為 1.9V~3.6V 之間,不能在這個(gè)區(qū)間之外,超過(guò) 3.6V 將會(huì)燒毀模塊。推薦電壓 3.3V 左右。
(2) 除電源 VCC 和接地端,其余腳都可以直接和普通的 5V 單片機(jī) IO口直接相連,無(wú)需電平轉(zhuǎn)換。當(dāng)然對(duì) 3V 左右的單片機(jī)更加適用了。
(3) 硬件上面沒(méi)有 SPI 的單片機(jī)也可以控制本模塊,用普通單片機(jī) IO口模擬 SPI 不需要單片機(jī)真正的串口介入,只需要普通的單片機(jī) IO 口就可以了,當(dāng)然用串口也可以了。

08-.jpg


回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 09:31 | 顯示全部樓層
08.jpg

應(yīng)用領(lǐng)域
● 無(wú)線鼠標(biāo) 鍵盤 游戲機(jī)操縱桿
● 無(wú)線門禁
● 無(wú)線數(shù)據(jù)通訊
● 安防系統(tǒng)
● 遙控裝置
● 遙感勘測(cè)
● 智能運(yùn)動(dòng)設(shè)備
● 工業(yè)傳感器
● 玩具

回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 09:40 | 顯示全部樓層
05 (1).jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 09:50 | 顯示全部樓層
低應(yīng)用成本:NRF24L01集成了所有與RF協(xié)議相關(guān)的高速信號(hào)處理部分,比如:自動(dòng)重發(fā)丟失數(shù)據(jù)包和自動(dòng)產(chǎn)生應(yīng)答信號(hào)等,NRF24L01的SPI接口可以利用單片機(jī)的硬件SPI口連接或用單片機(jī)I/O口進(jìn)行模擬,內(nèi)部有FIFO可以與各種高低速微處理器接口,便于使用低成本單片機(jī)。

便于開(kāi)發(fā):由于鏈路層完全集成在模塊上,非常便于開(kāi)發(fā)。自動(dòng)重發(fā)功能,自動(dòng)檢測(cè)和重發(fā)丟失的數(shù)據(jù)包,重發(fā)時(shí)間及重發(fā)次數(shù)可軟件控制自動(dòng)存儲(chǔ)未收到應(yīng)答信號(hào)的數(shù)據(jù)包自動(dòng)應(yīng)答功能,在收到有效數(shù)據(jù)后,模塊自動(dòng)發(fā)送應(yīng)答信號(hào),無(wú)須另行編程載波檢測(cè)—固定頻率檢測(cè)內(nèi)置硬件CRC檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制數(shù)據(jù)包傳輸錯(cuò)誤計(jì)數(shù)器及載波檢測(cè)功能可用于跳頻設(shè)置可同時(shí)設(shè)置六路接收通道地址,可有選擇性的打開(kāi)接收通道標(biāo)準(zhǔn)插針Dip2.54MM間距接口,便于嵌入式應(yīng)用。
07.jpeg


回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 11:14 | 顯示全部樓層
10.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 13:02 | 顯示全部樓層
10-.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 14:08 | 顯示全部樓層
  1. /*
  2. 【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3. 實(shí)驗(yàn)一百一十六:NRF24L01+ 無(wú)線模塊 功率加強(qiáng)版 2.4G無(wú)線收發(fā)通信模塊 黑金剛
  4. 1、安裝“Mirf”庫(kù)(下載鏈接 https://github.com/aaronds/arduino-nrf24l01)
  5.      安裝“rf24”庫(kù)(下載鏈接 https://github.com/nRF24/RF24)
  6. 2、項(xiàng)目測(cè)試 :NRF24L01最簡(jiǎn)單測(cè)試之Client 示例代碼
  7. 3、模塊接線
  8. Arduino uno    ---    nRF24L01
  9. 3.3V                 ---    VCC:模塊供電引腳
  10. GND                 ---    GND:模塊接地引腳
  11. D7                    ---    CSN:接收端選擇引腳
  12. D8                    ---    CE:發(fā)射/接受狀態(tài)選擇引腳
  13. D11                  ---    MOSI :控制端輸出,接收端輸入引腳
  14. D13                  ---    SCK:時(shí)鐘信號(hào)
  15. D12                  ---    MISO:控制端輸入,接收端輸出引腳
  16. *IRQ引腳在本例中不需要接
  17. */

  18. #include <SPI.h>
  19. #include <Mirf.h>
  20. #include <nRF24L01.h>
  21. #include <MirfHardwareSpiDriver.h>

  22. void setup(){
  23.   Serial.begin(9600);
  24.   /*
  25.    * Setup pins / SPI.
  26.    */
  27.    
  28.   /* To change CE / CSN Pins:
  29.    *
  30.    * Mirf.csnPin = 9;
  31.    * Mirf.cePin = 7;
  32.    */
  33.   /*
  34.   Mirf.cePin = 7;
  35.   Mirf.csnPin = 8;
  36.   */
  37.   Mirf.spi = &MirfHardwareSpi;
  38.   Mirf.init();
  39.   
  40.   /*
  41.    * Configure reciving address.
  42.    */
  43.    
  44.   Mirf.setRADDR((byte *)"clie1");
  45.   
  46.   /*
  47.    * Set the payload length to sizeof(unsigned long) the
  48.    * return type of millis().
  49.    *
  50.    * NB: payload on client and server must be the same.
  51.    */
  52.    
  53.   Mirf.payload = sizeof(unsigned long);
  54.   
  55.   /*
  56.    * Write channel and payload config then power up reciver.
  57.    */
  58.    
  59.   /*
  60.    * To change channel:
  61.    *
  62.    * Mirf.channel = 10;
  63.    *
  64.    * NB: Make sure channel is legal in your area.
  65.    */
  66.    
  67.   Mirf.config();
  68.   
  69.   Serial.println("Beginning ... ");
  70. }

  71. void loop(){
  72.   unsigned long time = millis();
  73.   
  74.   Mirf.setTADDR((byte *)"serv1");
  75.   
  76.   Mirf.send((byte *)&time);
  77.   
  78.   while(Mirf.isSending()){
  79.   }
  80.   Serial.println("Finished sending");
  81.   delay(10);
  82.   while(!Mirf.dataReady()){
  83.     //Serial.println("Waiting");
  84.     if ( ( millis() - time ) > 1000 ) {
  85.       Serial.println("Timeout on response from server!");
  86.       return;
  87.     }
  88.   }
  89.   
  90.   Mirf.getData((byte *) &time);
  91.   
  92.   Serial.print("Ping: ");
  93.   Serial.println((millis() - time));
  94.   
  95.   delay(1000);
  96. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 14:12 | 顯示全部樓層
12.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 14:14 | 顯示全部樓層
  1. /*
  2. 【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)
  3. 實(shí)驗(yàn)一百一十六:NRF24L01+ 無(wú)線模塊 功率加強(qiáng)版 2.4G無(wú)線收發(fā)通信模塊 黑金剛
  4. 1、安裝“Mirf”庫(kù)(下載鏈接 https://github.com/aaronds/arduino-nrf24l01)
  5.      安裝“rf24”庫(kù)(下載鏈接 https://github.com/nRF24/RF24)
  6. 2、項(xiàng)目測(cè)試 :NRF24L01最簡(jiǎn)單測(cè)試之Server示例代碼
  7. 3、模塊接線
  8. Arduino uno    ---    nRF24L01
  9. 3.3V                 ---    VCC:模塊供電引腳
  10. GND                 ---    GND:模塊接地引腳
  11. D7                    ---    CSN:接收端選擇引腳
  12. D8                    ---    CE:發(fā)射/接受狀態(tài)選擇引腳
  13. D11                  ---    MOSI :控制端輸出,接收端輸入引腳
  14. D13                  ---    SCK:時(shí)鐘信號(hào)
  15. D12                  ---    MISO:控制端輸入,接收端輸出引腳
  16. *IRQ引腳在本例中不需要接
  17. */

  18. #include <SPI.h>
  19. #include <Mirf.h>
  20. #include <nRF24L01.h>
  21. #include <MirfHardwareSpiDriver.h>

  22. void setup(){
  23.   Serial.begin(9600);
  24.   
  25.   /*
  26.    * Set the SPI Driver.
  27.    */

  28.   Mirf.spi = &MirfHardwareSpi;
  29.   
  30.   /*
  31.    * Setup pins / SPI.
  32.    */
  33.    
  34.   Mirf.init();
  35.   
  36.   /*
  37.    * Configure reciving address.
  38.    */
  39.    
  40.   Mirf.setRADDR((byte *)"serv1");
  41.   
  42.   /*
  43.    * Set the payload length to sizeof(unsigned long) the
  44.    * return type of millis().
  45.    *
  46.    * NB: payload on client and server must be the same.
  47.    */
  48.    
  49.   Mirf.payload = sizeof(unsigned long);
  50.   
  51.   /*
  52.    * Write channel and payload config then power up reciver.
  53.    */
  54.    
  55.   Mirf.config();
  56.   
  57.   Serial.println("Listening...");
  58. }

  59. void loop(){
  60.   /*
  61.    * A buffer to store the data.
  62.    */
  63.    
  64.   byte data[Mirf.payload];
  65.   
  66.   /*
  67.    * If a packet has been recived.
  68.    *
  69.    * isSending also restores listening mode when it
  70.    * transitions from true to false.
  71.    */
  72.    
  73.   if(!Mirf.isSending() && Mirf.dataReady()){
  74.     Serial.println("Got packet");
  75.    
  76.     /*
  77.      * Get load the packet into the buffer.
  78.      */
  79.      
  80.     Mirf.getData(data);
  81.    
  82.     /*
  83.      * Set the send address.
  84.      */
  85.      
  86.      
  87.     Mirf.setTADDR((byte *)"clie1");
  88.    
  89.     /*
  90.      * Send the data back to the client.
  91.      */
  92.      
  93.     Mirf.send(data);
  94.    
  95.     /*
  96.      * Wait untill sending has finished
  97.      *
  98.      * NB: isSending returns the chip to receving after returning true.
  99.      */
  100.       
  101.     Serial.println("Reply sent.");
  102.   }
  103. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 14:17 | 顯示全部樓層
13.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 14:29 | 顯示全部樓層
14.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 16:22 | 顯示全部樓層
15.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 16:24 | 顯示全部樓層
16.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 16:25 | 顯示全部樓層
17.jpg
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2019-9-19 16:26 | 顯示全部樓層
18.jpg
回復(fù)

使用道具 舉報(bào)

ID:683442 發(fā)表于 2020-4-11 15:35 | 顯示全部樓層
問(wèn)一下出現(xiàn)Mirf.h: No such file or directory錯(cuò)誤是啥意思
回復(fù)

使用道具 舉報(bào)

ID:513258 發(fā)表于 2020-10-24 15:36 | 顯示全部樓層
zlt_123456 發(fā)表于 2020-4-11 15:35
問(wèn)一下出現(xiàn)Mirf.h: No such file or directory錯(cuò)誤是啥意思

沒(méi)有這樣的文件或目錄
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表