Loading...

2024-08-27(火) 11:00

💻 macOSでArduino IDEを使ってSeeed XIAO nRF52840を試す手順

IoTArduinoSeeed XIAO
Seeed社が開発しているマイコンであるXIAO nRF52840をmacOSでArduino IDEを使ってサンプルプログラムを動かして試すまでの手順を解説します。

目次

前提と注意事項

以下が前提と注意事項になります。

  • macOS Sonoma 14.6.1 にて動作確認を行いました。ArduinoIDE のインストール後は Windows や Linux でも同じ手順になると思います。

この記事のゴール

この記事では、以下のように Seeed XIAO nRF52840 を macOS で Arduino IDE を使ってサンプルプログラムである LED を点滅させるプログラムを動かす手順を解説します。

Seeed XIAO nRF52840 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 の写真になります。以下はリチウムポリマー電池を接続した状態のものです。

Seeed 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のダウンロード

ダウンロードしたArduino IDEのインストーラを開いて、ArduinoアプリケーションをApplicationsにドラッグ&ドロップしてインストールします。

Arduinoのインストール

あとは「アプリケーション」の中から「Arduino IDE.app」をクリックしてArduinoを起動します。起動すると以下のようにいくつかインストールが行われます。

Arduinoの起動

以上で Arduino IDE のインストールが完了です。

Arduino IDE で XIAO nRF52840 を使えるようにする

以降の手順は Seeed 社の公式ドキュメントであるSeeed XIAO nRF52840 Getting Startedを参考にしています。 まず、PC に USB-C ケーブルで Seeed XIAO nRF52840 を接続しておきます。

XIAO nRF52840をUSB-Cケーブルで接続

Arduino IDE の以下のようにメニューから「Preferences」をクリックして開きます。

ArduinoのPreferencesを開く

以下の様に画面が開くので、「Additional boards manager URLs:」にhttps://files.seeedstudio.com/arduino/package_seeeduino_boards_index.jsonを貼り付けて、「OK」をクリックします。

追加ボードマネージャーのURLを設定

続いて以下の様に「Tools」→「Boards」→「Boards Manager...」をクリックします。

ボードマネージャーを開く

「Boards Manager...」をクリックすると以下の様にサイドバーに検索画面が開くので、ここで「seeed nrf52」と入力して検索します。すると以下の様に検索結果が表示されます。検索結果の中にある「Seeed nRF52 Boards」の「Install」をクリックします。「Seeed nRF52 mbed-enabled Boards」を使う場合もありますが、今回は「Seeed nRF52 Boards」をインストールします。違いについては後ほど記載します。

Seeed nRF52の検索結果

ちなみに、インストールが完了すると以下の様に「INSTALL」ボタンが「REMOVE」ボタンに表示が変わり、不要な場合は削除できるようになります。

Seeed nRF52のインストール後

インストールが完了したら、以下の様に「Tools」→「Board」→「Seeed nRF52 Boards」→「Seeed XIAO nRF52840 Sense」をクリックして選択します。(Sense 版でない場合は「Seeed XIAO nRF52840」を選択してください。)

Seeed XIAO nRF52840を選択

選択すると以下のような状態になっていると思います。なお、「Port」部分も Seeed XIAO nRF52840 が選択されていることを確認してください。(以下の画像では/dev/cu.usbmodem1101が該当します。)

Seeed XIAO nRF52840を選択した状態

これで XIAO nRF52840 にプログラムを書き込む準備ができました。 プログラムが書き込めない場合などは一度上記のように選択状態を確認してみてください。

LED を点滅させるサンプルプログラムを動かす

あとは以下の様に「File」→「Examples」→「01. Basics」→「Blink」をクリックします。

LED点滅のサンプルプログラム

以下のように「Blink」のサンプルプログラムが開きます。なお、このサンプルプログラムは LED を 1 秒点灯させ、1 秒消灯させるプログラムです。

Blinkのサンプルプログラム
/*
  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 に上記のプログラムを書き込みます。なお、赤下線部分のように書き込み先のポートが選択されていることを確認してください。

Seeed 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 回連続で押す必要があります。

Seeed XIAO nRF52840のリセットボタン

macOS で Permission Denied エラーが発生する場合

XIAO nRF52840 にプログラムを書き込もうとした時に、以下のような内容のエラーが発生する場合があります。

Permission Deniedエラー
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 機器を開発することができます。