基於nRF24L01+與Arduino的超聲波測距系統設計

2021-01-08 電子產品世界

距離是描述建築物平面結構的重要內容,建築物尺寸的傳統測量手段都需要人員藉助工具現地進行,但面對比較危險的建築物時,傳統的測量手段勢必增加人員的傷亡機率。隨著科學技術的發展,測距技術和無線傳輸技術日趨成熟,無人距離測量在特殊領域中將得到廣泛應用。利用超聲波測距成本低、精度高、速度快等技術特點,結合單片機、無線通信技術可對建築物內部平面尺寸進行測量,並將數據無線傳至終端設備實時顯示。

本文引用地址:http://www.eepw.com.cn/article/201610/308661.htm

1 系統結構

超聲波測距系統由發射端和接收端兩部分組成。發射端由Arduino開發板、無線射頻發射模塊、天線、超聲波模塊及電源模塊組成。接收端由Arduino開發板、無線射頻接收模塊、天線和終端設備等組成。

在系統發射端,超聲波模塊HC—SR04對距離信號進行實時採集,在Arduino的控制下通過無線射頻發射模塊將距離數位訊號發送至接收端;在系統接收端,在Arduino開發板的作用下,通過無線射頻接收模塊接收發射端發送過來的距離數位訊號,通過串口通信模塊與PC機進行通信,在PC機中利用軟體讀取數據並繪製曲線。

2 系統硬體電路設計

2.1 Arduino控制板

本系統中所採用的Arduino UNO是一塊採用USB接口的核心電路板,處理器核心是ATmega328,包括14個數字輸入輸出IO(其中6個可提供PWM輸出),6個模擬輸入IO,一個16 MHz晶體振蕩器,一個USB口(便於在線進行程序調試),一個電源插座和一個復位按鍵。

2.2 測距傳感器

HC—SR04超聲波測距模塊可提供2~400 cm的非接觸式距離感測功能,測距精度可達到3 mm,模塊包括超聲波發射器、接收器和控制電路。模塊採用IO口TRIG觸發測距,給至少10μs的高電平信號,之後模塊自動發送8個40 kHz的方波,自動檢測是否有信號返回,如有信號返回.通過IO口ECH0輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。

2.3 nRF24L01+無線傳輸模塊

nRF24L01是一款新型單片射頻收發一體器件,工作於2.4~2.5 GHz ISM頻段。其內置頻率合成器、功率放大器、晶體振蕩器、調製器、低噪聲放大器等功能模塊,並融合了增強型ShocKBurst技術,其中輸出功率和通信頻道可通過程序進行配置。nRF24L01具有極低的電流消耗,當工作在發射模式下發射功率為0 dBm時電流消耗為11.3 mA,接收模式時為13.5 mA,掉電模式和待機模式下電流消耗更低。本文採用nRF24L01+模塊,在原模塊的基礎上增加了PA和LNA。在發射端通過PA電路將nRF24L01的輸出功率放大,同時在接收端通過LNA電路增加接收信號的強度。

2.4 SPI連接

Arduino與nRF24L01+無線收發模塊之間利用同步串口SPI進行通信。nRF24L01+的SPI總線有GND(接地)、VCC(1.9~3.6 V電源)、CE(使能發射或接收)、CSN(片選信號)、SCK(時鐘信號)、MOSI(數據輸入)、MISO(數據輸出)、IRQ(中斷標誌位)。Arduino與nRF24L01+的連接圖如圖1所示。


2.5 實驗電路連接圖

發射端(HC—SR04、nRF24L01+和Arduino連接)和接收端(nRF24L01+和Arduino連接)實驗電路連接如圖2所示。


3 系統的軟體設計

3.1 無線發送模式流程

對nRF24L01+的相關寄存器進行配置,設置為增強型ShockBurstTM發送模式,通信速率為1 Mbit/s,晶振16 MHz,發射功率設置為0 dBm,MCU通過MOSI寫入數據,通過MISO讀出數據,設置通過nRF24L01+的數據輸入,保存到TX FIFO寄存器中,開始發送數據。在數據發送之後,讀取狀態寄存器的值並做出判斷,確定是否接收到應答信號,判斷自動重發次數是否達到最大值(10次)。如果在設定的應答時間內接收到應答信號,則認為數據成功發送到了接收端。如果在設定的時間範圍內沒有接收到應答信號,則重新發送數據,並且自動重發計數器自動加1。若自動重發次數達到最大值,則表明數據沒有發送成功,需要清除MAX_RT位讓數據繼續重發。發送程序流程圖如3所示。


發射程序中的主要函數如下:

void TX_Mode (void) //初始化nRF24L01+設備進入發送模式

void Send_Data(int a) //發射數據「a」

unsigned char SPI_Read_Buf(unsigned char reg,unsigned

char*pBuf,unsigned char bytes) //從寄存器「reg」讀無符號字符型變量

3.2 無線接收模式流程

