micro:bit で動くプログラミング戦車を作る
はじめに
最近は Raspberry Pi 、Arduino、micro:bit など小型で高性能なコンピューターが登場し、中でも scratch のようなブロックの組み合わせで制御出来る micro:bit は子供向けプログラミング教育などでも大変人気です。
micro:bit を搭載したロボットカーで、迷路の走行プログラムを作ったりというのは今もっとも子供達に人気のメジャージャンルと言って良いでしょう。
だがしかし、
あえて言おう。
あいつらダサい。
方向転換するのがハンドルを切るのではなく左右のタイヤの正回転・逆転で行うのになら断然キャタビラの方がかっこいいに決まっている。
むしろ
キャタピラ以外ありえない。
と、言うことで、ここではナウでヤングで戦車が好きな大きなお友だちに向けて、タミヤ 楽しい工作シリーズ で作る micro:bit ロボット戦車を紹介する。
micro:bit とは
micro:bit は わずか2,000~3,000円 という超低価格にもかかわらず、LED、物理ボタン、光センサー、温度センサー、加速度センサー、コンパス、無線、Blietooth を内蔵しているため、本体だけでもたくさんのプログラムが楽しめます。
ちょっと画面を見てみてください。
いかがでしょう?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(マイクロビット) | 1 | 2,160 |
micro:bit用 電池ボックス | 1 | 432 |
micro:bit用 エッジコネクタピッチ変換基板 | 1 | 831 |
Rasbee L9110S 直流電機 2チャンネル ドライバー H橋電機ドライブモジュール ※配送に1ヶ月近くかかります | 1 | 151 |
普通のブレッドボード | 1 | 420 |
ブレッドボード・ジャンパーワイヤー (メス-メス)(20cm)40本 | 1 | 250 |
ブレッドボード・ジャンパーワイヤ (メス-オス)(20cm)40本 | 1 | 190 |
小計 | 4,434 |
その他必要なもの
電池
micro:bit を動かすための単4電池が2本と、モーターを動かす単3電池2本
USBケーブル Micro-B タイプ
パソコンからプログラムをmicro:bitへ書き込むために使用します。Androidのスマホの充電などに使うMicro-Bタイプが必要です。
工作用ニッパ
基本シャーシとなる「ユニバーサルプレート」を加工するためにプラモデル用のコンパクトなニッパがあると便利です。キャタピラ部分などを作るのにも役立ちます。
はんだゴテ
導線をモーターなどに接続するのに利用します。端子に巻きつけるだけても良いですが、今後電子工作をやっていくなら必須のアイテムです。
車体の組み立て
ギヤボックスの組み立て
今回利用するギヤボックス「タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ」は文字通り4種類のギヤ比が選べるのだが、あまりスピードが早すぎるとプログラム制御が難しくなるのと、スペースの都合もあり少ない本数の電池しか積まずに非力なので、筆者の車両は 114.7:1 のギヤ比で作成した。
ユニバーサルプレートセットの説明書に記載があるが、ギヤボックスを取り付ける部分はニッパで加工が必要となる。
あと、キャタピラの小さい車輪の取り付けのオレンジのピンが後ろの方で止めている。これは電池ボックスにあたってしまうためである。
電池ボックスはできればネジで固定した方が良いが両面テープでも可。
スイッチは上の階にあたってしまうので使用していない。
シャーシーは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を一旦外して書き込んでいます。このあたりは要改善。
今後方位センサーや距離センサーなど活用しつつ制御プログラムをどんどんバージョンアップさせていきたいと思います。
投稿者プロフィール
-
名古屋のウェブ制作会社数社に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テーマ
プラグイン VK All in One Expansion Unit とセットで使う事でビジネスサイトにもブログにも活用できます。