ESP32は、Wi-FiとBluetoothを1チップに内蔵した低価格なマイコンで、温湿度センサーの値をスマホやクラウドへ飛ばすようなIoT機器を数百円台のハードウェアから自作できる点が最大の魅力です。本記事では、ESP32開発ボードとBME280センサーを使い、「室内の温度・湿度を測ってWi-Fi経由でブラウザに表示する」ところまでを、MicroPythonとArduino IDEの両方の手順で解説します。前回のラズベリー・パイ Pico 2で始めるマイコン入門がマイコン単体のLチカ入門だったのに対し、本記事は「ネットにつながるセンサー機器を1台完成させる」実践編です。
ESP32とは?2026年のラインナップと選び方
ESP32はEspressif Systems(楽鑫科技)が開発するSoC(System on a Chip)シリーズの総称です。初代ESP32はTensilica Xtensa LX6のデュアルコアで登場しましたが、その後ラインナップが大きく広がりました。2026年時点で入門者が手に取りやすい主な系統は次のとおりです。
- ESP32(無印):Xtensaデュアルコア、Wi-Fi 4(802.11 b/g/n)+Bluetooth Classic/BLE。情報量が最も多く、入門の定番。
- ESP32-S3:Xtensaデュアルコア+ベクトル演算命令を備え、TinyMLなどエッジAI用途で人気。USB OTGを内蔵。
- ESP32-C3 / C6:RISC-Vコアを採用したシングルコア系。とくにESP32-C6はWi-Fi 6(802.11ax)とThread/Zigbeeに対応し、Matter対応のスマートホーム機器に向く。
RISC-Vの採用が広がっている背景は、RISC-Vが世界市場シェア25%を突破した動向とも重なります。最初の1枚としては、作例と日本語情報が豊富なESP32-S3 または ESP32(無印)搭載の開発ボードを選ぶと、つまずいたときに解決策を見つけやすいでしょう。
この記事で用意するもの
本記事の温湿度モニターを作るには、次のパーツがあれば十分です。いずれも数百円〜千円台で入手できます。
- ESP32開発ボード(ESP32-DevKitC、ESP32-S3-DevKitCなど。USB Type-C接続のものが扱いやすい)
- 温湿度センサー BME280(温度・湿度・気圧を1つで測れるI2C接続モジュール。温湿度のみのDHT22でも可)
- ブレッドボードとジャンパーワイヤ
- USBケーブル(データ通信対応のもの。充電専用ケーブルでは書き込めない点に注意)
センサーの実装をより深く学びたい場合は、気圧センサーの実装を扱ったBosch BMP390/BMP280気圧センサ完全実装ガイドも参考になります。BME280はBMP280に湿度計を加えた上位互換のセンサーで、配線と考え方はほぼ共通です。
開発環境の選択:Arduino IDE か MicroPython か
ESP32の開発方法は大きく2つあります。どちらもESP32公式(Espressif)が土台を提供しており、初心者はどちらから入っても構いません。
1. MicroPython:Pythonの文法でマイコンを動かせる処理系です。コンパイル不要で、書いてすぐ実行できるため学習の反復が速いのが利点です。2026年8月時点の安定版はv1.28.0(2026年4月6日リリース)で、公式サイトからESP32用ファームウェアを入手できます。
2. Arduino IDE(Arduino-ESP32コア):C/C++でスケッチを書く方式で、豊富なライブラリと作例が強みです。Arduino-ESP32コアの安定版はv3.3系(ESP-IDF v5.5ベース)で、次世代のv4.0系はESP-IDF v6.0を土台に開発が進んでいます。
本記事では、環境構築が軽く反復学習に向くMicroPythonを主軸に、同じことをArduino IDEで書く例も併記します。
【技適の確認】日本でESP32を電波を出して使うために
日本国内でWi-FiやBluetoothの電波を発射して使う無線機器は、電波法により技術基準適合証明(技適マーク)を受けた製品である必要があります。ESP32を購入する際は、技適取得済みのモジュール(例:ESP32-WROOM-32Eなど)を搭載したボードか、販売ページに技適対応の記載がある製品を選んでください。技適マークのないモジュールでWi-Fi/Bluetoothを動作させると電波法違反となるおそれがあります。これはESP32に限らず、海外製の無線マイコン全般に共通する重要な確認事項です。
【MicroPython編】ファーム書き込みからLチカまで
まずThonny(Python用の軽量IDE)を用意します。ThonnyにはESP32へファームウェアを書き込む機能が組み込まれているため、初心者はこれが最短です。手順は次のとおりです。
- Thonnyをインストールし、ESP32をUSBで接続する。
- Thonnyの「実行 > インタプリタの選択」でMicroPython(ESP32)を選び、「ファームウェアのインストール」から公式のv1.28.0を書き込む。
- 書き込み後、シェルに
>>>プロンプトが出れば準備完了。
動作確認としてオンボードLEDを点滅させます。次のコードをmain.pyとして保存します。
from machine import Pin
import time
led = Pin(2, Pin.OUT) # ボードによりLEDのGPIO番号は異なる
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
LEDが点滅すれば、ESP32上でPythonが動く環境が整ったことになります。
【実践】BME280で温湿度を読む
BME280はI2Cで接続します。配線は「VCC→3V3」「GND→GND」「SCL→GPIO22」「SDA→GPIO21」が基本形です(ESP32無印の既定I2Cピン)。MicroPython用のBME280ライブラリ(bme280.py)をボードに保存したうえで、次のように読み出します。
from machine import Pin, I2C
import bme280
import time
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
sensor = bme280.BME280(i2c=i2c)
while True:
t, p, h = sensor.read_compensated_data()
print("温度: {:.1f}C 湿度: {:.1f}%".format(t/100, h/1024))
time.sleep(2)
シェルに2秒ごとの温湿度が表示されれば成功です。センサーが見つからない場合は、i2c.scan()でアドレス(BME280は0x76または0x77)が検出できるか確認します。
【実践】Wi-Fiにつないでブラウザに表示する
最後に、測定値をWi-Fi経由でブラウザに表示します。ESP32自身を簡易Webサーバにし、同じネットワーク内のスマホやPCからアクセスできるようにします。
import network, socket, bme280
from machine import Pin, I2C
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID", "PASSWORD") # 自宅Wi-Fiに置き換える
while not wlan.isconnected():
pass
print("IP:", wlan.ifconfig()[0])
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
sensor = bme280.BME280(i2c=i2c)
s = socket.socket()
s.bind(("", 80)); s.listen(1)
while True:
conn, _ = s.accept()
conn.recv(1024)
t, p, h = sensor.read_compensated_data()
body = "<h1>室内モニター</h1><p>温度 {:.1f}C / 湿度 {:.1f}%</p>".format(t/100, h/1024)
conn.send("HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n")
conn.send(body)
conn.close()
実行後にシリアル出力へ表示されたIPアドレス(例:192.168.1.42)へ、同じWi-Fiにつないだブラウザからアクセスすると、温湿度がページに表示されます。ここまでで「ネットにつながるセンサー機器」が1台完成したことになります。あとは測定値をクラウドサービスへ送れば、外出先からのモニタリングやグラフ化にも発展できます。
Arduino IDE(C/C++)で書く場合
同じ処理はArduino-ESP32コアでも書けます。ボードマネージャに「esp32 by Espressif Systems」(v3.3系)を追加し、Adafruit BME280ライブラリとWiFi.hを使います。骨格は次のとおりです。
#include <WiFi.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "PASSWORD");
while (WiFi.status() != WL_CONNECTED) delay(500);
Serial.println(WiFi.localIP());
bme.begin(0x76);
}
void loop() {
Serial.printf("温度 %.1fC 湿度 %.1f%%\n",
bme.readTemperature(), bme.readHumidity());
delay(2000);
}
MicroPythonが「速く試せる」のに対し、Arduino/C++は「動作が軽く、既存ライブラリが豊富」という違いがあります。プロトタイピングはMicroPython、消費電力や応答性を詰める段階でC/C++、という使い分けが実務では一般的です。
次のステップ:センサー機器からエッジAIへ
温湿度モニターが動いたら、次はESP32-S3などを使い、センサーデータをその場で判定するエッジAI(TinyML)へ進むと世界が広がります。「異常な温度上昇を検知したら通知する」といった単純なしきい値判定から、機械学習モデルによる異常検知まで、ESP32クラスのマイコンでも実装できます。詳しくはエッジAI・TinyML完全解説で扱っています。
よくある質問(FAQ)
Q. ESP32を使うのに技適は本当に必要ですか?
A. 日本国内でWi-Fi/Bluetoothの電波を発射して使う場合、技適マークのある製品を使う必要があります。学習・購入時は技適取得済みモジュール搭載ボードを選ぶのが安全です。
Q. ラズベリー・パイ PicoとESP32はどちらが良いですか?
A. 無線機能が要るならESP32、無線が不要でシンプルなマイコン学習ならPicoが向きます。Wi-Fi付きのPico 2 Wという選択肢もあります。用途で選び分けるのが基本です。
Q. 初心者は最初にどのボードを買うべきですか?
A. 日本語の作例が豊富なESP32(無印)またはESP32-S3の開発ボードが無難です。センサーはBME280が「温度・湿度・気圧」を1つでまかなえて入門に最適です。
まとめ
ESP32を使えば、温湿度センサーの値をWi-Fi経由でブラウザに表示するIoT機器を、数百円台のハードウェアと無料の開発環境だけで自作できます。MicroPython(v1.28.0)なら書いてすぐ試せ、Arduino-ESP32コア(v3.3系)なら豊富なライブラリを活用できます。まずは1台完成させ、そこからクラウド連携やエッジAIへと段階的に広げていくのが、遠回りに見えて最短の学習ルートです。日本で使う際は技適の確認を忘れないようにしてください。
📚 ESP32・IoT電子工作をさらに深く学ぶ書籍
書名・出版社・発行年は国立国会図書館サーチで確認しています
※本ボックスはアフィリエイト広告(Amazonアソシエイト・楽天アフィリエイト)を含みます。
🛠️ この記事で使う機材(Amazonで探す)
※型番・在庫は変動します。検索結果から技適対応品を選んでください。Amazonアソシエイトの広告を含みます。
※本記事にはアフィリエイト広告(Amazonアソシエイト・楽天アフィリエイト)を含みます。価格・仕様・在庫は変動する場合があります。技術情報は各公式ドキュメント(Espressif/MicroPython)に基づいて記載しています。




