Robotics ロボット工学

ESP32実験の考察|GPIO・ADC・PWM・Wi-Fi通信と誤差原因

ESP32の実験は、マイクロコントローラにWi-FiやBluetoothなどの無線通信機能を組み合わせ、センサ計測、LED制御、PWM出力、データ送信などを行う電子回路・情報・制御分野の学生実験です。

ESP32は、一般的なマイコンとしてGPIO、ADC、PWM、シリアル通信などを扱えるだけでなく、Wi-FiやBluetoothを利用して測定値を無線で送信できる点が大きな特徴です。そのため、単純な電子回路実験からIoT、環境計測、ロボット制御、無線センサネットワークへ発展させることができます。

この記事では、大学・高等学校などの学生実験でESP32を使用することを想定し、ESP32の基本、GPIO、デジタル入出力、ADC、PWM、Wi-Fi、Bluetooth、センサ計測、Web表示、電源条件、GPIOの注意点、測定誤差、改善点、考察の書き方などを整理します。

注意:
この記事は、大学・高等学校などの物理・電気・情報・制御実験で得られた結果を考察するための参考資料です。ESP32には複数のシリーズや開発ボードがあり、GPIO数、ADC、DAC、PWM、USB、Bluetooth、Wi-Fiなどの仕様は製品によって異なります。実際のピン配置、I/O電圧、定格電流、電源条件などは、必ず使用するESP32ボードの公式資料、所属学校の実験書、担当教員、TAなどの指示に従ってください。

  1. ESP32とは何か
  2. ESP32実験で見るべき結果
    1. 結果に書く主な項目
  3. ESP32とArduinoの違い
  4. ESP32は1種類ではない
  5. GPIOとは何か
  6. ESP32のI/O電圧
  7. 5 V系Arduinoとの違いに注意する
  8. デジタル出力実験
  9. LED点滅の参考実験
  10. LEDには抵抗が必要
  11. デジタル入力実験
  12. 内部プルアップ・プルダウン
  13. ADCとは何か
  14. ESP32のADCは理想的ではない
  15. ADCの分解能
  16. ADC値から電圧を求める
  17. ADC1とADC2
  18. Wi-FiとADCを同時に使う場合
  19. ADCノイズ
  20. ADCノイズを減らす方法
  21. PWMとは何か
  22. ESP32のPWM
  23. PWM周波数を変える実験
  24. デューティ比とは何か
  25. Wi-Fi機能
  26. Wi-Fi接続実験
  27. IPアドレスとは何か
  28. ESP32をWebサーバとして使う
  29. センサ値をWeb表示する実験
  30. 参考実験1:LED点滅
  31. 参考実験2:可変抵抗のADC測定
  32. 参考実験3:PWMによるLED調光
  33. 参考実験4:Wi-Fiでセンサ値を表示する
  34. Bluetooth機能
  35. Bluetooth Low Energyとは何か
  36. Wi-FiとBluetoothの違い
  37. シリアルモニタ
  38. デバッグの考え方
  39. Wi-Fi接続できない場合
  40. 2.4 GHz帯に注意する
  41. 電波強度による違い
  42. 通信遅延
  43. 通信が切断した場合
  44. ESP32の消費電力
  45. Deep Sleepとは何か
  46. IoT実験への発展
  47. データロガーとして使う
  48. センサ校正
  49. ESP32でモーターを直接駆動しない
  50. 逆起電力への対策
  51. サーボモーターを接続する場合
  52. 起動時に注意が必要なGPIO
  53. 入力専用GPIO
  54. 参考測定結果
  55. 結果の書き方の例
  56. ADC値が不安定な場合
  57. ADC値とテスター値が一致しない場合
  58. 校正曲線を作る
  59. Wi-Fi使用時にADCが読めない場合
  60. ESP32が突然再起動する場合
  61. Brownoutとは何か
  62. USBケーブルによる違い
  63. プログラムが書き込めない場合
  64. Webページが表示できない場合
  65. 主な誤差・実験上の問題
  66. うまくいかなかった場合の考察例
  67. 改善点の書き方
    1. ADC測定を改善する方法
    2. 電源を改善する方法
    3. 通信を改善する方法
  68. 浅い考察とよい考察の違い
    1. 浅い考察の例
    2. よりよい考察の例
  69. Arduinoとの比較についての考察例
  70. ADCについての考察例
  71. Wi-Fi通信についての考察例
  72. 電源についての考察例
  73. PWMについての考察例
  74. センサネットワークへの発展
  75. 環境計測への発展
  76. ロボット制御への発展
  77. レポートで使える表現例
  78. ESP32実験の考察で確認するポイント
  79. まとめ

