Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@kleus_balut

SparkFun Pro nRF52840 MiniをArduino Coreで使う

More than 1 year has passed since last update.

ArduinoでBLE開発をする際に大変便利なnRF52840のブレイクアウトボードですが、開発環境のセットアップに戸惑ったので備忘録を残しておきます。

対象ボードについて

SparkFun Pro nRF52840 Mini

image.png

国内でも入手性の良いボードで、千石電商やスイッチサイエンスさんで取り扱いがあります。

記事執筆時点(19/08/20)で、ArduinoでBLE開発を手軽に行うのにとても適したボードだと思います。
Adafruitの強力なライブラリを使用できますが、利用にあたりいくつか注意点があります。

ハードウェア

ピン配列の違い

Adafruit の Feather nRF52840 Express は情報が多いですが、現在ディスコンになっています。
SparkFun Pro nRF52840 Miniは上記と同型のブレイクアウトボードですが、ピン配置の違いが大きくあります。

I2C端子が扱いづらい

I2C端子がQwiic端子というJST-SH4ピンの独自規格で、簡単には引き出せません。
自前で配線するか、ブレッドボードで扱う場合は下記の変換ケーブルを買うしかありません。

Qwiicケーブル(Qwiic - 4ピンオス)

ソフトウェア

Adafruitボードの完全互換ではない

Adafruitのライブラリを使用できますが、そのままでは、単なるnRF52840が動く"のみ"のボードとなってしまいます。

下記で紹介するセットアップを飛ばしても、Adafruitのライブラリをインポートし、ボード設定をNordic nRF52840DK PCA10056とすることでも使用できるようですが、正式サポートではないので下記のセットアップをお勧めします。

開発環境のセットアップ

基本的には下記ページに沿ってセットアップしていくのですが、全て英語なので重要な点をかいつまんで説明します。

Adafruitのリポジトリを追加してインストール

ArduinoのボードマネージャのURLに下記のURLを追加して、ボードマネージャからインストールします。
https://www.adafruit.com/package_adafruit_index.json

※追加の仕方は各自ググってください。

SparkFunのボード定義を追加

下記の場所にあるファイルを直接編集してボード定義を追加します。
Windows: %LOCALAPPDATA%\Arduino15\packages\adafruit\hardware\nrf52\<version>

boards.txt
#**********************************************
# SparkFun Pro nRF52840 Mini
#**********************************************
sparkfunnrf52840mini.name=SparkFun Pro nRF52840 Mini

# DFU Mode with CDC only
sparkfunnrf52840mini.vid.0=0x1B4F
sparkfunnrf52840mini.pid.0=0x002A

# DFU Mode with CDC + MSC (UF2)
sparkfunnrf52840mini.vid.1=0x1B4F
sparkfunnrf52840mini.pid.1=0x0029

# Application with CDC + MSC
sparkfunnrf52840mini.vid.2=0x1B4F
sparkfunnrf52840mini.pid.2=0x8029

# CircuitPython
sparkfunnrf52840mini.vid.2=0x1B4F
sparkfunnrf52840mini.pid.2=0x802A

sparkfunnrf52840mini.bootloader.tool=bootburn

# Upload
sparkfunnrf52840mini.upload.tool=nrfutil
sparkfunnrf52840mini.upload.protocol=nrfutil
sparkfunnrf52840mini.upload.use_1200bps_touch=true
sparkfunnrf52840mini.upload.wait_for_upload_port=true
#sparkfunnrf52840mini.upload.native_usb=true

# Build
sparkfunnrf52840mini.build.mcu=cortex-m4
sparkfunnrf52840mini.build.f_cpu=64000000
sparkfunnrf52840mini.build.board=NRF52840_FEATHER
sparkfunnrf52840mini.build.core=nRF5
sparkfunnrf52840mini.build.variant=sparkfun_nrf52840_mini
sparkfunnrf52840mini.build.extra_flags=-DNRF52840_XXAA {build.flags.usb}
sparkfunnrf52840mini.build.vid=0x1B4F
sparkfunnrf52840mini.build.pid=0x5284
sparkfunnrf52840mini.build.usb_manufacturer="SparkFun"
sparkfunnrf52840mini.build.usb_product="nRF52840 Mini Breakout"

# SofDevice Menu
# Ram & ROM size varies depending on SoftDevice (check linker script)

sparkfunnrf52840mini.menu.softdevice.s140v6=s140 6.1.1 r0
sparkfunnrf52840mini.menu.softdevice.s140v6.build.sd_flags=-DS140
sparkfunnrf52840mini.menu.softdevice.s140v6.build.sd_name=s140
sparkfunnrf52840mini.menu.softdevice.s140v6.build.sd_version=6.1.1
sparkfunnrf52840mini.menu.softdevice.s140v6.build.sd_fwid=0x00B6
sparkfunnrf52840mini.menu.softdevice.s140v6.build.ldscript=nrf52840_s140_v6.ld
sparkfunnrf52840mini.menu.softdevice.s140v6.upload.maximum_size=815104
sparkfunnrf52840mini.menu.softdevice.s140v6.upload.maximum_data_size=248832

# Debug Menu
sparkfunnrf52840mini.menu.debug.l0=Level 0 (Release)
sparkfunnrf52840mini.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 -Os
sparkfunnrf52840mini.menu.debug.l1=Level 1 (Error Message)
sparkfunnrf52840mini.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 -Os
sparkfunnrf52840mini.menu.debug.l2=Level 2 (Full Debug)
sparkfunnrf52840mini.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 -Os
sparkfunnrf52840mini.menu.debug.l3=Level 3 (Segger SystemView)
sparkfunnrf52840mini.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 -Os

下記リポジトリからzipでダウンロードし、
https://github.com/sparkfun/nRF52840_Breakout_MDBT50Q

解凍したフォルダにある/firmware/Arduino/variants/sparkfun_nrf52840_miniを、上記のboards.txtがあった場所と同じ場所へコピーします。
image.png
※画像はSparkFunのサイトから引用

ArduinoIDEを再起動

重要な手順です。
ArduinoIDEを起動している場合、再起動しないとボード情報が正常に反映されません。

注意点

  • Adafruit nRF52のライブラリが更新されるたびに上記の作業を行う必要があります。
  • ライブラリを更新する場合、Adafruit nRF52のバージョンと、SparkFunのライブラリの対応バージョンを確認の上、Adafruit nRF52のライブラリを更新してください。
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kleus_balut
とある企業でVR開発をしています。
dmmcom
総合エンタテイメントサイト「DMM.com」を運営。会員数は2,900万人を突破。動画配信、FX、英会話、ゲーム、太陽光発電、3Dプリンタなど40以上のサービスを展開。沖縄での水族館事業参入、ベルギーでのサッカークラブ経営など、様々な事業を手掛ける。また2018年より若手起業家の支援を強化、「DMM VENTURES」による出資や、M&Aなどを積極的に展開している。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?