52 projects

ESP32 Projects

The ESP32 is a dual-core microcontroller from Espressif with built-in Wi-Fi and Bluetooth. It runs at up to 240 MHz, offers far more memory and pins than an Arduino Uno and is still inexpensive. You program it in the Arduino IDE after adding the ESP32 board package, so most of what you learned on Arduino carries over with small changes.

These ESP32 projects are for anyone who wants to control devices from a phone, pull data from the internet or build a smart home system. Each IoT project, from a web server and Telegram alerts to a weather station, an NTP clock and sensor logging, includes a circuit diagram, commented code and a parts list.

How to get started: an ESP32 DevKit board, a USB cable that carries data and a breadboard are all you need. Get to know the board with the LED and Wi-Fi connection projects, then move on to web servers and sensors. Remember that ESP32 pins run at 3.3 V, so use a voltage divider or a level shifter when connecting modules that output 5 V.

The first 10 projects for beginners

Follow them in this order and each project adds one new skill on top of the last.

  1. 1ESP32でLEDを点滅ESP32でLEDを点滅ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。初級
  2. 2ESP32でボタンによるLED制御(押している間だけ点灯)ESP32でボタンによるLED制御(押している間だけ点灯)ボタンを押している間はLEDが点灯し、離すと消灯します。ESP32のデジタル入力ピンと内蔵プルアップ抵抗の使い方を学びます。INPUT_PULLUPモードを使うため、外付け抵抗は不要です。初級
  3. 3ESP32でボタンによるLED制御(トグル)ESP32でボタンによるLED制御(トグル)ボタンを押すたびにLEDの状態が切り替わり、点灯中なら消灯し、消灯中なら点灯します。基本的なトグル動作です。チャタリング対策でボタンの機械的なノイズを除去し、1回の操作で1回だけ切り替わるようにします。初級
  4. 4ESP32の内蔵LEDを点滅ESP32の内蔵LEDを点滅ESP32 DevKit V1に内蔵された青色LEDを点滅させます。外付け部品は不要です!ESP32を購入したら、最初に試すプロジェクトです。GPIO 2が内蔵LEDにつながっています。初級
  5. 5ESP32の信号機ESP32の信号機赤・黄・緑の3個のLEDで、実際の信号機を再現します。赤は長く、黄は短く、緑は長く点灯させ、実際の信号機に近いタイミングで動かします。GPIOを順番に制御する基本例です。初級
  6. 6ESP32の流れるLEDESP32の流れるLED6個のLEDを左から右へ、右から左へ順番に点灯させます(Knight Rider風)。forループと配列を使う基本例で、進む向きを切り替える仕組みを学べます。初級
  7. 7ESP32でパトカーの点滅ライトを再現ESP32でパトカーの点滅ライトを再現赤と青のLEDグループを高速で点滅させ、パトカーのライトを再現します。各グループを2個のLEDにすると、より迫力のある演出になります。高速な点灯・消灯パターンとグループ制御の例です。初級
  8. 8ESP32のPWMでLEDをフェードESP32のPWMでLEDをフェードLEDの明るさを0から最大へ、最大から0へと滑らかに変化させます。Arduinoと同じようにanalogWrite()でPWMを制御します。ESP32 Arduino Core 3.0+では同じ構文がそのまま使えます。ピンの定義とpinMode、analogWriteだけで実現できます。初級
  9. 9ESP32でRGB LEDを制御ESP32でRGB LEDを制御3個の個別のLEDの代わりに、1個のRGB LEDで無数の色を作ります。Arduinoと同じようにanalogWrite()でR/G/Bの値を調整し、虹色に変化させます。赤と緑を混ぜると黄色になるなど、色の仕組みを実際に確認できます。初級
  10. 10ESP32とLDRで作るナイトライトESP32とLDRで作るナイトライト暗くなるとLEDが自動で点灯し、明るくなると消灯するナイトライトです。LDRセンサーモジュールのD0(デジタル出力)ピンを使います。モジュール上の小さな可変抵抗で暗さのしきい値を設定すると、モジュール自体がHIGH/LOWを出力します。ESP32はdigitalRead()でこの信号を読み取るだけなので、コードはとてもシンプルです。初級

Projects by difficulty

Beginner13 projects

ESP32でLEDを点滅
#103初級

ESP32でLEDを点滅

ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。

4.7(37)
99
ESP32でボタンによるLED制御(押している間だけ点灯)
#104初級

ESP32でボタンによるLED制御(押している間だけ点灯)

ボタンを押している間はLEDが点灯し、離すと消灯します。ESP32のデジタル入力ピンと内蔵プルアップ抵抗の使い方を学びます。INPUT_PULLUPモードを使うため、外付け抵抗は不要です。

4.6(36)
55
ESP32でボタンによるLED制御(トグル)
#105初級

ESP32でボタンによるLED制御(トグル)