ESP32とは何か

ESP32は、Espressif Systemsが開発しているマイクロコントローラ・SoCのシリーズです。

GPIO、タイマ、ADC、PWM、シリアル通信などのマイコン機能に加え、Wi-FiやBluetoothを内蔵した製品が多く、IoT機器や無線センサなどに広く利用されています。

Arduino IDEを利用してプログラムを書き込むこともできるため、Arduinoで学んだデジタル入出力やセンサ制御から発展させやすいことも特徴です。

ESP32実験で見るべき結果

結果に書く主な項目

  • 使用したESP32ボードの型式
  • 使用したGPIO番号
  • 電源電圧
  • 接続したセンサやLED
  • デジタル入力・出力値
  • ADC読み取り値
  • PWM出力条件
  • Wi-Fi接続の有無
  • IPアドレス
  • 無線で送信した測定値
  • Webページなどに表示された値
  • 通信の遅延や切断
  • 電源電圧やノイズによる変動
  • 理論値・設定値と実測値の差

ESP32実験では、「入力 → マイコン内部での処理 → 出力」だけでなく、「入力 → 処理 → 無線通信 → 外部端末で表示」という情報の流れを記録すると、IoT実験として考察しやすくなります。

ESP32とArduinoの違い

Arduino UNOなどもマイコン実験に適していますが、ESP32はWi-FiやBluetoothを内蔵している製品が多く、無線通信を使った実験へ発展しやすい特徴があります。

また、ESP32系には複数のCPUコアを持つものや、より多くのGPIO、ADC、通信機能を備えるものがあります。

一方、ESP32はシリーズによって仕様差が大きく、Arduino UNOのように「どのボードでもほぼ同じピン構成」とは限りません。

ESP32は1種類ではない

ESP32、ESP32-S2、ESP32-S3、ESP32-C3、ESP32-C6など複数のシリーズがあります。

CPUアーキテクチャ、Wi-Fi規格、Bluetooth対応、USB機能、ADC、DAC、GPIO数などが異なります。

そのため、学生実験では単に「ESP32を使用した」と書くのではなく、使用したボードやモジュール名を明記します。

GPIOとは何か

GPIOはGeneral Purpose Input/Outputの略で、汎用入出力端子です。

デジタル入力としてスイッチやセンサ状態を読み取ったり、デジタル出力としてLEDや外部回路を制御したりできます。

ただし、すべてのGPIOが同じ機能を持つわけではなく、入力専用、起動時に状態が重要なピン、内部機能と共用されるピンなどがあります。

ESP32のI/O電圧

一般的なESP32では、GPIOは3.3 V系で動作します。

5 V信号をそのまま入力すると、GPIOの定格を超えて破損する可能性があります。

5 V系のセンサや回路と接続する場合は、信号電圧を確認し、必要に応じて分圧回路やレベル変換回路を使用します。

5 V系Arduinoとの違いに注意する

Arduino UNO R3などの5 V系マイコンで使用できた回路を、そのままESP32へ接続できるとは限りません。

特に外部からESP32へ入力される信号は3.3 V系の定格を確認します。

