「Adafruit feather nRF52840 express」を使う上で、環境構築としてやったことを残して行きます。
基本的には以下のAdafruitのサイトの手順に従い実施。
また、以下の手順はMacでの手順を記載しています。
Table of Contents
以下の公式サイトへアクセスしてダウンロードする。
- ページ右側の「DOWNLOAD OPTIONS」より、
自分のOS環境に応じてリンクをクリック - ダウンロード前に寄付の有無を聞かれるので、寄付しないのであれば
「JUST DOWNLOAD」をクリック - (Macの場合)
ダウンロードしたzipファイルを回答し、
中の.appをアプリケーションフォルダにコピーする
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
出荷状態のブートはWindowsだとちょっと調子が悪いようで、ブートローダーのバージョンが0.2.9より古ければアップデートしろと書かれています。
うちの環境はMacなので必要ないかもしれませんが、とりあえずやっておきます。
- USBと基盤を接続する
- リセットボタン(USB側のスイッチ)を2回押す。
→これによりマウントされる - 「INFO_UF2.TXT」の内容から、”Bootloader”のバージョンがいくつか確認する。
この場合、0.2.6なのでアップデートが必要ということですね。
ちなみにマウント後、しばらくすると勝手にマウントが解除されてしまうようです
アップデートが必要であれば、下記から最新のブートファイルを入手します。
(最新はadafruitの公式サイトをチェックした方が確実です)
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
この時、デバイスがマウントされていない状態であれば、再度リセットボタンを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での通信テストを目指したいと思います。