Arduino

【Arduino】壁を避けるロボットを作ってみた

2019年1月20日

こんばんは!

今回はArduinoを使って壁にぶつからないロボットを作ってみました。

超音波センサで壁(障害物)までの距離を計測し、距離が近かったらバックし、左右どちらかの広い方向へ移動するように設定しました。

完成品は以下の動画のように動作します。

使用するもの

・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ブレッドボード(https://amzn.to/38eNi8u)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・超音波センサ(https://amzn.to/2Czq5iV)
・サーボモータ(https://amzn.to/2CyElIE)
・9V電池(https://amzn.to/2FLzLtJ)
・DCモータ+タイヤ+シャーシ(https://ru.aliexpress.com/item/DOIT-4wd-C101/32856899357.html?spm=a2g0s.9042311.0.0.274233edy2nluU)
・DCモータコントローラ(https://amzn.to/2CyEhso)

組み立て・配線

まず、TTモータとタイヤ、シャーシを組み立てします。

今回はすべてセットになっているこちらのものを購入しました。

https://ru.aliexpress.com/item/DOIT-4wd-C101/32856899357.html?spm=a2g0s.9042311.0.0.274233edy2nluU

次に配線をしていきます。

以下の図のように全ての部品を接続します。

 

プログラム

次にArduino IDEを起動して次のコードを書き込んでいきます。

 

checkDistance()関数は超音波センサで障害物までの距離を計測するためのものです。

neckSwing()は正面の障害物までの距離を計測して15cm以上あったら何もせず、15cm以内であったら、少しバック→左右の障害物までの距離を計測→距離が遠い方向へ方向転換という処理をしています。

今回のコードはDCモータコントローラの記事などで記述したコードの応用なので詳しくはそちらをご覧ください。

DCモータコントローラを使って複数のモータを制御する

Arduinoを用いてサーボモータを制御する

超音波センサとサーボモータを使って障害物を検出する

これでArduinoボードに書き込むと冒頭の動画のように動くはずです。

まとめ・考察

今回はサーボモータ、モータコントローラ、超音波センサなどを使って壁を避けるロボットを作ってみました。

今回のロボットには正面にしか超音波センサがついていないため、壁に対して斜めになってしまった場合に上手く検知できないこともありました。

この問題は、超音波センサを複数使用することで解決できるかもしれないのでまたやっていきたいと思います。

今回はこれで終わります。

ではまた!

 

-Arduino

Copyright© 物を作る者 , 2024 All Rights Reserved.