ESP32タッチディスプレイデバイス 使用マニュアル ESP32-2432S028
📋 目次
⚙️ ハードウェア仕様
簡単に説明
【デバイス仕様】
- マイコン: ESP32-WROOM-32
- ディスプレイ: 2.8" TFT 320x240 (ILI9341)
- タッチ: XPT2046
【ピン配線】
TFT: VSPI (GPIO15,2,4,18,19,23)
Touch: HSPI (GPIO33,25,32,39,36)
【ライブラリ】
- TFT_eSPI (User_Setup.h設定済み)
- XPT2046_Touchscreen
- WiFi, Time (標準)MCU(マイコン)
ESP32-WROOM-32
- CPU: Dual Core Xtensa LX6 @ 240MHz
- RAM: 520KB SRAM
- Flash: 4MB
- WiFi: 2.4GHz (802.11 b/g/n)
- Bluetooth: BLE 4.2
- OS: FreeRTOS
ディスプレイ
2.8インチ TFT LCD
- 解像度: 320 x 240 ピクセル
- ドライバIC: ILI9341
- インターフェース: SPI (VSPI)
- 色深度: 16bit (65,536色)
- バックライト: LED
- ピン配置:
CS=GPIO15, DC=GPIO2, RST=GPIO4
MOSI=GPIO23, SCK=GPIO18, MISO=GPIO19
タッチスクリーン
XPT2046 抵抗膜式タッチコントローラ
- インターフェース: SPI (HSPI)
- 解像度: 4096 x 4096
- ピン配置:
T_CS=GPIO33, T_CLK=GPIO25
T_DIN=GPIO32, T_DO=GPIO39, T_IRQ=GPIO36
- キャリブレーション値:
X軸: 300-3900
Y軸: 200-3700
通信機能
WiFi:
- 規格: IEEE 802.11 b/g/n (2.4GHz)
- セキュリティ: WPA/WPA2
- NTPサーバー: ntp.nict.jp
- タイムゾーン: JST (GMT+9)
電源仕様
入力: USB 5V
動作電圧: 3.3V (内部レギュレータ)
消費電流:
- 通常動作: 約200-300mA
- WiFi使用時: 約250-350mA
- スリープ時: < 1mA
拡張可能なピン
使用可能GPIO:
- I2C推奨: GPIO21 (SDA), GPIO22 (SCL)
- UART推奨: GPIO16 (RX), GPIO17 (TX)
- その他: GPIO12, 13, 14, 26, 27, 34, 35
🔧 必要なハードウェア
主要部品
- ESP32-WROOM-32 マイコンボード
- 2.8インチ TFT液晶ディスプレイ (320×240, ILI9341ドライバ)
- XPT2046タッチコントローラー (ディスプレイに内蔵)
- USBケーブル(書き込み用)
オプション部品
- センサー(BME280/BMP280など)
- ブレッドボード、ジャンパー線
🔌 配線図
TFTディスプレイとESP32の接続
ディスプレイ側(TFT)
| TFTピン | ESP32ピン | 機能 |
|---|---|---|
| VCC | 3.3V | 電源 |
| GND | GND | グランド |
| CS | GPIO15 | チップセレクト |
| RESET | GPIO4 | リセット |
| DC | GPIO2 | データ/コマンド |
| MOSI | GPIO23 | データ送信 |
| SCK | GPIO18 | クロック |
| LED | 3.3V | バックライト |
| MISO | GPIO19 | データ受信 |
タッチスクリーン側(Touch)
| タッチピン | ESP32ピン | 機能 |
|---|---|---|
| T_CS | GPIO33 | チップセレクト |
| T_CLK | GPIO25 | クロック |
| T_DIN | GPIO32 | データ入力 |
| T_DO | GPIO39 | データ出力 |
| T_IRQ | GPIO36 | 割り込み |
配線のポイント
- VSPI(ディスプレイ用): GPIO18, 19, 23
- HSPI(タッチ用): GPIO25, 32, 39
- 2つの異なるSPIバスを使用することで競合を回避
コネクタ配置






