ブレッドボードで動作テストした後で悩むのが、ユニバーサル基板へのモジュールの配置とそれらを収めるケースです。
今回使ったパーツの中で最も大きな2.8インチTFT液晶(ILI9341)モジュールの横幅が二合枡の内部寸法にジャストフィットで収まりました。センサ類は外気に晒しておきたいので前面下部に設置。
室内専用となりますがケースとして二合枡を使い、木工ドリルでACアダプター接続用のDCジャック、スケッチ書き込み用のUSBケーブルの差し込み穴、ユニバーサル基板とゴム足固定用の小穴をあける作業でした。
ユニバーサル基板ではんだ付けして実装することでブレッドボードとワイヤの接触不良がなくなり安定動作しています。
今回CO2濃度測定に使ったSCD41センサモジュールはSCD30センサモジュールと基板サイズやピン配置がコンパチブルなので同一のユニバーサル基板、ケースが使えます。

ケース作製用に集めたパーツ
ネット通販と手持ちのパーツを集めて組み立てました。
# | パーツ | 数量 | 備考 |
1 | 二合枡 外寸: 約108 × 108 × 58 内寸: 約 87 × 87 × 47.5 | 1 | 板厚は約10.0mm ~ 10.6mm |
2 | ユニバーサル基板 | 適量 | 両面スルーホール、2.54mmピッチ、ガラスエポキシ製 |
3 | ラッピングワイヤ | 適量 | ユニバーサル基板上の配線には30AWG、電源引き出しには24AWGを利用 |
4 | 分割ロングピンソケット (細ピン用) 1×40 (40P) | 適量 | モジュールのピン数に合わせてニッパでカット |
5 | 樹脂スペーサ(1) オス-メス M3 x 15mm | 4 | ユニバーサル基板の固定 手持ちの樹脂スペーサ(1)と(2)を結合して23mmで利用 |
6 | 樹脂スペーサ(2) オス-メス M3 x 8mm、 プラナット | 4 | |
7 | 平頭小ネジ、ナット M3 x 16mm | 4 | 二合枡の背面から樹脂スペーサ(1)を固定 |
8 | 樹脂スペーサ(3) オス-メス M2 x 10mm | 2 | DS3231 と SCD41モジュールの固定、プラスペーサは高さの微調整用。 手持ちの樹脂スペーサ(3)にプラスペーサは挟んで11mmで利用 |
9 | M2プラナット、 プラスペーサ(1mm) | 2 | |
10 | ACアダプター (2.1mmプラグ) | 1 | 9V 1.3A 100~240V |
11 | (9Vを5Vに降圧) | DC-DC降圧モジュール任意 | 5VのACアダプター利用時は不要 |
12 | 2.1mm標準DCジャック | 1 | |
13 | ゴム足、 木ネジ(タッピングネジ) | 4 |
ユニバーサル基板に実装
ブレッドボード上のテストで動作確認が取れたので、ユニバーサル基板に実装しました。今回使ったパーツの中で最も大きな2.8インチTFT液晶(ILI9341)モジュールの横幅に合わせて、ユニバーサル基板のサイズは約86mm x 80mmとしています。二合枡の内部寸法は約 87 mm× 87mm。
その際、TFT液晶モジュールの両端の接続ピン(J2(14本のピン)、J4(4本のピン))がユニバーサル基板上の2.54mmピッチの両面スルーホールの位置とあっていることを確認しておきます。
各モジュールは分割ロングピンソケットを介してはんだ付け
各モジュールは、ユニバーサル基板に直接はんだ付けしないで、分割ロングピンソケットを介して実装しています。
ユニバーサル基板のおもて面に2.8インチTFT液晶(ILI9341)モジュールとCO2濃度センサSCD41、気圧・温湿度センサBME280を、裏面にESP32-DevKitCとRTCモジュールDS3231、DC-DC降圧モジュールを実装。
ACアダプター接続用の2.1mm標準DCジャックとユニバーサル基板をつなぐ配線ケーブルの中間地点に脱着用の中継コネクタを追加しておくと、ユニバーサル基板を点検する際に二合枡と分離できて便利です(今回、中継コネクタはオス・メスのジャンパーワイヤのピンを24AWG配線ケーブルではんだ付けして自作)。
ケースに収めた際に、(ぎりぎりの寸法ですが)2.8インチTFT液晶(ILI9341)モジュールのSDカードソケットからSDカードを出し入れができること、ESP32-DevKitCのUSBコネクタに外部からスケッチ書き込み用のUSBケーブルが刺せることを確認して配置を決めました。
ユニバーサル基板上のモジュール間の配線には手持ちのラッピング用ワイヤ30AWG(細い)、電源引き出しには24AWGを利用。


