前提と注意事項
以下が前提と注意事項になります。
- macOS Sonoma 14.6.1 にて動作確認を行いました。ArduinoIDE のインストール後は Windows や Linux でも同じ手順になると思います。
この記事のゴール
この記事では、以下のように Seeed XIAO nRF52840 を macOS で Arduino IDE を使ってサンプルプログラムである LED を点滅させるプログラムを動かす手順を解説します。
Seeed XIAO nRF52840 について
Seeed 社は中国深圳に本社を置く IoT、マイコン関連の製品を開発・販売している企業です。Seeed 社が開発しているマイコンである XIAO nRF52840 は、Nordic 社が開発している Bluetooth や Zigbee に対応している SoC である nRF52840を搭載したマイコンになります。 XIAO nRF52840 以外にも、WiFi 機能を持つ ESP32 を搭載した XIAO ESP32、Raspberry Pi Pico の RP2350、RP2040 を搭載した XIAO RP2040 なども開発、販売されています。 以下が Seeed 社の XIAO の WiKi ページになります。
Seeed Studio XIAO INTRODUCTION
The Seeed Studio XIAO Series is a collection of thumb-sized, powerful microcontroller units (MCUs) tailor-made for space-conscious projects requiring high performance and wireless connectivity.
wiki.seeedstudio.com
XIAO シリーズはサイズが非常に小さいにも関わらず、高性能なマイコンボードです。また、Arduino IDE で開発することができます。 さらに今回試した XIAO nRF52840 については、スリープ時には消費電力が 5μA と非常に低いことに加えて、バッテリー充電機能も搭載しているためリチウムポリマー電池などを使って電池駆動の IoT デバイスの開発にも適しています。
実際手に取ってみると、その小ささと性能のギャップに感動します。以下が XIAO nRF52840 の写真になります。以下はリチウムポリマー電池を接続した状態のものです。
なお、XIAO nRF52840 は、「XIAO nRF52840」と「XIAO nRF52840 Sense」の2種類が販売されています。基本的な機能は同じですが、Sense 版は LSM6DS3TR-C というセンサーと PDM マイクの2つが搭載されており、6軸の IMU(慣性計測ユニット)と温度センサ、マイクを使用できます。今回は「XIAO nRF52840 Sense」を使用しています。 その他の情報については以下の公式 Wiki ページを参照してみてください。
Getting Started with Seeed Studio XIAO nRF52840 (Sense)
As the first wireless product in the Seeed Studio XIAO family, Seeed Studio XIAO nRF52840 is equipped with a powerful Nordic nRF52840 MCU which integrates Bluetooth 5.0 connectivity.
wiki.seeedstudio.com
以下に弊社で開発した IoT システムの開発事例概要を紹介しています。IoT システムの開発に興味がある方は、ぜひご覧ください。
🎛️ IoTハードウェアおよびシステムの開発事例について
弊社はIoT機器のハードウェア開発からIoT機器のリモート制御やデータ集計などを行うサーバの開発、そしてユーザーがIoT機器の情報を確認したり制御したりするためのWebシステムまで全体を開発、構築することができます。開発事例の一例をご紹介します。
ritaiz.com
macOS に Arduino IDE をインストールする
まずArduino IDEのダウンロードページにアクセスし、自身の PC にあった Arduino IDE をクリックしてダウンロードします。ここでは macOS を使うために macOS 用の Arduino IDE をダウンロードします。
ダウンロードしたArduino IDE
のインストーラを開いて、Arduino
アプリケーションをApplications
にドラッグ&ドロップしてインストールします。
あとは「アプリケーション」の中から「Arduino IDE.app」をクリックしてArduino
を起動します。起動すると以下のようにいくつかインストールが行われます。
以上で Arduino IDE のインストールが完了です。
Arduino IDE で XIAO nRF52840 を使えるようにする
以降の手順は Seeed 社の公式ドキュメントであるSeeed XIAO nRF52840 Getting Startedを参考にしています。 まず、PC に USB-C ケーブルで Seeed XIAO nRF52840 を接続しておきます。
Arduino IDE の以下のようにメニューから「Preferences」をクリックして開きます。
以下の様に画面が開くので、「Additional boards manager URLs:」にhttps://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
を貼り付けて、「OK」をクリックします。
続いて以下の様に「Tools」→「Boards」→「Boards Manager...」をクリックします。
「Boards Manager...」をクリックすると以下の様にサイドバーに検索画面が開くので、ここで「seeed nrf52」と入力して検索します。すると以下の様に検索結果が表示されます。検索結果の中にある「Seeed nRF52 Boards」の「Install」をクリックします。「Seeed nRF52 mbed-enabled Boards」を使う場合もありますが、今回は「Seeed nRF52 Boards」をインストールします。違いについては後ほど記載します。
ちなみに、インストールが完了すると以下の様に「INSTALL」ボタンが「REMOVE」ボタンに表示が変わり、不要な場合は削除できるようになります。
インストールが完了したら、以下の様に「Tools」→「Board」→「Seeed nRF52 Boards」→「Seeed XIAO nRF52840 Sense」をクリックして選択します。(Sense 版でない場合は「Seeed XIAO nRF52840」を選択してください。)
選択すると以下のような状態になっていると思います。なお、「Port」部分も Seeed XIAO nRF52840 が選択されていることを確認してください。(以下の画像では/dev/cu.usbmodem1101
が該当します。)
これで XIAO nRF52840 にプログラムを書き込む準備ができました。 プログラムが書き込めない場合などは一度上記のように選択状態を確認してみてください。
2つのArduinoライブラリについて
ボードマネージャーで「Seeed nrf52」と検索した時に、2つのライブラリが表示されます。ここでは「Seeed nRF52 Boards」をインストールします。公式Wikiページよると、2つの違いについては以下のように記載されています。
・Seeed nRF52 Boards
:
Bluetooth機能の利用や省電力化が目的である場合に推奨されるライブラリ。
・Seeed nRF52 mbed-enabled Boards
:
機械学習の組み込みやIMU、PDMの高度な利用が目的である場合に推奨されるライブラリ。
・なお、どちらともLED、Serial、I2C、SPI、Analogの利用は可能。
LED を点滅させるサンプルプログラムを動かす
あとは以下の様に「File」→「Examples」→「01. Basics」→「Blink」をクリックします。
以下のように「Blink」のサンプルプログラムが開きます。なお、このサンプルプログラムは LED を 1 秒点灯させ、1 秒消灯させるプログラムです。
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
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
}
上記だと、HIGH
によって LED を点灯するとコメントに記載されていますが、XIAO nRF52840 ではLOW
によって LED を点灯しますので注意が必要です。
以下のように赤線枠内にある右矢印のボタンをクリックして、XIAO nRF52840 に上記のプログラムを書き込みます。なお、赤下線部分のように書き込み先のポートが選択されていることを確認してください。
正常に書き込めると、Arduino IDE の「Output」に以下のように表示されます。
Sketch uses 21060 bytes (2%) of program storage space. Maximum is 811008 bytes.
Global variables use 3096 bytes (1%) of dynamic memory, leaving 234472 bytes for local variables. Maximum is 237568 bytes.
Upgrading target on /dev/cu.usbmodem101 with DFU package /private/var/folders/k8/2ycjv2_x2cv27ns7xs4wc47r0000gn/T/arduino/sketches/B23F19ED75471CB4EE3DE6C384281413/Blink.ino.zip. Flow control is disabled, Single bank, Touch disabled
########################################
##
Activating new firmware
Device programmed.
これで、XIAO nRF52840 の LED が 1 秒点灯、1 秒消灯するプログラムが書き込まれます。
XIAO nRF52840 に書き込めない場合
XIAO nRF52840 にプログラムを書き込めない場合は、XIAO nRF52840 のリセットボタンを 2 回連続で押してから、Arduino IDE の「Upload」ボタンを押してみてください。また、USB-C ケーブルが正常に接続されているか、ポートが正しく選択されているかなども確認してみてください。 XIAO nRF52840 のリセットボタンは以下の画像の赤枠内にあるボタンになります。非常に小さく、押しにくいので注意が必要です。また、リセットボタンを押す時間間隔は1秒も空けずにすぐに 2 回連続で押す必要があります。
macOS で Permission Denied エラーが発生する場合
XIAO nRF52840 にプログラムを書き込もうとした時に、以下のような内容のエラーが発生する場合があります。
fork/exec /Users/username/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.8/tools/adafruit-nrfutil/macos/adafruit-nrfutil: permission denied
Compilation error: fork/exec /Users/username/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.8/tools/adafruit-nrfutil/macos/adafruit-nrfutil: permission denied
上記が発生する場合は、以下のコマンドをターミナルで実行して権限を変更してみてください。なお、以下のusername
の部分を自身の macOS のユーザ名に置き換えて実行してください。
chmod +x /Users/username/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.8/tools/adafruit-nrfutil/macos/adafruit-nrfutil
上記については Seeed 社の以下のフォーラムに記載されていました。
Problems with Arduino and XIAO BLE nRF52840
hello,I bought the board today and used the “Getting started” Wiki to upload the first sketch (blink) to the board. I get this error message:
forum.seeedstudio.com
まとめ
Seeed 社の XIAO nRF52840 を Arduino IDE を使ってサンプルプログラムを動かす手順を解説しました。本記事では LED を点滅させるだけでしたが、Bluetooth 機能とセンサやサーボモータなどを組み合わせることで環境センサ機器やボットなど様々な IoT 機器を開発することができます。