micro:bit 超音波距離センサ用の拡張機能

2021.8.24 Coskx Lab  

1 はじめに

Groveの超音波距離センサ拡張機能の使用をやめ,超音波距離センサ用の拡張機能を作り直しました。
特徴
(1)1本の信号線で動作するセンサにも2本の信号線で動作するセンサにも対応します。
(2)micro:bit v1でもmicro:bit v2でも正しい測距値が得られます。

背景
micro:bitに超音波距離センサ(Grove Ultrasonic Ranger)を接続してGrove拡張機能を使って周囲の対象物までの距離を測定していたところ, micro:bit v1のパルス幅測定機能に不具合があったことが判明しました。(MakeCodeのライブラリの問題です。)
Grove拡張機能では,v1用とv2用の2つの測定ブロックを用意してあって,プログラム作成者がプログラム作成時に選択するようにしていました。
もっとも,v1とv2を混在させて使用することはほとんどないと思うので,2種類用意するという対処で,問題ないように思います。

しかし,プログラムを作り変えずに,1つのプログラムでv1,v2とも正しく動作するようにしたいと思いました。
プログラムが動作しているmicro:bitのバージョンを知ることができれば,拡張機能内でバージョンを知る作業は吸収できます。
幸い,v1では動作クロックが16MHz,v2では64MHzなので,プログラムで何らかのループ作業を行い,その経過時間を見れば2つが区別できます。
この考え方で,拡張機能を作成してみました。
同時に,Groveセンサのように1本の信号線のみで動作できるセンサと,HC-SR04系の3V駆動製品 US-015 US-100 RCWL-1601 などの2本の信号線で動作するセンサの両方に対応できるようにしました。


2 使用方法

MakeCode画面で「拡張機能」を開き, 拡張機能の一覧の見えているところの検索ボックスで, 「https://github.com/healthywalk/nifty-ultrasonic-ranger-microbit」のURLで検索すると「nifty-ultrasonic-ranger-microbit」が見つかるので,これを取り込ます。



拡張機能「nifty-ultrasonic-ranger-microbit」が取得出来たら,あとは,組み立てるだけです。

(1) 超音波距離センサ(Grove Ultrasonic Ranger)を使用する時
P1を使うこと前提に,プログラムにおいても,「P1」を指定します。
取得できた距離をコンソールに表示します。

  Grove Ultrasonic Rangerの動作テスト用プログラム



コピペする場合は,拡張機能「nifty-ultrasonic-ranger-microbit」を取り込んでから,次のソースコードをPythonソースとして貼り付ければ完了です。

NiftyUltrasonicRanger.initialize_single_pin_ultrasonic_ranger(DigitalPin.P1)

def on_forever():
    serial.write_line(convert_to_text(NiftyUltrasonicRanger.measureincm()))
basic.forever(on_forever)


(2) 超音波距離センサ(HC-SR04系の3V駆動製品 US-015 US-100 RCWL-1601など)を使用する時
トリガ信号用とエコー信号用の2つの端子を使います。
そこでトリガ信号はmicro:bit端子P1を,エコー信号はP2を使うことを前提に,プログラムにおいても,「P1」「P2」を指定します。
取得できた距離をコンソールに表示します。

  HC-SR04系の3V駆動製品 US-015 US-100 RCWL-1601などの動作テスト用プログラム



コピペする場合は,拡張機能「nifty-ultrasonic-ranger-microbit」を取り込んでから,次のソースコードをPythonソースとして貼り付ければ完了です。

NiftyUltrasonicRanger.initializeUltrasonicRanger(DigitalPin.P1, DigitalPin.P2)

def on_forever():
    serial.write_line(convert_to_text(NiftyUltrasonicRanger.measureincm()))
basic.forever(on_forever)

3 まとめ

1信号線超音波距離センサ(Grove Ultrasonic Ranger),2信号線超音波距離センサ(HC-SR04系の3V駆動製品 US-015 US-100 RCWL-1601など)の両方に対応する拡張機能を作成しました。
micro:bitのバージョンを自動判定し,micro:bit v1,v2ともに正しく動作します。(ver1の不具合を補正しています)
正しく距離を測定できることを確認しました。


7 サーボモータの応用

サーボモータに超音波距離センサを載せて周囲をスキャンして物体認識