ArduinoでSTEM教育​ 実践編:ライントレースカー

ArduinoでSTEM教育​ 実践編:ライントレースカー

今回は、Arduino互換ボード(Adafruit Feather 32u4 Bluefruit LE)とフォトリフレクタ(QRE1113)を使用して、床に貼った黒テープに沿って走る車(ライントレースカー)を作成する方法を紹介します。

使用する部品一覧

使用する電子部品は以下のとおりです。全てスイッチサイエンスで購入しました。

商品名単価個数金額
Adafruit Feather 32u4 Bluefruit LE
(2723: ADA-2829)
3,949 円13,949 円
デュアルモータードライバDRV8835
(1637: POLOLU-2135)
594 円31,782 円
リチウムイオンポリマー電池400mAh
(3118: DPTL-DTP502535)
770 円1770 円
QRE1113 フォトリフレクタ・モジュール
(408: SFE-ROB-09453)
375 円41,500 円
Feather用足の長いピンソケットのセット
(2754: ADA-2830)
176 円1176 円
SparkFun 超小型ブレッドボード(赤)
(1520: SFE-PRT-12044)
501 円21,002 円

車体の部品は以下のとおりです。これ以外に、フォトリフレクタモジュールを取り付けるために、タミヤミニ四駆のスタビローラーセット(?)の棒を使用しています。これは、家の中にあったものなので、今も販売しているかどうかはわかりません。長いネジをホームセンターで購入して代用できると思います。

商品名単価個数金額
タミヤ 楽しい工作シリーズ
No.144 ボールキャスター 2セット入 (70144)
253円1253円
タミヤ 楽しい工作シリーズ
No.193 スリムタイヤセット (36・55mm径) 70193
354円1354円
タミヤ 楽しい工作シリーズ
No.157 ユニバーサルプレート 2枚セット (70157)
469円1469円
タミヤ 楽しい工作シリーズ
No.168 ダブルギヤボックス
左右独立4速タイプ (70168)
632円1632円
電池ケース 単3×2 スイッチ・カバー付 KIT-UM32S198円1198円

※記載している金額は購入時のものです。

Adafruit Feather 32u4 Bluefruit LEの特徴や使い方

「Adafruit Feather 32u4 Bluefruit LE」は、Adafruit IndustriesのArduino互換機で、ArduinoUnoの約1/3の大きさです。この小型を活かせるように、電源はリチウムイオンバッテリー(3.7V)を接続できる端子があります。さらに、Bluetoothのモジュールが搭載されており、技適取得済みなので日本国内でも使用できます。また、Adafruitが公開しているiOSやAndroidのアプリを使用することで、スマートフォンから制御することもできます。製品ドキュメントは公式サイト( https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/downloads )にまとめられています。主な特徴は下記のとおりです。

  • サイズ 2.0″ x 0.9″ x 0.28″ (51mm x 23mm x 8mm)
  • ATmega32u4 @ 8MHz with 3.3V logic/power
  • 3.3V レギュレータ 、最大電流ピーク500mA
  • GPIO 20本
  • 通信(シリアル、I2C、SPI)
  • PWM 7本
  • アナログ入力 10本
  • リチウムポリマー電池の充電機能有り
Adafruit Feather 32u4 Bluefruit LE の実装

デュアルモータドライバDRV8835の特徴や使い方

「デュアルモータドライバDRV8835」は、1つで2つのDCモータを駆動することができます。よく使用されるモータドライバとして、TA7291Pがありますが、ロジック電源の動作範囲が4.5~20Vなので、今回使用するArduino互換機の電源3.3Vでは動作させることができません。電流は最大1.5Aまで流せるので、電子工作でよく使用される、マブチのFA-130RA-18100の最大効率時の消費電流0.56Aに対しては十分です。障害物にあたって、モータがロックされた場合は2.1A流れるようですが、DRV8835の過電流防止機能があるため、壊れてしまう可能性は低いと判断して使用します。詳細は製品ページ( https://www.pololu.com/product/2135/ )を参照してください。モータ制御は下記のとおりです。PWM反転制御もできるようですが、今回は不要なので下記だけで十分です。

xIN1xIN2xOUT1xOUT2制御
00OPENOPEN停止(惰性)
PWM0PWML順方向回転
PWM %
0PWMLPWM 逆方向回転
PWM %
11LL停止(ブレーキ)
DRV8835の実装

QRE1113フォトリフレクタモジュールの特徴や使い方

QRE1113フォトリフレクタモジュールは、3.3Vで動作可能なモジュールです。端子は電源・GND・OUTの3端子のみで、OUTはアナログ出力なので、Arduinoのアナログ入力端子に接続して使用します。最適検出距離は3mmと記載されており、特性グラフを見ると、0.8mmぐらいが一番感度が高いようです。とはいえ、あまり床に近づけすぎると、ちょっとした障害物でもぶつかってしまうため、ある程度の距離が必要です。これは、床と黒線とのコントラストがどれくらいかにもよるので、各々の環境で調整が必要となります。特性の詳細は製品ページ( https://www.sparkfun.com/products/9453 )を参照してください。

回路図

電源は単三電池×2本(3.0V)とリチウムポリマー電池(3.7V)の2つにしました。電源を1つにした場合、モータ制御によるノイズが電源に乗り、Arduino制御回路の誤動作に繋がる恐れがあります。ノイズによる電源変動をアルミ電解コンデンサで吸収するという方法もありますが、アルミ電解コンデンサは極性を間違うと破裂する恐れがあり危険です。

ライントレースカー回路図

配線図

ブレッドボードを使用した配線は図のとおりになります。

ライントレースカー配線図

組立完成写真

実際に組み立てた写真です。​配線長さは調整していないので、少し不格好ですが、部品はコンパクトに纏められたと思います。

プログラム​​

モータは2個使用しますが、制御方法は同じなので、ライブラリ化しました(Motor.h)。ダブルギヤボックスを使う場合、タイヤを同じ方向に回転させたい場合、左右のモータ回転方向を反対にする必要があります。ライブラリを使うため、制御は同じになるので、モータの接続極性を反対にしておく必要があります。説明がわかり難いかもしれませんが、はんだ付けする前に一度試してみてください。

次に、メインのプログラムの内容ですが、ライントレースのアルゴリズムは以前の記事(「ELEGOO UNO R3スマートロボットカーV3.0+」でライントレース(自動運転)をやってみた)で紹介していますので参照してください。黒線の判定しきい値「thresholdLine」は、フォトリフレクタのアナログ取得値をシリアル通信で見ながら決めます。床と黒線で値の変化が少ない場合は、センサと床の距離を縮めてみたり、黒線ではなく白線を使うなど工夫してみてください。また、ラインから脱線してしまうことがあると思います。その場合は、車の速度「carSpeed」を遅くしたり、loop時間を短くするなどして調整してください。

動かしてみよう

プログラムを書き込んで、実際に動かしてみてください。

Arduino実践編カテゴリの最新記事