マイクロビット(Micro:bit)で障害物を避けるロボットカーを作るには、超音波距離センサーで障害物までの距離を測る必要があります。ロボットカーを作る準備として、今回はMicro:bitと距離センサーの接続の仕方を紹介します。
HC-SR04とは
仕様
1.外形
左側の丸い所から超音波を送信して右側で受信します。送信した超音波を受信するまでの時間から、プログラムで距離に換算します。
2.仕様
・2cmから400cmまで、分解能3mmで計測
・センサー基板正面を中心とした15度の範囲で計測可能
・DC5Vで稼働
3.計測の仕組み
1.トリガー信号として、10μSのパルスをTrigピンに出力
2.超音波40Khz x 8パルス送信
3.Echoピン入力がHigh
4.反射波受信
5.Echoピン入力がLow
6.3から5の時間から距離計算
図に示すと以下
マイクロビットとセンサー簡易接続(記事後半のレベルコンバーターを追加した回路を使ってください)
配線
Micro:bit 0 —- HC-SR04 Trig
Micro:bit 1 —- HC-SR04 Echo
Micro:bit Gnd —- HC-SR04 Gnd
5V電源 + —- HC-SR04 Vcc 注:図では単3電池4本ですが、実際には3本使用し4.5でテスト
5V電源 ー —- HC-SR04 Gnd
Mackcodeでプログラムする
Sonar拡張ブロックを導入する
1.高度なブロック→拡張機能をクリックします。
2.選択できる拡張機能が表示されますので、『Sonar』をクリックして選択します。
3.計算ブロックの下にSonarブロックが追加されました。
4.基本ブロックから『数を表示』ブロックを選択してずっとブロックに組み込みます。
5.Sonarブロックから『Sonar』ブロックを選択して、『数を表示』ブロックに組み込みます。
6.Sonarブロックのechoを『P1』に変更、unitを『cm』に変更します。
7.基本ブロックから『アイコンを表示』ブロックを選択して『数を表示』ブロックの下に組み込みます。アイコンはどれでも良いのですが、この例ではハートにしておきます。距離計測と計測の間の区切り表示です。その下に『表示を消す』ブロックも追加します。
測定結果について
上記のプログラムで距離を測定してみたのですが、近距離は割と正確ですが10cmを超えると不正確でした。原因がMicro:bitの3Vと距離センサーの5Vの差と考えて、レベルコンバーターをTrig信号とEcho信号に追加してみたのですが、変化はありませんでした。取り敢えずロボットカーで障害物を避けるだけであれば使えそうです。
レベルコンバーターを追加した回路(最初の回路より、こちらが正しい回路です)
注:Aruduinoとこのセンサーで距離を測ってみるとほぼ正確ですので、センサーの問題では無くSonarブロックの問題と思われます。何か分かれば更新します。
使用した部品
最後まで記事をお読みいただきありがとうございます。
記事の改善に役立てたいと思いますので、よろしければアンケートにご協力ください。
コメントを書く