設置nRF24L01+為接收模式,與發射端相同的CRC配置、地址寬度、頻道和傳輸速率,拉高CE啟動接收,通過讀取狀態寄存器的值判斷是否有數據接收,若有數據,接收端通過自身通道地址與接收到的數據包中的地址進行匹配,若相同就接收該數據,若不同就放棄該數據,繼續等待接收。接收程序流程圖如圖4所示。


接收程序中的主要函數如下:

void RX_Mode (void) //初始化nRF24L01+設備進入接收模式

void Recive Data() //接收數據

unsigned char SPI_Write_Buf(unsigned char reg,unsigned

char*pBuf,unsigned char bytes) //將nRF24L01+的內容寫入緩衝區「*PBUF」

4 實驗結果

按照本方案設計的超聲波測距系統(實物如圖5所示)經過建築物現地測試,測量最大寬度8 m,最大高度4 m,超聲波模塊工作穩定,無線傳輸模塊傳輸距離符合要求,完全可以達到實際應用的目的。由於該系統目前還是初具功能的試驗品,測距平臺上功能模塊不夠豐富,應搭配更多的傳感器模塊,提升系統功能。


5 結束語

本文著重介紹了基於nRF24L01+與Arduino的超聲波測距系統的設計,通過較低的成本實現了超聲波測距、數據無線傳輸、PC機實時接收顯示並繪製曲線等功能,可搭載不同的移動平臺,完成建築物測距任務,具有一定的實用價值。

