「Adafruit feather nRF52840 Express」にArduino IDEでサンプルプログラムを書き込むまで

「Adafruit feather nRF52840 express」を使う上で、環境構築としてやったことを残して行きます。

基本的には以下のAdafruitのサイトの手順に従い実施。
また、以下の手順はMacでの手順を記載しています。

Arduino IDE のインストール

以下の公式サイトへアクセスしてダウンロードする。

  • ページ右側の「DOWNLOAD OPTIONS」より、
    自分のOS環境に応じてリンクをクリック
  • ダウンロード前に寄付の有無を聞かれるので、寄付しないのであれば
    「JUST DOWNLOAD」をクリック
  • (Macの場合)
    ダウンロードしたzipファイルを回答し、
    中の.appをアプリケーションフォルダにコピーする

Adafruit feather を使うための環境設定

Arduino IDEでAdafruit featherを使うために、ボードの設定を行います。

  • 「環境設定」を開く
  • 追加のボードマネージャのURLに、以下のURLを入力する
    https://www.adafruit.com/package_adafruit_index.json
  • Arduino IDEを再起動する
  • [ツール] -> [ボード] -> [ボードマネージャー] へと進み、
    “Adafruit nRF52 by Adafruit” をインストールする
    →検索窓に”nrf”と入れれば候補が出てきます。
  • [インストール]をクリックし、完了までしばらく待つ
  • [ツール] -> [ボード] -> [Adafruit nRF52 Board] -> [Adafruit feather nRF52840 Express] を選択する。
  • エディタの右下に”Adafruit Feather nRF52840 Express”と表示されればOK

Bootloaderのアップデート

Bootloaderのバージョンチェック

出荷状態のブートはWindowsだとちょっと調子が悪いようで、ブートローダーのバージョンが0.2.9より古ければアップデートしろと書かれています。

うちの環境はMacなので必要ないかもしれませんが、とりあえずやっておきます。

  • USBと基盤を接続する
  • リセットボタン(USB側のスイッチ)を2回押す。
    →これによりマウントされる
  • 「INFO_UF2.TXT」の内容から、”Bootloader”のバージョンがいくつか確認する。

この場合、0.2.6なのでアップデートが必要ということですね。
ちなみにマウント後、しばらくすると勝手にマウントが解除されてしまうようです

アップデートが必要であれば、下記から最新のブートファイルを入手します。
(最新はadafruitの公式サイトをチェックした方が確実です)

https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases/download/0.3.2/feather_nrf52840_express_bootloader-0.3.2_s140_6.1.1.zip

adafruit-nrfutilのインストール

pythonの環境がある場合、以下のコマンドでadafruit-nrfutilをインストール可能と書かれています。

$ pip3 install --user adafruit-nrfutil

しかし私の環境ではインストールは完了と出るものの、コマンドのパスが通らず実行できない。。。

結局アンインストール後、以下のコマンドで再インストールすることでパスが通りました。
なんとなくpyenvで環境を分けていることが原因な気がします。

$ sudo pip install adafruit-nrfutil
・・・
Installing collected packages: adafruit-nrfutil
    Running setup.py install for adafruit-nrfutil ... done
Successfully installed adafruit-nrfutil-0.5.3.post13

Bootloaderをアップデートする

この時、デバイスがマウントされていない状態であれば、再度リセットボタンを2回クリックし、マウントされた状態にします。

この状態で以下のコマンドを実行します。
最初にデバイスの名称を確認したあと、書き込みを開始します。

$ls /dev/cu.*   ★cu.usbmodemXXXXのようなものがデバイスネーム

$ adafruit-nrfutil --verbose dfu serial --package feather_nrf52840_express_bootloader-0.3.2_s140_6.1.1.zip -p デバイスネーム -b 115200 --singlebank --touch 1200

Upgrading target on /dev/cu.usbmodem14601 with DFU package feather_nrf52840_express_bootloader-0.3.2_s140_6.1.1.zip. Flow control is disabled, Single bank, Touch 1200
Touched serial port /dev/デバイスネーム
Opened serial port /dev/デバイスネーム
Starting DFU upgrade of type 3, SoftDevice size: 151016, bootloader size: 30616, application size: 0
Sending DFU start packet
Sending DFU init packet
Sending firmware file
########################################
########################################
########################################
########################################
########################################
########################################
########################################
########################################
###################################
Activating new firmware

DFU upgrade took 19.51666498184204s
Device programmed.

ブートが上がっているかを確認。

サンプルプログラムの書き込み

環境が整ったので、Arduino IDEからのサンプルプログラムをコンパイル&書き込みを実施します。

ソースコードはadafruitのページより、以下をコピペ。
いわゆるLチカですね。

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
 
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

ソースコードを保存し、メニューから「マイコンボードへ書き込み」を実行。

こんな感じで表示され、無事書き込み成功。
USBコネクタ付近のLEDが赤く点滅するようになりました。

終わりに

Adafruit feather nRF52840 expressに対して、Arduino IDEからサンプルプログラムを書き込むまでを試してみました。

個人的にはArduinoに触れるのも初めてなので、IDEのダウンロードからの作業となりました。

特に難しいことはないですが、公式サイトは英語表記しかないのと、adafruit-nrfutilのインストールにちょっと手間取ったのでそこそこ時間がかかりました。

とりあえずこれで環境は整ったので、次はBLEでの通信テストを目指したいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です