ボタンを押すたびにLEDの状態が切り替わり、点灯中なら消灯し、消灯中なら点灯します。基本的なトグル動作です。チャタリング対策でボタンの機械的なノイズを除去し、1回の操作で1回だけ切り替わるようにします。

4.6(39)
57
ESP32の内蔵LEDを点滅
#106初級

ESP32の内蔵LEDを点滅

ESP32 DevKit V1に内蔵された青色LEDを点滅させます。外付け部品は不要です!ESP32を購入したら、最初に試すプロジェクトです。GPIO 2が内蔵LEDにつながっています。

4.8(29)
53
ESP32の信号機
#107初級

ESP32の信号機

赤・黄・緑の3個のLEDで、実際の信号機を再現します。赤は長く、黄は短く、緑は長く点灯させ、実際の信号機に近いタイミングで動かします。GPIOを順番に制御する基本例です。

4.4(21)
44
ESP32の流れるLED
#108初級
プレミアム

ESP32の流れるLED

6個のLEDを左から右へ、右から左へ順番に点灯させます(Knight Rider風)。forループと配列を使う基本例で、進む向きを切り替える仕組みを学べます。

4.5(19)
32
ESP32でパトカーの点滅ライトを再現
#109初級
プレミアム

ESP32でパトカーの点滅ライトを再現

赤と青のLEDグループを高速で点滅させ、パトカーのライトを再現します。各グループを2個のLEDにすると、より迫力のある演出になります。高速な点灯・消灯パターンとグループ制御の例です。

4.6(21)
36
ESP32のPWMでLEDをフェード
#110初級
プレミアム

ESP32のPWMでLEDをフェード

LEDの明るさを0から最大へ、最大から0へと滑らかに変化させます。Arduinoと同じようにanalogWrite()でPWMを制御します。ESP32 Arduino Core 3.0+では同じ構文がそのまま使えます。ピンの定義とpinMode、analogWriteだけで実現できます。

4.8(36)
54
ESP32でRGB LEDを制御
#111初級
プレミアム

ESP32でRGB LEDを制御

3個の個別のLEDの代わりに、1個のRGB LEDで無数の色を作ります。Arduinoと同じようにanalogWrite()でR/G/Bの値を調整し、虹色に変化させます。赤と緑を混ぜると黄色になるなど、色の仕組みを実際に確認できます。

4.6(29)
51
ESP32とLDRで作るナイトライト
#112初級
プレミアム

ESP32とLDRで作るナイトライト

暗くなるとLEDが自動で点灯し、明るくなると消灯するナイトライトです。LDRセンサーモジュールのD0(デジタル出力)ピンを使います。モジュール上の小さな可変抵抗で暗さのしきい値を設定すると、モジュール自体がHIGH/LOWを出力します。ESP32はdigitalRead()でこの信号を読み取るだけなので、コードはとてもシンプルです。

4.6(17)
30
ESP32とLDRモジュールで光の強さを読み取る
#113初級

ESP32とLDRモジュールで光の強さを読み取る

LDRモジュールの生のADC値と、暗い状態・明るい状態の基準値から計算した相対的な明るさの割合を、シリアルモニタでリアルタイムに確認します。この割合はルクスの測定値ではありません。モジュールの校正の仕組みを学べます。しきい値の決定に使うため、プロジェクト10の前に取り組むのが適しています。

4.6(36)
55
ESP32とブザーでメロディーを演奏
#114初級
プレミアム

ESP32とブザーでメロディーを演奏

パッシブブザーで簡単なメロディー「きらきら星」を演奏します。Arduinoと同じようにtone()とnoTone()で音を鳴らします。ESP32 Arduino Core 3.0+でも同じ構文が使えます。パッシブブザーを使用してください。アクティブブザーではメロディーを演奏できません。

4.8(30)
55
ESP32ポモドーロタイマー(NeoPixelリング+ボタン+ブザー)
#167初級
プレミアム

ESP32ポモドーロタイマー(NeoPixelリング+ボタン+ブザー)

勉強中にスマートフォンを見ずに済む、光る卓上タイマーです!**24個のLEDを備えたNeoPixelリング**が、時計の文字盤のように残り時間を表示します。作業中は**赤**、短い休憩は**緑**、4回の作業ごとに取る長い休憩は**青**です。最後の5秒間はリングが点滅し、**パッシブブザー**がカチカチと鳴ります。各時間が終わると虹色の光で知らせます。1つの**ボタン**で開始、一時停止、リセットができ、`delay()`を一切使わずに**ESP32**で動作します。

0.0(0)

Intermediate21 projects

ESP32と可変抵抗でLEDの明るさを制御(アナログ→PWM)
#115中級
プレミアム

ESP32と可変抵抗でLEDの明るさを制御(アナログ→PWM)

可変抵抗を使ってLEDの明るさをアナログ操作で調整します。ESP32のADCピンで可変抵抗からの0-3.3Vの電圧を読み取り、PWM(パルス幅変調)信号に変換してLEDに出力します。可変抵抗を回すと、LEDが徐々に明るくなったり暗くなったりします。Arduino Core 3.0+では`analogWrite()`を直接使えます。ESP32-S2/S3ではADCの分解能を12ビットに固定します。

