このチュートリアルでは、Nano 33 BLE(Sense)ボードのブートローダーの更新方法を学び、OpenMV IDEで利用できるようにし、MicroPython出のプログラムを可能とします。
AUTHOR: Benjamin Dannegård, Sebastian Romero
このチュートリアルでは、Arduino IDEのスケッチでブートローダーを更新する方法を示します。これは、OpenMVファームウェアを実行するために必要です。OpenMVでボードに接続し、内蔵RGB LEDを制御するMicroPythonスクリプトをアップロードする方法を示します。
ハードウェアとソフトウェア
- Nano 33 BLE or Nano 33 BLE sense
- Arduino IDE 1.8.10+ or Arduino Pro IDE 0.0.4+(訳者註: Arduino IDE 2.0のことです)
- OpenMV IDE 2.6.4+
新しいブートローダーの動作
更新されたブートローダーは、メモリアドレス0x10000
の位置にある有効なスケッチを探します。これは、Arduino IDEからアップロードされた標準スケッチとの後方互換性を保証します。有効なスケッチが見つからなければ、フラッシュのその位置に恐らくSoftDeviceが配置されているかもしれないので、ブートローダーは0x26000
の位置にあるファームウェアを探します。これが、このチュートリアルでアップロードするファームウェアです。
ブートローダーを更新する
ボードを接続して、Arduino IDEを起動します。このステップは、IDE 1でもIDE 2でも同じです。ボードマネージャーを開き、“mbed"を探します。“Arduino Mbed OS Nano Boards"用コアを見つけ、“Install"をクリックし最新版をインストールします。
その後、ファイル > スケッチ例 > Nano33_System > Nano33_updateBLandSoftDevice を開きます。
スケッチをボードにアップロードし、シリアルモニタを開きます。まだ最新のブートローダーをインストールしていなければ、シリアルモニタで、インストールするためのオプションが表示されます。シリアルモニタに、“y"を入力し、リターンキーを押してください。処理が終わると、SoftDeviceをインストールするか聞かれます。“y"を入力し、リターンキーを押します。更新が完了するのを待ちます。処理が終わるとボードは再起動し、ブートローダーモードになります。
OpenMVをダウンロードする
Nano 33 BLE sense用のOpenMVスクリプトでのプログラミングを開始する前に、OpenMV IDEをダウンロードし、インストールする必要があります。
OpenMVのダウンロードページをブラウザで開き、利用しているOS用のバージョンをダウンロードし、インストーラーの指示に従います。
OpenMVファームウェアを書き込む
まだNano 33 BLE senseをUSBケーブルでPCに接続していなければ、接続してください。前章で示したように、最新のブートローダーとSoftDeviceがインストールされていることを確認してください。
ブートローダーを更新した後は、必要ならば、Nano 33 BLE senseをブートローダーモードにしてください。アップロード完了後、ボードは自動的にブートローダーモードになります。しかし、その間にボードを再起動した場合は、リセットボタンを2回クリックしてブートローダーモードにしてください。
左ツールバーの下の"接続"記号をクリックします。
“DFU bootloader(s) found. What would you like to do?"(DFUモードのボードが検出されました。何をしたいですか?")というポップアップが現れ、どのようにするのかを尋ねられます。“Reset Firmware to Release Version”(“最新リリースのファームウェアをインストールします”)を選択します。これで、Nanoに最新のOpenMVファームウェアがインストールされます。内部のファイルシステムを削除するか尋ねられたら、“No"をクリックします。
アップロード状況を示すターミナルウインドウが開きます。処理が終わると"DFU firmware update complete!“というメッセージが出てきます。
完了ダイアログを確認したら、ボードはすでにOpenMV IDEに接続されているはずです。接続していなければ、“接続"ボタンを再度クリックします。
MicroPython環境を設定する
Arduinoの古典的なblinkの例を、OpenMVを使いMicroPythonで作ってみましょう。まず、MicroPythonでボードを制御するのを補助するために、スクリプトにいくつかのモジュールをインポートする必要があります。このため、スクリプトの最初に、以下のコードを追加します。
|
|
boardモジュールからLED
をインポートすると、ボードの内蔵LEDを制御できます。time
モジュールは、delayといった、時間に関連する機能を利用できるようにします。
Blinkスクリプトを作成する
では、スクリプトのメインループを作成する方法を見ていきましょう。メインループでは、特定の色でLEDを点灯し、しばらく待ち、消灯し、別の色に変えます。しかし最初に、LEDを制御する変数を定義する必要があります。
|
|
これで、ボードの内蔵LEDは、これらの異なる変数で簡単に制御できるようになります。各変数は、内蔵RGB LEDの一色に対応します。ただし、黄色は内蔵の黄色LEDに対応します。
|
|
LEDの点灯と消灯の間の遅延時間を決めるのにtime.sleep_ms()
関数を使っています。カッコ内の数字は、何ミリ秒遅延させるかを示します。このコードを、while (true)
内に配置し、継続的なループを実行します。
OpenMVでスクリプトをアップロードする
OpenMVでスクリプトをアップロードするのは、先ほどのコード全てを空スクリプトに書き、左下隅の緑の実行ボタンを押すだけです。
完全なスクリプトは、以下の通りです。
|
|
全てがうまくいくと、内蔵LEDが、コードで示した順序の色で点滅します。
トラブルシュート
SoftDeviceを再書き込みする必要があるときの理由を示します。
- カスタムSoftDeviceを使いたいとき
- Arduino IDEからカスタムスケッチをアップロードしたとき。Arduino IDEからアップロードされたスケッチは
0x10000
に配置されるので、SoftDeviceを上書きします。再度OpenMVを使いたいときは、SoftDeviceを再書き込みする必要があります。
コードが動作しないときは、トラブルシュートするいくつかのよくある課題があります。
- ボード用のコアをインストールしておらず、更新スケッチが現れない。
- 更新スケッチを初期化するためにシリアルモニタを開いていない。
- ボード用の最新のOpenMVファームウェアをアップロードしていない。
おわりに
このチュートリアルでは、ブートローダーを更新し、SoftDeviceをインストールする方法を学びました。OpenMVとMicroPythonスクリプトについても紹介しました。これらの使い方がわかり、MicroPythonの能力をさらに探求することができるようになりました。ここのドキュメントを参照してください。。
オリジナルのページ
https://docs.arduino.cc/tutorials/nano-33-ble-sense/getting-started-omv
最終更新日
March 7, 2023