さてさて、そろそろ何か始めないとな

さいたま市のソフトウェアエンジニアのブログ

ESP32-DevKitC デュアルコアボード初心者ガイド

今回は IoT プロジェクト入門に最適な ESP32-DevKitC(ESP32-WROOM-32D) を初心者向けにわかりやすく解説します。

「マイコンボードを買ったけど何から始めればいいかわからない」という方でも、この記事を読めば 開発環境のセットアップ → サンプルプログラム動作確認 → WiFi 接続 → センサー連携 まで一通り体験できます。


📋 この記事でわかること

  • ESP32-DevKitC の主なスペックと特徴
  • Arduino IDE のセットアップ方法(ドライバ含む)
  • LED チカチカ(Lチカ)の動作確認コード
  • WiFi 接続プログラムの実装方法
  • デュアルコア(FreeRTOS)を使った並行処理
  • DHT11 温湿度センサーとの連携方法
  • つまずきやすいポイントのトラブルシューティング

ESP32-DevKitC とは?スペック早見表

ESP32-DevKitC は、中国の Espressif Systems 社が設計した ESP32 マイコンチップを搭載した開発ボード です。Arduino と互換性があり、単体で WiFi・Bluetooth 通信が行える点が大きな特徴です。今回紹介するモデルは USB Type-C 接続・CH340C シリアル変換チップ搭載・ESP32-WROOM-32D モジュール を採用しています。

項目 スペック
チップ ESP32-WROOM-32D
CPU Xtensa LX6 デュアルコア 240MHz
フラッシュメモリ 4MB
RAM 520KB SRAM
無線 WiFi 802.11 b/g/n(2.4GHz)+ Bluetooth 4.2 / BLE
USB コネクタ Type-C
シリアル変換 CH340C
GPIO ピン数 38 ピン(アナログ・PWM・I2C・SPI・UART 対応)
動作電圧 3.3V(USB 給電 5V 対応)
Arduino 互換 ○(Arduino IDE 対応)

💡 Raspberry Pi との違いは? Raspberry Pi は Linux が動くシングルボードコンピュータです。ESP32 はより小型・省電力で組み込み向けのマイコンボード。IoT センサーデバイスや電池駆動の小型機器に向いています。


開発環境のセットアップ

必要なもの

  • ESP32-DevKitC ボード
  • USB Type-C ケーブル(データ通信対応品。充電専用ケーブルは NG)
  • Windows / Mac パソコン

① Arduino IDE のインストール

  1. Arduino 公式サイト から Arduino IDE をダウンロードしてインストール
  2. 起動後、メニュー「ファイル」→「環境設定」を開く
  3. 「追加のボードマネージャのURL」欄に以下を貼り付けて OK: https://dl.espressif.com/dl/package_esp32_index.json
  4. 「ツール」→「ボード」→「ボードマネージャ」を開く
  5. 検索欄に「esp32」と入力 → Espressif Systems 製パッケージ をインストール

② CH340C ドライバのインストール

USB シリアル変換チップ CH340C のドライバが必要です。

⚠️ macOS Ventura 以降のユーザーへ ドライバインストール後、「システム設定」→「プライバシーとセキュリティ」でドライバの実行を許可する操作が必要な場合があります。


最初のプログラム:LED チカチカ(Lチカ)

動作確認の定番「Lチカ」です。ESP32-DevKitC には GPIO2 に内蔵 LED が接続されているため、外部 LED がなくてもすぐ試せます。

void setup() {
  // GPIO2 を出力モードに設定
  pinMode(2, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);  // LED オン
  delay(1000);            // 1秒待機
  digitalWrite(2, LOW);   // LED オフ
  delay(1000);            // 1秒待機
}

コード解説

  • setup() 関数:起動時に1回だけ実行。pinMode(2, OUTPUT) で GPIO2 を出力モードに設定します。
  • loop() 関数digitalWrite(2, HIGH) → LED 点灯、delay(1000) → 1秒待機、digitalWrite(2, LOW) → LED 消灯、という流れを繰り返します。

