樹莓派-感測器篇

Groot發表於2020-05-12

前言

在之前的【樹莓派-進階篇】中已經講解了最簡單的紅外避障感測器的使用。主線任務還在更新,感測器篇準備講解下樹莓派的常用感測器,例項程式碼將放在 github 上供大家交流。

超聲波測距模組

HC-SR04超聲波測距模組

工作原理

 1. 採用IO口TRIG觸發測距,給至少10us的高電平訊號

  1. 模組自動傳送8個40khz的方波,自動檢測是否有訊號返回
  2. 有訊號返回,透過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2
  3. 本模組使用方法簡單,一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開時計時,當此口變為低電平時記錄結束時間的值,此時就為此次測距的時間即可算出距離。如此不斷的週期測,即可以達到你移動測量的值

接線方式

將GND連線電池的負極,VCC連線電池正極,TRIG連線樹莓派物理引腳31,ECHO連線樹莓派物理引腳33,配合以下程式碼即可完成測距。

示例程式碼

import RPi.GPIO as GPIO
import time
# 設定引腳編碼方式
GPIO.setmode(GPIO.BOARD)
# 設定31引腳為輸出
GPIO.setup(31, GPIO.OUT)
# 設定31引腳為輸入
GPIO.setup(33, GPIO.IN)
# 輸出10us的高電平訊號
GPIO.output(31, True)
time.sleep(0.00001)  # 10us
GPIO.output(31, False)
# 監聽ECHO口輸出資訊,如果是低電平則忽略,反之記錄高電平開始的時間
while GPIO.input(33) == 0:
    pass
start = time.time()
# 如果是高電平則忽略,反之記錄高電平結束的時間
while GPIO.input(33) == 1:
    pass
end = time.time()
# 計算距離  
distance = round((end - start) * 343 / 2 * 100)
print(distance)

433MHZ/355MHZ 射頻資料傳輸

未完,容我續一杯咖啡~

本作品採用《CC 協議》,轉載必須註明作者和本文連結
死磕,不要放棄,終將會有所收穫。

相關文章