超聲波測距儀是電子愛好者入門和教學(xué)演示中的經(jīng)典項(xiàng)目。借助TpyBoard開發(fā)板和Micropython編程語言,我們可以快速實(shí)現(xiàn)一個功能完整、易于理解的測距裝置。本教程將詳細(xì)介紹其工作原理、硬件連接和代碼實(shí)現(xiàn),非常適合在“電子產(chǎn)品世界”等論壇分享或作為教學(xué)演示用品。
一、 項(xiàng)目簡介與原理
本項(xiàng)目使用HC-SR04超聲波傳感器和TpyBoard(一款兼容Micropython的開發(fā)板)來測量前方障礙物的距離。HC-SR04模塊通過發(fā)射超聲波并接收回波,根據(jù)時間差計(jì)算距離。其公式為:距離 = (聲速 × 時間差) / 2。聲速在常溫下約為340米/秒。
二、 所需材料清單
- TpyBoard開發(fā)板 x1(或其他支持Micropython的ESP32/ESP8266開發(fā)板)
- HC-SR04超聲波傳感器模塊 x1
- 面包板 x1
- 杜邦線 若干
- 可選:OLED顯示屏(用于直接顯示距離數(shù)值)
三、 硬件連接
將HC-SR04模塊與TpyBoard按以下方式連接(以TpyBoard的GPIO引腳為例,請根據(jù)具體板型調(diào)整):
- VCC -> 開發(fā)板 5V 或 3.3V(根據(jù)模塊規(guī)格)
- GND -> 開發(fā)板 GND
- Trig(觸發(fā))-> 開發(fā)板 GPIO15(或其他任意數(shù)字輸出引腳)
- Echo(回波)-> 開發(fā)板 GPIO2(或其他任意數(shù)字輸入引腳)
注意:部分HC-SR04模塊工作電壓為5V,若TpyBoard的IO口為3.3V電平,可能需要電平轉(zhuǎn)換電路或使用電阻分壓,以避免損壞開發(fā)板。
四、 Micropython代碼實(shí)現(xiàn)
在TpyBoard上運(yùn)行以下代碼。確保開發(fā)板已刷入Micropython固件,并能通過串口工具(如PuTTY、Thonny)連接。
`python
from machine import Pin, Timer
import time
初始化引腳
trig = Pin(15, Pin.OUT) # 觸發(fā)引腳,輸出
echo = Pin(2, Pin.IN) # 回波引腳,輸入
定義測量函數(shù)
def measure_distance():
# 確保觸發(fā)信號為低電平起始
trig.low()
time.sleep_us(2)
# 發(fā)送一個10微秒的高脈沖作為觸發(fā)信號
trig.high()
time.sleep_us(10)
trig.low()
# 等待回波引腳變?yōu)楦唠娖剑ㄩ_始接收回波)
while echo.value() == 0:
pass
pulsestart = time.ticksus() # 記錄回波開始時間
# 等待回波引腳變?yōu)榈碗娖剑ɑ夭ńY(jié)束)
while echo.value() == 1:
pass
pulseend = time.ticksus() # 記錄回波結(jié)束時間
# 計(jì)算時間差(微秒)
pulseduration = time.ticksdiff(pulseend, pulsestart)
# 計(jì)算距離:時間差 * 聲速(340 m/s) / 2,轉(zhuǎn)換為厘米
聲速 340 m/s = 0.034 cm/微秒。公式為:距離 = (脈沖時間 * 0.034) / 2
distancecm = (pulseduration * 0.034) / 2
return distance_cm
主循環(huán),持續(xù)測量并打印距離
while True:
dist = measure_distance()
# 通常有效測距范圍為2cm-400cm,可做簡單過濾
if dist > 2 and dist < 400:
print("距離: {:.2f} cm".format(dist))
else:
print("測量值超出有效范圍或無效")
time.sleep(1) # 每秒測量一次`
五、 功能擴(kuò)展與教學(xué)演示建議
- 增加顯示:連接一個I2C接口的OLED屏幕,將距離數(shù)值實(shí)時顯示出來,視覺效果更直觀。
- 增加報警:當(dāng)距離小于設(shè)定閾值(如20厘米)時,讓板載LED閃爍或蜂鳴器鳴響,實(shí)現(xiàn)簡易防撞報警。
- 數(shù)據(jù)上報:利用TpyBoard的Wi-Fi功能,將距離數(shù)據(jù)上傳到物聯(lián)網(wǎng)平臺,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
- 教學(xué)重點(diǎn):在演示時,可以重點(diǎn)講解超聲波測距的物理原理、時間差測量方法、Micropython的GPIO控制以及簡單的數(shù)據(jù)處理(如單位換算、范圍過濾)。通過改變障礙物的位置,讓學(xué)生直觀理解傳感器的工作原理和程序運(yùn)行邏輯。
六、 常見問題排查
- 無輸出或輸出恒定:檢查接線是否正確、牢固;確保傳感器供電電壓合適。
- 測量值不穩(wěn)定:避免傳感器正對著柔軟或吸音材料測量;檢查環(huán)境中是否有強(qiáng)烈的聲波干擾。
- 程序報錯:確認(rèn)引腳編號與物理連接一致;檢查Micropython固件版本。
通過這個項(xiàng)目,學(xué)習(xí)者不僅可以掌握Micropython的基本編程和硬件控制,還能深入理解超聲波傳感器的應(yīng)用,為后續(xù)更復(fù)雜的物聯(lián)網(wǎng)或智能硬件項(xiàng)目打下堅(jiān)實(shí)基礎(chǔ)。此裝置成本低廉、效果直觀,非常適合作為電子實(shí)訓(xùn)課程或興趣小組的演示與DIY項(xiàng)目。