0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

第15章-超聲波避障功能 HC-SR04超聲波測(cè)距模塊詳解STM32超聲波測(cè)距

dfhjgfg ? 來(lái)源:dfhjgfg ? 作者:dfhjgfg ? 2024-08-21 15:41 ? 次閱讀

功能介紹放開頭, 使用便捷無(wú)需愁

這是全網(wǎng)最詳細(xì)、性價(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開發(fā)。

**V3.3.0-STM32智能小車 **

**視頻: **[https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click]

V3:HAL庫(kù)開發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制、電磁循跡、RTOS等功能。

15.1-超聲波測(cè)距

完成超聲波測(cè)距功能、測(cè)量數(shù)據(jù)顯示在OLED屏幕上

硬件介紹

**使用:HC-SR04 超聲波測(cè)距模塊 **

注意: 繪制PCB注意四個(gè)引腳順序 Vcc Trig Echo Gnd

** 供電3.3V-5V(最好5V)**
在這里插入圖片描述

測(cè)距原理
在這里插入圖片描述
不同模式
在這里插入圖片描述
GPIO模式
在這里插入圖片描述
查看原理圖

通過(guò)超聲波的硬件介紹我們知道

** MCU給Trig腳一個(gè)大于10us的高電平脈沖;然后讀取Echo腳的高電平信號(hào)時(shí)間,通過(guò)公式:距離 = T* 聲速/2 就可以算出來(lái)距離。**

Trig(PB5)我們配置為GPIO輸出

Echo(PA6)我們配置GPIO輸入功能

注:這里大家可能會(huì)問(wèn),為什么不使用定時(shí)器捕獲功能?

原因:

  1. 留一個(gè)定時(shí)器 方便以后擴(kuò)展FreeRTOS使用
  2. 或者擴(kuò)展其他舵機(jī)、電機(jī)

在這里插入圖片描述
在這里插入圖片描述
軟件初始化

設(shè)置PB5輸出模式然后起別名
在這里插入圖片描述
設(shè)置PA6輸入模式、
在這里插入圖片描述
然后生成代碼

自己新建HC_SR04.c和HC_SR04.h 然后加入工程,指定路徑

防止溢出 把之前使用的數(shù)組調(diào)整大一些

在這里插入圖片描述
因?yàn)槲覀儾贿m用定時(shí)器所以我們需要自己寫一個(gè)us級(jí)延時(shí)函數(shù)
在這里插入圖片描述

/*******************
*  @brief  us級(jí)延時(shí)
*  @param  usdelay:要延時(shí)的us時(shí)間
*  @return  
*
*******************/
void HC_SR04_Delayus(uint32_t usdelay)
{
  __IO uint32_t Delay = usdelay * (SystemCoreClock / 8U / 1000U/1000);//SystemCoreClock:系統(tǒng)頻率
  do
  {
    __NOP();
  }
  while (Delay --);
}

在這里插入圖片描述

/*******************
*  @brief  HC_SR04讀取超聲波距離
*  @param  無(wú)
*  @return 障礙物距離單位:cm (靜止表面平整精度更高) 
*注意:兩個(gè)HC_SR04_Read()函數(shù)調(diào)用的時(shí)間間隔要2ms及以上,測(cè)量范圍更大 精度更高 
*******************/
float HC_SR04_Read(void)
{
uint32_t i = 0;
float Distance;
HAL_GPIO_WritePin(HC_SR04_Trig_GPIO_Port,HC_SR04_Trig_Pin,GPIO_PIN_SET);//輸出15us高電平
HC_SR04_Delayus(15);
HAL_GPIO_WritePin(HC_SR04_Trig_GPIO_Port,HC_SR04_Trig_Pin,GPIO_PIN_RESET);//高電平輸出結(jié)束,設(shè)置為低電平

while(HAL_GPIO_ReadPin(HC_SR04_Echo_GPIO_Port,HC_SR04_Echo_Pin) == GPIO_PIN_RESET)//等待回響高電平
{
i++;
HC_SR04_Delayus(1);
if(i >100000) return -1;//超時(shí)退出循環(huán)、防止程序卡死這里
}
i = 0;
while(HAL_GPIO_ReadPin(HC_SR04_Echo_GPIO_Port,HC_SR04_Echo_Pin) == GPIO_PIN_SET)//下面的循環(huán)是2us
{
i = i+1;
HC_SR04_Delayus(1);//1us 延時(shí),但是整個(gè)循環(huán)大概2us左右
if(i >100000) return -2;//超時(shí)退出循環(huán)
}
Distance = i*2*0.033/2;//這里乘2的原因是上面是2微妙
return Distance;
}

