温湿度&暑さ指数表示端末をカラーLCD化しました
2025年の西日本は梅雨明けが平年より20日ほど早まって6/27になり、既に猛烈な暑さが来ています。6/25には昨年作った温湿度&暑さ指数表示端末のカラーLEDが煌々と赤く輝き、同時におうちサーバーに付けているスピーカーから「暑さ指数が危険レベルです」という合成音声が流れてきました。
その、カラーLEDが赤く光っている私のMastodon投稿を見て、カラーLCDで温湿度計付きデジタル時計を作っている方が「暑さ指数の色を液晶の背景色にして表示してみた」と投稿されました。一目見て「面白い」と思い、私もカラーLCD化してみた次第です。

あらためて秋月電子さんのLCD一覧を眺めていると、
a. 1.54インチ240x240ドット (M154-240240-RGB) と、
b. 2.8インチ320x240ドットのタッチパネル&SDカードスロット付き (MSP2807)
の2つが目に留まりました。最近発売されたばかりのa.は「いつもの」100均ケースにちょうど入りそうです(但し、下の方が蓋と干渉して見えないので、実質的に240x200程度になります)。b.は面白そうなのですが、少しばかり大きいのと、POSハンディ端末のようなオマケ機能を使うアイデアが浮かばなかったので、今回はパス。というわけで、LCDはa.を使うことにしました。
機能的には去年作った白黒端末と同様に、おうちサーバーからWi-Fiで室内外のデータを貰ってきて表示することにします。
ツールの使い方だけ分かれば、あとは大体いつも通り。CircuitPythonはチュートリアルがしっかりしているので、初めてだったWi-Fi接続や液晶表示も特に問題無くできました。特にWi-Fiについては、ssidなどのパラメータをsettings.tomlファイルに隠蔽することが推奨されており、このおかげで手軽にコードを共有できます(このやり方は便利なので他でも使おうと思います)。ただ、デフォルトのフォントが好みでなかったので、ちょっとFelo AIさんに訊いて、MINTIAで有名なFuturaフォントをotf2bdfで変換して使うことにしました(これは再配布しません)。ところが、フォントを変えると表示はいいのですが処理が重く、書き換えているのが目で見えるほど時間が掛かります。
このタイミングで表示エリアが縦に広がったことと等幅フォントを使わなかったことに対応したwebアプリも新たに起こしました。そのレスポンスは次の通りです:

(PCのChromeによるキャプチャ) ・・・というようなことをしながらでも、1日でブレッドボード上で一通り動くところまではできました。その後、関数を整理したりエラー発生時の処理を加えたりウォッチドッグタイマを仕掛けたりしてコーディングに区切りを付け、実機制作にかかりました。手順としては配置をざっくり検討し、ケースのLCD面を開口し、部品をはんだ付けし、スイッチと電源コネクタの位置を現物合わせで開口して、一安心したら配線です。まず、できたケースはこの通りです:

加工はカッターナイフがメインで、一部ハンドドリルを使いましたが、もうちょっと楽な方法は無いものか。 続いて配線済みの基板とLCDを部品面側から見ると、この通りです:

回路面(部品反対面)からは、この通りです:

LCD裏側のピンヘッダ高さに相当する厚さの消しゴムを貼って、回路側の基板と水平が出るようにしています。これをしないと、何かの拍子にLCDを触るとケース内にLCDが倒れます。 組み立てたものが、こちらです(冒頭の写真再掲):

従来の白黒端末と重ねて見ると、こんな感じ:

コントラストが良く、文字も明瞭になって見やすくなりました。 ところが、組み立てた後にネットワークエラーが頻発するようになりました。配線は合っているようで(というか、基本的に動いているし電圧関係もおかしくない)、Thonnyに繋いでもデバッグが利かないというピンチ。もしかして、と思ってXIAO ESP32C6とLCDの3.3Vにパスコンを入れたらあっさり直りました。Wi-Fiを使うのに不用意にピンヘッダを使ったりペリフェラルへ長いラインを引いたりしたらダメだね、という基本的なお話でした。 実際に使い始めたところ、わが家の居間ではバックライトが眩しすぎるという問題も出ました。これはHigh/LowのみだったバックライトのコントロールをPWMで調整し、結果として20%ぐらいで落ち着きました(上記の写真はバックライト輝度調整後です)。しかしながら、夜間消灯時にスイッチでバックライトを点灯するときはLCDの内部プルアップで単なるHighレベルになってしまうので、暗く点いて欲しいタイミングで眩しくなる、というトラップになっています。これだけのためにポートを1つ使うのもなぁ、と悩んでいるところです(いっそ可変抵抗で調整した方がいいかも)。 以上の検討を踏まえた回路図は次の通りです:

XIAO ESP32C6が機能てんこ盛りなおかげで、とてもシンプルになりました。
コードはGitHubにリポジトリを作って置いておきました。なお、ここにはネットワークパラメータ(settings.toml)とフォントは置きませんので、そのまま動くものではありません。 BOMは次の通りで、合計2009.5円でした。なお、電線・ハンダ・ピン・ラベル等の副材はカウントしていません:
白黒からカラーになって部品点数が激減して1000円もお安くなったのは、XIAO ESP32C6が機能の割に安く、LCDの値差も無かったおかげです。
さて、
関東以北の梅雨明けはまだですが、空梅雨の高温になったりゲリラ豪雨に見舞われたりしているようです。琵琶湖の水位も低めで推移しています。この、全体的には雨が降らないけれど降るときは土砂降りになるという現象が地球温暖化に伴うものであることを、竹筒の太くなった「ししおどし」モデルで説明されているのを最近知りました:

出典:国立環境研究所 気候変動適応情報プラットフォーム(A-PLAT):気候変動適応における広域アクションプラン:災害対策分科会:災害時の孤立に備える~地域特性に応じた減災としての適応~(気候変動 適応における広域アクションプラン2024年度版) p.10
折しも参議院選挙が7/20まで行われているところ、温暖化防止・再エネ化などへ本気で取り組む候補者・党が躍進できればいいなと思っているところです。もちろん自分でも温暖化抑止にできることを引き続き行います。 以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (M2)
その、カラーLEDが赤く光っている私のMastodon投稿を見て、カラーLCDで温湿度計付きデジタル時計を作っている方が「暑さ指数の色を液晶の背景色にして表示してみた」と投稿されました。一目見て「面白い」と思い、私もカラーLCD化してみた次第です。

あらためて秋月電子さんのLCD一覧を眺めていると、
a. 1.54インチ240x240ドット (M154-240240-RGB) と、
b. 2.8インチ320x240ドットのタッチパネル&SDカードスロット付き (MSP2807)
の2つが目に留まりました。最近発売されたばかりのa.は「いつもの」100均ケースにちょうど入りそうです(但し、下の方が蓋と干渉して見えないので、実質的に240x200程度になります)。b.は面白そうなのですが、少しばかり大きいのと、POSハンディ端末のようなオマケ機能を使うアイデアが浮かばなかったので、今回はパス。というわけで、LCDはa.を使うことにしました。
機能的には去年作った白黒端末と同様に、おうちサーバーからWi-Fiで室内外のデータを貰ってきて表示することにします。
- 文字と背景の色は環境省の「運動に関する指針」を用います(私自身の体感とも合ってます)。
- 室内・室外表示切り替えにスイッチを付け、「危険」レベルになったら目立つようにLEDを点滅させます(今回は単色の赤色LED)。
- バックライトはふだん起きている時間帯だけ点灯し、通常は消灯する夜間でも「危険」レベルになったら点灯することにします。
ツールの使い方だけ分かれば、あとは大体いつも通り。CircuitPythonはチュートリアルがしっかりしているので、初めてだったWi-Fi接続や液晶表示も特に問題無くできました。特にWi-Fiについては、ssidなどのパラメータをsettings.tomlファイルに隠蔽することが推奨されており、このおかげで手軽にコードを共有できます(このやり方は便利なので他でも使おうと思います)。ただ、デフォルトのフォントが好みでなかったので、ちょっとFelo AIさんに訊いて、MINTIAで有名なFuturaフォントをotf2bdfで変換して使うことにしました(これは再配布しません)。ところが、フォントを変えると表示はいいのですが処理が重く、書き換えているのが目で見えるほど時間が掛かります。
このタイミングで表示エリアが縦に広がったことと等幅フォントを使わなかったことに対応したwebアプリも新たに起こしました。そのレスポンスは次の通りです:

(PCのChromeによるキャプチャ) ・・・というようなことをしながらでも、1日でブレッドボード上で一通り動くところまではできました。その後、関数を整理したりエラー発生時の処理を加えたりウォッチドッグタイマを仕掛けたりしてコーディングに区切りを付け、実機制作にかかりました。手順としては配置をざっくり検討し、ケースのLCD面を開口し、部品をはんだ付けし、スイッチと電源コネクタの位置を現物合わせで開口して、一安心したら配線です。まず、できたケースはこの通りです:

加工はカッターナイフがメインで、一部ハンドドリルを使いましたが、もうちょっと楽な方法は無いものか。 続いて配線済みの基板とLCDを部品面側から見ると、この通りです:

回路面(部品反対面)からは、この通りです:

LCD裏側のピンヘッダ高さに相当する厚さの消しゴムを貼って、回路側の基板と水平が出るようにしています。これをしないと、何かの拍子にLCDを触るとケース内にLCDが倒れます。 組み立てたものが、こちらです(冒頭の写真再掲):

従来の白黒端末と重ねて見ると、こんな感じ:

コントラストが良く、文字も明瞭になって見やすくなりました。 ところが、組み立てた後にネットワークエラーが頻発するようになりました。配線は合っているようで(というか、基本的に動いているし電圧関係もおかしくない)、Thonnyに繋いでもデバッグが利かないというピンチ。もしかして、と思ってXIAO ESP32C6とLCDの3.3Vにパスコンを入れたらあっさり直りました。Wi-Fiを使うのに不用意にピンヘッダを使ったりペリフェラルへ長いラインを引いたりしたらダメだね、という基本的なお話でした。 実際に使い始めたところ、わが家の居間ではバックライトが眩しすぎるという問題も出ました。これはHigh/LowのみだったバックライトのコントロールをPWMで調整し、結果として20%ぐらいで落ち着きました(上記の写真はバックライト輝度調整後です)。しかしながら、夜間消灯時にスイッチでバックライトを点灯するときはLCDの内部プルアップで単なるHighレベルになってしまうので、暗く点いて欲しいタイミングで眩しくなる、というトラップになっています。これだけのためにポートを1つ使うのもなぁ、と悩んでいるところです(いっそ可変抵抗で調整した方がいいかも)。 以上の検討を踏まえた回路図は次の通りです:

XIAO ESP32C6が機能てんこ盛りなおかげで、とてもシンプルになりました。
コードはGitHubにリポジトリを作って置いておきました。なお、ここにはネットワークパラメータ(settings.toml)とフォントは置きませんので、そのまま動くものではありません。 BOMは次の通りで、合計2009.5円でした。なお、電線・ハンダ・ピン・ラベル等の副材はカウントしていません:
| item | detail | price | pcs | subtotal |
|---|---|---|---|---|
| MPU | Seeed XIAO ESP32C6 | 1040 | 1 | 1040 |
| LCD | M154-240240-RGB | 750 | 1 | 750 |
| C | 105:RDER71H105K2K1H03B | 20 | 1 | 20 |
| C | 104:RPEF11H104Z2P1A01B | 10 | 1 | 10 |
| LED | OSR6LU5B64A-5V | 12 | 1 | 12 |
| SW | TCF-062 | 10 | 1 | 10 |
| SW | SS-12D00-G5 | 20 | 1 | 20 |
| subs | AE-FRSK-120-UV-TH | 120 | 1 | 120 |
| case | 内寸約60x40x30mm | 27.5 | 1 | 27.5 |
関東以北の梅雨明けはまだですが、空梅雨の高温になったりゲリラ豪雨に見舞われたりしているようです。琵琶湖の水位も低めで推移しています。この、全体的には雨が降らないけれど降るときは土砂降りになるという現象が地球温暖化に伴うものであることを、竹筒の太くなった「ししおどし」モデルで説明されているのを最近知りました:

出典:国立環境研究所 気候変動適応情報プラットフォーム(A-PLAT):気候変動適応における広域アクションプラン:災害対策分科会:災害時の孤立に備える~地域特性に応じた減災としての適応~(気候変動 適応における広域アクションプラン2024年度版) p.10
折しも参議院選挙が7/20まで行われているところ、温暖化防止・再エネ化などへ本気で取り組む候補者・党が躍進できればいいなと思っているところです。もちろん自分でも温暖化抑止にできることを引き続き行います。 以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (M2)
| 固定リンク | 0


コメント