micro:bit で動くプログラミング戦車を作る

micro:bit ロボット戦車
micro:bit ロボット戦車

はじめに

最近は Raspberry Pi 、Arduino、micro:bit など小型で高性能なコンピューターが登場し、中でも scratch のようなブロックの組み合わせで制御出来る micro:bit は子供向けプログラミング教育などでも大変人気です。

micro:bit を搭載したロボットカーで、迷路の走行プログラムを作ったりというのは今もっとも子供達に人気のメジャージャンルと言って良いでしょう。

過去に購入したArduinoのロボットカー

だがしかし、

あえて言おう。

あいつらダサい。

方向転換するのがハンドルを切るのではなく左右のタイヤの正回転・逆転で行うのになら断然キャタビラの方がかっこいいに決まっている。

むしろ

キャタピラ以外ありえない。

と、言うことで、ここではナウでヤングで戦車が好きな大きなお友だちに向けて、タミヤ 楽しい工作シリーズ で作る micro:bit ロボット戦車を紹介する。

micro:bit とは

micro:bit は わずか2,000~3,000円 という超低価格にもかかわらず、LED、物理ボタン、光センサー、温度センサー、加速度センサー、コンパス、無線、Blietooth を内蔵しているため、本体だけでもたくさんのプログラムが楽しめます。

ちょっと画面を見てみてください。

micro:bit プログラミング画面
microbit プログラム画面サンプル

いかがでしょう?scratchやプログラムの知識がある方ならこれを見ただけでもわくわくしてくるほど簡単に構築できます。

ちなみにブロックだけじゃなくjavascriptやPythonでもプログラムできるので、ガチなプログラマーにもおすすめです。

本稿はあくまで micro:bit のプログラミング戦車の作り方についての記事なので、詳しい解説は割愛しますが、興味を持った方は公式サイトや書籍などを是非チェックしてみてください。

micro:bit公式サイト

筆者個人が購入した書籍では、下記がわかりやすくておすすめです。

micro:bit 戦車 の部品を揃えよう

それではさっそく部品を揃えましょう。以下はあくまで筆者が使用した部品だが、電子部品は同じ機能をもったものが多数存在するので、制作の過程など一通り読んだ上で自分の好みに合うパーツを選んでみよう。

足回り部品

品名数量購入参考価格
タミヤ 楽しい工作シリーズ No.168
ダブルギヤボックス 左右独立4速タイプ
1¥615
タミヤ 楽しい工作シリーズ No.157
ユニバーサルプレート 2枚セット
1¥455
タミヤ 楽しい工作シリーズ No.100
トラック&ホイールセット
1¥449
タミヤ 楽しい工作シリーズ No.151
単3電池ボックス 2本用 スイッチ付
追記 : この記事の時点では2本で作ったが非力なので単4電池3本推奨。そうなるとこの記事のような搭載ではなくなるので、独自に試行錯誤してください。
1¥482
小計¥2,001

電子部品

品名数量購入参考価格
micro:bit(マイクロビット)12,160
micro:bit用
電池ボックス
1432
micro:bit用
エッジコネクタピッチ変換基板
1831
Rasbee L9110S
直流電機 2チャンネル ドライバー
H橋電機ドライブモジュール
※配送に1ヶ月近くかかります
1151
普通のブレッドボード1420
ブレッドボード・ジャンパーワイヤー
(メス-メス)(20cm)40本
1250
ブレッドボード・ジャンパーワイヤ
(メス-オス)(20cm)40本
1190
小計4,434

その他必要なもの

電池

micro:bit を動かすための単4電池が2本と、モーターを動かす単3電池2本

USBケーブル Micro-B タイプ

パソコンからプログラムをmicro:bitへ書き込むために使用します。Androidのスマホの充電などに使うMicro-Bタイプが必要です。

工作用ニッパ

基本シャーシとなる「ユニバーサルプレート」を加工するためにプラモデル用のコンパクトなニッパがあると便利です。キャタピラ部分などを作るのにも役立ちます。

はんだゴテ

導線をモーターなどに接続するのに利用します。端子に巻きつけるだけても良いですが、今後電子工作をやっていくなら必須のアイテムです。

車体の組み立て

ギヤボックスの組み立て

今回利用するギヤボックス「タミヤ 楽しい工作シリーズ No.168  ダブルギヤボックス 左右独立4速タイプ」は文字通り4種類のギヤ比が選べるのだが、あまりスピードが早すぎるとプログラム制御が難しくなるのと、スペースの都合もあり少ない本数の電池しか積まずに非力なので、筆者の車両は 114.7:1 のギヤ比で作成した。

micro:bit 戦車 裏側
micro:bit 戦車 裏側