LEDや抵抗など受動部品だけでなく、センサモジュールの信号レベルにも注意します。

デジタル出力実験

ESP32の基本実験として、GPIOからHIGH・LOWを出力してLEDを点灯・消灯させる方法があります。

Arduinoと同様に、LEDには適切な電流制限抵抗を接続します。

この実験ではGPIO出力、プログラムの繰り返し処理、時間制御などを確認できます。

LED点滅の参考実験

項目 内容
入力 なし
処理 一定時間ごとにGPIOをHIGH・LOWへ切り替える
出力 LED
観察 点灯時間、消灯時間、周期

LEDには抵抗が必要

ESP32のGPIOへLEDを接続するときも、LEDへ流れる電流を制限するために抵抗を直列へ接続します。

LEDの順方向電圧と目標電流から、オームの法則を用いて抵抗値を決めます。

GPIOから取り出せる電流にも上限があるため、LED以外の大きな負荷を直接駆動しないようにします。

デジタル入力実験

スイッチなどをGPIO入力へ接続すると、HIGH・LOWの状態を読み取れます。

入力がどこにも接続されていないフローティング状態では値が不安定になるため、プルアップまたはプルダウンを利用します。

内部プルアップ・プルダウン

ESP32の多くのGPIOでは、内部プルアップやプルダウンを利用できます。

ただし、利用可能な内部抵抗やピン条件はシリーズやGPIOによって異なるため、使用するボードの資料を確認します。

ADCとは何か

ADCはAnalog-to-Digital Converterの略で、入力されたアナログ電圧をデジタル値へ変換する回路です。

ESP32では、可変抵抗、光センサ、温度センサなどから出力されるアナログ電圧を読み取ることができます。

ESP32のADCは理想的ではない

ESP32のADCでは、入力電圧とデジタル値が完全な比例関係にならない場合があります。

また、チップの個体差、基準電圧、ノイズ、減衰設定などによって測定値が変化することがあります。

そのため、精密な電圧測定では校正や複数回測定などを考慮します。

ADCの分解能

ESP32のADCは複数のデジタル段階に電圧を変換します。

分解能が高いほど細かく電圧を区別できますが、表示桁が細かいことと測定精度が高いことは同じではありません。

実際にはノイズや非線形性なども考慮する必要があります。

ADC値から電圧を求める

単純化すると、ADC読み取り値と基準電圧から入力電圧を推定できます。

しかしESP32では減衰設定、ADCの非線形性、個体差などがあるため、精密測定では単純な比例換算だけでなく校正値を利用する方が適切な場合があります。

ADC1とADC2

従来型ESP32では、ADC1とADC2という複数のADC系統があります。

一部のESP32では、Wi-Fi使用時にADC2側の利用へ制約があります。

Wi-Fiを使いながらアナログ測定を行う実験では、使用するESP32の仕様を確認し、必要に応じてADC1側のピンを利用します。

Wi-FiとADCを同時に使う場合

センサ値をWi-Fiで送信する実験では、ADCピンの選択が重要になる場合があります。

Wi-Fi通信開始後にアナログ値が読めない、値が不安定になる場合は、ADC系統やGPIOの制約を確認します。

このような制約はESP32シリーズによって異なるため、使用ボードの公式資料を確認します。

ADCノイズ

ESP32のADC測定値は、電源ノイズや周辺回路の影響によって数値が変動することがあります。

特にWi-Fi通信やモーターなど大きな電流変化を伴う回路と組み合わせると、測定値が不安定になる場合があります。

ADCノイズを減らす方法

複数回測定して平均値を求めると、ランダムなノイズの影響を小さくできる場合があります。

また、入力付近へ適切なコンデンサを配置する、配線を短くする、電源を安定化するなどの方法があります。

ただし、コンデンサ容量や回路構成はセンサの応答速度にも影響するため、目的に合わせて選びます。

PWMとは何か

