はじめに
こんにちは!
突然ですが、「自分だけのオリジナルスマートウォッチを作ってみたい」と思ったことはありませんか?
今回から新企画として、円形・小型ディスプレイを搭載したマイコンボードを使った「自作スマートウォッチ開発プロジェクト」をスタートします!
記念すべき第1回は、開発の第一歩となる「Arduino IDEでの環境セットアップ」です。ESP32-S3ならではのボード設定のコツや、サンプルコードのビルドエラー、そして「必要なライブラリが見つからない!」というトラブルの解決プロセスまでを詳しくお届けします。
今回使用するハードウェア
- ボード: Waveshare ESP32-S3 1.69inch Touch LCD
- 開発環境: Arduino IDE
1.69インチのタッチ機能付き液晶が最初から組み込まれている非常に優秀なボードですが、開発環境を整えるまでにいくつか「ハマりどころ」がありました。
Step 1: 公式サンプルの取得とライブラリ配置
まずは、メーカー公式のGitHubからサンプルコードと専用ライブラリを取得します。
- 公式GitHubへアクセス:
Waveshare公式 GitHub (ESP32-S3-Touch-LCD-1.69) から「Code」>「Download ZIP」でファイルをダウンロードして解凍します。 - ライブラリの配置:
解凍したフォルダ内のArduino/librariesにあるフォルダ一式をコピーし、自分のPCのドキュメント\Arduino\librariesに貼り付けます。(これでディスプレイやセンサーのドライバが認識されます)
Step 2: Arduino IDEの環境構築(★超重要:バージョン指定)
ここが最初のハマりポイントです!
最新のESP32ボードパッケージ(v3.x系)を使用すると、描画ライブラリと競合してエラーが発生します。 今回は安定して動作する v2.0.17 を指定してインストールします。
- Arduino IDEの「ファイル」>「基本設定」を開く。
- 「追加のボードマネージャのURL」に以下を入力します。
Plaintexthttps://espressif.github.io/arduino-esp32/package_esp32_index.json - 「ツール」>「ボード」>「ボードマネージャ」で
esp32を検索。 esp32 by Espressif Systemsのバージョン2.0.17を選択してインストール。
(※すでに3.x系が入っている場合は、一度削除してから入れ直すのが確実です)
Step 3: ボード設定とコードの修正
1. ボード設定
ESP32-S3で画面を正常に描画させ(真っ白画面の回避)、PCと通信するための必須設定です。
「ツール」メニューから以下のように設定します:
- ボード: ESP32S3 Dev Module
- USB CDC On Boot: Enabled (シリアル通信の有効化)
- PSRAM: OPI PSRAM (画面描画用メモリの有効化)
- Flash Mode: QIO 80MHz
- ポート: 接続されたCOMポートを選択
2. コードの修正(重複定義の回避)
v2.x系の環境ではシステム側でシリアル通信が準備されるため、サンプルコード(01_HelloWorld.ino など)を開き、multiple definition of 'USBSerial' エラーを防ぐために以下の2行をコメントアウトします。
C++
// 以下の頭に // を付けて無効化する
// USBSerial Serial;
ここまで設定できたら、書き込みボタン(→)をクリック!画面に「Hello World」が無事に表示されれば初期動作確認は完了です。
Step 4: 【トラブル発生】消えたタッチライブラリを追え!
ディスプレイ表示が成功し、「よし!次はタッチ操作を試してみよう!」と進んだところで問題が発生しました。
「Arduino_DriveBus_Library.h がありません」というコンパイルエラー。
なんと、公式サンプルのライブラリフォルダ内に、タッチセンサーの制御に必要な肝心のライブラリが含まれていなかったのです……。
「う〜ん、今日はここまでか……」と諦めかけたその時、頼れる相棒であるAIエージェント(OpenCode)に相談してみたところ、一瞬で解決策を見つけてきてくれました!
【解決策】
同メーカーの別製品のリポジトリ
waveshareteam/ESP32-S3-Touch-AMOLED-2.06内に目的のライブラリが存在することを発見!そこから
Arduino_DriveBusライブラリ (v1.1.5) をダウンロードして配置したところ、無事にタッチ機能もビルドが通るようになりました!
AIの粘り強い検索力に助けられた瞬間でした。
おわりに
電子工作やマイコン開発では、「公式ドキュメント通りにやってもライブラリが足りない・バージョンが合わない」といったトラブルが日常茶飯事です。しかし、そこを試行錯誤やAIの力を借りて突破していくプロセスこそが醍醐味でもあります。
無事に画面描画とタッチ制御の足場(開発環境)が整いました!
次回はいよいよ、「スマートウォッチらしい時計画面(UI)の描画と、タッチレスポンスの実装」に挑戦していきます。お楽しみに!
