ESP32タッチディスプレイデバイス 使用マニュアル ESP32-2432S028

技術関連

ESP32タッチディスプレイデバイス 使用マニュアル ESP32-2432S028

📋 目次

  1. ハードウェア仕様
  2. 必要なハードウェア
  3. 配線図
  4. 開発環境のセットアップ
  5. プログラムの書き込み
  6. WiFi設定
  7. カスタマイズ方法
  8. トラブルシューティング

⚙️ ハードウェア仕様

簡単に説明

【デバイス仕様】
- マイコン: 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ピン機能
VCC3.3V電源
GNDGNDグランド
CSGPIO15チップセレクト
RESETGPIO4リセット
DCGPIO2データ/コマンド
MOSIGPIO23データ送信
SCKGPIO18クロック
LED3.3Vバックライト
MISOGPIO19データ受信

タッチスクリーン側(Touch)

タッチピンESP32ピン機能
T_CSGPIO33チップセレクト
T_CLKGPIO25クロック
T_DINGPIO32データ入力
T_DOGPIO39データ出力
T_IRQGPIO36割り込み

配線のポイント

  • VSPI(ディスプレイ用): GPIO18, 19, 23
  • HSPI(タッチ用): GPIO25, 32, 39
  • 2つの異なるSPIバスを使用することで競合を回避

コネクタ配置

None
None

💻 開発環境のセットアップ

1. Arduino IDEのインストール

  1. Arduino公式サイトからダウンロード
  2. インストール実行

2. ESP32ボードの追加

  1. Arduino IDE を起動
  2. ファイル → 環境設定
  3. 「追加のボードマネージャのURL」に以下を追加: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  4. ツール → ボード → ボードマネージャ
  5. 「esp32」を検索してインストール

3. 必要なライブラリのインストール

ライブラリマネージャから以下をインストール:

  1. TFT_eSPI (by Bodmer)
  2. 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. 書き込み

  1. ESP32をUSBで接続
  2. スケッチ → マイコンボードに書き込む(または Ctrl+U)
  3. 書き込み完了まで待つ(約30秒)

5. 動作確認

  • シリアルモニタを開く(ツール → シリアルモニタ
  • ボーレート: 115200
  • 起動メッセージを確認

📶 WiFi設定

接続方法

プログラム内で設定した SSID とパスワードで自動接続します。

IPアドレスの確認

  1. 下部タブで「WiFi」をタッチ
  2. IPアドレスが表示されます
  3. シリアルモニタでも確認可能

トラブルシューティング

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

調整方法:

  1. タッチテストプログラムを実行
  2. 四隅をタッチして座標を確認
  3. 上記の値を実際の座標に置き換え

❓ トラブルシューティング

画面が表示されない

  • [ ] 配線を確認(特に電源と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

タイトルとURLをコピーしました