WRX micro:bitを車両で使う その10 サーボモーターの利用(動作編)
今回は前回記事で購入したサーボモーターを実際にmicro:bitに接続して動かしてみます。micro:bitはサーボモーターにもよりますが、直接端子(0~2、3V、GND)に接続するだけで動作させる事が可能です。従ってmicro:bitに搭載されているセンサーやLEDの機能だけでは満足出来なくなった場合、次のステップとしてサーボモーターの利用も手軽に行う事が出来ます。
サーボモーター利用時の注意点
サーボモーターには動作電圧があり、ラジコンや模型用の多くは4.8V~になっています。対してmicro:bit本体の端子から出力出来る電圧は3Vなので、サーボモーターによっては動作させる事が出来ない物があります。購入時にサーボモーターの動作電圧、および動作タイプ(角度指定・連続回転)等の仕様を確認する必要があります。
micro:bitの電源仕様についてはこちらに詳細がありますが、消費電流についてもmicro:bitのUSB端子へ電源供給を行う場合、micro:bit本体の端子からは90mAを超えない範囲での利用となっています。90mAを超える場合はバッテリー端子への電源供給が必要となります。
※バッテリー端子へ電源を供給する場合も、搭載されているチップ類の最大電圧が3.6Vとなっているので、それ以上の電圧を供給するとmicro:bitを破損させてしまいます。micro:bit用に乾電池2個(3V)を使用する電池ボックスが販売されています。
micro:bitで多く利用されるサーボモーターはTower Proの「SG90」という製品の様ですが、Tower Proにはコピー品も多く出回っている様で、メーカーのアナウンスもあるので注意して下さい。
動作電圧が3Vを超えるサーボモーターを利用したい場合は、別途サーボモーターを動作させる為のmicro:bit用モジュールを購入する方法があります。私の場合はサーボモーターとモジュールを購入しています。詳しくは前回記事を見て下さい。
2020年12月追記
2020年11月にmicro:bitの本体バージョンが「2.0」になり、端子から供給出来る電源容量が200mAまで増えています。サーボモーターの利用もハードルが幾分下がったと思います。
※これまでの古いmicro:bit(~v1.5)の電源容量が更新される訳ではありません。
micro:bit本体のみで動かす場合
配線
サーボモーターの接続方法はMakeCodeのドキュメンテーションにも記載されていますが、その中ではサーボモーターは先のSG90になっています。ラジコンや模型用のサーボモーターの配線は3本ですが(信号・電源・GND)、配線色はモーターによって異なる場合があります。私が購入したサーボモーターは順に白・赤・黒になっています(上記)。また先端は3ピンのメスコネクターになっているので、切断したくない場合は別途オス-オスのジャンパケーブルの他、ワニ口クリップが必要です。
サーボモーターのメスコネクターにジャンパケーブルを刺し、さらに反対側にワニ口クリップを挟んでmicro:bit本体へ接続します。0~2のいずれかに信号、3Vに電源、GNDはGNDです。接続はこれだけです。
※ワニ口クリップによるmicro:bitへの接続は、先のMakeCodeのドキュメンテーションには上記の様に穴を利用して縦方向に挟む方法を紹介しています。※1の方法では簡単に横方向に動いてしまい、隣の端子へも触れてしまう事があります。ただしどちらの方法でもmicro:bit本体へのキズが心配なので、各端子をジャンパケーブルで取り出せるブレイクアウトボード(モジュール)の利用も考えた方が良さそうです。
プログラム
前回記事でも書きましたが、Microsot MakeCodeでは既に高度なブロックの「入出力端子」内に、サーボモーターに関するブロックがあります。また拡張機能から「servo」のブロックを追加する事も可能です。
拡張機能から上記「servo」をクリックすると追加されます。「servo」が無い場合は検索欄で「servo」と入力して検索します。
上記の左側が「入出力端子」内のブロック、右側が拡張機能「サーボモーター」のブロックです。拡張機能のブロックでは普通(角度指定)と連続回転のブロックの他、幾つかブロックがあります。
上記はそれぞれ「入出力端子」と「サーボモーター」にあるブロックを使用しています。Aボタンで135度の位置、Bボタンで45度の位置へ回転します。「P0」はサーボモーターの信号線を繋いだ端子番号を指定しています。また「入出力端子」と「サーボモーター」のどちらのブロックを使用しても、サーボモーターの動きに違いはありません。シミュレーション画面にもちゃんとサーボモーターが表示されて、画面内のABボタンをクリックすれば動きます。
さらに「入出力端子」にある「数値をマップする」というブロックを使って上記の様にプログラムを組むと、micro:bit本体をLEDがある面を上として左右横方向に傾ける事(ロール角度)で、傾きに応じてサーボモーターも動きます。元の下限と上限はロール角度、結果の下限と上限はサーボモーターの動きです。
※micro:bit本体にUSBで電源を供給している場合、SG90でも正常に動かない場合があります。この場合はバッテリー端子からの電源供給とする事で正常に動く事があります。
ちなみに
私の購入したサーボモーターでは、micro:bit本体への接続ではやはり動作しませんでした。そこで合わせて購入した、サーボモーターを動作させるモジュールから5V電源のみ利用してみたところ、サーボモーターは動作しました。
上記はその様子ですが、モジュールにも別途P0~P2、3V、GNDの端子もあるので電源のみ5Vとなるピンに繋ぎ、パルス制御はmicro:bit本体から行っています。
またmicro:bitの端子を全てピンで取り出す事の出来る、IOブレイクアウトボードもmicro:bitと一緒に購入していて、こちらも5V電源を利用する事が可能です。接続的には先のサーボモーター用モジュールで5V電源のみを使用した形と同じなのでサーボモーターも同様に動作しますが、IOブレイクアウトボードの場合はサーボモーター用モジュールに比べ、同じプログラムでも僅かに速度が遅い現象がありました。サーボモーターが1個でも2個でも変わらず、理由は不明です。
私が購入したIOブレイクアウトボードについては下記記事を見て下さい。
サーボモーター用モジュールで動かす場合
配線
モジュールを使用する場合の配線はとても簡単です。サーボモーターのメスコネクターをモジュールのピンに刺すだけです。注意点はコネクターの表裏で接続先を間違えない事。モジュールにあるUSB端子もしくは電源入力端子から電源を供給すれば、micro:bit本体へも電源が供給されます。
プログラム
今回使用するサーボモーター用モジュールには「PCA9685」という制御チップが搭載されています。モジュールを使用するには、Microsot MakeCodeの拡張機能から「PCA9685」という機能(ドライバー)を追加します。メーカーのwikiページでも手順が示されています。
拡張機能から「https://github.com/jdarling/pxt-pca9685」のアドレスで検索すると、「PCA9685」という拡張機能が表示されます。これをクリックするとブロックのメニューに「PCA9685」という項目が追加されます。「PCA9685」は他メーカーのモジュールでも同じチップを使用している場合があり、拡張機能も同じブロックを使用する事があります。
動作は角度制御の場合は「set servo position」のブロック、連続回転の場合は「set c r servo position」のブロックを使用し、サーボ番号(チャンネル番号)を指定します。「64」となっている箇所は特に必要の無い場合は変更しません。その他パルス信号設定に関するブロック等もありますが、まだあまり詳しく見ていません。
上記は「PCA9685」のブロックから「set servo position」を使い、先ほどと同じAボタンで135度、Bボタンで45度の位置に移動するプログラムです。動作も同じですが「PCA9685」は現状ではシミュレーション画面での確認は行えません。
「PCA9685」でも「数値をマップする」ブロックも使用出来ます。
その他
サーボモーターは通常、0~180度等の角度指定で動作しますが、現在は連続回転が出来るサーボモーターも販売されています。連続回転が出来るサーボモーターはまだ購入していませんが、いずれ購入して試してみようと思います。 →実際に購入してみました。
次回は購入したサーボモーターを使用して工作を行います。
micro:bit 新バージョン「2.0」について
2020年11月25日より、Micro:bit本体の新バージョン「2.0」が発売になっています。従ってこれまでの古いmicro:bitを使用した記事(~その24)と新しいmicro:bitでは記事内容に相違がある場合があります。ただしこれまでのプログラムは基本的には新しいmicro:bitでも動作し、古いmicro:bitも引き続き使用する事が可能です(ハード的に新たに追加された機能は、拡張ボード等が必要ですが)。
なお新しいmicro:bitについては実際に1つ購入し、micro:bit関連記事「その25」から扱っています。
2022年4月追記
2021年12月にmicro:bit本体のバージョンが「2.2」になるとのアナウンスがありましたが、「2.0」との機能上の違いは無いとされています。
「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+プラレール」も始めました。
その他
FA用PLCとELM327を使用した「OBD2」関連の記事は以下の記事から始まります。
注記
-
- このブログ内で書いている内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
- 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
- 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。自己判断と自己責任の下で利用して下さい。
- micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
- BBC micro:bitは、micro:bit教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。