今回は 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 のインストール
- Arduino 公式サイト から Arduino IDE をダウンロードしてインストール
- 起動後、メニュー「ファイル」→「環境設定」を開く
- 「追加のボードマネージャのURL」欄に以下を貼り付けて OK:
https://dl.espressif.com/dl/package_esp32_index.json - 「ツール」→「ボード」→「ボードマネージャ」を開く
- 検索欄に「esp32」と入力 → Espressif Systems 製パッケージ をインストール
② CH340C ドライバのインストール
USB シリアル変換チップ CH340C のドライバが必要です。
- Windows:CH340 ドライバ(Windows 版)
- Mac:CH340 ドライバ(Mac 版)
⚠️ 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 消灯、という流れを繰り返します。
プログラムのアップロード手順
- 「ツール」→「ボード」→「ESP32 Arduino」→「ESP32 Dev Module」を選択
- 「ツール」→「シリアルポート」から ESP32 のポートを選択
- コンパイルボタン(✓)でエラーがないか確認
- アップロードボタン(→)でボードに書き込み
⚠️ 「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 でのシェアをお願いします!質問・感想はコメント欄へどうぞ。次回の記事もお楽しみに!