4.5(19)
32
ESP32とHC-SR04で作る超音波距離計
#116中級

ESP32とHC-SR04で作る超音波距離計

HC-SR04超音波センサーは、発した音波が物体に反射して戻るまでの時間(Time of Flight)を測定して距離を計算します。このプロジェクトでは、ESP32からセンサーのTRIGピンに10マイクロ秒のパルスを送り、ECHOピンからの反射波の持続時間を`pulseIn()`で読み取ります。計算した距離をcm単位で16x2 I2C LCDに表示します。HC-SR04は5Vで動作するため、ECHOピンには**分圧回路**が必須です。分圧しないとESP32の3.3V GPIOが破損します。

4.9(28)
44
ESP32 DHT22温湿度計(LCDディスプレイ付き)
#117中級

ESP32 DHT22温湿度計(LCDディスプレイ付き)

DHT22センサーで周囲の温度と湿度を測定し、16x2 I2C LCDにリアルタイムで表示するプロジェクトです。Adafruit DHTライブラリを使い、1本の信号線を使うプロトコルでセンサーからデータを読み取ります。IoT気象観測装置やスマートホームの自動化、温室の環境監視システムの基礎となります。ESP32のGPIO 4ピンを介してDHT22と通信します。

4.8(38)
55
ESP32サーボモーター(ポテンショメーター制御)
#118中級
プレミアム

ESP32サーボモーター(ポテンショメーター制御)

このプロジェクトでは、ポテンショメーターでSG90サーボモーターを制御します。ポテンショメーターから読み取ったアナログ値を0~180度の範囲に変換し、サーボの角度を調整します。ESP32Servoライブラリは、ESP32の出力に対応した適切なGPIOでサーボ信号を生成します。このプロジェクトではGPIO 18を使います。ロボットアームやカメラ用ジンバル、自動ドアの機構に使われる基本的な制御方法です。

4.3(29)
42
ESP32 I2C LCDディスプレイ(16x2)
#119中級
プレミアム

ESP32 I2C LCDディスプレイ(16x2)

このプロジェクトでは、16x2文字のLCDをI2CでESP32に接続して文字を表示します。I2Cならデータ用の2本のピン(SDAとSCL)だけで制御でき、従来のパラレル接続のように6本以上のピンを使わずに済みます。コードでは1行目に固定メッセージ、2行目に毎秒増えるカウンターを表示します。また、起動時にI2Cスキャナーを実行し、ディスプレイのアドレス(通常は0x27または0x3F)をシリアルモニタに表示します。

4.9(23)
40
ESP32とDS1307 RTCのデジタル時計(I2C + LCD)
#120中級
プレミアム

ESP32とDS1307 RTCのデジタル時計(I2C + LCD)

このプロジェクトでは、DS1307リアルタイムクロック(RTC)モジュールを使って16x2 I2C LCDに時刻と日付を表示します。DS1307は電池でバックアップされるRTCで、ESP32の電源を切っても時刻を保持します。両方のモジュールが同じI2Cバス(SDA/SCL)を共有するため、2本の信号線だけで複数の機器を制御する方法を学べます。I2C通信プロトコルやRTCモジュールの動作原理、LCDの表示データを随時更新する方法を実践的に学ぶプロジェクトです。

4.6(26)
40
ESP32 PIR人感センサーによる自動照明
#121中級
プレミアム

ESP32 PIR人感センサーによる自動照明

このプロジェクトでは、HC-SR501 PIR人感センサーで部屋に入った人を検知し、LEDを自動で点灯させます。`millis()`で点灯時間を管理します。センサーの値がHIGHの間は最後に動きを検知した時刻を更新し、最後にHIGHを読み取ってから少なくとも10秒後にLEDを消灯します。現在のコードは各ループで`delay(50)`により50 ms待機するため、完全にノンブロッキングではありません。階段や廊下、浴室、戸棚内の照明などに応用できます。

4.4(24)
38
ESP32 MQ-2ガス・煙検知アラーム
#122中級

ESP32 MQ-2ガス・煙検知アラーム

このプロジェクトでは、MQ-2ガスセンサーモジュールで可燃性ガス(LPG、メタン、プロパン)と煙を検知し、パッシブブザーでサイレンのような警報音を鳴らします。センサーのしきい値判定用デジタル出力(DO)をESP32のGPIO 4ピンに接続します。ガスや煙がしきい値を超えるとDOがLOWになり、アラームが作動します。感度はモジュール上のポテンショメーターで調整します。パッシブブザーを`tone()`で駆動し、2つの周波数を交互に切り替えてサイレン音を作ります。

4.7(28)
41
ESP32 RFID RC522カードリーダー(LCD付き)
#123中級