然后就可以讀距離了、連上藍(lán)牙可以顯示數(shù)據(jù)

注意:兩個(gè)HC_SR04_Read()函數(shù)調(diào)用的時(shí)間間隔要2ms及以上,測(cè)量范圍更大 精度更高
在這里插入圖片描述

sprintf((char *)Usart3String,"HC_SR04:%.2fcmrn",HC_SR04_Read());//顯示超聲波數(shù)據(jù)
HAL_UART_Transmit(&huart3,( uint8_t *)Usart3String,strlen(( const  char  *)Usart3String),0xFFFF);//通過(guò)串口三輸出字符 strlen:計(jì)算字符串大小
?

然后把我們的手機(jī)藍(lán)牙和小車藍(lán)牙連接

手機(jī)顯示
在這里插入圖片描述

15.2-避障邏輯編寫

在這里插入圖片描述
然后我們編寫循跡邏輯,我們的邏輯時(shí)
在這里插入圖片描述

//**************避障功能********************//
//避障邏輯
if(HC_SR04_Read() > 25)//前方無(wú)障礙物
{
motorPidSetSpeed(1,1);//前運(yùn)動(dòng)
HAL_Delay(100);
}
else{//前方有障礙物
motorPidSetSpeed(-1,1);//右邊運(yùn)動(dòng) 原地
HAL_Delay(500);
if(HC_SR04_Read() > 25)//右邊無(wú)障礙物
{
motorPidSetSpeed(1,1);//前運(yùn)動(dòng)
HAL_Delay(100);
}
else{//右邊有障礙物
motorPidSetSpeed(1,-1);//左邊運(yùn)動(dòng) 原地
HAL_Delay(1000);
if(HC_SR04_Read() >25)//左邊無(wú)障礙物
{
 motorPidSetSpeed(1,1);//前運(yùn)動(dòng)
HAL_Delay(100);
}
else{
motorPidSetSpeed(-1,-1);//后運(yùn)動(dòng)
HAL_Delay(1000);
motorPidSetSpeed(-1,1);//右邊運(yùn)動(dòng)
HAL_Delay(50);
}
}
}

