秋月から超音波センサーが届いたので、下記の記事を参考に作成してみた。
ブレッドボードより基板使った方がかっこいいかなと思い、久ぶりに電子工作工作してみた。
完成したのがこちら。半田に手こずったし、機材そろえるのに少しお金かかったけど、手を動かすと楽しい。。
#回路図
HC-SR04のECHOから出力は、5Vが出てくる。ラズパイのGPIOは、3.3Vまでしか許容しないため、抵抗を使って3.3Vにしている。
#code
TRIG,ECHOの指定ができれば、DistanceSensorを使えばm単位で結果を出力される。
##1.1 pigpio
Raspberry PiのGPIOを制御するため、再起動して有効になるようにsystemctlのenableをonにした。
$ sudo service pigpiod start
$ sudo systemctl enable pigpiod.service
##1.2 python
測定誤差が生じるため、10回測定しそのmedian値を結果に出力するようにした。
単位は、cmにしている。
hc_cr04.py
from gpiozero import DistanceSensor
from gpiozero.pins.pigpio import PiGPIOFactory
import statistics
import math
import time
PIN_TRIG = 22
PIN_ECHO = 27
point = 10
tmp = [num for num in range(point)]
factory = PiGPIOFactory()
sensor = DistanceSensor(PIN_ECHO, PIN_TRIG, pin_factory=factory)
for i in range(point):
print('Distance to nearest object is', sensor.distance, 'm')
tmp[i] = sensor.distance * 100
time.sleep(0.5)
median = statistics.median(tmp)
print('Distance to nearest object is', '{:.2f}'.format(median), 'cm(median', point ,'point)')
#感想
ひとまず超音波センサーを使って距離を測定することができるようになった。電子工作をしてみて手を動かすのは、難しいけど、信号が出なかったときにどこが原因か考えて答えを見つける楽しさがある。テスターとオシロスコープ使うような複雑なことやれると、もう少し面白くなりそう。