💻 開発環境のセットアップ
1. Arduino IDEのインストール
- Arduino公式サイトからダウンロード
- インストール実行
2. ESP32ボードの追加
- Arduino IDE を起動
- ファイル → 環境設定
- 「追加のボードマネージャのURL」に以下を追加:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - ツール → ボード → ボードマネージャ
- 「esp32」を検索してインストール
3. 必要なライブラリのインストール
ライブラリマネージャから以下をインストール:
- TFT_eSPI (by Bodmer)
- XPT2046_Touchscreen (by Paul Stoffregen)
インストール手順:
- Arduino IDE: スケッチ → ライブラリをインクルード → ライブラリを管理
- 検索してインストール
4. TFT_eSPI の設定
重要: User_Setup.h ファイルの編集が必要です。
ファイルの場所
- Windows:
C:\Users\[ユーザー名]\Documents\Arduino\libraries\TFT_eSPI\User_Setup.h - Mac:
~/Documents/Arduino/libraries/TFT_eSPI/User_Setup.h
設定内容
// ドライバー選択
#define ILI9341_DRIVER
// ピン設定
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST 4
// タッチスクリーン用
#define TOUCH_CS 33
#define TOUCH_MOSI 32
#define TOUCH_MISO 39
#define TOUCH_CLK 25
// SPI速度
#define SPI_FREQUENCY 27000000
#define SPI_READ_FREQUENCY 20000000
📝 プログラムの書き込み
1. プログラムを開く
- 提供されたArduinoスケッチ(.inoファイル)を開く
2. ボード設定
ツールメニューで以下を設定:
- ボード: “ESP32 Dev Module”
- Upload Speed: “921600”
- Flash Frequency: “80MHz”
- Flash Mode: “QIO”
- Flash Size: “4MB (32Mb)”
- Partition Scheme: “Default 4MB with spiffs”
- シリアルポート: ESP32が接続されているポートを選択
3. WiFi設定の変更
コード内の以下の部分を編集:
const char* WIFI_SSID = "あなたのWiFi名";
const char* WIFI_PASSWORD = "あなたのパスワード";
4. 書き込み
- ESP32をUSBで接続
- スケッチ → マイコンボードに書き込む(または Ctrl+U)
- 書き込み完了まで待つ(約30秒)
5. 動作確認
- シリアルモニタを開く(ツール → シリアルモニタ)
- ボーレート: 115200
- 起動メッセージを確認
📶 WiFi設定
接続方法
プログラム内で設定した SSID とパスワードで自動接続します。
IPアドレスの確認
- 下部タブで「WiFi」をタッチ
- IPアドレスが表示されます
- シリアルモニタでも確認可能
トラブルシューティング
WiFiに接続できない場合:
- SSID、パスワードを再確認
- 2.4GHz帯のWiFiを使用(5GHz非対応)
- ルーターの近くで試す
- シリアルモニタでエラーメッセージを確認
🛠️ カスタマイズ方法
センサーの追加
BME280/BMP280センサーの接続例
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
// setup()内で初期化
if (!bme.begin(0x76)) {
Serial.println("BME280 not found!");
}
// sensorTask()内でデータ取得
if (sensorMutex && xSemaphoreTake(sensorMutex, 100) == pdTRUE) {
sensor.temperature = bme.readTemperature();
sensor.humidity = bme.readHumidity();
sensor.pressure = bme.readPressure() / 100.0F;
xSemaphoreGive(sensorMutex);
}
色のカスタマイズ
コード上部のカラー定義を変更:
#define COLOR_PRIMARY 0x4A9EFF // 青色
#define COLOR_ACCENT 0xFF6B9D // ピンク色
#define COLOR_TEXT 0xFFFFFF // 白色
更新間隔の変更
// sensorTask()内
vTaskDelay(pdMS_TO_TICKS(2000)); // 2000ms = 2秒
タッチキャリブレーション
タッチ位置がずれる場合、以下の値を調整:
#define RAW_X_MIN 300
#define RAW_X_MAX 3900
#define RAW_Y_MIN 200
#define RAW_Y_MAX 3700
調整方法:
- タッチテストプログラムを実行
- 四隅をタッチして座標を確認
- 上記の値を実際の座標に置き換え
❓ トラブルシューティング
画面が表示されない
- [ ] 配線を確認(特に電源とGND)
- [ ]
User_Setup.hの設定を確認 - [ ] TFT_CS、TFT_DC、TFT_RSTピンを確認
- [ ] バックライト(LED)が3.3Vに接続されているか確認
タッチが反応しない
- [ ] タッチコントローラーの配線確認
- [ ] TOUCH_CSピン(GPIO33)の接続確認
- [ ] XPT2046_Touchscreenライブラリがインストール済みか確認
- [ ] シリアルモニタでタッチ座標が出力されるか確認
WiFiに接続できない
- [ ] SSID、パスワードが正しいか確認
- [ ] 2.4GHz WiFiを使用(5GHzは非対応)
- [ ] シリアルモニタでエラーメッセージを確認
- [ ] ルーターのMACアドレスフィルタリングを確認
画面がちらつく
- [ ] SPI_FREQUENCYを下げる(27MHz → 20MHz)
- [ ] 電源が安定しているか確認
- [ ] ジャンパー線が長すぎないか確認
コンパイルエラー
- [ ] Arduino IDEが最新版か確認
- [ ] ESP32ボードパッケージが最新か確認
- [ ] 必要なライブラリがすべてインストール済みか確認
プログラムが起動しない(クラッシュする)
- [ ] シリアルモニタでエラーメッセージを確認
- [ ] メモリ不足の可能性:不要なタスクを削除
- [ ] セマフォ関連エラー:初期化順序を確認
📚 参考資料
公式ドキュメント
コミュニティ
作成日: 2025年 対象: ESP32-WROOM-32 + ILI9341 TFT + XPT2046 Touch