ESP32 RFID RC522カードリーダー(LCD付き)

このプロジェクトでは、MFRC522を搭載したRC522 RFIDモジュールをSPIでESP32に接続し、カードやタグのUIDを読み取ります。ドアロック、会員システム、入退室管理などの基礎となる仕組みです。読み取ったUIDはLCDディスプレイに表示します。このバージョンでは、許可されたカードのリストとの照合は行いません。**注意:**RC522は**3.3V**専用です。5Vを供給するとモジュールが焼損します!

4.8(21)
39
ESP32とIR受信機によるリモコン操作(LCDディスプレイ付き)
#124中級
プレミアム

ESP32とIR受信機によるリモコン操作(LCDディスプレイ付き)

このプロジェクトでは、TSOP4838 IR受信モジュールを使い、テレビやエアコンなどの赤外線リモコンが送る信号をESP32で受信します。IRremote v4ライブラリでデコードした0以外の生コードを、I2C LCDディスプレイに表示します。このサンプルはリモコンのコードを調べるためのもので、リモコンによるLEDの点灯・消灯や明るさの調整は含みません。古いリモコンをスマートホームの操作に活用するための出発点になります。

4.7(19)
30
ESP32 TM1637 4桁7セグメントディスプレイ
#125中級
プレミアム

ESP32 TM1637 4桁7セグメントディスプレイ

TM1637ドライバーを搭載した4桁7セグメントディスプレイモジュールをESP32で制御します。2本のGPIOピン(CLKとDIO)だけで0~9999のカウンターを動かし、明るさを調整し、中央のコロン(`:`)を時計のように表示します。TM1637Displayライブラリを使えば、数値、16進数、セグメント、文字列を簡単に扱えます。

4.7(20)
32
ESP32 WS2812B NeoPixel LEDテープの制御
#126中級
プレミアム

ESP32 WS2812B NeoPixel LEDテープの制御

WS2812B(NeoPixel)は、1本のデータピンで連結したLEDを個別に制御できるスマートなRGB LEDです。このプロジェクトでは、8個のLEDを備えたWS2812BテープをAdafruit_NeoPixelライブラリで制御し、滑らかな虹色のアニメーションを作ります。ESP32の3.3VロジックレベルはほとんどのWS2812Bのロットで問題なく動作しますが、不安定な場合に備え、470Ωの直列抵抗と1000µFのコンデンサを使う対策も紹介します。アニメーションは、HSV色空間の色相(hue)をずらして作ります。

4.9(19)
30
ESP32の動体検知アラーム
#140中級
プレミアム

ESP32の動体検知アラーム

ESP32とPIRセンサーを使い、動きを検知するとブザーで警報を鳴らすプロジェクトです。シンプルで低コストなセキュリティシステムを作れます。 (画像はイメージです。文章の説明に従って接続してください。)

4.4(10)
15
ESP32ロボットの目(OLEDディスプレイ+TTP223タッチセンサー)
#166中級
プレミアム

ESP32ロボットの目(OLEDディスプレイ+TTP223タッチセンサー)

感情を表現する卓上ロボットを作ります!**ESP32**が**0.96インチOLED**に2つの目を描き、自動で周りを見たり、まばたきしたりします。**TTP223タッチセンサー**に触れると喜び、長く触れると目がハートになり、何度も続けて触れると怒り、20秒間何もしないと眠ります。**パッシブブザー**がそれぞれの気分に合った音を鳴らします。状態マシン、図形によるアニメーション、他の処理を止めない音の出力を1つのプロジェクトで学べます。

0.0(0)
ESP32のT-Rex Run恐竜ゲーム(OLEDディスプレイ+ボタン+ブザー)
#177中級
プレミアム

ESP32のT-Rex Run恐竜ゲーム(OLEDディスプレイ+ボタン+ブザー)

Chromeの「インターネット未接続」時の恐竜ゲームを机の上で楽しめます!**ESP32**が**0.96インチOLED**に走る恐竜を描きます。**ボタン**を押すとジャンプし、サボテンは次第に速くなります。スコアとハイスコアは画面の最上段に表示され、ハイスコアは**Preferences**でESP32のフラッシュメモリに保存されるため、電源が切れても残ります。ArduinoのOLED T-Rex RunプロジェクトのESP32版で、**パッシブブザー**がジャンプ、100点達成、衝突の効果音を鳴らします。

0.0(0)
ESP32で地震の揺れ検知アラーム(MPU-6050+OLEDディスプレイ+ブザー)
#180中級
プレミアム

ESP32で地震の揺れ検知アラーム(MPU-6050+OLEDディスプレイ+ブザー)

机が揺れると、このディスプレイがいち早く反応します!**ESP32**が**MPU-6050**加速度センサーで振動を測定し、**0.96インチOLED**に地震計のような波形をリアルタイムで描きながらスクロールします。揺れがしきい値を超えると**パッシブブザー**がサイレンを鳴らし、**赤いLED**が点滅します。ボタン1つで消音とリセットができます。アラームが作動するには、3回連続の測定でしきい値を超える必要があります。1回の測定だけの急な変化は除外されますが、1回の衝撃でも振動が十分長く続けば作動することがあります。学習用の揺れ測定器であり、公的な地震警報ではありません。

