OpenMVを始める

このチュートリアルでは、Nano 33 BLE(Sense)ボードのブートローダーの更新方法を学び、OpenMV IDEで利用できるようにし、MicroPython出のプログラムを可能とします。

!
訳者註: このページはArduinoのファームウェアの書き換えに関する記載があります。利用方法を間違えると、Arduinoが起動できなくなる可能性があります。翻訳が間違っている可能性もあるので、ご自身の判断で利用してください。訳者は責任を取りません。

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"をクリックし最新版をインストールします。

Arduino IDEのボードマネージャー

Arduino IDEのボードマネージャー

その後、ファイル > スケッチ例 > Nano33_System > Nano33_updateBLandSoftDevice を開きます。

Arduino IDEのスケッチ例、Nano33_updateBootloader sketchをハイライト中

Arduino IDEのスケッチ例、Nano33_updateBootloader sketchをハイライト中

スケッチをボードにアップロードし、シリアルモニタを開きます。まだ最新のブートローダーをインストールしていなければ、シリアルモニタで、インストールするためのオプションが表示されます。シリアルモニタに、“y"を入力し、リターンキーを押してください。処理が終わると、SoftDeviceをインストールするか聞かれます。“y"を入力し、リターンキーを押します。更新が完了するのを待ちます。処理が終わるとボードは再起動し、ブートローダーモードになります。

ブートローダー更新後のArduino IDEのシリアルモニタ

ブートローダー更新後のArduino IDEのシリアルモニタ

OpenMVをダウンロードする

Nano 33 BLE sense用のOpenMVスクリプトでのプログラミングを開始する前に、OpenMV IDEをダウンロードし、インストールする必要があります。

OpenMVのダウンロードページをブラウザで開き、利用しているOS用のバージョンをダウンロードし、インストーラーの指示に従います。

OpenMVファームウェアを書き込む

まだNano 33 BLE senseをUSBケーブルでPCに接続していなければ、接続してください。前章で示したように、最新のブートローダーとSoftDeviceがインストールされていることを確認してください。

ブートローダーを更新した後は、必要ならば、Nano 33 BLE senseをブートローダーモードにしてください。アップロード完了後、ボードは自動的にブートローダーモードになります。しかし、その間にボードを再起動した場合は、リセットボタンを2回クリックしてブートローダーモードにしてください。

起動後のOpenMV IDE

起動後のOpenMV IDE

左ツールバーの下の"接続"記号をクリックします。

Nano 33 BLE senseをOpenMV IDEに接続するために接続ボタンをクリックします

Nano 33 BLE senseをOpenMV IDEに接続するために接続ボタンをクリックします

“DFU bootloader(s) found. What would you like to do?"(DFUモードのボードが検出されました。何をしたいですか?")というポップアップが現れ、どのようにするのかを尋ねられます。“Reset Firmware to Release Version”(“最新リリースのファームウェアをインストールします”)を選択します。これで、Nanoに最新のOpenMVファームウェアがインストールされます。内部のファイルシステムを削除するか尋ねられたら、“No"をクリックします。

最新版のOpenMVファームウェアをインストールします

最新版のOpenMVファームウェアをインストールします

アップロード状況を示すターミナルウインドウが開きます。処理が終わると"DFU firmware update complete!“というメッセージが出てきます。

OpenMVでNano 33ボードにファームウェアをインストール中

OpenMVでNano 33ボードにファームウェアをインストール中

i
OpenMVファームウェアをインストールすると、ボードの内蔵フラッシュ内の既存のスケッチは上書きされます。ボードのポートもArduino IDEからはアクセスできなくなります。Arduinoのファームウェアに再度更新するには、ボードをブートローダーモードにする必要があります。このためには、ボード上のリセットボタンを2回クリックします。内蔵の黄色いLEDが、明るくなったり暗くなったりします。

完了ダイアログを確認したら、ボードはすでにOpenMV IDEに接続されているはずです。接続していなければ、“接続"ボタンを再度クリックします。

ボードが正常にOpenMV IDEに接続すれば緑の実行ボタンが左下に現れます

ボードが正常にOpenMV IDEに接続すれば緑の実行ボタンが左下に現れます

MicroPython環境を設定する

Arduinoの古典的なblinkの例を、OpenMVを使いMicroPythonで作ってみましょう。まず、MicroPythonでボードを制御するのを補助するために、スクリプトにいくつかのモジュールをインポートする必要があります。このため、スクリプトの最初に、以下のコードを追加します。

1
2
import time
from board import LED

boardモジュールからLEDをインポートすると、ボードの内蔵LEDを制御できます。timeモジュールは、delayといった、時間に関連する機能を利用できるようにします。

Blinkスクリプトを作成する

では、スクリプトのメインループを作成する方法を見ていきましょう。メインループでは、特定の色でLEDを点灯し、しばらく待ち、消灯し、別の色に変えます。しかし最初に、LEDを制御する変数を定義する必要があります。

1
2
3
4
led_red = LED(1)
led_green = LED(2)
led_blue = LED(3)
led_yellow = LED(4)

これで、ボードの内蔵LEDは、これらの異なる変数で簡単に制御できるようになります。各変数は、内蔵RGB LEDの一色に対応します。ただし、黄色は内蔵の黄色LEDに対応します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
while (True):
    # Turns on the blue built-in LED
    led_blue.on()
    # Adds a 250 millisecond delay
    time.sleep_ms(250)
    # Turns off the blue built-in LED
    led_blue.off()

    led_red.on()
    time.sleep_ms(250)
    led_red.off()

    led_green.on()
    time.sleep_ms(250)
    led_green.off()

    led_yellow.on()
    time.sleep_ms(250)
    led_yellow.off()

    time.sleep_ms(500)

LEDの点灯と消灯の間の遅延時間を決めるのにtime.sleep_ms()関数を使っています。カッコ内の数字は、何ミリ秒遅延させるかを示します。このコードを、while (true)内に配置し、継続的なループを実行します。

OpenMVでスクリプトをアップロードする

OpenMVでスクリプトをアップロードするのは、先ほどのコード全てを空スクリプトに書き、左下隅の緑の実行ボタンを押すだけです。

OpenMVの左下隅の緑の実行ボタンをハイライト

OpenMVの左下隅の緑の実行ボタンをハイライト

完全なスクリプトは、以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import time
from board import LED

led_red = LED(1)
led_green = LED(2)
led_blue = LED(3)
led_yellow = LED(4)

while (True):
    # Turns on the blue built-in LED
    led_blue.on()
    # Adds a 250 millisecond delay
    time.sleep_ms(250)
    # Turns off the blue built-in LED
    led_blue.off()

    led_red.on()
    time.sleep_ms(250)
    led_red.off()

    led_green.on()
    time.sleep_ms(250)
    led_green.off()

    led_yellow.on()
    time.sleep_ms(250)
    led_yellow.off()

    time.sleep_ms(500)

全てがうまくいくと、内蔵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

inserted by FC2 system