PR

【第2回】XIAO ESP32-C3 + DS18B20 で「温度がシリアルに出るまで」

環境センサーデータサーバーシステム
記事内に広告が含まれています。

前回 (第1回) は ESP-WROOM-02 (ESP8266) を使いました。今回は Seeed Studio 製の XIAO ESP32-C3 で、まったく同じこと (DS18B20 の温度をシリアルモニタに出す) をやります。

チップが変わっただけで手順の大枠は変わりません。変わるのは以下の 4 点だけです。

  • 使う Arduino IDE の「ボード」パッケージが違う (ESP8266 用 → ESP32 用)
  • USB コネクタが Micro-USB → USB Type-C
  • ピンの呼び名が違う (D2 = GPIO4)
  • スケッチのインクルード 1 行が違う (#include <ESP8266WiFi.h> は使わない)

この 4 点を押さえれば、あとは第1回と同じスケッチで動きます。

XIAO ESP32-C3 と他の ESP32 開発ボードの比較

写真左からSeeed Studio XIAO ESP32C3、真ん中が秋月で購入した開発ボード(おそらくチップのメーカーが作っているのであろう)、右が無印ともいえるESP32開発ボード(アマゾンで安価に購入できる)


なぜチップを変えて同じことをやるのか

同じ「温度を測って送る」でも、現場によって選びたいチップが変わります。

  • ESP-WROOM-02 (ESP8266): 生チップが安い、2.4GHz WiFi、DeepSleep 時の消費電流が小さい(生モジュールで 20µA 前後)。単三 × 3 本での長期運用に向く。
  • XIAO ESP32-C3: USB Type-C 直結、リチウムポリマー電池 (LiPo)3.7V 用の 充電回路を追加しやすい、Bluetooth も載っている、ボード自体が非常に小さい (親指の第一関節ほど)。防水ケースに入れて屋外設置しやすい。「シリアル変換回路(USB‑Serial/JTAG)」を内蔵しているが、開発ボードのようにUSB‑Serial 部が常時フル動作する設計ではなく、ESP32‑C3 の低消費電力機能を阻害しない構造になっている。

ひとつだけ先に断っておきます。DeepSleep 時の消費電流は XIAO ESP32-C3 の方が大きく、実測で 45µA 前後です。ESP32-C3 のチップ自体は 5µA 程度まで下がるのですが、基板に載っている 3.3V レギュレータ(XC6210)が常時 35µA ほど食ってしまうためです。ESP-WROOM-02 の生モジュールは 20µA 前後なので、倍以上の差があります。電池で何か月も動かしたい用途では、この差がそのまま寿命の差になります。逆に言えば、常時給電できる場所や、数週間ごとに電池を換えられる場所なら気にしなくて構いません。

「どちらが正解」ではなく、大きさと電源のバリエーションを増やします。本連載では、AP に集めるまでの処理は両方とも同じ Flask サーバー宛の HTTP POST にしているので、混在させても運用は同じ画面から見えます。

この記事は「同じことを別チップでやると何が変わるか」を体験する回です。


用意するもの (材料費 3,000 円以内)

部品個数目安価格入手先
Seeed Studio XIAO ESP32-C311500 円Amazon
DS18B20 温度センサー (防水プローブ版が便利)1400 円Amazon
ブレッドボード (400 穴)1300 円Amazon
ジャンパー線 (オス-メス、オス-オス各数本)200 円Amazon
4.7kΩ 抵抗 (DS18B20 プルアップ用)110 円秋月
USB Type-C ケーブル (データ通信対応)1家に転がっている—

表の入手先は「私が実際に買った場所」です。技適の確実さを優先するなら、Seeed Studio 公式・スイッチサイエンス・秋月電子から購入してください。国内正規流通品なら技適マーク(204-B00704)が確実に付いています。Amazon にも正規品はありますが、出品者によっては技適無しの類似品が混ざることがあります。

XIAO ESP32-C3 に既に搭載されているもの:

  • ESP32-C3 本体 (技適マーク付き)
  • 3.3V レギュレータ
  • USB シリアル (USB CDC、ESP32-C3 内蔵、外付け変換 IC 不要)
  • USB Type-C コネクタ
  • 自動書込み回路

ピンヘッダは 未実装 です。ブレッドボードに挿して使う場合はご自身で ハンダ付けが必要です (半田こて、ハンダ、ハンダ吸取線などを別途)。 ピンヘッダのハンダ付けが面倒な場合は「ピンヘッダ実装済み」版が売られている ことがあります。なにも記述が無い場合は未実装が多い気がします。

【重要】ハンダ付けの順序に注意 — LiPo 電池用パッドが裏面にある

XIAO ESP32-C3 の 裏面には 3.7V LiPo (リチウムポリマー) 電池を接続するための パッド が 2 つ あります (BAT+ / BAT- または + / - の シルク印刷)。配線を直接ハンダ付けすると、そのまま LiPo 18650電池を繋いで電池駆動できます (本連載の後半で電池駆動化する際に 使います)。

XIAO ESP32-C3 の裏面、ピンヘッダの足と LiPo 電池用パッドの位置関係

問題: 先に表面のピンヘッダをハンダ付けしてしまうと、ピンヘッダの 足が裏面に飛び出し、LiPo ランドの周辺にスペースが無くなって XH コネクタや太めの配線をハンダ付けしにくくなります。しかもランドの位置が微妙でオスのコネクタを付けてピンヘッダをはんだ付けすると、メスのコネクタは抜き差しできないことになります。

XIAO ESP32-C3 の電池パッドからリード線を出して XH コネクタを付けた状態

推奨手順:

  1. 先に裏面の LiPo ランドに配線をハンダ付けする。XHコネクタをはんだ付けした後、ピンヘッダをはんだ付けすると、そのあとメスのコネクタの抜き差しが出来なくなります。現実的には直接リード線をはんだすると良いと思います。
  2. その後、表面のピンヘッダをハンダ付けする

将来 LiPo 電池運用を予定していない方もパッドからは配線を出しておくと 潰しが効きます。ハンダ付け後は必ず極性 (+ と -) をテスターで確認して ください。逆接続すると LiPo 電池は発火の危険があります。

Amazon.co.jp: TUOFENG 24 AWGのソリッドワイヤーは、6色の9mのスプールが付属するソリッドワイヤーキットです。24ゲージのジャンパーワイヤー・フックアップワイヤーキットに最適です : ホビー
Amazon.co.jp: TUOFENG 24 AWGのソリッドワイヤーは、6色の9mのスプールが付属するソリッドワイヤーキットです。24ゲージのジャンパーワイヤー・フックアップワイヤーキットに最適です : ホビー

リード線は何も考えず適当な太さを自分で選んでいたが、あとでAIに聞くともっと細いワイヤーで良いとの返答が有った記憶が。その頃はCopilotも無かった時代。

XIAO ESP32-C3 の購入先について

XIAO ESP32-C3 は Seeed Studio 公式、スイッチサイエンス、秋月電子から購入することを推奨します。国内正規流通品には技適マーク(204-B00704)が確実に付いています。

【重要】LiPo / 18650 電池の購入について — 粗悪品と発火リスクの注意

XIAO ESP32-C3 は裏面ランドに LiPo (リチウムポリマー) 電池を直結できる 設計です。本連載の後半では電池駆動化のため、LiPo 電池パック (400mAh 前後の平型) や、電圧アップコンバータ経由での 18650 リチウムイオンセル 運用にも触れる予定です。ここで電池類の購入について注意喚起します。

Amazon、Aliexpress、eBay、無名の通販サイト、フリマアプリで販売されて いる LiPo 18650 セルには、以下のような粗悪品・偽造品が多数 出回っています:

  • 容量詐称: 「18650 9800mAh」等、物理的にありえない容量表記 (正規品の最大容量は 2026 年時点で約 3500mAh 前後)
  • 保護回路無し: 見た目は正規品ソックリで実は無保護。過充電/過放電/ 短絡で発火・破裂する
  • 中古セルを外装だけ張替えた再生品: 内部インピーダンスが高く、 少ない負荷でも急激に電圧降下、発熱、膨張する

リチウム系電池は事故時の被害が桁違い です。ESP32 が壊れる程度で 済まず、火災、化学熱傷、有毒ガス吸引につながります。

推奨する購入先:

  • 秋月電子、スイッチサイエンス、千石電商、共立エレショップなどの国内電子部品店で、「保護回路付き(protected)」と明記されているものを選ぶ
  • ヨドバシ、ビックカメラ、ジョーシンなどの家電量販店で、Panasonic 等の正規品を購入する
  • PSE マークは完成品のモバイルバッテリーに義務付けられていましたが、18650 の素電池単体には2026年4月1日:義務化スタート(丸形PSE必須)。まだ一部の商品しかマークはついていませんが「保護回路付き」の明記されている事と、信頼できる流通経路かどうかで判断してください。

取り扱いの基本ルール:

  • ハンダ付け時は電池を外す (熱で内部隔膜が損傷する)
  • 極性を必ずテスターで確認 (+ と - の逆接続は発火直行)
  • 膨らんだ、熱を持った、電圧が異常に低い電池は即座に使用中止し、 自治体の回収ルートで廃棄する
  • 充電中は目を離さない、可燃物の上に置かない、就寝中・外出中の充電は避ける

本連載で扱う内容 (電気・電池を扱う電子工作) は すべて自己責任 でお願いします。特にリチウム系電池の事故はご本人・ご家族・近隣に 被害が及びます。安全マージンを最優先し、少しでも異常を感じたら 使用を止めてください。


ピンの呼び名について

XIAO ESP32-C3 の基板シルクには D0 から D10 の番号が書かれていますが、 Arduino IDE のスケッチでは GPIO 番号を使います。この対応表を最初に 把握しておくと配線でつまずきません。

基板シルクGPIO 番号主な用途・注意
D0GPIO2汎用 (アナログ入力可)
D1GPIO3汎用 (アナログ入力可)
D2GPIO4本記事で DS18B20 データに使用
D3GPIO5汎用
D4GPIO6I2C SDA
D5GPIO7I2C SCL
D6GPIO21UART TX (U0TXD)。起動時に出力として動くので入力用途には向かない
D7GPIO20UART RX (U0RXD)
D8GPIO8SPI SCK。ストラッピングピン(起動時の状態を見られるピン)
D9GPIO9SPI MISO。基板上の BOOT ボタンとプルアップ抵抗が繋がっている
D10GPIO10汎用 (SPI MOSI)

注意: XIAO ESP32-C3 には GPIO0 のピンは外に出ていません。ネット記事で 「XIAO の D0 は GPIO0」と書かれている例がありますが誤りです (D0 は GPIO2)。 GPIO0 を使うスケッチはコンパイルは通っても動作しませんのでご注意ください。

空いているピンなら何でも良い、ではありません

D6 / D8 / D9 は、基板上または ESP32-C3 内部で別の役目を持っています。

  • D9 (GPIO9) は基板上の BOOT ボタンとプルアップ抵抗に繋がっています。「D9 に内蔵 LED がある」と書かれた記事を見かけますが誤りです。XIAO ESP32-C3 に、ユーザーが自由に光らせられる LED は載っていません(あるのは充電状態を示す LED だけです)
  • D8 (GPIO8) と D9 (GPIO9) が両方 LOW の状態は不正で、起動が不安定になります。D8 に何かを繋ぐときはプルアップ抵抗を足してください
  • D6 (GPIO21) は起動時にシリアル送信(U0TXD)として動きます。ここに入力用の部品を繋ぐと、起動直後に大きな電流が流れることがあります

センサーを増やすときは D1〜D5、D7、D10 から選ぶのが無難です。


配線 (5 分)

DS18B20 を XIAO ESP32-C3 の D2 (GPIO4) に繋ぎます。

XIAO ESP32-C3 と DS18B20 の配線図(D2 = GPIO4、4.7kΩ プルアップ)

第1回の ESPr Developer 版と配線図の意味は同じです。プルアップ抵抗の 入れ方も同じ (DATA と 3V3 の間)。違うのは「差し込むピンの名前」だけです。

USB Type-C ケーブルを PC に挿すだけで電源供給とシリアル通信の両方が 完了します。

温度センサーの電源をXIAO ESP32-C3モジュールの3V3とGND端子に接続。3V3端子からはセンサーのプルアップ用のワイヤーをパラで取って、GPIO04からは抵抗器でその3V3と別のモジュールとは関係ない場所で短絡しています。


Arduino IDE の準備

第1回で ESP8266 を導入済みの方も、ESP32 用は別途追加が必要 です。 以下は初回のみの作業です。

1. ボードマネージャ URL の追加

Arduino IDE → ファイル → 環境設定 → 「追加のボードマネージャの URL」に以下を追記します。すでに第1回で ESP8266 用の URL が入っている場合は、消さずにカンマ区切りまたは改行で追加してください。両方を併記しておけば、ESP8266 と ESP32 を切替えながら使えます。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Arduino IDE 基本設定に Espressif の ESP32 ボードマネージャ URL を追加

Seeed Studio の追加 URL は不要です。上記 Espressif の公式 URL だけで XIAO ESP32-C3 が選べるようになります。

2. ボードマネージャで ESP32 を検索してインストール

ツール → ボード → ボードマネージャ で「esp32」を検索、 esp32 by Espressif Systems を選択してインストール (数分かかります)。

3. 必要なライブラリ

第1回で入れた OneWire と DallasTemperature はそのまま使えます。 まだ入れていない場合は ツール → ライブラリを管理 で以下を検索して インストールしてください。

  • OneWire (Paul Stoffregen 版)
  • DallasTemperature (Miles Burton 版)

4. ボード設定

ツール メニューで以下を設定します。

  • ボード → XIAO_ESP32C3 (「ESP32 Arduino」グループ内、または Espressif が用意する各種 ESP32 ボードの一覧から選択)
  • USB CDC On Boot → Enabled (これを Disabled にすると起動直後の シリアル出力が見えません)
  • Flash Size → 4MB (32Mb)
  • Partition Scheme → Default 4MB with spiffs
  • Upload Speed → 921600 (通らない場合は 115200 に落とす)
  • シリアルポート → USB を挿した COM ポート
XIAO ESP32C3 用の Arduino IDE ボード設定

最初のスケッチ

第1回のスケッチとほぼ同じです。ヘッダの #include <OneWire.h> と #include <DallasTemperature.h> はそのまま、ESP8266 固有のヘッダは 入れません。

#include <OneWire.h>
#include <DallasTemperature.h>

// DS18B20 のデータ線を D2 (GPIO4) に繋いだ場合
#define ONE_WIRE_BUS 4

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
    Serial.begin(115200);
    delay(1000);   // USB CDC 起動待ち (ESP32-C3 は少し長めに)
    Serial.println();
    Serial.println("=== DS18B20 単体テスト (XIAO ESP32-C3) ===");
    sensors.begin();
    Serial.print("検出したセンサー数: ");
    Serial.println(sensors.getDeviceCount());
}