0.0(0)
ESP32で金価格・為替のリアルタイム表示(Wi-Fi+OLEDディスプレイ+ボタン)
#181中級
プレミアム

ESP32で金価格・為替のリアルタイム表示(Wi-Fi+OLEDディスプレイ+ボタン)

金1グラムの今の相場は?スマートフォンを確認する必要はありません!**ESP32**がWi-Fiに接続し、APIキー不要の無料JSONデータソースから**金1グラム**、**米ドル**、**ユーロ**の価格を取得して、**0.96インチOLED**に表示します。価格は60秒ごとに更新されます。**ボタン**でページを切り替え、長押しですぐに更新できます。インターネットが切断されても最後の値は画面に残り、`OFFLINE`と表示されます。

0.0(0)
ESP32で礼拝時刻時計(Wi-Fi+OLEDディスプレイ+ブザー)
#182中級
プレミアム

ESP32で礼拝時刻時計(Wi-Fi+OLEDディスプレイ+ブザー)

日没の礼拝まであと何分でしょうか?**ESP32**がインターネットから現在時刻を取得し、Diyanet方式で計算された地域の礼拝時刻を読み込みます。**0.96インチOLED**には、次の礼拝までの**カウントダウン**を大きく表示します。時刻になると**パッシブブザー**が短く穏やかなメロディーを鳴らします。**ボタン**を押すと今日の時刻一覧を表示し、長押しするとデモモードですぐに通知を試せます。

0.0(0)
ESP32の2人対戦連打レース(OLEDディスプレイ+ボタン2個+ブザー)
#192中級
プレミアム

ESP32の2人対戦連打レース(OLEDディスプレイ+ボタン2個+ブザー)

友達と10秒間の連打レースで対戦しましょう!2人とも自分の**ボタン**を押して準備し、3-2-1のカウントダウンが終わったら全力で連打します。**ESP32**が**0.96インチOLED**上で2本のバーを並べて競わせ、残り時間、両者のスコア、リードしているプレイヤーをリアルタイムに表示します。時間切れになると勝者と1秒あたりの連打数が表示され、最高スコアは**Preferences**で保存されます。**パッシブブザー**がプレイヤーごとに異なるクリック音や、ホイッスル音、ファンファーレを鳴らします。

0.0(0)
ESP32スロットマシンゲーム(OLEDディスプレイ+ボタン+ブザー)
#196中級
プレミアム

ESP32スロットマシンゲーム(OLEDディスプレイ+ボタン+ブザー)

レバーを引いてリールを回しましょう!この**ESP32**プロジェクトでは、チェリー、ベル、BAR、7などの絵柄が並ぶ3つのリールが**0.96インチOLED**上で回転し、本物のように減速します。操作は**ボタン**1個だけです。クレジットはすべて仮想で、実際のお金は使いません。目的は、運で勝敗が決まるゲームの仕組みである**確率**と乱数生成を学ぶことです。最初の2つのリールがそろうと、3つ目が長く回って期待を高めます。7-7-7ではJACKPOTのメロディーが鳴り、クレジットは**Preferences**で保存されます。

0.0(0)
ESP32ミニオルゴール(OLEDディスプレイ+ボタン3個+ブザー)
#198中級
プレミアム

ESP32ミニオルゴール(OLEDディスプレイ+ボタン3個+ブザー)

ボタン3個、ブザー1個、おなじみのメロディー5曲で、**ESP32**のポケットオルゴールを作ります!**0.96インチOLED**に曲一覧を表示し、前の曲、再生・一時停止、次の曲の**ボタン**で「歓喜の歌」「エリーゼのために」「ジングルベル」「ハッピーバースデー」「きらきら星」を選べます。再生中は音名が表示され、2オクターブの**ピアノ鍵盤**で対応するキーが光り、経過時間と進行状況バーも表示されます。すべてパブリックドメインのメロディーで、**パッシブブザー**が演奏します。

0.0(0)

Advanced18 projects

ESP32 Wi-Fi STA接続(LCDディスプレイ付き)
#127上級

ESP32 Wi-Fi STA接続(LCDディスプレイ付き)

このプロジェクトでは、ESP32をステーション(STA)モードで家庭のWi-Fiネットワークに接続し、安全で障害に強い接続を実現します。SSIDとパスワードを別の`secrets.h`ファイルに保存してGitへの流出を防ぎ、自動再接続の仕組みを実装します。RSSIによる信号強度とIPアドレスはI2C LCDディスプレイに表示します。内蔵LEDは状態表示に使います。実運用を想定した接続管理の仕組みです。

