クモ型ロボ改め、カメ型ロボを製作しています。
slowtech.hateblo.jp
今回は、超音波センサーを用いて障害物を検知できるようにします。
超音波センサーはHC-SR04という電子工作ではよく見るやつです。
配線はこちら

HC-SR04は5V駆動なので、Vccをラズパイの5V端子につなぎます。
信号はTrigとechoがあり、Trigを16番(GPIO23)、echoを15番(GPIO22)に接続するのですが、
echo端子からは5V出力が出るらしく、そのまま繋ぐとラズパイが飛びます。
1kΩと2kΩの抵抗を使い、echo端子からの電圧を分圧して3V程度に下げてやる必要があります。
この辺の計算は電気工学の基礎、オームの法則によるものです。
Bambu Lab A1 miniで取り付け用のステーを作り、実装しました。

超音波センサーが目に見えてしまう現象は不可避です。
動作確認のサンプルプログラムはこちら
from gpiozero import DistanceSensor from time import sleep sensor = DistanceSensor(echo=22, trigger=23, max_distance=2.0) while True: dist_m = sensor.distance # in meters dist_cm = round(dist_m * 100, 1) print(f"Distance: {dist_cm} cm") sleep(0.5)
Arduinoの場合はプログラムは1つしか動かせないので、サンプルプログラムを転送してしまうとロボのプログラムを再度入れなおす必要がありますが、ラズパイはいろんなプログラムを保存しておいて好きなタイミングで起動、修正できるので手返しがバツグンにいいです。
Distance: 3.3 cm Distance: 1.9 cm Distance: 4.0 cm Distance: 9.4 cm Distance: 3.8 cm Distance: 7.1 cm Distance: 22.3 cm
実行するとこのように障害物を検知すると距離が変化します。
カメ型ロボには、この距離が一定範囲内に入ったらバックして方向転換するようにプログラムをすると、壁を避けるようなモーションをさせることができます。
カメロボに超音波センサーを実装
— slowtech (@slowtech) 2026年2月15日
障害物を避けるモーションを追加しました。角度がつくと反応しなくて難しいです pic.twitter.com/bFptfpYYDi
超音波センサーは障害物に対して直角でないとちゃんと測定値が安定しません。
斜めに壁に向かっていくと激突する事が多くてなかなか難しかったです。