PWMはPulse Width Modulationの略で、デジタル信号を高速にON・OFFし、ON時間の割合を変えることで平均的な出力を調整する方法です。

ESP32ではPWMを使ってLEDの明るさ、モーター速度、ブザーなどを制御できます。

ESP32のPWM

ESP32では、ハードウェアタイマを利用したPWM機能を使用できます。

Arduino環境ではライブラリやAPIを通して比較的簡単にPWMを利用できます。

周波数や分解能などを設定できるため、Arduino UNOより柔軟なPWM実験を行える場合があります。

PWM周波数を変える実験

LEDの調光では比較的低い周波数でも利用できますが、周波数が低すぎるとちらつきが見える場合があります。

モーターやブザーでは、PWM周波数によって音や動作特性が変化する場合があります。

周波数とデューティ比を分けて考えることが重要です。

デューティ比とは何か

PWMの1周期のうち、HIGHとなっている時間の割合をデューティ比と呼びます。

デューティ比を増やすと平均的な出力が大きくなり、LEDでは明るく見える傾向があります。

Wi-Fi機能

ESP32の大きな特徴の一つがWi-Fi通信です。

無線LANへ接続してインターネットやLAN内の機器と通信したり、ESP32自身をアクセスポイントとして動作させたりできます。

学生実験では、センサ値をパソコンやスマートフォンへ送信するIoT実験に利用できます。

Wi-Fi接続実験

ESP32を無線LANへ接続し、接続後のIPアドレスをシリアルモニタへ表示すると、ネットワーク接続を確認できます。

接続成功までの時間や、電波状態による通信安定性を記録することもできます。

IPアドレスとは何か

ネットワーク上の機器を識別するためにIPアドレスが使用されます。

ESP32がWi-Fiネットワークへ接続すると、ルータなどからIPアドレスが割り当てられる場合があります。

Webサーバ実験では、このIPアドレスへブラウザからアクセスします。

ESP32をWebサーバとして使う

ESP32上で簡易Webサーバを動作させると、同じネットワーク上のパソコンやスマートフォンからESP32へアクセスできます。

Webページへセンサ値を表示したり、ボタン操作でLEDをON・OFFしたりできます。

センサ値をWeb表示する実験

温度、照度、可変抵抗などの入力値をESP32で読み取り、HTMLとしてWebブラウザへ表示すると、簡単なIoT計測システムになります。

この実験では、センサ計測、データ処理、ネットワーク通信、Web表示を一連の流れとして確認できます。

参考実験1:LED点滅

項目 内容
入力 なし
処理 一定時間ごとにGPIOを切り替える
出力 LED
考察 GPIO、周期、電流制限抵抗

参考実験2:可変抵抗のADC測定

項目 内容
入力 可変抵抗の分圧電圧
処理 ADCによる数値化
出力 シリアルモニタ
考察 ADC値、ノイズ、非線形性

参考実験3:PWMによるLED調光

項目 内容
入力 プログラムまたは可変抵抗
処理 PWMデューティ比を変更
出力 LEDの明るさ
考察 PWM、平均出力、視覚特性

参考実験4:Wi-Fiでセンサ値を表示する

項目 内容
入力 センサ値
処理 ESP32で読み取り・文字列化
通信 Wi-Fi
出力 Webブラウザ
考察 無線通信、遅延、通信切断

Bluetooth機能

ESP32シリーズの一部ではBluetoothやBluetooth Low Energyを利用できます。

スマートフォンやパソコンと直接通信し、センサ値の送信や制御信号の受信を行う実験へ発展できます。

ただし、Bluetooth対応の有無や方式はESP32シリーズによって異なります。

Bluetooth Low Energyとは何か

Bluetooth Low Energyは、比較的低消費電力で小さなデータを無線通信する用途に適した方式です。

温度、湿度、加速度などを一定間隔で送信する無線センサ実験に利用できます。

Wi-FiとBluetoothの違い