void loop() {
    sensors.requestTemperatures();
    delay(800);   // 12bit 変換完了に約 750ms かかる
    float temp = sensors.getTempCByIndex(0);
    if (temp == DEVICE_DISCONNECTED_C) {
        Serial.println("ERROR: DS18B20 が繋がっていません");
    } else {
        Serial.print("温度: ");
        Serial.print(temp);
        Serial.println(" °C");
    }
    delay(2000);
}

第1回のスケッチとの違いは以下 2 点だけです。

  • #include <ESP8266WiFi.h> を入れていない (今回はまだ WiFi を使わない ので、そもそもどちらのチップでも不要)
  • Serial.begin(115200) の後の delay を長めに (500ms → 1000ms)。 ESP32-C3 の USB CDC 起動が少し遅いためです

書込み

Arduino IDE の → (書込み) ボタンをクリックします。

  • XIAO ESP32-C3 は自動的にリセットして書込みモードに入ります
  • 手動 IO0 GND 操作は不要です
  • 書込み完了後、自動で通常モードに戻ります
XIAO ESP32-C3 への書き込み完了時の出力

書きこみ時の画面出力はESP-WROOM02の時と若干違います。

書込みが始まらない場合: 基板上の RESET ボタンと BOOT ボタンを 以下の順で押すと手動で書込みモードに入れます。

  1. BOOT ボタンを押しながら
  2. RESET ボタンを短く押して離す
  3. BOOT ボタンを離す
  4. Arduino IDE で書込み実行
  5. 書込み後に RESET ボタンをもう一度押して通常モード起動

