#はじめに
この記事では,TOPPERS/R2CAによる Zumo Shieldの使い方について説明します.
#Zumo Shieldについて
Zumo Shieldは,タンク型のロボットを制御可能なAruduinoのシールドです.以下のアクチュエータやセンサーを持っています.
- LED
- ブザー
- 左右モータ
- フォトリフレクタアレイ
- 三軸加速度センサ
- 三軸磁場センサ
Arduino用ライブラリも公開されています.Zumo Shieldは,Arduino Uno/Leonardo用に開発されているため,そのままではM0では動作しません.そもそもハードウェアが5VI/Oを前提に作られているので,3.3VI/OのM0で動作するか不明でした.
回路図等を見る限りは3.3VI/Oでも動作することが分かりました.ライブラリも一部変更することでM0で使用出来ることが分かり,R2CAに加えました.
必要なハードウェア
- Arduino M0 Pro
- Zumo Shield
- 完成品がスイッチサイエンスやTech Shareで購入可能です.
- XBeeシールド等
- M0を直接Zumo Shieldに差すとコネクタが干渉してボタンが押しにくくなります.そのため,干渉が少ないシールドで浮かしてやる必要があります.将来的に無線通信をすることを考えて今回はXbeeシールドを使用します.
- Windows PC
- Windows7とWindows10で動作を確認しています.
- USB(microB)ケーブル
- ボードには付属していないので用意して下さい.
ハードウェアセットアップ
ジャンパが2箇所ありますので次の様に設定します.
- フォトリフレクタアレイ
- 裏側から見て下にDIPを設定します.D2で制御が可能になります.
- 本体
- BuzzerのDIPを32U4の方に設定します.
最後にM0と他のシールドをZumo Shieldを接続します.下記の写真では,XbeeシールドにNCES WiFi ボードを付けて使用しています.これにより,Wifi接続も可能となっています.
##ソフトウェアセットアップ
ZumoのサンプルはR2CAの以下の場所にあります.
- examples\Zumo\
r2ca_app.cpp内に複数のサンプルが入っており,先頭のマクロのいずれかを有効にすることで動作します.
#define BUTTON_BASIC
//#define MOTOR_BASIC
//#define BUZZER_BASIC
//#define GYRO_BASIC
//#define REFLECTANCE_BASIC
//#define COMPASS_BASIC
//#define RELECTORNCE_STOP
//#define ROTATIONRESIST
//#define FORCEUPHILL
//#define LINEFOLLOWER
//#define BORDERDETECT
//#define SUMOCOLLISIONDETECT
//#define MAZESOLVER
それぞれのサンプルの内容は次の通りです.
- BUTTON_BASIC
- ボタンのサンプルです.
- MOTOR_BASIC
- モーターのサンプルです.
- BUZZER_BASIC
- ブザーのサンプルです.
- GYRO_BASIC
- ジャイロによって起動時の方向からの差分を出力するサンプルです.
- REFLECTANCE_BASIC
- フォトリフレクタアレイの値を出力するサンプルです.
- COMPASS_BASIC
- 電子コンパスによって向いている方角の角度を表示します.キャリブレーション値は固定値なので,キャリブレーションした方がよいかもしれません.
- RELECTORNCE_STOP
- 黒い線を見つけると止まるサンプルです.
- ROTATIONRESIST
- ジャイロを使って常に同じ方向を向くサンプルです.
- FORCEUPHILL
- 加速度センサを使って坂の上を見るサンプルです.
- LINEFOLLOWER
- ライントレースのサンプルです.
- BORDERDETECT
- 相撲リングから出ないように走るサンプルです.
- SUMOCOLLISIONDETECT
- 相撲ロボットとして動作するサンプルです.
- MAZESOLVER
- 迷路を解くサンプルです.コースがないため動作確認はしていません.
実行方法は他のサンプルと同様です.
#おわりに
この記事では,TOPPERS/R2CAによる Zumo Shield の使い方について説明しました.今後はWifiを使ってIoTサーバーとの連携等を進めたいと考えています.