WRX micro:bitを車両で使う その36 新バージョン(v2.0)でのI2C通信の問題解決
昨年(2020年)11月に発売となった新バージョン(v2.0)のmicro:bitですが、I2C通信に問題があり、I2C通信で接続する拡張モジュール類が使用出来ない状態でした。従って購入した新バージョンのmicro:bitはしばらくお蔵入りという形になっていました。最近になって久しぶりにmicro:bitのファームウェア関連の情報を見ていると、解決出来そうな方法があったので試してみました。
これまでの問題(v2.0)
私が把握している問題として、新バージョン(v2.0)のmicro:bitではI2C通信の拡張モジュール類を接続しても認識出来ませんでした。micro:bit本体に標準で搭載されている加速度センサーと方位センサーも内部でI2Cとして接続されています(v2.0では接続方法が変わっている)が、こちらは問題無く機能しています。この問題については以前の記事で扱っています。
上記記事内でも書いていますが、旧バージョンのmicro:bit(~v1.5)用「MicroPython」のGitHubでは、v2側の問題点としてI2C通信についての内容が幾つかあったので、問題自体は認識はされているのだろうと思っていましたが、解決したという情報がなかなか上がってきませんでした。
※I2C通信を使用せず、micro:bit本体のLEDや加速度センサー、方位センサー等を使用するだけであれば特に問題はありません。
MicroPythonの更新
新バージョン(v2)用「MicroPython」のGitHubにも、旧バージョンのGitHubからもリンクされているI2C通信の問題点が上がっています。この中でどうやらmicro:bitランタイムのCODALに問題があった様で、修正したCODALを含んだMicroPythonの「ベータ5」が公開されています。micro:bitランタイムのCODALについてはこちらに記載(micro:bit公式)されています。
※「ベータ5」は新バージョン(v2.0)用です。旧バージョン(~v1.5)には適用出来ません。
早速ベータ5となる「micropython-microbit-v2.0.0-beta.5.hex」をダウンロードし、micro:bitへ転送します。micro:bitのファームウェア(micro:bit公式)はリセットボタンを押しながらPCとUSBケーブルで繋ぎ、micro:bitをメンテナンスモードにして行いますが、MicroPythonでは通常通りにPCと接続してダウンロードしたファームウェアを書き込みます(上記A)。micro:bitに書き込まれると、通常のプログラムと同様にmicro:bitのフォルダー内からベータ5のファイル表示が無くなります(上記B)。
追記(2021年7月)
Microsoft MakeCodeのバージョンが「v3」から「v4」にアップデートされ、v4でのバージョン表記に「codal」も表示される様になりました。これにより上記の手動による更新を行わなくても、Microsoft MakeCodeからプログラムの転送を行えば、codal(MicroPython)も最新に更新される事と思います。
確認
MicroPythonの更新を行った後、これまでは表示出来なかったLCDパネル用にブロックエディタで簡単なプログラムを作成して確認してみると、無事にプログラム通りの表示が可能になりました。
またI2C通信を利用したモジュール複数個を繋ぎ、先の問題点の記事内で行った、I2Cアドレスを調べるプログラムを実行してみても、無事にモジュールのアドレスが表示されました。上記ではLCDパネル、RTC(リアルタイムクロック)、CCS811(eCO2・TVOCセンサー)、BME280(気温・湿度・気圧センサー)の4つを接続していますが、micro:bitのLEDに各I2Cアドレスとなる「39、82、90、118」と表示されました。ただし新バージョン(v2.0)ではmicro:bit内の加速度センサー(25)と方位センサー(30)のアドレスは表示されない様子です。新バージョンの加速度センサーと方位センサーは、旧バージョン(~v1.5)とはmicro:bit内部での接続方法が変わっているので、アドレスが表示されない事とCODAL修正前でも問題が無かった事にも関係がありそうです。
その他
これでやっと新しいmicro:bitが使えそうです。I2C通信を利用したモジュールは色々あるので、GitHubでは教育現場での支障も出ているとの書き込みもありましたが、国内ではI2C通信の問題点に関する情報は全く目にしません。そもそも国内の場合は、実際にmicro:bitの様なハードまで使用した教育課程に至っていないという裏付けになってしまっている様で少々残念です。今回の問題もまだMicroPythonのベータ版としての修正なので、通常ブロックエディタだけを利用しているユーザー向けには少々分かり難く(私も分からない部類ですが)、正式なアップデートがどの様になるのかが気になります(先のmicro:bitのファームウェア?)
またMicroPythonエディタでのMicroPythonバージョンも「2.0.0-beta.5」になっていました。もしかしてMicroPythonエディタでプログラムを作成して転送すれば、CODALも一緒に更新される?
しかしmicro:bitは新旧の互換性に問題は無い事になっていますが、実際にはまだその他にも色々とある様子です。今回のI2C通信もまだベータ版での修正なので、一概に新バージョンが良いとも言えない環境だと感じます。
「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教育財団の登録商標です。その他のブランド名または製品名は各所有者の商標です。