走るだけ (1) タミヤ工作セット71201のI/O
タミヤの楽しい工作シリーズの中に「カムプログラムロボット工作セット」がありました。モータを2個搭載した動力用ギヤボックスを本体の下にセットして、三角形のクローラ(無限軌道)で進み、カムの動きで左右の腕も動きます。2019年7月20日、この工作セットをベースに、「プログラミング工作シリーズ No.1マイコンロボット工作セット (クローラータイプ)」が発売されました。
搭載しているのはmicro:bitです。マイコン・ボードmicro:bitはキットに含まれています。電池(単3形電池2本。ニッケル水素のエネループを使ったが、解説書には安全のため絶対に使うなと書かれている)は含まれていません。最近のプラモデルは、接着剤を使わずに組み立てるのが一般的です。
●工作セットの内容
- 完成時の外形 長さ136mm、幅128mm、高さ116mm
- モータ 2個の130サイズ(電圧3.0V、最大効率時トルク:7g・cm、回転数7100rpm、電流450mA)、ツインモーターギヤーボックス
- 単三電池×2ボックス
- マイコン・ボード micro:bit(25個のLED、無線Bluetooth、加速度センサ)
- モータ駆動ボード mi-01
- 超音波センサ・ボード mi-02
- 開発ソフト言語 ビジュアル・プログラミング言語「MakeCode」
●メーカ推奨のプログラム言語はMakeCodeだが
ここではArduino IDEでプログラムを作ります。しかし、超音波距離センサやモータ・ドライブ基板の回路図が見つかりません。そこで、MakeCodeを動かし、メーカが用意しているプログラムを読み込んで、ソースを読むことにします。
始める - Microsoft MakeCodeに行きます。「MakeCode オンラインに移動 >」をクリックします。
「読み込む」をクリックします。
その前に、タミヤのサイトからプログラムをダウンロードします。「BBC マイクロビットのプログラムについて」のWebページから、★No.01「基本走行プログラム」(71201 マイコンロボット工作セット)である「01_DrivingProgram_v1.hex」をマウスの右クリックで出てくるサブメニューの「名前を付けてリンク先を保存」で、PCの任意の場所に保存します。
makecodeのWebに戻ります。「読み込む」をクリックすると、次のように出てくる画面から「ファイルを読み込む...」をクリックします。
次に出てくる画面から、ファイルを選択ボタンをクリックし、先ほど保存したファイルを指定します。続けるのボタンをクリックします。
プログラム01_DrivingProgram_v1.hexが読み込まれ、プログラムが表示されました。
●ポート
プログラムの中から、ポートを指定している部分をピックアップします。
- P8 音の出力
- P13 PWM出力。値511、周期1000us
- P14 PWM出力。値511、周期1000us
- P15 ディジタル出力。MOVE、STOP
- P16 ディジタル出力。MOVE、STOP
プログラム01_DrivingProgram_v1.hex以外に、
- No.03「シンプルな走行用プログラム」 03_RunningProgram_v1.hex
- No.04「シンプルな超音波センサー用プログラム」 04_UltrasonicProgram_v1.hex
をそれぞれ読み込んで、使われているポートを見つけます。
- I2C(スレーブ・アドレス0x44 0x2c)超音波センサ。データ長2バイト
●ポートを確認するスケッチ
モータを動かすために配線をします。製品に同梱されていた組み立て手順書を用意します。下記のように、配線します。
- ⑨micro:bitの上下をはさむケースをニッパで切り出し、パチンと止める
- 駆動回路基板mi-01のソケットにmicro:bitを挿しこむ
- ⑮電源スイッチのコネクタををmi-01中央付近のコネクタに挿しこむ
- 電池ボックスのコネクタをmi-01から3cmほど飛び出ているコネクタ・ケーブルに挿す
- ⑩二つあるモータのコネクタをmi-01のコネクタに挿す。見えている金属部分が内側
- 電池を入れる
スケッチです。
#define P13pwm 13
#define p15out 15
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("start");
pinMode(p15out, OUTPUT);
digitalWrite(p15out, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
analogWrite(P13pwm, 50);
delay(1000);
analogWrite(P13pwm, 0);
delay(1000);
}
Arduino IDEは1.8.9です。IDEを利用する方法は、こちらの記事の「Arduino IDEの準備」を参照してください。
コンパイルして書き込みます。シリアルコンソールを開きます。
電源スイッチを動かします。どちらかのモータが回転します。
(※) エネループは、プラスとマイナスの電極をショートすると大きな電流が流れて発熱します。近くに燃えやすいものがあれば、発煙・発火もあり得ます。工作が終わった後、電池を入れたままにして収納して移動するようなときに起こりえます。そのような場合、電池を別途取り出し、ショートが起こらない保存容器に移しておきます。もしくはエネループproを利用すれば、過電流保護回路が働き、過度な発熱は起こりません。
ほかの記事でも、モータを使うときはポリスイッチを使って過電流が流れるのを阻止しています。このキットでは回路に含まれていなそうなので、子供と一緒に作るときはマンガン電池を使うのが望ましいです。