這樣我們就可以使用超聲波讀取距離值了。
下篇16章我們i講解如何利用超聲波做跟隨,我們后面會(huì)定距離跟隨的功能。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10906

    瀏覽量

    356518
  • 超聲波測(cè)距
    +關(guān)注

    關(guān)注

    5

    文章

    246

    瀏覽量

    37944
  • 超聲波避障
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    2900
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    超聲波測(cè)距原理

    到達(dá)障礙物后被反射回來(lái),傳感器接收到反射脈沖后立即停止計(jì)時(shí),然后根據(jù)超聲波的傳播速度和計(jì)時(shí)時(shí)間就能計(jì)算出兩端的距離。2.超聲波模塊此次采用的是市面上常用的超聲波模塊HC-SR04;
    發(fā)表于 07-21 07:01

    關(guān)于HC-SR04超聲波測(cè)距模塊

    參考:某寶HC-SR04 超聲波測(cè)距模塊商品詳情頁(yè)1.關(guān)于HC-SR04 超聲波
    發(fā)表于 08-10 06:24

    如何利用HC-SR04超聲波測(cè)距模塊去實(shí)現(xiàn)精確的直線測(cè)距

    超聲波測(cè)距原理是什么?利用STM32驅(qū)動(dòng)HC-SR04需要做好哪幾個(gè)關(guān)鍵點(diǎn)?如何利用HC-SR04超聲
    發(fā)表于 10-20 07:28

    HC-SR04超聲波測(cè)距模塊的相關(guān)資料分享

    51單片機(jī)學(xué)習(xí)路之HC-SR04超聲波模塊前言 本人是一個(gè)小白,第一次寫博客,基礎(chǔ)欠佳,有待夯實(shí),能力不足,需要進(jìn)步。大概會(huì)在此博客中漏洞百出,望君在閱讀后可以進(jìn)行批評(píng)指正,不勝感
    發(fā)表于 11-23 07:47

    基于stm32HC-SR04超聲波測(cè)距模塊怎么使用?

    基于stm32HC-SR04超聲波測(cè)距模塊怎么使用?
    發(fā)表于 11-25 09:15

    如何利用現(xiàn)成的SysTick去實(shí)現(xiàn)HC-sr04超聲波測(cè)距

    什么是HC-sr04超聲波測(cè)距模塊呢?HC-sr04超聲波測(cè)
    發(fā)表于 12-02 08:10

    HC-SR04超聲波測(cè)距模塊原理

    HC-SR04超聲波測(cè)距模塊原理1.模塊簡(jiǎn)介HC-SR04
    發(fā)表于 12-06 07:14

    如何通過(guò)HC-SR04超聲波模塊去實(shí)現(xiàn)測(cè)距功能

    HC-SR04超聲波模塊是什么?如何通過(guò)HC-SR04超聲波模塊去實(shí)現(xiàn)測(cè)距功能呢?
    發(fā)表于 12-13 06:00

    HC-SR04超聲波測(cè)距模塊簡(jiǎn)介

    1 簡(jiǎn)介HC-SR04超聲波測(cè)距模塊可提供 2cm-400cm的非接觸式距離感測(cè)功能,測(cè) 距精度可達(dá)高到 3mm ;
    發(fā)表于 01-06 06:05

    HC-SR04超聲波測(cè)距模塊及程序

    HC-SR04超聲波測(cè)距模塊及程序HC-SR04超聲波測(cè)距
    發(fā)表于 12-08 16:50 ?83次下載

    超聲波測(cè)距模塊HC-SR04)用戶手冊(cè)

    超聲波資料,超聲波測(cè)距模塊HC-SR04)用戶手冊(cè)。
    發(fā)表于 12-19 14:01 ?87次下載

    簡(jiǎn)單的超聲波測(cè)距模塊制作_HC-SR04超聲波測(cè)距模塊及制作圖詳解

    本文主要介紹的是HC-SR04超聲波測(cè)距模塊及制作圖詳解,首先介紹了超聲波
    發(fā)表于 05-18 09:40 ?5.4w次閱讀
    簡(jiǎn)單的<b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b><b class='flag-5'>模塊</b>制作_<b class='flag-5'>HC-SR04</b><b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b><b class='flag-5'>模塊</b>及制作圖<b class='flag-5'>詳解</b>

    使用單片機(jī)和HC-SR04設(shè)計(jì)超聲波測(cè)距系統(tǒng)的設(shè)計(jì)資料合集

    HC-SR04超聲波測(cè)距模塊配套資料合集免費(fèi)下載包括了:STC89C52RC系列手冊(cè),PCB截圖,基于單片機(jī)的超聲波
    發(fā)表于 11-06 08:00 ?136次下載
    使用單片機(jī)和<b class='flag-5'>HC-SR04</b>設(shè)計(jì)<b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b>系統(tǒng)的設(shè)計(jì)資料合集

    HC-SR04超聲波測(cè)距塊講解(附32單片機(jī)源碼)

    、HC-SR04超聲波測(cè)距模塊原理1.模塊簡(jiǎn)介HC-SR04
    發(fā)表于 11-23 18:21 ?133次下載
    <b class='flag-5'>HC-SR04</b><b class='flag-5'>超聲波</b><b class='flag-5'>測(cè)距</b>塊講解(附32單片機(jī)源碼)

    超聲波測(cè)距資料(HC-SR04)_TB

    超聲波測(cè)距資料(HC-SR04)_TB 超聲波PIC單片機(jī)C程序超聲波測(cè)距51C程序
    發(fā)表于 03-14 15:13 ?195次下載