プログラムのアップロード手順

  1. 「ツール」→「ボード」→「ESP32 Arduino」→「ESP32 Dev Module」を選択
  2. 「ツール」→「シリアルポート」から ESP32 のポートを選択
  3. コンパイルボタン(✓)でエラーがないか確認
  4. アップロードボタン(→)でボードに書き込み

⚠️ 「Connecting...」で止まる場合 ボード上の「BOOT」ボタンを押しながらアップロードを開始すると成功することが多いです。書き込みが始まったらボタンを離してOKです。


WiFi 機能を使ってみよう

ESP32 最大の強みが WiFi 内蔵です。以下のコードで WiFi に接続し、取得した IP アドレスをシリアルモニタに表示します。

#include <WiFi.h>

const char* ssid     = "あなたのWiFi名";
const char* password = "WiFiのパスワード";

void setup() {
  Serial.begin(115200);
  delay(1000);

  Serial.println("WiFiに接続しています...");
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi接続完了!");
  Serial.print("IPアドレス: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // ここに追加処理を記述
}

コード解説

  • #include <WiFi.h>:ESP32 用の WiFi ライブラリを読み込みます。
  • WiFi.begin(ssid, password):SSID とパスワードで接続開始。実際のネットワーク情報に書き換えてください。
  • while (WiFi.status() != WL_CONNECTED):接続が完了するまでループで待機します。接続後、IP アドレスをシリアルモニタに表示します。

💡 5GHz WiFi には接続できません ESP32 が対応しているのは 2.4GHz 帯のみ です。5GHz 専用ルーターには接続できないので注意しましょう。デュアルバンドルーターの場合は 2.4GHz 側の SSID を選んでください。


デュアルコア(FreeRTOS)を活用する

ESP32 は 240MHz のデュアルコア CPU を搭載しており、2つのコアで異なる処理を 同時並行 で実行できます。これを実現するのが Arduino ライブラリでも使える FreeRTOS(リアルタイム OS)です。

TaskHandle_t Task1;
TaskHandle_t Task2;

void setup() {
  Serial.begin(115200);

  // コア 0 で Task1 を実行
  xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, &Task1, 0);
  delay(500);
  // コア 1 で Task2 を実行
  xTaskCreatePinnedToCore(Task2code, "Task2", 10000, NULL, 1, &Task2, 1);
}

void Task1code(void* parameter) {
  for (;;) {
    Serial.print("Core 0 動作中, millis: ");
    Serial.println(millis());
    delay(1000);
  }
}

void Task2code(void* parameter) {
  for (;;) {
    Serial.print("Core 1 動作中, millis: ");
    Serial.println(millis());
    delay(700);
  }
}

void loop() {
  // タスクが実行中のため、loop() は空でOK
}

コード解説

  • xTaskCreatePinnedToCore():FreeRTOS のタスク作成関数。最後の引数(0 または 1)で実行するコアを指定できます。
  • for (;;):タスク内の無限ループ。Task1 は 1秒ごと、Task2 は 0.7秒ごとにメッセージを出力し、2つが独立して動いていることが確認できます。
  • 活用シーン:WiFi 通信(コア0)とセンサー読み取り(コア1)を同時実行する、といった複雑な IoT プロジェクトで威力を発揮します。

DHT11 温湿度センサーを接続する

ESP32 は多くのセンサーと簡単に連携できます。ここでは定番の DHT11 温湿度センサー を使った例を紹介します。

必要なもの

  • DHT11 温湿度センサー
  • 10kΩ抵抗(プルアップ用)
  • ジャンパーワイヤー

配線

DHT11 ピン ESP32 ピン 備考
VCC 3.3V
DATA GPIO4 10kΩ でプルアップ
GND GND

ライブラリのインストール

Arduino IDE の「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理」で「DHT sensor library」を検索してインストールしてください。

#include "DHT.h"

