WRX micro:bitを車両で使う その12 可動式雲台を作る(1軸編)
前回はサーボモーターを2つ組み合わせて、上下左右に動く雲台を作りました。ただし車載動画での利用を考えると上下方向の動きは不要かと思います。今回はサーボモーターは1つにして左右のみの動きにし、micro:bitでの動作プログラムももう少しスムーズに動く様にしたいと思います。また実際に車内に設置して動画も撮影してみます。
動作プログラムの改善
今回は最初に動作プログラムの改善を行います。前回の動作プログラムはmicro:bit本体のロールとピッチ角度を範囲で分割して、それぞれの角度範囲内となった時にサーボモーターを対応する角度に動かしていました。従ってサーボモーターの動きは段階的でスムーズではありません。もう少しmicro:bitのロールとピッチ角度に対してスムーズに追従する様な動きにしたい所です。
Microsot MakeCodeで用意されているブロックを見てみると、「数値をマップする」というブロックがあります。このブロックはある数値の変化の割合を異なる割合に変更してくれます。例えば0~100で変化する数値を-100~100の範囲の変化に変更するという物です。「数値をマップする」の隣にある入力欄には変数やセンサーによる入力値のブロックを入れる事が出来ます。従ってmicro:bit本体のロール・ピッチ角度をサーボモーターの動作角度に変更し、「数値をマップする」ブロックその物をサーボモーターの動作ブロックに入れてしまえば、ロールとピッチ角度に追従したスムーズな動きになります。
※サーボモーターは「PCA9685」のモジュールで動かしています。micro:bit本体のみで動かす場合は「入出力端子」にある「サーボ 出力する端子」ブロックに置き換えて下さい。
上記は単純に1つのサーボモーターを「数値をマップする」ブロックを使って、micro:bit本体のロール角度で動かしています。「元の下限・上限」はロール角度、「結果の下限・上限」がそれに対するサーボモーターの角度です。ロール角度が-90度の時にサーボモーターは150度、90度の時は30度になります。
注意点は上限・下限となっていますが、元の入力値や結果の出力値がその値で止まる訳ではありません。上記の場合はmicro:bit本体を裏返す方向へさらに回転させればロール角度も-90度あるいは90度を超え、サーボモーターも150度あるいは30度を超えて動きます。あくまで「元」から「結果」への変更の目安です。
可動式雲台(1軸)
前回のサーボモーターを2つ利用した形から、今回は上記の様にサーボモーターは1つで部品も少ない形に組み替えました。ちなみにサーボモーターを支持しているサクションカップの様な吸盤のパーツも、ホームセンターで購入した吸盤に3Dプリンターで作成したパーツを付けた物です。カメラが水平になっていませんが、とりあえず固定した状態です。
動作プログラム
※サーボモーターの動作には、サーボモーターの動作用モジュールを使用しています。micro:bit本体のみでは以降のプログラムは動作しません(動作側)。あくまで参考として下さい。
今回はサーボモーターは1つで左右の動きのみ、加えてロール角度を検出する操作側とサーボモーターを動かす動作側に分けて、無線で数値や文字をやり取りします。
操作側
操作側は自身のロール角度をサーボモーターの動作角度に変更し、その数値を動作側に無線で送信しています。実際には電源投入後「A+Bボタン」で角度数値を送信開始、「Aボタン」または「Bボタン」あるいは角度数値送信中の「A+Bボタン」で角度数値の送信は停止し、文字「L」「R」「C」をそれぞれ送信しています。
動作側
動作側は単純に、操作側からの角度数値を受信してサーボモーターを動かしているだけです。ただしサーボモーターの動作角度に制限を設けています(120~60度)。また操作側から文字「L」「R」「C」が送信された時はそれぞれ120度、60度、90度位置にサーボモーターを動かします(固定位置)。これは操作側のABボタンによる手動操作です。
動画
操作側のロール角度でサーボモーターを動かしているので、車のハンドルに操作側のmicro:bitを固定すれば、ハンドルの切り角に追従してサーボモーターが動かせます。ただしハンドルは左右180度以上回転するので、サーボモーターの動作角度に制限を付けた理由になります。
・・・今回はハンドルの振動を考えておらず、それによってサーボモーターにも振動の動きが出てしまいました。追従性が良すぎるので今度は甘くする方法を考えなければなりませんが、今回のサーボモーター1つの形でも常用する予定はないので、可動式雲台についてはこれで一旦終了するつもりです。本当は雲台を車外に取り付けて、広い範囲を動かして撮影してみたいのですが。
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教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。