ESP32-DevKitCへの電源供給、結線図
電源供給は、PC等のUSBコネクタからESP32-DevkitCのUSB micro Bコネクタに給電するか、5V出力のACアダプターをESP32-DevkitCの5Vピンにつないで動作させます(ESP32-DevkitCは内部に5Vから3.3Vの降圧レギュレータを内蔵)。
ケース実装にあたり、2.1mm標準DCジャックに接続できるACアダプターを使っています。今回、手持ちのACアダプターが9V出力だったので、DC-DC降圧モジュール(MP1584EN)を使って5Vに降圧してESP32-DevkitCの5Vピンに外部給電します。
DC-DC降圧モジュールのIN+とIN-間に9Vを印可したとき、OUT+とOUT-間が5Vになるようにモジュール上の半固定ボリュームを調整しておきます。
INとOUT側の4本のジャンパーピンは、余ったワイヤ線などをはんだ付けして自作。
参考:
・ESP32-DevKitC-1 pin-layout | espressif.com


二合枡の加工
二合枡の穴あけに木工用ドリル刃(3mm、8mm、18mm)、狭所での作業は先端が細く平たい精密ピンセットを使用。
DCジャック取り付け、USBコネクタ接続用の穴開け
二合枡の背面に8mm φ の木工用ドリルで穴あけしてACアダプターとつなぐ2.1mm標準DCジャックを装着。開けた穴径がやや大きかったので2.1mm標準DCジャックのねじ部分に強力両面テープを1周巻いてからねじ込んで接着。
二合枡の上面側にはESP32-DevkitCのUSB micro BコネクタにPCからのUSB ケーブルを差し込める位置に18mm φ の木工用ドリルで穴あけ、スケッチの修正が容易になりました。


熱の排気口としても有効か?
二合枡ケースにユニバーサル基板を固定、ゴム足を取り付けて完成
二合枡の背面に3mm φ の木工用ドリルで4箇所穴あけして、先にユニバーサル基板と二合枡をつなぐ樹脂スペーサ(1)を二合枡の背面からM3平頭小ネジで樹脂スペーサが少し動く程度にしめておきます。
裏面実装になるモジュール(ESP32-DevKitC、RTCモジュールDS3231、DC-DC降圧モジュールを分割ロングピンソケットに差し込んだユニバーサル基板と基板上の電源ケーブルを脱着用の中継コネクタを介して2.1mm標準DCジャックに接続。そのユニバーサル基板を二合枡に組み入れてM3プラナットで樹脂スペーサに固定。その際ユニバーサル基板の4隅に開けた3mm φ 穴と樹脂スペーサのM3ねじの頭がずれて刺さらないときは、開けた3mm φ 穴から見えるねじの頭を精密ピンセットで引き込みます。
ユニバーサル基板と樹脂スペーサを4個のプラナットで固定できたら、二合枡の背面側のM3平頭小ネジを固定します。
最後に、おもて面実装の2.8インチTFT液晶(ILI9341)モジュールとCO2濃度センサSCD41、気圧・温湿度センサBME280を分割ロングピンソケットに差し込んで完成です。
二合枡の底面 4か所にゴム足(壊れた冷却ファンから流用)を木工用のタッピングネジで取り付けました。


BME280センサの取り付け位置(2025/03/14追加)
センサ類は外気に晒しておきたいのでケース前面下部に配置していますが、BME280センサモジュールをケース表面から1cm程奥まった位置に配置したところブレッドボード実装時より温度が1℃ほど高めになったため、BME280センサモジュールピンをジャンバーワイヤでケースから1cmほど外出して評価中です。

動作確認に使ったスケッチ
ACアダプターを2.1mm標準DCジャックに差し込んで起動、動作確認。Arduino IDE(ESP32-DevKitCの開発ツール arduino-esp32インストール済)から、センサモジュールにあったスケッチを書き込んで、初期化状況のメッセージがエラーなく表示されれば完成です。
CO2濃度測定にSCD41センサモジュールを利用した場合のスケッチ
動作確認に使ったスケッチは、CO2濃度測定にSCD41センサモジュールを使い、1秒毎に日時・時刻表示、10秒毎に気圧、CO2濃度、温度、湿度を表示、SDカードにその値をファイル名「logdata.txt」でCSV形式で書き込む「esp32-devkitc_ili9341_scd4x_bme280_ds3231_SD.ino」。下記のリンク先にセットアップ手順をまとめています。

CO2濃度測定にSCD30センサモジュールを利用した場合のスケッチ
今回CO2濃度測定に使ったSCD41センサモジュールとSCD30センサモジュールは、基板サイズやピン配置がコンパチブルでした。スケッチの修正は必要ですが、SCD30センサモジュールに差し替えで動作できました。
動作確認に使ったスケッチは、CO2濃度測定にSCD30センサモジュールを使い、1秒毎に日時・時刻表示、10秒毎に気圧、CO2濃度、温度、湿度を表示、SDカードにその値をファイル名「logdata.txt」でCSV形式で書き込みます。下記のリンク先にセットアップ手順をまとめています。

リンク先のスケッチ「esp32-devkitc_ili9341_scd30_bme280_ds3231_SD_v2.ino」は、CとOの文字サイズを小さめにしたHEXデータを使っています。