Wi-Fiはネットワーク接続や比較的大きなデータ通信に適しており、Webサーバなどに利用しやすい特徴があります。

Bluetooth Low Energyは、近距離で少量データを低消費電力でやり取りする用途に向いています。

実験目的によって使い分けます。

シリアルモニタ

ESP32でもシリアル通信を利用して、センサ値、Wi-Fi接続状態、IPアドレス、エラー情報などをパソコンへ表示できます。

無線通信のプログラムが動かない場合でも、シリアルモニタへ途中経過を表示すると原因を切り分けやすくなります。

デバッグの考え方

ESP32の実験では、回路、プログラム、無線通信の3つが同時に関係することがあります。

問題が発生した場合は、まずLEDやセンサ単体を確認し、その後Wi-Fi接続、最後にWeb通信というように機能を分けて確認します。

Wi-Fi接続できない場合

  • SSIDやパスワードが間違っている
  • 使用している周波数帯が対応していない
  • 電波が弱い
  • アクセスポイント側で接続が制限されている
  • 電源が不安定でESP32が再起動している
  • プログラム上の接続処理に問題がある

2.4 GHz帯に注意する

従来型ESP32などでは2.4 GHz帯のWi-Fiを使用します。

5 GHzのみのネットワークへ接続できない製品もあるため、使用するESP32のWi-Fi仕様を確認します。

電波強度による違い

ESP32とアクセスポイントの距離、壁や金属物、周囲の無線機器などによって通信状態が変化します。

通信が不安定な場合は、測定場所を変えたり、受信信号強度を記録したりすると考察できます。

通信遅延

センサ値をWi-Fiで送信する場合、測定した時刻とブラウザへ表示される時刻には差が生じることがあります。

無線通信、ネットワーク処理、Webページ更新などに時間が必要なためです。

リアルタイム性が必要な実験では、通信周期と遅延を区別して記録します。

通信が切断した場合

Wi-Fiが一時的に切断された場合、プログラムで再接続処理を行う必要があります。

通信切断中もセンサ測定を続けるのか、再接続するまで停止するのかによってシステムの挙動が変わります。

ESP32の消費電力

Wi-FiやBluetoothを使用すると、単純なGPIO制御だけの場合より消費電力が増えることがあります。

バッテリー駆動する場合は、通信頻度やスリープ機能も重要になります。

Deep Sleepとは何か

ESP32では、一定時間動作を停止して消費電力を低減するスリープ機能を利用できる製品があります。

例えば10分ごとに起動して温度を測定し、Wi-Fiで送信した後に再びスリープするような無線センサへ応用できます。

IoT実験への発展

ESP32はセンサ値をインターネットやLANへ送信できるため、IoT実験に適しています。

温度、湿度、照度、気圧などを定期的に測定し、パソコンやサーバへ保存すると環境計測システムになります。

データロガーとして使う

センサ値を一定時間ごとに読み取り、シリアル通信、SDカード、ネットワークなどへ記録するとデータロガーとして利用できます。

時間変化をグラフ化することで、測定対象の変化を定量的に考察できます。

センサ校正

ESP32で得たADC値やデジタル値が、そのまま温度や照度を表すとは限りません。

既知の物理量と比較して校正し、センサ値を実際の単位へ変換することが重要です。

ESP32でモーターを直接駆動しない

DCモーター、電磁石、リレーなどはGPIOから直接供給できる電流を大きく超える場合があります。

MOSFET、トランジスタ、モータードライバなどを利用し、ESP32は制御信号だけを出力する構成にします。

逆起電力への対策

モーターや電磁石などのコイルへ流れる電流を急に切ると、逆起電力が発生します。

この電圧によってESP32や駆動素子を破損する可能性があるため、回路に応じてフライバックダイオードなどの保護回路を使用します。

サーボモーターを接続する場合

サーボモーターはESP32から制御信号を与えられますが、電源は別に用意する方が適切な場合があります。

