メインコンテンツまでスキップ

Seeed Studio XIAO ESP32-C5 で Platform IO を使う

PlatformIO の紹介

PlatformIO は、組み込みシステム向けに設計された強力で高い拡張性を持つ開発エコシステムです。非常に多くの開発ボードやマイコンをシームレスにサポートし、比類ない柔軟性を提供します。PlatformIO を特徴づけているのは、その優れたスケーラビリティです。たとえあなたのボードがネイティブにはサポートされていなくても、そのアーキテクチャにより、カスタムボード定義を簡単に追加できます。

特に、Arduino に慣れた開発者にとっては、関連ライブラリをインクルードするだけで Arduino スタイルのコードをコンパイルして書き込めるため、PlatformIO はそのギャップを埋める存在となっています。

XIAO ESP32-C5 で PlatformIO を使う

次に、PlatformIO をベースに XIAO ESP32-C5 の開発を行い、PlatformIO の開発ワークフローを一緒に体験していきます。

ハードウェアの準備

事前に XIAO ESP32-C5 を 1 つ用意してください。

Seeed Studio XIAO ESP32-C5

VS Code をダウンロード

使用している OS に応じて VS Code をダウンロードします。

PlatformIO をインストール

VSCode を開き、Extensions をクリックして PlatformIO を検索し、インストールを選択します。インストールが完了したら、VSCode を再起動します。

platform-seeedboards プラットフォームパッケージをインストール

Seeed Studio XIAO シリーズのボードはカスタム PlatformIO プラットフォームを使用しているため、対応するプラットフォームパッケージを手動でインストールする必要があります。

  • 新規インストールの場合は、次のコマンドを実行します:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

  • すでに PlatformIO で Seeed Studio XIAO シリーズボードを使用したことがある場合は、以下のコマンドを実行して更新します:
# for Windows
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

# for macOS/Linux
pio pkg uninstall -g -p "SeeedStudio" && pio pkg install -g -p "SeeedStudio=https://github.com/Seeed-Studio/platform-seeedboards.git" --force
ヒント

既存の PlatformIO プロジェクトを使用したい場合は、platformio.ini の内容を次のように置き換えてください:

[env:seeed-xiao-esp32-c5]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = arduino
board = seeed-xiao-esp32-c5
monitor_speed = 115200

新規プロジェクト

  • PIO Home 画面を開き、New Project を選択します

  • Name: プロジェクト名を入力します
  • Board: Seeed Studio XIAO ESP32-C5 を選択します
  • Framework: Ardunio を選択します
  • Location: プロジェクトファイルのパスは、カスタムパスを設定するか、デフォルトパスを選択できます。
  • Finish をクリックし、作成が完了するまで待ちます。その後、ワークスペースでプロジェクトファイルを開きます。

LED 点滅サンプル

この LED 点滅サンプルでは、PlatformIO を使ったコンパイルと書き込みの手順を説明します。

Step 1. サンプルコードをコピーする

#include <Arduino.h>

void setup()
{
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
}

void loop()
{
// put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN, LOW);
Serial.print("LED ON \n");
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
Serial.print("LED OFF \n");
delay(1000);
}

Step 2. プロジェクトをビルドする

VS Code 下部のステータスバーにある アイコンをクリックしてビルドします。


ビルドが成功すると、図のように表示されます。


Step 3. アップロード

VS Code 下部のステータスバーにある アイコンをクリックしてアップロードします。


Step 4. 動作を確認する

下図のようにシリアルモニタを開きます。1 秒間隔で LED のオン/オフ状態が出力されます。


LED も同じく 1 秒間隔で点滅します。


5 GHz Wi-Fi 接続サンプル

XIAO ESP-C5 は 2.4 GHz & 5 GHz のデュアルバンド Wi-Fi 6 をサポートしています。このサンプルでは、5 GHz Wi-Fi ネットワークに接続した際の動作を確認します。

以下のコードを PlatformIO プロジェクトにコピーします。

WiFi 接続リファレンスコード
#include <Arduino.h>
#include <WiFi.h>

// ----------------------------------------------------------------
// Modify your WiFi SSID and Password here
// ----------------------------------------------------------------
const char* ssid = "YOUR_WIFI_SSID"; // e.g., "MyHomeWiFi"
const char* password = "YOUR_WIFI_PASSWORD"; // e.g., "12345678"

void setup() {
// Initialize serial communication at 115200 baud
Serial.begin(115200);
delay(5000); // Wait for serial to stabilize

Serial.println("\nStarting ESP32 WiFi Connection Demo...");

// 1. Set WiFi mode to Station (connect to a router as a client)
WiFi.mode(WIFI_STA);

// 2. Start connection
Serial.printf("Connecting to SSID: %s ", ssid);
WiFi.begin(ssid, password);

// 3. Wait for connection to be established
// This loop waits until the status becomes WL_CONNECTED
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

// ----------------------------------------------------------------
// Connection successful, print detailed information
// ----------------------------------------------------------------
Serial.println("\n\n---------------------------------------");
Serial.println("WiFi Connected Successfully!");
Serial.println("---------------------------------------");

// Print IP Address
Serial.print("IPv4 Address: ");
Serial.println(WiFi.localIP());

// Print Signal Strength (RSSI)
// Unit is dBm, usually between -30 (Excellent) and -90 (Unusable)
long rssi = WiFi.RSSI();
Serial.print("Signal (RSSI): ");
Serial.print(rssi);
Serial.println(" dBm");

// Simple signal quality check based on RSSI value
Serial.print("Signal Quality: ");
if(rssi > -50) Serial.println("Excellent");
else if(rssi > -60) Serial.println("Good");
else if(rssi > -70) Serial.println("Fair");
else if(rssi > -80) Serial.println("Weak");
else Serial.println("Unstable/Very Poor");

// Print MAC Address (Hardware ID)
Serial.print("MAC Address: ");
Serial.println(WiFi.macAddress());

// Print Gateway IP
Serial.print("Gateway IP: ");
Serial.println(WiFi.gatewayIP());

Serial.println("---------------------------------------");
}

void loop() {
// In the main loop, we can periodically check the connection status
// If the connection is lost, attempt to reconnect

if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi Connection Lost! Reconnecting...");
WiFi.disconnect();
WiFi.reconnect();
delay(5000); // Wait a bit before checking again to avoid spamming
}

// Your other application logic goes here
// ...

delay(10000); // Loop every 10 seconds
}

コードをビルドしてアップロードします

XIAO ESP32-C5 が WiFi に接続されると、シリアルモニタに接続中の WiFi ネットワークの信号強度などの情報が表示されます。
また、XIAO ESP32-C5 が 5 GHz Wi-Fi ネットワークへの接続能力に優れていることも、はっきりと確認できます。



上記の2つのサンプルに従うことで、PlatformIO の基本的な開発操作を習得できたはずです。XIAO ESP32-C5 を使って、さらに面白いプロジェクトを作成していただけることを楽しみにしています!

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じてお選びいただける、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...