#define DHTPIN  4      // DHT11 のデータピン → GPIO4
#define DHTTYPE DHT11  // DHT11 センサーを使用

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  Serial.println("DHT11 テスト開始!");
  dht.begin();
}

void loop() {
  delay(2000);  // 最低 2秒間隔で読み取ること

  float h = dht.readHumidity();    // 湿度(%)
  float t = dht.readTemperature(); // 温度(℃)

  if (isnan(h) || isnan(t)) {
    Serial.println("❌ 読み取りに失敗しました");
    return;
  }

  Serial.print("湿度: ");   Serial.print(h);  Serial.print("%  ");
  Serial.print("温度: ");   Serial.print(t);  Serial.println("°C");
}

コード解説

  • delay(2000):DHT11 は頻繁に読み取ると不安定になるため、2秒以上の間隔 を推奨します。
  • isnan() チェック:センサー読み取り失敗時は NaN(非数値)が返ります。必ずエラーチェックを入れましょう。
  • より高精度が必要な場合:DHT11 の精度は ±2℃ / ±5%RH。より高精度な測定が必要なら DHT22(AM2302) を使用し、#define DHTTYPE DHT22 に変更してください。

トラブルシューティング

❓ ボードが PC に認識されない

  • USB ケーブルが データ通信対応 かどうか確認(充電専用ケーブルは NG)
  • CH340 ドライバが正しくインストールされているか確認
  • 別の USB ポートを試す

❓ アップロードが「Connecting...」で止まる

  • アップロード開始と同時に BOOT ボタンを数秒押し続ける
  • EN ボタンでリセット後に再試行
  • 「ツール」でボード設定とシリアルポートが正しく選択されているか確認

❓ WiFi に接続できない

  • SSID とパスワードのタイポがないか確認(コピー貼り付けが確実)
  • WiFi ルーターが 2.4GHz 帯 かどうか確認(ESP32 は 5GHz 非対応)
  • ルーターと ESP32 の距離が近いか確認

❓ DHT11 が NaN を返す

  • 10kΩ プルアップ抵抗が正しく接続されているか確認
  • 読み取り間隔が 2秒未満になっていないか確認
  • 電源が 3.3V に正しく接続されているか確認

次のステップ

ESP32 の基本を押さえたら、以下のプロジェクトに挑戦してみましょう。

  • 🌐 Web サーバーの構築:ESP32 をアクセスポイントとして動作させ、センサーデータをブラウザに表示する IoT ダッシュボード。
  • 📡 MQTT 通信:MQTT プロトコルで AWS IoT や Mosquitto サーバーと連携。クラウドへのデータ送信を体験。
  • 😴 ディープスリープ:バッテリー駆動を想定した省電力設計。定期的にセンサーを読み取りスリープする低消費電力デバイスを作る。
  • 📱 Bluetooth 連携:スマートフォンアプリから ESP32 を操作。BLE(Bluetooth Low Energy)を使った機器制御。

まとめ

この記事では、ESP32-DevKitC を使った以下の内容を解説しました。

  • ✅ ESP32 のスペックと特徴(デュアルコア・WiFi・Bluetooth)
  • ✅ Arduino IDE と CH340 ドライバのセットアップ
  • ✅ LED チカチカで動作確認
  • ✅ WiFi 接続プログラム
  • ✅ FreeRTOS を使ったデュアルコア並行処理
  • ✅ DHT11 センサーとの連携
  • ✅ よくあるトラブルの解決方法

ESP32-DevKitC は、手頃な価格でありながら WiFi・Bluetooth・デュアルコアを一体化した 非常にコストパフォーマンスの高いマイコンボードです。Arduino の豊富なライブラリ資産をそのまま活用できる点も魅力で、初心者から上級者まで幅広く使われています。

まずは Lチカと WiFi 接続から試してみて、徐々に IoT プロジェクトの規模を広げていきましょう!


📌 記事が参考になったら、はてなブックマークや SNS でのシェアをお願いします!質問・感想はコメント欄へどうぞ。次回の記事もお楽しみに!