M5Stack × 超音波センサ(HC-SR04)で距離を測る

せっかくM5Stack使えるようにしたので、手元にあった超音波センサを動かしてみるてすと。

環境

Windows10
M5Cloud

使ったもの

M5Stack
超音波センサ(HC-SR04)

超音波センサの使い方

データシートはどこから入手するのが公式なんでしょうね?
僕は買った時についてきたの見ました。

ピンアサインは下記
Vcc:5V power supply
Trig:Trigger Input pin
Echo:Receiver Output pin
GND : Power ground

M5Stackとは下記の様に接続
Vccに5V
GNDにGnd
TrigにGPIO5
EchoにGPIO2

Trigに10u[sec]以上Highを与えると40k[Hz]のパルスが8発出る。
Echoはパルスを発射してから、壁とかに反射して戻ってきたパルスが観測されるまでHighが出る。

空気中の音速はおおよそ340[m/sec]なので、EchoPinがHighの時間を測定し、音速から距離に換算できる。
距離 = echoのパルスの長さ(反射して戻ってくる時間)/2[sec] × 340[m/sec]

コード

手抜きして貼り付け
下記を参考にさせて頂きました。
GitHub micropython-hcsr04

MicroPythonに関しては下記が公式かな?
Docs Micropython

from m5stack import lcd
from m5stack import *
import utime, time
import machine #hard制御用API

#GPIO pin設定
#GPIO5をTrigにしてLowにセット
trigger = machine.Pin(5,machine.Pin.OUT)
trigger.value(0)
#GPIO2をEchoにセット
echo = machine.Pin(2,machine.Pin.IN)

#最初のコード
lcd.clear()
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
lcd.print("Hello world! \n")

while True:

#ボタンAで画面のリフレッシュ
if buttonA.wasPressed():
lcd.clear()
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
lcd.print('A was Pressd : DispRefresh \n')

#ボタンBでスピーカーから1k[Hz]を鳴らす 
if buttonB.wasPressed():
speaker.volume(0.1)
speaker.tone(freq = 1000)
lcd.print('B was Pressd : play tone 1k[Hz] \n')

#ボタンCで距離を測定
if buttonC.wasPressed():

#10musecHighで40k[Hz]のパルス×8
trigger.value(1)
time.sleep_us(10)
#Lowに戻す
trigger.value(0)

#echopinのHighになっている時間を計測。
#距離センサの限界距離からタイムアウト時間設定。
#片道1mで3000usec位nなので、片道5[m]分(往復10m[m])で設定
pulse_time = machine.time_pulse_us(echo,1,30000)

#パルスの長さをcm換算する 0.034[cm/usec]
cm = (pulse_time/2)*0.034
lcd.print('C was Pressd : Distance:{:f} cm\n'.format(cm))

utime.sleep(0.1)

Aボタン押すと画面のリフレッシュ
Bボタン押すとスピーカーから1k[Hz]再生
Cボタン押すと距離センサで距離を測定して表示

結果

実際にはかってみる。

良さそうですね。

次は何作ろうかな~
せっかくWi-FiとBT使えるのでその辺使いたいですね。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です