XIAO nRF52840とOLEDを接続したセットアップ
ちょっとBLEを使ったちょっとした電子工作がしたくなったので秋月電子で買ってきた。 とりあえずブレッドボードでの動作確認まで。
材料
とりあえず最低限として秋月電子で以下を購入。秋葉原店で買ったけどネットでも買えるはず。
| 部品 | 秋月コード | 数量 | 価格目安 | 必要な理由 |
|---|---|---|---|---|
| XIAO nRF52840 | 117341 | 1 | 1,780円 | BLE通信・メインCPU |
| 0.96インチ OLED SSD1306 | 112031 | 1 | 580円 | 受信メッセージ表示 |
| ブレッドボード EIC-801 | 100315 | 1 | 450円 | 試作配線 |
| Male-Maleジャンパーワイヤ | 130088 | 1袋 | 約300円 | XIAO↔OLED配線 |
| USB-Cデータ通信ケーブル | 117017 等 | 1 | 約100円 | 給電+ファーム書き込み |
今回は試作なのでブレッドボードを使う。ブレッドボードにさすのに2.54mmピンヘッダもいるけどXIAO nRF52840を買ったら中に同梱されてたので別途買わなくていいかも。
ChatGPTと相談したら材料まで完璧に出してくれてすごい。

ハンダ付けと配線
XIAO nRF52840は付属の2.54mmピンヘッダをはんだ付け。 はんだ付けしたらこんな感じに配線。

つなぎ方は以下を参照。OLEDにI2C接続のためにD4とD5を対応するように配線。
XIAO OLED
┌─────────┐ ┌─────────┐
│ 3V3 ─────────── VCC │
│ GND ─────────── GND │
│ D4 ─────────── SDA │
│ D5 ─────────── SCL │
└─────────┘ └─────────┘

Arduino IDEのセットアップと動作確認
Arduino IDEのインストール
Arduino IDEが未インストールであればインストールして起動。
https://docs.arduino.cc/software/ide/
Pythonが実は依存としてあるので未インストールであればMicrosoft Store経由とかでいいので3系の最新をインストール。
パッケージの追加
先にXIAO nRF52840向けのパッケージURLを追加。
Getting Started with Seeed Studio XIAO nRF52840 Series | Seeed Studio Wikiwiki.seeedstudio.comNavigate to File > Preferences, and fill “Additional Boards Manager URLs” with the url below: https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
追加したらXIAO nRF52840のボードマネージャーに対象のパッケージがでるようになるのでインストール。
Navigate to Tools > Board > Boards Manager…, type the keyword “seeed nrf52” in the search box, select the latest version of the board you want, and install it. You can install both.
2つでてくるけどとりあえず両方インストール。

接続確認
XIAO nRF52840をUSBケーブルでPCと接続。
Tools > Board > Seedd nRF52840 Board > Seeed XIAO nRF52840 を選択

Tools > Port からXIAOが接続されているCOMポートを選ぶと接続が確立するはず。

OLEDライブラリのインストールと動作確認
Sketch > Include Library > Manage Libraries から Adafruit SSD1306 をインストール。依存関係の表示がでるのでそちらもまとめてインストールする。

適当にHello World的なコードを書き込んでみる。 IDEの左上のVerifyをしてから→で書き込み。
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(
SCREEN_WIDTH,
SCREEN_HEIGHT,
&Wire,
OLED_RESET
);
void setup() {
Wire.begin();
// SSD1306で一般的なI2Cアドレス
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
while (true) {
// OLED初期化失敗
}
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(20, 24);
display.println("Hello");
display.display();
}
void loop() {
}
→で無事書き込みができたらこのような表示になるはず。

これでとりあえずの動作確認は完了。
更新