相關焦點

  • 基於SOPC的高精度超聲波雷達測距系統設計
    編者按:本文基於NIOS II軟核處理器和卡爾曼濾波算法,利用FPGA平臺,超聲波傳感器和LCD液晶顯示系統,設計了一種高精度超聲波雷達測距系統。以這種方法設計的SOPC系統,克服了傳統超聲波雷達測距系統噪聲幹擾過大的問題,提高了測距系統的測量精度。
  • 超聲波測距系統設計理論分析及工作原理
    在雙探頭近距離的超聲波測距系統中,存在著測量精度不高的問題,並且距離越近誤差越大,在測量距離小於10cm時,由於探頭之間的相互影響,將導致無法測量該段距離。本系統根據超聲波傳播過程中的疊加原理,通過分析探頭之間幹擾波與從被測物反射的回波的相互疊加,從而消除在近距離測量時的測距盲區。
  • Arduino示例--超聲波測距
    超聲波測距的原理是利用超聲波發射器向某一方向發射超聲波,超聲波在空氣中傳播,遇到障礙物就立即被反射回來,接收器收到反射波後,根據發射和反射的時長t,就能計算出障礙物的距離,即:s=340× t / 2 。聲波在空氣中的傳播速度為340m/s,測距精度為釐米級,若要準確測量,還需要根據環境溫度進行修正。
  • 基於超聲波測距和PSD紅外測距的智能語音導盲器
    摘要:設計了一種以超聲波測距和PSD紅外測距為核心的智能語音導盲器。利用STC12C5A60S2單片機循環採樣,ISD1700語音晶片作語音提示,實現導盲提示的功能。
  • Arduino提高篇07—超聲波測距
    關注、星標公眾號,不錯過精彩內容超聲波測距
  • 超聲波傳感器測距方法詳解
    目前有兩種常用的超聲波測距方案。一種是基於單片機或者嵌入式設備的超聲波測距系統,一種是基於CPLD(Complex Programmable Logic Device)的超聲波測距系統。想要了解超聲波測距傳感器的相關應用設計首先我們必須了解超聲波傳感器測距的工作原理。
  • 基於超聲波傳感器的無接觸式空氣測距方法
    摘要:為了克服一些傳統距離測量方式在某些特殊場合無法測量的缺陷,設計以P89LPC932為核心,利用超聲波傳感器實現了無接觸式空氣測距的方法
  • 基於單片機帶溫度補償的超聲波測距儀設計
    本文引用地址:http://www.eepw.com.cn/article/201610/308694.htm本設計以脈衝回波法的超聲波測距原理為依據,AT89S52單片機作為控制核心,結合超聲波發送和接收模塊HY—SRF05,實時LCD顯示。系統採用DS18B20溫度傳感器,把溫度值的變化補償到超聲波的波速中,從而提高超聲波測距儀的精度,降低溫度對測距結果的影響。
  • 基於嵌入式Linux的語音識別系統硬軟體設計
    在嵌入式Linux作業系統下,運用多進程機制完成了對語音識別晶片、超聲波測距和雲臺的控制,並將語音識別技術應用於多角度超聲波測距系統中。通過測試,系統可以通過識別語音指令控制測量方向,無需手動幹預,最後將測量結果通過語音播放出來。
  • [新課推薦]人工智慧科普活動資源包配套課程Micro:bit+ Arduino...
    3黑夜報警利用主板、拓展板製作黑夜報警系統4 排雷報警利用主板、拓展板製作黑色排雷報警系統5電子蠟燭利用microbit擴展板(含聲音傳感器)、主板、製作一個電子蠟燭6測距顯示利用microbit擴展板、主板、超聲波傳感器製作一個測距系統7音樂播放利用microbit擴展板(含蜂鳴器)、主板、製作一個音樂播放系統8我愛交友
  • 雷射測距的原理及與超聲波測距的不同
    雷射測距的原理與無線電雷達相同,將雷射對準目標發射出去後,測量它的往返時間,再乘以光速即得到往返距離。由於雷射具有高方向性、高單色性和高功率等優點,這些對於測遠距離、判定目標方位、提高接收系統的信噪比、保證測量精度等都是很關鍵的,因此雷射測距儀日益受到重視。
  • 超聲波測距傳感器在礦用機車上的應用
    這樣一來,駕駛員容易出現疲勞駕駛和注意力不集中,從而帶來一系列安全隱患問題,因此設計出一套機車防撞報警系統,對於煤礦安全有著非常重要的意義。而這套系統的關鍵技術在於測距——測量前方障礙物到機車的距離,當今超聲波傳感器久經眾多工業任務的考驗,是距離測量和物體有無檢測的理想解決方案。超聲波測距作為一種典型的非接觸測量方法,在很多場合,諸如工業自動控制,建築工程測量和機器人視覺識別等方面得到廣泛的應用。
  • 汽車防撞紅外線測距系統設計方案
    解決這個問題的根本措施在於給行進中的汽車安裝能自動跟蹤測距,在危險距離內自動剎車的裝置。  由於電子技術的發展,先後出現了雷射測距、微波雷達測距、超聲波測距及紅外線測距。其中雷射測距是靠雷射束照射在前車上的反射鏡(汽車尾部)反射回來的雷射束探測兩車距離。
  • 基於AT89S52單片機的超聲波信號發射與接收電路設計
    打開APP 基於AT89S52單片機的超聲波信號發射與接收電路設計 發表於 2019-07-19 15:41:20 本設計的整體框圖如圖所示,主要由超聲波發射,超聲波接收與信號轉換,按鍵顯示電路與溫度傳感器電路組成。超聲波測距是通過不斷檢測超聲波發射後遇到障礙物所反射的回波,從而測出發射和接收回波的時間差T,然後求出距離S=CT/2,式中的C 為超聲波波速。在常溫下,空氣中的聲速約為340m/s。
  • 超聲波避障傳感器及超聲波測距傳感器在機器人中的應用
    目前由工釆網提供的超聲波避障傳感器MB1043是一款高解析度(1mm)、高精度低功耗的超聲波傳感器,它在設計上,不僅對幹擾噪音做了處理,具備抗噪音幹擾能力。而且對於大小不同的目標,和變化的供電電壓,做了靈敏度的補償。另外還具備標準的的內部溫度補償,使得測量出來的距離數據更加精準。應用於室內環境,它是一款很不錯的低成本解決方案。
  • 簡單的超聲波測距模塊製作_HC-SR04超聲波測距模塊及製作圖詳解
    _u=ukgdp5a7629&id=524088004171】由於超聲波指向性強,能量消耗緩慢,在介質中傳播的距離較遠,因而超聲波經常用於距離的測量,如測距儀和物位測量儀等都可以通過超聲波來實現。利用超聲波檢測往往比較迅速、方便、計算簡單、易於做到實時控制,並且在測量精度方面能達到工業實用的要求,因此在移動機器人研製上也得到了廣泛的應用。
  • Arduino教程:認識超聲波傳感器(簡明版)
    超聲波傳感器是一個輸入模塊,提供了非常好的非接觸範圍檢測,性能穩定,易於使用,盲區小,準確度高,測距距離從2釐米到400釐米不等,關鍵是還很便宜,在創客圈應用最為廣泛,包括:機器人測距避障,液位檢測等。
  • 紅外測距和超聲波測距對比有什麼優缺點
    打開APP 紅外測距和超聲波測距對比有什麼優缺點 發表於 2017-11-23 14:32:29   有源超聲波測距:         通過發射具有特徵頻率的超聲波對被攝目標的探測,通過發射出特徵頻率的超聲波和反射回接受到特徵頻率的超聲波所用的時間,換算出距離,如超聲波液位物位傳感器,超聲波探頭,適合需要非接觸測量場合,超聲波測厚,超聲波汽車測距告警裝置等。
  • 一款基於AT89C51的超聲波測速系統設計
    系統設計對超聲波的都卜勒頻移是利用對運動物體反射回來的回波信號周期進行計時,從而得出回波信號頻率。2 超聲波測速系統設計設計的超聲波測速系統如圖1,系統以單片機89C51為主控模塊,加上超聲波發射模塊、超聲波接收模塊以及顯示模塊這幾個模塊組成。
  • 技術實驗 | 用Arduino製作倒車雷達系統
    圖1  我們要探究的是製作倒車雷達系統,倒車雷達系統中最重要的一步就是測量車體與障礙物之間的安全距離範圍。如何測量障礙物的安全距離範圍?我們用Arduino來設計一個倒車雷達系統去測量它。  超聲波測距原理  超聲波傳感器能夠發射超聲波,超聲波是一種聲波,人耳是聽不見的。