4.4(21)
33
ESP32とNTPでインターネットから正確な時刻を取得
#128上級
プレミアム

ESP32とNTPでインターネットから正確な時刻を取得

ESP32をWi-Fiに接続し、NTP(Network Time Protocol)サーバーからミリ秒精度の現在時刻を取得します。`configTzTime()`関数でタイムゾーンを自動適用し、夏時間を採用する国ではPOSIX TZ文字列で夏時間と標準時間の切り替えも自動管理します。時刻はシリアルモニタと、必要に応じて接続するI2C LCDに表示します。`configTzTime()`がSNTPサービスを開始し、ネットワークにアクセスできる間は定期的に再同期します。

4.5(13)
21
ESP32非同期Webサーバー(LCDにIPアドレスを表示)
#129上級

ESP32非同期Webサーバー(LCDにIPアドレスを表示)

このプロジェクトでは、ESP32を同じWi-Fiネットワーク上のスマートフォンやパソコンから操作できる**非同期Webサーバー**にします。ESPAsyncWebServerライブラリを使うと、従来の`WebServer.h`のように1つのリクエストで処理がブロックされず、複数のリクエストを同時に処理できます。ブラウザーでESP32のIPアドレスを開き、ON/OFFボタン(`/on`と`/off`のルート)を押すと、GPIO 5に接続したLEDを点灯・消灯できます。

4.8(16)
26
ESP32 WebSocketカウンター(2つのボタン+LCD+Webリアルタイム表示)
#130上級
プレミアム

ESP32 WebSocketカウンター(2つのボタン+LCD+Webリアルタイム表示)

このプロジェクトでは、ESP32に接続した2つのボタンでカウンターの値を変更します(GPIO 5で増加、GPIO 4で減少)。値は16x2 I2C LCDに即座に反映され、ESPAsyncWebServerのWebSocket機能により、接続中のすべてのブラウザーでもページを再読み込みせずに更新されます。HTTPポーリングの代わりに1つの接続を維持し、ESP32がws.textAll()で新しい値を全員に送信します。

4.5(14)
23
ESP32 mDNS:bluegrays-esp.localでデバイスにアクセス(LCD付き)
#131上級
プレミアム

ESP32 mDNS:bluegrays-esp.localでデバイスにアクセス(LCD付き)

このプロジェクトでは、ESP32にmDNS(Multicast DNS)サービスを追加し、IPアドレスの代わりに`bluegrays-esp.local`のような覚えやすいホスト名でアクセスできるようにします。DHCPで割り当てられるIPアドレスが変わっても、同じ名前でデバイスにアクセスできます。小さなWebサーバーも動かし、ブラウザーで`http://bluegrays-esp.local/`を開いてLEDを操作します。I2C LCDディスプレイにはホスト名、IPアドレス、LEDの状態をトルコ語と英語で表示します。iOS、macOS、LinuxはmDNSに標準対応しています。

4.8(14)
23
ESP32 OTA更新:無線でファームウェアを書き込み(LCD付き)
#132上級
プレミアム

ESP32 OTA更新:無線でファームウェアを書き込み(LCD付き)

このプロジェクトでは、USBケーブルを使わず、Wi-Fi経由でESP32に新しいファームウェアを書き込む方法を学びます。`ArduinoOTA`ライブラリを使うと、ESP32がネットワーク上で検出され、Arduino IDEの「ネットワークポート」タブに`bluegrays-ota`として自動表示されます。初回はUSBで書き込み、その後の更新はすべて無線で行えます。設置済みのデバイスにとって非常に重要な機能です。I2C LCDディスプレイには、Wi-Fiの状態、IPアドレス、ホスト名、OTA書き込みの進捗率、エラーメッセージをトルコ語と英語で表示します。

4.6(14)
22
ESP32 HTTPClient+天気API(LCD付き)
#133上級
プレミアム

ESP32 HTTPClient+天気API(LCD付き)

このプロジェクトでは、ESP32で`HTTPClient.h`を使い、インターネット経由で天気API(wttr.in)をREST APIとして呼び出します。返されたJSONレスポンスをArduinoJson v7で解析し、都市名、気温、湿度、天気、風の情報をI2C LCDディスプレイにトルコ語と英語で表示します。wttr.inは無料で、APIキーも不要です。都市名を入力するだけで、その都市の現在の天気を取得できます。30分ごとに自動更新し、表示画面ごとに異なるLEDの光り方で状態を知らせます。

4.7(13)
20
ESP32 HTTPClient+天気API(SSD1306 OLED付き)
#134上級
プレミアム

ESP32 HTTPClient+天気API(SSD1306 OLED付き)

このプロジェクトでは、ESP32で`HTTPClient.h`を使い、インターネット経由で天気API(wttr.in)をREST APIとして呼び出します。前のI2C LCD版とは異なり、SSD1306 OLED(128×64)ディスプレイを使うため、大きな文字やベクターアイコンで、1つの画面に豊かな表現ができます。天気を表す7種類のベクターアイコン(晴れ、晴れ時々曇り、曇り、雨、雪、嵐、霧)を実行時に描画するので、ビットマップファイルは不要です。気温は中央に3倍の大きさの文字で表示します。