シリアルモニタで温度を見る

ツール → シリアルモニタ、右下のボーレートを 115200 にします。

以下のように出たら成功です。

=== DS18B20 単体テスト (XIAO ESP32-C3) ===
検出したセンサー数: 1
温度: 26.75 °C
温度: 26.75 °C
温度: 26.81 °C

センサープローブを指で握ると温度が上がるので動作確認しやすいです。

XIAO ESP32-C3 + DS18B20 の温度がシリアルモニタに表示された成功例

よくある失敗

症状原因対処
シリアルポートに XIAO が出ないUSB Type-C ケーブルが充電専用データ通信対応ケーブルに交換
シリアルモニタに何も出ないUSB CDC On Boot が Disabledボード設定で Enabled に変更
書込み時に “Failed to connect”自動書込み回路が動かなかったBOOT + RESET の手動操作で書込みモードに入れる
検出したセンサー数: 0プルアップ抵抗 (4.7kΩ) 忘れ、または DS18B20 の VCC/GND 逆結線配線再確認
温度が -127.00プルアップ抵抗の場所間違い (DATA と 3V3 の間に入れる)配線図の位置を再確認
ボード選択で XIAO_ESP32C3 が出ないESP32 用ボードマネージャ未インストール上記手順 1-2 を再確認

