智能小車已實現多種遙控方式,但要邁向真正的「智能」,必須具備環境感知能力。超聲波測距模組是邁出的第一步,後續將擴展循跡、視覺等感測器,構建完整感知系統。
市面超聲波模組主流兩種介面:
本文專注於 GPIO 觸發模式,掌握核心時序控制。
測距公式:
距離 (cm) = (高電位時間 (µs) × 聲速 340 m/s) / 2
= 高電位時間 × 0.017
關鍵在於精確量測高電位脈寬。實測精度可達 3mm 等級。
| 序號 | 超聲波模組腳位 | .NET MF 開發板腳位 |
|---|---|---|
| 1 | Echo | PA0 |
| 2 | Trig | PC4 |
| 3 | GND | GND |
| 4 | VCC | 3.3V |
高精度脈寬量測需硬體計時器支援,C# 托管代碼無法直接實現。採用分層架構:
using System;
namespace YFSoft.Hardware
{
public sealed class Ultrasonic
{
// timer: 使用的硬體計時器編號
// pin: Echo 腳位對應的 GPIO 編號
public Ultrasonic(byte timer, int pin);
// 回傳距離,單位:毫米
public uint GetValue();
}
}
public static void Main()
{
// 使用 Timer 2,Echo 接 PA0 (對應 GPIO 編號視開發板定義)
Ultrasonic sonar = new Ultrasonic(2, 0);
while (true)
{
uint distanceMm = sonar.GetValue();
Debug.Print("Distance: " + distanceMm + " mm");
Thread.Sleep(200); // 適當延遲避免觸發過快
}
}
透過硬體計時器捕獲 Echo 脈寬,封裝為簡潔的托管類別,即可在 .NET MF 平台輕鬆實現高精度超聲波測距。此架構分離了即時性關鍵路徑與應用邏輯,既保證精度又維持開發效率,是嵌入式感測器開發的典型範式。