4.3(10)
19
ESP32のディープスリープで節電(OLED + RTC RAMカウンター)
#135上級
プレミアム

ESP32のディープスリープで節電(OLED + RTC RAMカウンター)

ESP32のディープスリープモードは、CPUとほとんどの周辺機器を停止し、消費電流を約10 µAまで抑えます。電池で動くIoT機器に欠かせない機能です。このプロジェクトでは、タイマー(15秒)、外部ピン(EXT0、ボタンはGPIO 33)、タッチ(T0/GPIO 4)の3種類の復帰方法を使います。`RTC_DATA_ATTR`を付けた変数はディープスリープ中も保持され、起動回数、タイマーによる復帰回数、ボタンによる復帰回数を継続して記録できます。復帰するたびにSSD1306 OLEDディスプレイに復帰理由と回数を表示します。

4.3(10)
16
ESP32の礼拝ラカア数カウンター(HC-SR04 + SSD1306 OLED + ボタン2個)
#136上級
プレミアム

ESP32の礼拝ラカア数カウンター(HC-SR04 + SSD1306 OLED + ボタン2個)

礼拝中に何ラカア行ったか忘れてしまうことはありませんか?このプロジェクトでは、礼拝マットの横に置き、手を近づけると平伏の回数を数えるラカア数カウンターを作ります。HC-SR04超音波距離センサーで手の接近を検知し、SSD1306 OLEDディスプレイにラカア数を表示します。2個のボタンで2・3・4ラカアの選択とリセットができます。状態遷移による制御に2.5秒のデバウンス処理と手が離れたことを確認するアルゴリズムを組み合わせ、誤検知を防ぎます。同じ平伏を2回数えることはありません。

4.8(11)
14
ESP32のRFIDドアロック(RC522 + サーボモーター + OLED + ブザー + LED)
#137上級
プレミアム

ESP32のRFIDドアロック(RC522 + サーボモーター + OLED + ブザー + LED)

ESP32、RC522 RFIDモジュール、SG90サーボモーター、SSD1306 OLEDディスプレイ、アクティブブザー、LED2個を使ってスマートドアロックを作ります。カードを読み取ると、UIDをコード内に登録した許可済みカードの一覧と照合します。許可されたカードなら、サーボモーターを回して解錠し、緑色のLEDが点灯して短い音が2回鳴ります。5秒後に自動で施錠します。許可されていないカードでは赤色のLEDが点灯し、短い間隔で3回音を鳴らして警告し、読み取ったUIDをOLEDに表示します。実際のIoTセキュリティの仕組みを実践的に学べます。

4.8(9)
15
ESP32の調色ライト(可変抵抗3個 + RGB LED + OLED)
#138上級
プレミアム

ESP32の調色ライト(可変抵抗3個 + RGB LED + OLED)

ESP32と3個の可変抵抗で、好みの色を作れるスマート調色ライトです。赤・緑・青の可変抵抗を回すと、カソードコモンのRGB LEDの色がリアルタイムに変わります。SSD1306 OLEDディスプレイには、各色の0~255の値、色の強さを示すバー、#FF8040などのWeb用HEXカラーコードをリアルタイムで表示します。小さなプロ仕様のカラースタジオとして、RGBの色の仕組み、ADCによるアナログ値の読み取り、PWMによる明るさの制御、I2Cディスプレイの表示設計を1つのプロジェクトで学べます。

4.7(6)
10
ESP32のスマート植物水やりシステム
#139上級
プレミアム

ESP32のスマート植物水やりシステム

このプロジェクトでは、ESP32と土壌水分センサーを使った自動水やりシステムを作ります。センサーが土壌の水分量を継続的に測定し、設定したしきい値を下回ると、ESP32がリレーを作動させて給水ポンプを動かし、植物に水を与えます。土壌に十分な水分が行き渡ると、ポンプは自動で停止します。植物に定期的に水を与えながら、節水にも役立ちます。 _______________________________ 接続

4.7(10)
14
ESP32スマート照明(PIR + LDR + リレー + OLED)
#141上級
プレミアム

ESP32スマート照明(PIR + LDR + リレー + OLED)

ESP32で廊下やトイレ、食品庫の照明をスマート化します!PIRモーションセンサー、LDR光センサー、リレーモジュールを使い、「暗い場所で動きを検知すると点灯する」定番の仕組みを作ります。周囲が明るければ動きを検知しても点灯しないため、日中の無駄な電力消費を抑えられます。照明は30秒間点灯し、動きが続くとタイマーがリセットされて点灯時間が延びます。SSD1306 OLEDには大きな文字で状態(ON / DAYTIME / WAITING)とカウントダウンを表示します。

