この回路ではHC-SR04は5Vで動作し、それ以外は3.3Vで動作しています。HC-SR04の5Vレベル出力を3.3V動作のPicoで受けるために、抵抗による降圧を行っています。Trig入力は3.3VでHigh Level入力となっており、TTL的なシグナルマージンはかなり少ないですが、とりあえず動作しています。次の工作ではレベルシフターを利用する予定です。
Picoで実行したMicroPythonコードは以下になります。
import machine
import utime
trig = machine.Pin(7, machine.Pin.OUT)
echo = machine.Pin(6, machine.Pin.IN)
uart = machine.UART(1,115200)
for cnt in range(10000):
trig.value(1)
utime.sleep_us(50)
trig.value(0)
total_time = 0
while echo.value() == 0:
low_time = utime.ticks_us()
while echo.value() == 1:
high_time = utime.ticks_us()
time_echo = high_time - low_time
uart.write("echo={} dist={}".format(time_echo, int((time_echo/58))))
utime.sleep(1)
Echoパルスの立下りからUART TXにデータが現れるまでの時間が1ms程度あります。これが設計意図通りなのか、追って確認をしたいと思っています。
この工作時点ではPico、TWELITE、HC-SR40ともにUSBからの給電で動作しています。次にこれら全体を乾電池で動作させるよう電源周りの工作を行う予定です。
コメント