【CyberPi・mBlock】ファームウェア更新とモーションセンサー入門!無線でアップデートしたらCyberOSぶっ壊れる!?

CyberPiのファームウェア更新 CyberPi・mBlock

個人的に micro:bit より IoT学習 に適していると感じている教育用マイコン、makecode社 の CyberPiファームウェア更新モーションセンサー(ジャイロセンサー・加速度センサー)について紹介していきます。

下手にBluetoothドングルを用いてファームウェア更新をするとファームウェアが壊れてOSが立ち上がらなくなってしまうかもしれないので、CyberPiにご興味がある方はぜひこの記事をご覧ください!

Scratch と同じ操作感で IoT に強みのある mBlock を用いて制御します。
プログラミングIoT初学者でもわかる入門(使い方)の内容でもあります。

CyberPiのファームウェア更新

ファームウェアやOSの更新の重要性

まず初めに、

ファームウェアは最初に更新しましょう!

これ、本当に大事。

ファームウェアやOSの更新は、バグや脆弱性を修正してくれるものです。

つまり

更新しないということは、バグや脆弱性を放置することに等しい!

ということです。

筆者の場合、ファームウェアを更新していなかったためにモーションセンサーが正しく動きませんでした(その後、ファームウェアを更新することで上記は解消されています)。

PCやスマホ、ゲーム等の情報通信機器で更新がある場合には、なるべく更新しておくことをオススメします。

※ PCやスマホにおいては、更新することによって新たな不具合が発生したり、愛用していたアプリが使えなくなったりする場合もあるため、バックアップを取ってから自己責任で実行してください。

CyberPiのファームウェアの更新時の注意点

CyberPi のファームウェアの更新は非常に簡単です。

ただ、一点気をつけなければならないことがあります。

それは、

ファームウェアの更新は「有線」で!

無線、ダメ。ゼッタイ。

という点です。

無線(Bluetoothドングル)でやったら、更新が失敗する可能性があります。あるふ の場合には、無線での更新失敗後、挙動がおかしくなりました

具体的には、Pocket Shield(ポケットシールド:CyberPiのバッテリー兼拡張ボード)と接続した状態(有線接続・給電していない状態)ではCyberPiが起動しなくなりました。このとき、Pocket Shield の電源ランプは(ONにしている状態)、ファームウェアの更新中のサインとなる「点滅」をし続けていました。

Pocket Shield の電源ランプが点滅している
ファームウェア更新中は点滅する

なお、私が購入した CyberPi では、無線でファームウェアをアップデートしようとした際に「Bluetooth接続ではファームウェアの更新はできません」といったウィンドウが表示され、更新できませんでした。

今回の検証機でそういったウィンドウが表示されなかった理由はよくわかりませんが、おそらく製造されたタイミングや、更新する前に入っているファームウェアのバージョンによるのかと思います。つまり、こういったバグは徐々に修正されていっているということなのでしょう

どちらにせよ、どのような情報通信機器にせよ、無線での更新は極力控える方が良いでしょう。スマホだったらせめて給電しながら更新しましょう。

CyberPiのファームウェアの更新方法

CyberPiの接続

まずはじめに、ファームウェアを更新する CyberPi をUSBケーブルを用いて接続します。

接続方法の詳細については下記の記事で説明していますが、簡単な手順を以降にも記載しておきます。

PCとCyberPiの有線接続

まず、インターネットに接続されており、mBlockを起動している PC と CyberPi を USBケーブル で有線接続します。

CyberPiとmBlockの接続

次に、mBlock上で、画面左下のメニューにおいてデバイスタブの CyberPi を選択し、「接続」ボタンをクリックします(CyberPi が選択できない場合には、「追加」ボタンより CyberPi を追加してください)。

mBlock上の画面左下のメニュー
mBlock上の画面左下のメニュー

CyberPiのファームウェアの更新実行

アップデートボタン

接続が完了したら、画面左下のメニューより、黄色の「アップデート」ボタンをクリックします。

mBlock上の画面左下のメニューのアップデートボタン
アップデートボタン

なお、黄色の「アップデート」ボタンがない場合には、下記の3つを疑ってみると良いでしょう。

  1. 既に最新のものになっている
  2. PCがインターネットに接続されていない
  3. インターネット接続にプロキシ認証が必要な環境で、mBlockがインターネットに接続できない状態

3の場合には、ウェブ版のmBlockを試してみるか、それでもダメならプロキシ認証がない別の環境で更新作業を行う必要があります(プロキシの除外設定を管理者にお願いする手もありますが、除外するURL は makeblock社 に問い合わせする必要があるでしょう)。

ファームウェアの更新ボタン

次に、黄色の「ファームウェアの更新」ボタンをクリックします。

mBlock上の画面左下のメニューのファームウェアの更新ボタン
ファームウェアの更新ボタン
アップデート(更新)の実行

最後に、ポップアップしてきたウィンドウの「アップデート」ボタンをクリックします。

アップデート(更新)を実行するアップデートボタン
更新を実行するウィンドウ

「アップデート」ボタンを押すと、更新の進捗ウィンドウが表示されます。更新には5〜6分ほど時間がかかります。

ファームウェアの更新の進捗ウィンドウ
更新の進捗ウィンドウ

更新が完了すると、更新完了のウィンドウが表示され、画面左下のメニューの黄色の「アップデート」ボタンが、青色の「設定」ボタンに変わっていることを確認することができます。