4.3(6)
11
ESP32駐車センサー(HC-SR04 + 5連LEDバー + ブザー + OLED)
#142上級
プレミアム

ESP32駐車センサー(HC-SR04 + 5連LEDバー + ブザー + OLED)

車の駐車センサーをESP32で作ります!HC-SR04超音波センサーで前方の物体までの距離を測ります。距離が縮まるほど5連LEDバーが緑 → 黄 → 赤の順に点灯し、ブザーの鳴る間隔が短くなります。10 cm未満まで近づくとアラームが鳴り続け、すべてのLEDが点灯します。SSD1306 OLEDには現在の距離をcm単位の大きな文字で表示し、状態メッセージ(落ち着いて / 注意 / 接近 / 停止! / 危険)とLEDバーのシミュレーションも表示します。HC-SR04のpulseIn、複数のデジタル出力、ブザーを学べる定番のプロジェクトです。

0.0(0)
14
ESP32汎用IRリモコン(IR受信機 + リモコン + LED3個 + ブザー + OLED)
#143上級
プレミアム

ESP32汎用IRリモコン(IR受信機 + リモコン + LED3個 + ブザー + OLED)

ESP32で市販のIRリモコンの信号を読み取り、自作の機器を操作できます!このプロジェクトでは赤外線受信機(NECプロトコル、38 kHz)で20ボタンのIRリモコンの信号を受信します。各ボタンには異なる動作を割り当てています。1、2、3ボタンで3個のLEDをそれぞれオン・オフし、PWRボタンですべて消灯します。4~9の数字ボタンではOLEDに特別な表示を出します。SSD1306 OLEDには最後に押したボタンを大きく表示し、実行した動作の説明とLEDの状態もリアルタイムで表示します。未知のボタンを押すとOLEDにHEXコードを表示します。

4.5(9)
15
ESP32温度データロガー(DHT22 + DS1307 RTC + microSD + OLED)
#144上級
プレミアム

ESP32温度データロガー(DHT22 + DS1307 RTC + microSD + OLED)

ESP32で日時付きの温度・湿度記録システムを作ります!DHT22で1分ごとに温度と湿度を読み取り、DS1307 RTCから取得した日時とともにmicroSDカードへCSV形式で記録します。OLEDには最新の温度を大きな文字で表示し、湿度のパーセント値、日時、総記録数も表示します。SDカードの`/temp_log.csv`ファイルはExcel、Google Sheets、Pythonのpandasで開いて分析できます。温室の監視、家や部屋の温度管理、実験室のデータ収集、食品の保管環境や養蜂箱の監視に適しています。

4.7(7)
12
ESP32動体検知アラーム(PIR + ブザー + LED + Telegram)
#145上級
プレミアム

ESP32動体検知アラーム(PIR + ブザー + LED + Telegram)

PIRセンサーが動きを検知するとブザーとLEDを作動させ、同時にTelegramで持ち主に即座に通知するスマート防犯アラームです。アラームが繰り返される頻度を抑えるため、30秒のクールダウン(待ち時間)を設けています。この仕組みはPIRの検知が正しいかを確認したり、誤検知をなくしたりするものではありません。家の防犯、ガレージの監視、倉庫や作業部屋などに使えます。ESP32-CAMなら写真付きの通知を追加でき、通常のESP32 DevKit V1ではテキストで通知します。

0.0(0)
8

Parts and tools

The parts used most often in these projects, calculators that help while you build, and step-by-step guides.

Frequently asked questions

What is the difference between the ESP32 and Arduino?

The ESP32 has built-in Wi-Fi and Bluetooth, a dual-core 240 MHz processor and much more memory. The Arduino Uno is a simpler 5 V board that forgives mistakes. The ESP32 is better for connected projects, the Uno for your first steps in electronics.

Can the ESP32 be programmed with the Arduino IDE?

Yes. Add Espressif's board manager URL in the Arduino IDE preferences and install the esp32 package from the Boards Manager. Then select ESP32 Dev Module as the board and upload your code.

Are ESP32 pins 5 V tolerant?

No. ESP32 GPIO pins work at 3.3 V and a 5 V signal can damage them. Use a voltage divider or a logic level shifter with sensors that output 5 V.

Which ESP32 board should I buy?

An ESP32 DevKit with the ESP32-WROOM-32 module is the most common board and has the most examples. For camera projects there is the ESP32-CAM, and for simpler Wi-Fi projects an ESP8266-based NodeMCU also works.

What IoT projects can you build with an ESP32?

Popular ESP32 projects include relays and LEDs controlled from a phone, a weather station that shows sensor data on a web page, a motion alarm that sends Telegram alerts, an NTP clock that gets the time from the internet and Bluetooth-controlled devices.

What should I do if code will not upload to my ESP32?

Make sure the USB cable carries data and that the CP2102 or CH340 driver is installed. If the upload hangs at “Connecting...”, hold the BOOT button on the board. The correct port and ESP32 Dev Module must be selected.

Other platforms