ユニバーサルプレートセットの説明書に記載があるが、ギヤボックスを取り付ける部分はニッパで加工が必要となる。

あと、キャタピラの小さい車輪の取り付けのオレンジのピンが後ろの方で止めている。これは電池ボックスにあたってしまうためである。

micro:bit 戦車 真横
micro:bit 戦車 真横

電池ボックスはできればネジで固定した方が良いが両面テープでも可。
スイッチは上の階にあたってしまうので使用していない。

シャーシーは1枚では全てのパーツは載らないので2階層にする。

ギアボックスのセットの中に使わない部品がある。これをニッパでバキッと切って円柱のパーツを自作する。後ろ側はギアボックスに乗っているだけである。

配線図

配線は少し複雑だが、問題はこの配線をどう美しくまとめるかである。

ユニバーサルプレートはニッパで穴を拡張する事が出来るので、よく考えて穴を拡張します。

今回電池ボックスにスイッチを付けていないので、使用しない時は電源のコードを抜いておきます。

使用しない時はコードを抜きます
使用しない時はコードを抜きます

制御プログラム

最も基本的は制御プログラムの例

javascriptの場合

// まっすぐ進む
function goForward()  {
    basic.showLeds(`
        . . # . .
        . # # # .
        # . # . #
        . . # . .
        . . # . .
        `)
    pins.analogWritePin(AnalogPin.P0, 1023)
    pins.analogWritePin(AnalogPin.P1, 0)
    pins.analogWritePin(AnalogPin.P2, 1023)
    pins.analogWritePin(AnalogPin.P16, 0)
}
// ひだりにまがる
function turnLeft()  {
    basic.showLeds(`
        . . # . .
        . # . . .
        # # # # #
        . # . . .
        . . # . .
        `)
    pins.analogWritePin(AnalogPin.P0, 0)
    pins.analogWritePin(AnalogPin.P1, 1023)
    pins.analogWritePin(AnalogPin.P2, 1023)
    pins.analogWritePin(AnalogPin.P16, 0)
}
// みぎにまがる
function turnRight() {
    basic.showLeds(`
        . . # . .
        . . . # .
        # # # # #
        . . . # .
        . . # . .
        `)
    pins.analogWritePin(AnalogPin.P0, 1023)
    pins.analogWritePin(AnalogPin.P1, 0)
    pins.analogWritePin(AnalogPin.P2, 0)
    pins.analogWritePin(AnalogPin.P16, 1023)
}
// バックする
function goBack()  {
    basic.showLeds(`
        . . # . .
        . . # . .
        # . # . #
        . # # # .
        . . # . .
        `)
    pins.analogWritePin(AnalogPin.P0, 0)
    pins.analogWritePin(AnalogPin.P1, 1023)
    pins.analogWritePin(AnalogPin.P2, 0)
    pins.analogWritePin(AnalogPin.P16, 1023)
}
// とまる
function stop()  {
    basic.showString("S")
    basic.showLeds(`
        # # # # #
        . . . . .
        # # # # #
        . . . . .
        # # # # #
        `)
    pins.analogWritePin(AnalogPin.P0, 0)
    pins.analogWritePin(AnalogPin.P1, 0)
    pins.analogWritePin(AnalogPin.P2, 0)
    pins.digitalWritePin(DigitalPin.P16, 0)
}
// Aボタンで自動運転開始
input.onButtonPressed(Button.A, () => {
    goForward()
    basic.pause(1500)
    turnRight()
    basic.pause(1390)
    goForward()
    basic.pause(1500)
    turnLeft()
    basic.pause(1430)
    stop()
})
// Bボタンで停止
input.onButtonPressed(Button.B, () => {
    stop()
})
micro:bit 戦車 プログラム書き込み

プログラムを書き込む時に配線が邪魔になってしまうので、micro:bitを一旦外して書き込んでいます。このあたりは要改善。

今後方位センサーや距離センサーなど活用しつつ制御プログラムをどんどんバージョンアップさせていきたいと思います。

Follow me!

投稿者プロフィール

kurudrive
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
2018 WordCampOsaka セッションスピーカー
2017 WordCampKyoto セッションスピーカー
2016 WordCampTokyo LT
2016 WordCampKansai ハンズオン世話役
2015 WordCampTokyo セッションスピーカー
2015 WordCampKansai セッションスピーカー
2014 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCampTokyo セッションスピーカー(パネラー)
2013 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCrabFukui セッションスピーカー

シンプルでカスタマイズしやすいWordPressテーマ

Lightningは twitter Bootstrap ベースのシンプルでカスタマイズしやすいWordPressテーマです。
プラグイン VK All in One Expansion Unit とセットで使う事でビジネスサイトにもブログにも活用できます。