第1回との違いのまとめ

項目ESP-WROOM-02 (第1回)XIAO ESP32-C3 (第2回)
ボードパッケージESP8266 by ESP8266 Communityesp32 by Espressif Systems
USB コネクタMicro-USBUSB Type-C
USB シリアル外付け IC (CP2102 等)チップ内蔵 (USB CDC)
DS18B20 のピン名GPIO4D2 (= GPIO4)
Serial.begin 後の delay500ms1000ms
書込みモード自動 (ESPr Developer の場合)自動、失敗時は BOOT+RESET
DeepSleep 時の消費電流約 20µA(生モジュール)約 45µA(基板のレギュレータ込み)
技適(工事設計認証番号)206-000519204-B00704

同じだった点:

  • 配線図の意味 (VCC / GND / DATA + 4.7kΩ プルアップ)
  • OneWire と DallasTemperature ライブラリの使い方
  • シリアルモニタのボーレート 115200
  • 温度取得のコード本体

「ESP8266 で動いたコードを ESP32 に持っていく」場合、#include の 1 行と delay の値を調整するだけで済むケースがほとんどです。「ボードが違うと 全部書き直し」ではありません。


技適マークについて

XIAO ESP32-C3 も技適(工事設計認証)取得済みです。認証番号は 204-B00704。Seeed Studio 公式、スイッチサイエンス、秋月電子から購入した国内正規流通品には、基板の金属シールドまたは基板裏面に技適マークが印字されています。

秋葉原の露店や Aliexpress 等で技適無しの ESP32-C3 モジュール単体 (生チップ、ボード無し版) が売られていることがあります。国内で電波を出す 場合は技適マーク付き版を選んでください。


AI との会話例

このスケッチを ESP8266 版から書換えるとき、AI にはこう聞くと通じます。

第1回で書いた ESP-WROOM-02 用の DS18B20 スケッチを、 Seeed Studio XIAO ESP32-C3 用に書換えたい。 DS18B20 のデータ線は D2 (GPIO4) に繋いだ状態。 Arduino IDE のボード設定と、変更が必要な行だけ教えて。

チップ名を必ず正確に書くのがコツです。「ESP32」だけだと ESP32 無印 (WROOM-32) と ESP32-C3 と ESP32-S3 で微妙に別のコードになる ことがあり、無関係な機能を提案されることがあります。


次回予告

マイコンの実験はここで終わり、第3回は Raspberry Pi の準備に入ります。SD カードに OS を焼いて、 初回起動、Windows から SSH で入るところまで。ESP から離れて Pi 側の 準備を先に片付けます。実際に現場に出すデバイス作成に入ります。


← 第1回 | 連載目次 | 第3回 →

コメント

タイトルとURLをコピーしました