サーボの動作電流によってESP32の電源電圧が低下すると、再起動や通信切断が起こる場合があります。

外部電源を使用する場合も、制御信号の基準としてGNDを共通にします。

起動時に注意が必要なGPIO

一部のESP32では、起動モードなどを決めるために特定GPIOの状態を起動時に読み取ります。

このようなピンをストラッピングピンと呼ぶ場合があります。

外部回路によって起動時の電圧状態が変わると、通常起動できなくなる場合があるため、ピン選択時に資料を確認します。

入力専用GPIO

従来型ESP32には入力専用として扱われるGPIOがあります。

これらへ出力設定を行っても期待した動作になりません。

ESP32シリーズではGPIOの機能が異なるため、ピン番号だけでなくピン機能表を確認します。

参考測定結果

条件 結果の例 考察の方向
LED点滅 指定周期で点滅した GPIO出力
可変抵抗 つまみに応じADC値が変化した A/D変換
PWM デューティ比増加でLEDが明るくなった 平均出力
Wi-Fi接続 IPアドレスが取得できた ネットワーク接続
Web表示 ブラウザにセンサ値が表示された IoT通信

結果の書き方の例

ESP32へ可変抵抗を接続し、ADC値をシリアルモニタへ表示した。つまみ位置を変えると読み取り値は連続的に変化したが、一定位置に固定していても数値には小さなばらつきが見られた。

次にESP32をWi-Fiへ接続し、ADC値をWebページに表示した。ブラウザからESP32へアクセスすると測定値を確認できたが、表示更新にはわずかな遅延が見られた。このことから、ESP32ではセンサ入力を読み取り、ネットワークを介して別の端末へ測定結果を送信できることを確認した。

ADC値が不安定な場合

入力電圧が一定でもADC値が変動する場合、電源ノイズ、配線、ADC特性、Wi-Fi動作などが影響している可能性があります。

複数回測定して平均する、配線を短くする、電源を安定化するなどの改善が考えられます。

ADC値とテスター値が一致しない場合

ESP32のADCから換算した電圧とテスターで測定した電圧が一致しない場合があります。

ADCの非線形性、基準電圧の誤差、減衰設定、チップ個体差などが原因として考えられます。

精密測定では、既知電圧を入力して校正曲線を作る方法があります。

校正曲線を作る

複数の既知電圧をESP32へ入力し、それぞれのADC値を記録します。

横軸を既知電圧、縦軸をADC値としてグラフ化すると、理想的な比例関係からどの程度ずれているか確認できます。

必要に応じて近似式を求め、未知電圧の補正に使用できます。

Wi-Fi使用時にADCが読めない場合

従来型ESP32では、ADC2側の一部機能がWi-Fiと競合する制約があります。

Wi-Fiを開始する前は読めていたADC値が、Wi-Fi開始後に取得できなくなった場合は、ADC2を利用していないか確認します。

使用するESP32シリーズによって条件が異なるため、公式資料のADC制約を確認します。

ESP32が突然再起動する場合

モーターやサーボの動作、Wi-Fi送信などで電流が急増すると、電源電圧が低下してESP32がリセットされる場合があります。

電源容量、USBケーブル、配線抵抗、外部負荷の電流などを確認します。

Brownoutとは何か

電源電圧が安全な動作範囲より低下すると、誤動作を防ぐためにリセットがかかる場合があります。

このような低電圧状態をブラウンアウトと呼びます。

Wi-Fi通信時などに再起動を繰り返す場合は、電源品質も確認します。

USBケーブルによる違い

USBケーブルによっては電圧降下が大きいものや、データ通信に対応していないものがあります。

書き込みが不安定、Wi-Fi動作時に再起動するなどの場合は、USBケーブルや電源アダプタも確認します。

