ESP8266で作成した温湿度計などのArduinoスケッチをESP32 DEVKIT V1で動かしたい場合、単純にPIN番号だけを書き換えれば動作するケースもあります。しかし、ESP8266とESP32では搭載されているマイコンやGPIOの仕様が異なるため、PINレイアウト以外にも確認すべきポイントがあります。
この記事では、ESP8266用の温湿度計スケッチをESP32へ移植するときに確認する項目や、修正が必要になりやすい部分について解説します。
ESP8266とESP32は似ているが完全互換ではない
ESP8266とESP32はどちらもWi-Fi機能を搭載した低価格なマイコンボードで、Arduino IDEを使ってプログラムできます。そのため、既存のスケッチを流用しやすい特徴があります。
しかし、内部のチップ構成やGPIOの仕様、利用できる機能には違いがあります。特にセンサーを接続する温湿度計のような用途では、接続しているPINや通信方式の確認が重要です。
例えば、ESP8266でD4ピンに接続していた温湿度センサーをESP32で同じ番号のD4へ接続しても、ESP32のボードによってはD4という表記自体が存在しない場合があります。
まず確認するべきなのはPIN定義部分
ESP8266用スケッチをESP32へ移植するとき、最初に確認するのはPIN番号を定義している部分です。
例えば、以下のような記述がある場合があります。
#define DHTPIN 4
このようなPIN指定は、ESP32で利用するGPIO番号へ変更します。
例としてESP32 DEVKIT V1でGPIO4へ接続する場合は、以下のようになります。
#define DHTPIN 4
数字自体が同じ場合でも、実際の配線位置はESP32ボード上のGPIO番号を確認する必要があります。
ライブラリはESP32対応版を確認する
温湿度計でよく利用されるDHT11やDHT22などのセンサーライブラリは、基本的にはESP32でも使用できます。
ただし、古いライブラリやESP8266専用のライブラリを使用している場合は、ESP32でコンパイルエラーが発生することがあります。
Arduino IDEでエラーが出る場合は、使用しているライブラリがESP32に対応しているか確認し、最新版へ更新すると解決することがあります。
ESP8266とESP32で修正が必要になる代表的な部分
PIN設定以外にも、以下のような部分はESP32への移植時に確認が必要です。
| 項目 | 確認内容 |
|---|---|
| GPIO番号 | ESP8266とESP32で番号体系が異なる |
| Wi-Fi処理 | 基本的には同じだがライブラリ確認が必要 |
| ADC入力 | アナログ入力の仕様が異なる |
| 割り込み処理 | ESP32では一部記述変更が必要 |
| ディープスリープ | 設定方法が異なる場合がある |
特にアナログセンサーを利用している場合は注意が必要です。ESP8266とESP32ではADCの仕様が異なるため、同じ値が取得できないことがあります。
温湿度計スケッチ移植の具体例
例えば、ESP8266でDHT22温湿度センサーを利用していた場合、基本的なプログラム構造はそのまま利用できます。
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup(){
dht.begin();
}
void loop(){
float temp = dht.readTemperature();
float hum = dht.readHumidity();
}
このような単純なセンサー読み取り処理であれば、GPIO番号とライブラリを確認するだけで動作する可能性があります。
一方で、OLED表示やMQTT通信、クラウド送信などを追加している場合は、それぞれのライブラリや通信処理も確認する必要があります。
ESP32 DEVKIT V1で動作確認するときの注意点
ESP32 DEVKIT V1では、GPIO0やGPIO2など一部のピンが起動設定に関係しています。そのため、センサー接続によっては正常に起動しない場合があります。
また、ESP32は3.3V動作のため、接続するセンサーが5V出力になっていないか確認することも大切です。
移植作業では、最初からすべての機能を動かそうとせず、まず温湿度センサーの読み取りだけを確認し、その後Wi-Fiや表示機能を追加すると原因を特定しやすくなります。
まとめ
ESP8266用の温湿度計スケッチをESP32 DEVKIT V1で利用する場合、PINレイアウト部分だけの変更で動くこともありますが、必ずしもそれだけで十分とは限りません。
GPIO番号、利用ライブラリ、通信処理、電源電圧などを確認しながら移植することで、安定して動作させることができます。
単純な温湿度センサーの読み取りだけなら比較的簡単に移植できますが、機能を多く追加したスケッチほど、各処理がESP32に対応しているか確認することが重要です。

コメント