micro:bitでプラレールを制御する その2 走行編
前回、プラレールの貨車に合わせて3Dプリンターで部品を作り、micro:bitと乾電池に加えてDCモーターを制御する拡張基盤を固定しました。今回は実際にmicro:bitのプロフラムを組んで、列車を走行させてみます。また、別のmicro:bitを利用しての遠隔操作や、Bluetooth機能でスマホアプリからの操作も試してみます。
前回記事までの様子
前回記事でmicro:bitと乾電池、DCモーターを制御する拡張基盤と一緒に走行出来る様にしました。
「プラレール」関連記事
プラレールに関するその他の記事は、以下の「プラレール」タグの記事一覧(投稿順)より見て下さい。現在の記事とこれ以降に投稿した記事も含みます。
その他、micro:bitを使用している記事は以下の「micro:bit」タグの記事一覧(投稿順)から見て下さい。「その24」までの記事では、micro:bitの本体バージョンは「1.5」を使用しています。
- WRX micro:bitを車両で使う その1 micro:bitの購入
- WRX micro:bitを車両で使う その2 Microsot MakeCodeとスマホ用アプリ
- WRX micro:bitを車両で使う その3 micro:bitの仕様と購入したブレイクアウトボード
- WRX micro:bitを車両で使う その4 本体ファームウェアの更新とWebUSB
- WRX micro:bitを車両で使う その5 無線機能の利用
- WRX micro:bitを車両で使う その6 方位センサーの利用
- WRX micro:bitを車両で使う その7 加速度センサーの利用
- WRX micro:bitを車両で使う その8 micro:bitからSIドライブのモード切替
- WRX micro:bitを車両で使う その9 サーボモーターの利用(準備編)
- WRX micro:bitを車両で使う その10 サーボモーターの利用(動作編)
- WRX micro:bitを車両で使う その11 可動式雲台を作る(2軸編)
- WRX micro:bitを車両で使う その12 可動式雲台を作る(1軸編)
- WRX micro:bitを車両で使う その13 連続回転サーボモーターの利用
- WRX micro:bitを車両で使う その14 Bluetoothでスマホから操作(データ受信)を行う
- WRX micro:bitを車両で使う その15 LCDパネル(I2C LCD1602・2004)の利用
- WRX micro:bitを車両で使う その16 シリアル通信(RS232C)を行う
- WRX micro:bitを車両で使う その17 光センサーと温度センサーの利用
- WRX micro:bitを車両で使う その18 LEDのフォントとスクロールスピードを変える
- WRX micro:bitを車両で使う その19 ELM327の車両との通信を確認する
- WRX micro:bitを車両で使う その20 アスキーコード16進数から数値10進数への変換
- WRX micro:bitを車両で使う その21 車両からエンジン回転数を得る
- WRX micro:bitを車両で使う その22 7セグメントLEDの利用(TM1637ドライバ)
- WRX micro:bitを車両で使う その23 DCモーターを制御する(TB6612FNG・DRV8833)
- WRX micro:bitを車両で使う その24 ステッピングモーターを制御する(ULN2003ドライバ)
- WRX micro:bitを車両で使う その25 micro:bit バージョン2.0を購入(2021年12月 v2.2アナウンスあり)
- WRX micro:bitを車両で使う その26 バージョン2.0で追加されたMakeCodeブロック
- WRX micro:bitを車両で使う その27 バージョン2.0の初期状態と追加された機能
- WRX micro:bitを車両で使う その28 新バージョン(v2.0)のI2C通信
- WRX micro:bitを車両で使う その29 環境モニターを作る(気温・気圧・湿度編)
- WRX micro:bitを車両で使う その30 環境モニターを作る(二酸化炭素・有機化合物編)
- WRX micro:bitを車両で使う その31 環境モニターを作る(LCD表示・動作確認編)
- WRX micro:bitを車両で使う その32 環境モニターを作る(RTCモジュール追加編)
- WRX micro:bitを車両で使う その33 環境モニターを作る(ロギングモジュール追加編)
- WRX micro:bitを車両で使う その34 環境モニターを作る(ログデータ記録編)
- WRX micro:bitを車両で使う その35 車内のCO2濃度と換気について
- WRX micro:bitを車両で使う その36 新バージョン(v2.0)でのI2C通信の問題解決
- WRX micro:bitを車両で使う その37 Microsoft MakeCodeの新バージョン(v4)と新機能データロガー
- WRX micro:bitを車両で使う その38 mp3音声ファイルの再生(DFPlayer Mini)
- WRX micro:bitを車両で使う その39 車速パルス信号から速度を計算する
- WRX micro:bitを車両で使う その40 フルカラーLED(WS2812B)でメーターを作る
- WRX micro:bitを車両で使う その41 フルカラーLEDマトリックス(WS2812B)で時計を作る
- WRX micro:bitを車両で使う その42 フルカラーLEDマトリックス(WS2812B)でピクセルアートアニメーションを作る
列車を走行させる
※実際の走行の様子は、この記事の最後の方に動画で掲載しています。
列車のみ(micro:bit-1台)
まずは貨車に固定したmicro:bitにプロフラムを組んで、列車を走行させます。DCモーターを制御する拡張基盤のメーカーからは、Microsoft MakeCode用の拡張機能ブロックが用意されています。
Microsoft MakeCodeで「拡張機能」を選択します。
上部の検索欄に「Kitronik motor driver」と入力して検索します。検索結果の中から「Kitronik-motor-driver」をクリックします。
すると上記の様に「Motor Driver」という機能が追加されます。注意点として、この拡張機能は同じメーカーの他の製品とも共有しているので、中にはDCモーターの制御では使用しないブロックもあります。ブロックの使用例はここに記載されています。
拡張機能のブロックを使用せずに、通常のブロックのみでもプログラムを作る事は可能です。メーカーが用意しているデータシート(リンク先はpdfファイル)内に記載されています。
とりあえず、上記の様にプログラムを作りました。micro:bitのAボタンで前進、Bボタンで後退、AとBボタンの同時押しで停止です。AまたはBボタンを押してから1秒(1000ミリ秒)の一時停止を入れたのは、A→BまたはB→Aでモーターの回転方向を変更する場合に、モーターや列車のギヤに負荷を掛けない為です。
またスピードを「17」としていますが、ここは「0~100」の割合を指定します。この割合はDCモーターへ出力する電圧に対するものですが、「100」で拡張基盤に入力している電源電圧と同じ電圧になります。ここでは拡張基盤に9V乾電池を接続しています。プラレールの列車は単3(あるいは単2)乾電池1本の1.5Vで動作しているので、9Vの17%で約1.5Vです。17を最大として割合を減らせば、列車の走行速度は低くなりますが、あまり低い割合ではモーターの力不足で列車は走行出来なくなります。
遠隔操作(micro:bit-2台)
micro:bitには無線機能があり、複数のmicro:bitと通信する事が出来ます。従って列車と一緒に走行するmicro:bitではなく、手元で操作する事も可能です。
上記は手元で操作する(リモコン)micro:bit側のプログラムです。Aボタンで「進行」という文字と数値「1」、Bボタンで「進行」という文字と数値「2」、AとBボタン同時で「進行」という文字と数値「0」を、列車と一緒に走行するmicro:bitに送信します。
さらに上記は列車と一緒に走行するmicro:bit側のプログラムです。「進行」という文字と数値「1」を受信したら前進、「進行」という文字と数値「2」を受信したら後退、「進行」という文字と数値「0」を受信したら停止します。
ただしここでは「進行」という文字を送信したり、操作側の「進行」という変数を使用する必要はありません。この先、色々な操作を送受信させる事を考えた場合に必要になるかもしれないので、テストとして使用しています。
遠隔操作(micro:bit-1台・スマホBluetooth)
micro:bitにはBluetoothの機能もあり、スマホアプリ(公式コンパニオンアプリ)を利用してのスマホからのプログラム転送や、文字や数値の送受信が可能です。ただしBluetooth機能は拡張機能として追加する必要があり(上記)、先の無線機能とは排他利用となります。またメモリーを多く消費するので、プログラムが長くなる場合はmicro:bitのV2(バージョン)を使用する方が良いと思います。さらにスマホとの通信には、最初にペアリングが必要になります。詳しくは以前の記事を見て下さい。
今回は列車の操作用として、スマホに「EV-micro:bit」というアプリを利用してみました。このアプリはmicro:bitでロボット等を操作する為の汎用的なアプリの様です(公式アプリではありません)。使い方はアプリ内にデータシートが含まれていますが、それほど難しい事は無く、アプリの各ボタンを押すと「#」に続いて各ボタンに割り当てられた文字を送信しているだけです。
今回はアプリ内で上記赤枠内の3つだけを使います。左ボタンでは「l(エル)」、右ボタンでは「r」、下ボタンでは「b」が送信されます。
列車と一緒に走行するmicro:bit側のプログラムは上記の様にしました。基本的には無線機能の時と同じですが、万が一スマホとのBluetooth接続が切れてしまった場合に、AかBボタンでモーターを停止出来る様にしています。
今回の記事はここまでです。次回はセンサーを利用して、列車の動きを制御してみます。
動画
今回の内容の動画です。
ブログ記事公開後に再び同じ内容(翌年に同じ場所を走行など)の動画を作成・公開している場合があります。記事内の動画もなるべく最新を掲載する様にしていますが、最新や過去・その他の動画を見る場合はYoutubeを見て下さい。
注記
-
- この記事を参考にしてのプラレールの改造は、自己判断と自己責任の下で行って下さい。事故や怪我が発生してもその責任を負う事は出来ません。
- 記事内の内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
- 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
- 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。
- micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
- BBC micro:bitは、micro:bit教育財団の登録商標です。
- プラレールは、株式会社タカラトミーの登録商標です。
- その他のブランド名または製品名は各所有者の商標です。