プログラムが書き込めない場合

  • ボード種類の設定が間違っている
  • シリアルポートが違う
  • USBケーブルが通信対応でない
  • 起動モードに入っていない
  • ストラッピングピンへ外部回路が接続されている
  • USBシリアル回路やドライバに問題がある

Webページが表示できない場合

  • ESP32がWi-Fiへ接続できていない
  • IPアドレスが変わっている
  • パソコンやスマートフォンが別ネットワークに接続されている
  • Webサーバ処理が開始されていない
  • ファイアウォールやネットワーク設定の影響
  • ESP32が電源低下で再起動している

主な誤差・実験上の問題

原因 結果への影響 改善方法
ADCノイズ 測定値が変動する 平均化・配線改善・電源安定化
ADC非線形性 換算電圧がずれる 既知電圧で校正する
Wi-FiとADCの競合 一部ADCが使用できない場合がある 仕様を確認し適切なADCを使う
電源容量不足 再起動・通信切断 十分な電流容量の電源を使う
3.3 V超の入力 GPIO破損の可能性 電圧を確認しレベル変換する
電波状態 通信遅延・切断 距離・障害物・電波環境を改善する

うまくいかなかった場合の考察例

可変抵抗を一定位置に固定してもADC値が数十カウント程度変動した。ESP32のADCはノイズの影響を受けやすく、さらにWi-Fi通信時には電源電流が変化するため、電源電圧やGND電位の変動が測定値に影響した可能性がある。

また、複数回測定して平均値を求めると変動幅が小さくなったことから、ランダムなノイズ成分が測定値に含まれていたと考えられる。

改善点の書き方

ADC測定を改善する方法

  • 複数回測定して平均する
  • 既知電圧で校正する
  • 配線を短くする
  • GND配線を確実にする
  • 必要に応じて入力へコンデンサを追加する
  • Wi-Fi使用時のADC制約を確認する

電源を改善する方法

  • 十分な電流容量の電源を使用する
  • モーターやサーボは外部電源を利用する
  • USBケーブルによる電圧降下を確認する
  • 電源ラインへ適切なデカップリングを行う
  • 3.3 V系と5 V系を混同しない

通信を改善する方法

  • アクセスポイントとの距離を短くする
  • 金属物や壁などの障害物を減らす
  • 通信切断時の再接続処理を入れる
  • 送信周期を必要以上に短くしない
  • 無線通信とセンサ測定のタイミングを整理する

浅い考察とよい考察の違い

浅い考察の例

ESP32をWi-Fiにつないだらセンサ値を表示できた。

よりよい考察の例

ESP32で可変抵抗の電圧をADCによって読み取り、その値をWi-Fi経由でWebブラウザへ表示した。可変抵抗を回すとWeb表示も変化したため、センサ入力、A/D変換、マイコン処理、無線通信、Web表示という一連の情報処理を確認できた。一方、ADC値には小さなばらつきが見られ、Wi-Fi通信中には変動が大きくなる場合があった。このことから、無線通信による電源変動やADCノイズが測定精度に影響した可能性がある。

Arduinoとの比較についての考察例

Arduino UNOではUSBシリアル通信を利用してパソコンへ測定値を表示したが、ESP32ではWi-Fiを利用してケーブルを接続していない端末へ測定値を送信できた。このことから、ESP32は従来のマイコン制御に加えてネットワーク通信を組み込みやすく、IoT用途へ発展させやすいと考えられる。

ADCについての考察例

テスターで測定した入力電圧とESP32のADC値から求めた電圧には差が見られた。単純な比例換算ではADCの非線形性や個体差を十分に補正できないため、既知電圧を用いて校正曲線を作成することで測定精度を改善できると考えられる。

Wi-Fi通信についての考察例

アクセスポイントから離れるとWebページの更新が遅くなり、一時的に接続が切れることがあった。距離や壁によって受信電波が弱くなり、パケット再送や再接続が増えたことが原因と考えられる。

電源についての考察例