誤って無線で更新しようとして起動しなくなったときの対処法

筆者あるふ と同じように無謀にも?無線でファームウェアを更新しようとして CyberPi が起動しなくなったときの対処法を下記に残しておきます。

あくまで、筆者あるふ がやった手順を記載しているに過ぎないため、この方法が確実であるという根拠はありません。また、実施は自己責任でお願いします。

  1. USBケーブルで CyberPi と PC を有線接続
  2. mBlock上で、上記の手順に従って再度ファームウェアの更新を実行
  3. 手順2の後も、Pocket Shieldの挙動がおかしいことがあるため、mBlockの画面左下のメニューの「設定」ボタンよりもう一度ファームウェアの更新を行う

モーションセンサーの制御

CyberPi(サイバーパイ)には、モーションセンサーが内蔵されており、下記のことができます。

  • ジョイコン化
  • 傾きの検出
  • 動きの検出

おそらく、傾きの検出にはジャイロセンサー、動きの検出には加速度センサーが使われているのでしょう。

ジョイコン化

ジョイコン化は想像以上に簡単にできます。ジョイコン化することによって、mBlock上のスプライト(キャラクターやアイコン)を、CyberPi を振るだけで振った方向に動かすことができるようになります。

前準備

ジョイコン化するときは、アップロードモード切り替えをオフにし、ライブモードにしておく必要があります。また、動かしたいスプライトを用意しておいてください。今回は、デフォルトで用意されるPandaというスプライトを使います。

ライブモードとアップロードモードの違いについては下記の記事を参照ください。

ジョイコン化のブロック

CyberPi をジョイコン化するために必要なブロックはたったの2つです。

モーションセンサーブロック内の「〇〇を制御してCyberPiを感度□□でフォローする」ブロックを制御ブロック内の「ずっと」ブロックでループさせ続けるだけです。

ジョイコン化のブロック
ジョイコン化のブロック

〇〇の部分には、ジョイコン化した CyberPi で動かしたいスプライトを選択し、□□では、「低(0.2)・中(0.4)・高(0.6)」の3つから感度を選択します。

「低(0.2)」では、ジョイコン化した CyberPi を動かしても少ししかスプライトが動きませんが、「高(0.6)」にすると、ジョイコン化した CyberPi を少し動かすだけでスプライトを大きく動かすことができます。

いかがでしょうか。びっくりするほど簡単ではないでしょうか。下記の記事では、実際に CyberPi をジョイコン化してゲームに組み込んだものを紹介しています。合わせてご覧ください。

X、Y、Z(ロール、ピッチ、ヨー)

以降では、モーションセンサーの詳細を説明していきます。

モーションセンサーは基本的に、「傾きを検出するジャイロセンサー」と「動きを検出する加速度センサー」の2つのセンサーで構成されていることが多いです。

この2つのセンサーを、モーションセンサーのブロックで制御しているのだと思われますが、その前に空間についての最低限の知識が必要となります。

現実世界でもある三次元空間は、一般的にX軸、Y軸、Z軸で表現されます。ジャイロセンサーと加速度センサーは、この3つの軸をベースに制御していくこととなります。

CyberPiのXYZ軸

そして、それぞれの軸における回転を

X軸回転:ロール

Y軸回転:ピッチ

Z軸回転:ヨー

といいます。

X(ロール)

X軸は二次元空間でいうところの「横」となります。この横軸で回転することをロールといいます。

X(ロール)回転をしているCyberPi

Y(ピッチ)

Y軸は二次元空間でいうところの「縦」となります。この縦軸で回転することをピッチといいます。

Y(ピッチ)回転をしているCyberPi

Z(ヨー)

Z軸はいわゆる「奥行き」となります。この奥行きの軸で回転することをヨーといいます。

Z(ヨー)回転をしているCyberPi

傾きの検出

傾きは前・後ろ・左・右・上・下の6方向で検出することが可能です。

傾きを検知するブロック

動きの検出

動きの検出は、ただ単に「動いた」というものだけでなく、「どの方向に」、「どれだけの速度なのか」、を検出することが可能です(ここからも加速度センサーとジャイロセンサーを組み合わせているのであろうかと推測できます)。

わかりやすいブロックとしては、「〇〇が検出された」ブロックがあります。これは、〇〇方向に動いているのか(揺れているのか)検出します。

動きを検出するブロック

また、「どの軸の方向に、どれだけの強さ(加速度)で動いたか」という値を取得するブロックもそれぞれ用意されています。

 

角速度とは、1秒間に何度回転したかを表すものです。

水平・垂直からの絶対的な角度だけでなく、相対的な角度(回転角度)も測れるよう「〇軸周りの回転角度」ブロックと「〇〇軸回りの回転角度をリセットする」ブロックが用意されています。回転角度をリセットしたあとに、「〇軸周りの回転角度」ブロックを配置するように組み合わせれば、相対的な角度を測ることが可能です。

なお、CyberPi には磁力センサーが内蔵されていないため、絶対的な方角(例えば北(N))を検出することができません。そのため、Z軸のヨーに関しては、「ヨー角をリセットする」ブロックが用意されており、CyberPiが起動したタイミングとこのブロックが実行されたタイミングで絶対的な「0」が決まるものと思われます。

ヨー角をリセットするブロック

 

コメント

タイトルとURLをコピーしました