DEV Community

張旭豐
張旭豐

Posted on

HC-SR04 超聲波感測器完整教學:從接線到程式

HC-SR04 超聲波感測器:原理與接線圖


倒車雷達場景

圖1:倒車雷達是超聲波感測器最為人熟知的應用場景


🚗 場景

倒車雷達「嗶嗶嗶」響起時,你知道車子離牆面還有多近嗎?

答案就藏在今天的主角裡——HC-SR04 超聲波感測器


🎯 需求

這篇要解決一個問題:

HC-SR04 是什麼?它怎麼測量距離? Arduino 又怎麼接線與讀取數據?

不管你是 Maker 新手還是想搞懂原理的玩家,看完這篇就能動手做距離感測專案囉!


👀 感知

HC-SR04 使用的感知方式是超聲波測距

就像蝙蝠在黑暗中飛行,靠的不是眼睛,而是發射超聲波 + 接收回聲來判斷障礙物的位置。

人類耳朵能聽到的聲音頻率約 20Hz~20kHz,而 HC-SR04 發射的超聲波頻率是 40kHz——超出人類聽覺範圍,所以我們完全聽不到。


HC-SR04 超聲波感測器模組

圖2:HC-SR04 超聲波感測器模組,發射器(T)與接收器(R)分列兩端(Source: SparkFun, via Wikimedia Commons)


⚙️ 原理

🔊 怎麼測距離?

原理很簡單,分成三步:

  1. 發射:控制板發送一個 10μs 的觸發脈衝給感測器
  2. 飛行:感測器的超聲波發射器(Trig)發出超聲波,聲波向前跑,遇到障礙物反彈回來
  3. 接收:感測器的超聲波接收器(Echo)收到反射回來的超聲波

關鍵來了——聲波來回花了多少時間,我們是知道的!只要知道時間,就能算出距離。

簡單比喻:就像你在山谷裡喊「喂~」,2 秒後聽到回音,聲音來回花了 2 秒,聲速約 340m/s,所以山谷深度就是 340 × 2 / 2 = 340 公尺

公式如下:

距離(cm)= (飛行時間 μs ÷ 2) × 0.0343
Enter fullscreen mode Exit fullscreen mode

為什麼要除以 2?因為時間是來回的距離,我們只需要單程


超聲波感測器全家福

圖3:各式超聲波感測器,HC-SR04 是其中最常見的型號之一(Source: Wikimedia Commons)


🛠️ 實作

接線圖

HC-SR04 共有 4 支針腳,與 Arduino 的連接非常直覺:

HC-SR04 針腳 Arduino 接腳 說明
VCC 5V 電源正極
GND GND 接地
Trig Pin 9 觸發訊號(發射控制)
Echo Pin 10 回聲訊號(接收讀取)

程式碼

// HC-SR04 超聲波測距範例
// VCC → 5V, GND → GND, Trig → Pin 9, Echo → Pin 10

const int trigPin = 9;   // 發射超聲波的針腳
const int echoPin = 10;  // 接收回聲的針腳

float duration;  // 飛行時間(微秒)
float distance;  // 距離(公分)

void setup() {
  Serial.begin(9600);           // 啟動序列埠,速率 9600
  pinMode(trigPin, OUTPUT);    // 設定 Trig 為輸出模式
  pinMode(echoPin, INPUT);     // 設定 Echo 為輸入模式
}

void loop() {
  // Step 1:發射超聲波
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);        // 發送 10μs 的觸發脈衝
  digitalWrite(trigPin, LOW);

  // Step 2:讀取回聲時間
  duration = pulseIn(echoPin, HIGH);

  // Step 3:計算距離
  distance = (duration * 0.0343) / 2;

  // Step 4:輸出到序列埠
  Serial.print("距離:");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);  // 每 0.5 秒測量一次
}
Enter fullscreen mode Exit fullscreen mode

上傳燒錄程式碼後,打開 工具 → 序列埠監控視窗,就能看到距離數值持續更新。


Arduino 超聲波電路示意

圖4:Arduino 電路接線示意圖(Source: Wikimedia Commons)


⚖️ 比較

HC-SR04 vs 紅外線感測器(IR)

維度 HC-SR04 超聲波 紅外線 IR
測量距離 2cm~400cm 通常 < 80cm
精準度 ±3cm 易受顏色/光線影響
測量介質 不受顏色影響 深色表面表現差
成本 便宜(≈ $1-2) 也便宜
適用場景 戶外、液位、robot 室內,近距離

結論:測距範圍大、精度高,而且不受障礙物顏色影響——這就是 HC-SR04 能廣泛用於倒車雷達、液位檢測、機器人避障的原因。


✅ 結尾

HC-SR04 是 CP 值最高的測距感測器之一,理解原理後你就能用它做出倒車雷達、液位計,甚至避障小車

下一步,建議你試試看結合 Servo 馬達做一個超聲波雷達掃描器,用 Processing 畫出即時地形圖——保證驚豔!


停車場感測器應用

圖5:停車場的車位感測器,就是超聲波測距技術的實際應用(Source: Wikimedia Commons)


🛒 所需零件

如果你還沒準備零件,以下是這篇教學需要的清單:

零件 用途
HC-SR04 超聲波感測器 本文主角
Arduino Uno R3 控制板
母對母杜邦線 接線必備
迷你麵包板 方便接線

閱讀時間約 4 分鐘|字數:約 1,100 字

標籤:#HC-SR04 #超聲波感測器 #Arduino #測距 #倒車雷達 #Maker

Top comments (0)