サーボモーターをESP32と同じUSB電源から動作させると、サーボ始動時にESP32が再起動する場合があった。サーボモーターの瞬間的な電流増加によって電源電圧が低下し、ESP32の動作電圧を維持できなかったためと考えられる。

PWMについての考察例

PWMのデューティ比を増加させるとLEDの見かけの明るさが増加した。ESP32から連続的なアナログ電圧を出力したのではなく、デジタル信号のON時間の割合を変化させることで平均的な電力が変化したためと考えられる。

センサネットワークへの発展

複数のESP32へセンサを接続し、Wi-Fiを介して1台のパソコンやサーバへデータを集めると、無線センサネットワークを構成できます。

教室内の複数地点で温度や照度を測定するなど、空間分布を調べる学生実験へ発展できます。

環境計測への発展

ESP32に温湿度、気圧、照度などのセンサを接続し、一定間隔でデータを送信すると環境モニタリング装置として利用できます。

長時間測定では、通信切断、センサドリフト、電源安定性なども考察対象になります。

ロボット制御への発展

ESP32はモータードライバやサーボモーターと組み合わせてロボット制御にも利用できます。

Wi-FiやBluetoothによってスマートフォンから操作したり、センサ値に応じて自動動作させたりできます。

レポートで使える表現例

  • ESP32のGPIOを使用してLEDの点灯・消灯を制御した。
  • 可変抵抗の電圧をADCで読み取り、デジタル値として取得した。
  • ADC値にはノイズによるばらつきが見られた。
  • 複数回測定して平均することで測定値の変動が小さくなった。
  • PWMのデューティ比を変えることでLEDの明るさを制御した。
  • ESP32をWi-Fiへ接続し、Webブラウザから測定値を確認できた。
  • 無線通信では通信遅延や切断が生じる場合があった。
  • Wi-Fi使用時にはADCピンの制約を確認する必要がある。
  • ESP32のGPIOは3.3 V系であり、5 V入力には注意が必要である。
  • モーターやサーボの駆動電流によってESP32が再起動する場合がある。
  • ESP32はセンサ計測と無線通信を組み合わせることでIoTシステムを構成できる。

ESP32実験の考察で確認するポイント

  • 使用したESP32ボードを明記したか
  • GPIOの入力・出力を区別したか
  • 3.3 V系I/Oであることを確認したか
  • ADCの分解能と測定誤差を区別したか
  • ADCノイズや非線形性を考察したか
  • Wi-Fi使用時のADC制約を確認したか
  • PWMの周波数とデューティ比を区別したか
  • Wi-Fi接続とIPアドレスの意味を理解したか
  • 通信遅延や切断を記録したか
  • 電源容量不足による再起動を考慮したか
  • 起動時に注意が必要なGPIOを確認したか
  • ArduinoからIoTへ発展する違いを説明したか

まとめ

ESP32実験では、GPIO、ADC、PWMなどの基本的なマイコン機能に加え、Wi-FiやBluetoothなどの無線通信を利用することで、センサ計測からIoTシステムまで幅広い制御を確認できます。

ADCを使用するとアナログセンサ値を読み取れますが、ESP32ではノイズ、非線形性、個体差、Wi-Fi使用時の一部ADC制約などを考慮する必要があります。また、GPIOは一般に3.3 V系であり、5 V系回路との接続にも注意が必要です。

Wi-Fiを利用すると、ESP32自身をWebサーバとして動作させたり、測定値を別の端末へ送信したりできます。その一方で、通信遅延、接続切断、消費電力、電源電圧の変動など、単純なマイコン実験にはなかった要因も加わります。

レポートでは、単に「ESP32でWi-Fi通信できた」と記述するのではなく、「どのセンサ値をどのように読み取ったか」「ADC値にどの程度のばらつきがあったか」「無線通信でどのような遅延や制約があったか」「電源・GPIO・ADCの特性が実験結果へどう影響したか」を測定結果と結びつけて考察することが重要です。