2025/07/17

カラー化した温湿度&暑さ指数表示端末を、ちょっと改良【2025/07/18追記】

おうちサーバーの温湿度データから求めた暑さ指数を表示する小箱を、昨年作った白黒表示のものからカラー表示に置き換えました。これで正面から見る限りでは現在のWBGT指標がとても見やすくなったのですが、ケース内のLEDを「危険」レベルの時の赤色だけにしてしまったので、正面以外からは指標が分からなくなってしまいました。

また、作っている時から気が付いていた夜間消灯時にスイッチでバックライトを点灯すると輝度MAX.になってしまう問題が、やはり地味に不便でした。

上記2点の不都合を、ちょちょっと改良しました。変化は後ろ姿だけです:
Cterm08
右上で光っているのはマイコン内蔵カラーLEDで、ゆっくり明滅します。また、左下に輝度調整用のボリュームが見えています。
回路図は次の通りです:
Wdd_term_color_sch05
GitHubのリポジトリも更新しておきました。

配線済みの基板とLCDを部品面側から見ると、XIAO上側のLEDが赤色単色からカラーに代わり、左下にLCD輝度調整用のボリュームが付きました:
Cterm09
回路面(部品反対面)は、少し配線が変わっただけです:
Cterm10
BOMは次の通りで、合計2087.5円でした(78円の追加)。なお、電線・ハンダ・ピン・ラベル・LED光拡散キャップ等の副材はカウントしていません:
itemdetailpricepcssubtotal
MPUSeeed XIAO ESP32C6104011040
LCDM154-240240-RGB7501750
C105:RDER71H105K2K1H03B20120
C104:RPEF11H104Z2P1A01B10110
LEDPL9823-F540140
SWTCF-06210110
SWSS-12D00-G520120
VR3362P 10350150
subsAE-FRSK-120-UV-TH1201120
case内寸約60x40x30mm27.5127.5

ところで、GitHubにコードをアップするとCopilotによるAI添削が受けられるようになりました。起動すると"How can I help you?"と英語で訊いてきますが、試しに日本語で「何か問題があれば教えて下さい」とプロンプトを打ってみると日本語で回答されました。その結果、大きな問題は無いけれども関数に付ける注釈はdocstringにすべきだとか、定数は大文字が慣例だ、などと教えてくれました。この辺り、私が体系的に学んでいないことがあらためて突きつけられたということで、とりあえず簡単なところだけ直しました。その他、循環的複雑度の悪かったmain()を分割したり、エラーハンドリングを共通化するなどのリファクタリングもしました。他にも気になることがコメントの英語化など色々あるのですがキリが無いので、とりあえず今日のところはこれぐらいで勘弁してやります(ぉぃ)。ちなみに、今回使ったマイコン内蔵カラーLED配色がGRB(緑-赤-青)順なのですがCopilotはRGB順だと思い込んだようで、コメントで明記しても執拗に「間違ってる」と言ってきました。(PL9823の色順についてweb情報が少ないのはホビー用途で「動けば正義」だからか。まぁ、3.3Vで使っている段階で「動けば正義」そのものなのですが。)

以上、引っかかっていたところが解消してスッキリしています。何かの参考になれば幸いです。

パドラッパ from MacBook Air (M2)

【2025/07/18追記】
ケースを横向きにして蓋をLCD開口にした方が造形的にも加工的にもよかったかも、と今さらになって考えています:
Cterm11
というのは、画面が斜め上を向くのは良いし、DAISOミニパックは蓋素材PEの方が本体素材PPよりも切りやすいからです。もしかしたらAmazon Echo Show似になるのを無意識が避けたのかも知れませんが(似てない)、1年前に気付きたかったところ。
あと、ケース加工にはホットナイフなどがいいかも、とMastodonで教えてもらいました。次に向けて考え中です。

| | | コメント (0)

2025/07/12

温湿度&暑さ指数表示端末をカラーLCD化しました

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

あらためて秋月電子さんのLCD一覧を眺めていると、
a. 1.54インチ240x240ドット (M154-240240-RGB) と、
b. 2.8インチ320x240ドットのタッチパネル&SDカードスロット付き (MSP2807)
の2つが目に留まりました。最近発売されたばかりのa.は「いつもの」100均ケースにちょうど入りそうです(但し、下の方が蓋と干渉して見えないので、実質的に240x200程度になります)。b.は面白そうなのですが、少しばかり大きいのと、POSハンディ端末のようなオマケ機能を使うアイデアが浮かばなかったので、今回はパス。というわけで、LCDはa.を使うことにしました。

機能的には去年作った白黒端末と同様に、おうちサーバーからWi-Fiで室内外のデータを貰ってきて表示することにします。
  1. 文字と背景の色は環境省の「運動に関する指針」を用います(私自身の体感とも合ってます)。
  2. 室内・室外表示切り替えにスイッチを付け、「危険」レベルになったら目立つようにLEDを点滅させます(今回は単色の赤色LED)。
  3. バックライトはふだん起きている時間帯だけ点灯し、通常は消灯する夜間でも「危険」レベルになったら点灯することにします。

使うLCD(a.)は電源とI/Oの電圧範囲が2.4〜3.3Vと低めなので、マイコンもこれに合わせる必要があります(まぁ、組み込みなら大抵大丈夫でしょう)。去年出てから気になっていた、Seeed Studio XIAOシリーズで初めてWi-Fi内蔵アンテナを搭載したESP32C6も大丈夫なので、これを今回は使ってみました(手持ちのRaspberry Pi PICO Wも考えたのですが、細長すぎて使いにくくて)。電圧は3.3VでOKですし、内蔵DDコンの3.3V出力も余裕ありそうです。(回路図やIC仕様を確認するとXIAO内蔵のDDコンは1A出力で、ESP32C6自体は高々400mA、a.のLCDはドライバー7.5mAとバックライト40mA max、あとはLED程度。但しレーティングは不明。)CircuitPythonもサポートされていて、a.のLCDドライバST7789Vも使えます。

部品が着いて、すぐに検討を始めました。いきなり面食らったのがXIAO ESP32C6にCircuitPythonのF/Wを書き込んでリセットしてもドライブがマウントされないこと。実はESP32C6はUSB OTG非対応で、同じXIAOシリーズのnRF52840などとは使い勝手が違うようです(ちなみにESP32S系はUSB OTG対応)。USBシリアル接続にはThonnyが推奨だということで、Muエディタ終了のお知らせを承けてインストールだけしていたものを使うことにしました。(他にwebシリアルという手もあるのですが直接編集できないなど不便でパス。)
ツールの使い方だけ分かれば、あとは大体いつも通り。CircuitPythonはチュートリアルがしっかりしているので、初めてだったWi-Fi接続液晶表示も特に問題無くできました。特にWi-Fiについては、ssidなどのパラメータをsettings.tomlファイルに隠蔽することが推奨されており、このおかげで手軽にコードを共有できます(このやり方は便利なので他でも使おうと思います)。ただ、デフォルトのフォントが好みでなかったので、ちょっとFelo AIさんに訊いて、MINTIAで有名なFuturaフォントotf2bdfで変換して使うことにしました(これは再配布しません)。ところが、フォントを変えると表示はいいのですが処理が重く、書き換えているのが目で見えるほど時間が掛かります。
このタイミングで表示エリアが縦に広がったことと等幅フォントを使わなかったことに対応したwebアプリも新たに起こしました。そのレスポンスは次の通りです:
Cterm02
(PCのChromeによるキャプチャ)

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

続いて配線済みの基板とLCDを部品面側から見ると、この通りです:
Cterm04
回路面(部品反対面)からは、この通りです:
Cterm05
LCD裏側のピンヘッダ高さに相当する厚さの消しゴムを貼って、回路側の基板と水平が出るようにしています。これをしないと、何かの拍子にLCDを触るとケース内にLCDが倒れます。

組み立てたものが、こちらです(冒頭の写真再掲):
Cterm01
従来の白黒端末と重ねて見ると、こんな感じ:
Cterm06
コントラストが良く、文字も明瞭になって見やすくなりました。

ところが、組み立てた後にネットワークエラーが頻発するようになりました。配線は合っているようで(というか、基本的に動いているし電圧関係もおかしくない)、Thonnyに繋いでもデバッグが利かないというピンチ。もしかして、と思ってXIAO ESP32C6とLCDの3.3Vにパスコンを入れたらあっさり直りました。Wi-Fiを使うのに不用意にピンヘッダを使ったりペリフェラルへ長いラインを引いたりしたらダメだね、という基本的なお話でした。

実際に使い始めたところ、わが家の居間ではバックライトが眩しすぎるという問題も出ました。これはHigh/LowのみだったバックライトのコントロールをPWMで調整し、結果として20%ぐらいで落ち着きました(上記の写真はバックライト輝度調整後です)。しかしながら、夜間消灯時にスイッチでバックライトを点灯するときはLCDの内部プルアップで単なるHighレベルになってしまうので、暗く点いて欲しいタイミングで眩しくなる、というトラップになっています。これだけのためにポートを1つ使うのもなぁ、と悩んでいるところです(いっそ可変抵抗で調整した方がいいかも)。

以上の検討を踏まえた回路図は次の通りです:
Wdd_term_color_sch
XIAO ESP32C6が機能てんこ盛りなおかげで、とてもシンプルになりました。
コードはGitHubにリポジトリを作って置いておきました。なお、ここにはネットワークパラメータ(settings.toml)とフォントは置きませんので、そのまま動くものではありません。

BOMは次の通りで、合計2009.5円でした。なお、電線・ハンダ・ピン・ラベル等の副材はカウントしていません:
itemdetailpricepcssubtotal
MPUSeeed XIAO ESP32C6104011040
LCDM154-240240-RGB7501750
C105:RDER71H105K2K1H03B20120
C104:RPEF11H104Z2P1A01B10110
LEDOSR6LU5B64A-5V12112
SWTCF-06210110
SWSS-12D00-G520120
subsAE-FRSK-120-UV-TH1201120
case内寸約60x40x30mm27.5127.5
白黒からカラーになって部品点数が激減して1000円もお安くなったのは、XIAO ESP32C6が機能の割に安く、LCDの値差も無かったおかげです。

さて、
関東以北の梅雨明けはまだですが、空梅雨の高温になったりゲリラ豪雨に見舞われたりしているようです。琵琶湖の水位も低めで推移しています。この、全体的には雨が降らないけれど降るときは土砂降りになるという現象が地球温暖化に伴うものであることを、竹筒の太くなった「ししおどし」モデルで説明されているのを最近知りました:
Cterm07
出典:国立環境研究所 気候変動適応情報プラットフォーム(A-PLAT)気候変動適応における広域アクションプラン:災害対策分科会:災害時の孤立に備える~地域特性に応じた減災としての適応~(気候変動 適応における広域アクションプラン2024年度版) p.10
折しも参議院選挙が7/20まで行われているところ、温暖化防止・再エネ化などへ本気で取り組む候補者・党が躍進できればいいなと思っているところです。もちろん自分でも温暖化抑止にできることを引き続き行います。

以上、何かの参考になれば幸いです。

パドラッパ from MacBook Air (M2)

| | | コメント (0)

2025/05/23

MacBook Air(M2)の腱鞘炎対策

今日はこんなのを作った小ネタです:
Tilt1
2025年3月にMacBook AirをMid 2017(Intel)からM2に乗り換えてから、性能的には快適に使っています。いちばん驚いたのは、Android Studioで自分用に作っているアプリのビルドが一瞬で終わった時。Intelのときは麦茶を汲みに行ったりする時間があったのに、M2だと目を離した隙に終わっていて、バグで止まったのかと思ったほどでした。
「性能的には」と思わせぶりに書いたのは、春頃から手首と肘の腱鞘炎に悩まされていたのです。でもこれを自分の老化と認識していて、MacBook Airの乗り換えとはリンクしていなかったのでした。ところが一昨日Mastodonを眺めていたら、notestockなどの作者であるおささんが新しいvaioを買ったと呟いていて、その機種の紹介ページを見てみると「タイピング時の手首の疲れを軽減 ディスプレイを開くとキーボード奥側が持ち上がり、タイピングしやすい角度のつくチルトアップヒンジ機構を実現。手首にかかる負担を軽減する(後略)」と書かれているのに目が行きました。さすがvaioと思った次の瞬間「もしかして腱鞘炎はMacBook Air(M2)のせいか」と気が付いてしまいました。そういえば、2代続けて「くさび形」のMacBook Airだったのでフラットな筐体が合うか心配していたのを、すっかり忘れていました。

さっそくチルトさせてみます。周りを見回して、とりあえず段ボールを折って敷いてみました:
Tilt2
あらあら、てきめん楽です。これで1日様子を見ていたら、あれだけ悩まされていた腱鞘炎がすっかり治まりました。高さは2cmぐらいが適当そうです。というわけで、いい感じに恒久対策することにします。

MacBook Airの幅30.41cmと一致して見映えのマシそうなものを探したところ、ちょっと試しただけで使ってなかったセリアのボックスティッシュカバーがジャストサイズ。
Tilt3
これに芯を入れてみます。愛用している和平フレイズさんのミルクパンの空き箱を切って折り癖を付けて、
Tilt4
畳んで両面テープで留めて、ティッシュカバーに入れて丸めて、両面テープで留めたらできあがり。
Tilt5
MacBook Airに敷いて後ろから見てみると、
Tilt6
なんだかシンデレラフィットしています。横から見ると冒頭の写真の通りです(再掲):
Tilt1

歳を取ると、なんでも人のせいにする人もいるようですが、私は自分にベクトルを向けてしまいがちなのかも知れません。不都合があったら柔軟に可能性を考えないといけないなと、あらためて反省した次第です。
いま写真の転送のためにUSBポートを使ったところ、vaioさんの宣伝通りケーブル抜き挿しがやりやすくなっていました。さすがvaioさんは自分たちの使いこなしをユーザーと共有していますね、次にWindows PCを買うときもvaioかなぁ(実はSRX - U101 - type P - CBとvaioノートのユーザーです、もう13年も買ってないけど)。片やAppleさんは… やっぱりデザイン優先なのかな。

以上、何かの参考になれば幸いです。

パドラッパ from MacBook Air (M2)

| | | コメント (0)

2025/05/14

【お知らせ】「電子工作」カテゴリを追加しました【2025/05/16追記】

これまでArduinoSeeed XIAOESP32Raspberry PiTinkerBoardなどを使った電子工作についての記事は「パソコン・インターネット」のカテゴリに入れていたのですが、ボリュームが増えてきたので「電子工作」カテゴリを作って2つのカテゴリを併用することにしました。ご利用下さい(いちばん使うのは私自身だと思いますが〜)。

パドラッパ from MacBook Air (M2)

【2025/05/16追記】
No imageで寂しかったので、ChatGPTさんに『「電子工作」という言葉でイメージする絵を描いてみて下さい』とお願いしてみました。その結果がこちら:
Diy01
ハンダごて周りが間違い探しみたいになっていて興味深いです。ブレッドボードからリードがはみ出すのは心当たりあるかも。
続けて、英語で Please make a image of "Electronics as a DIY project". とお願いしたのがこちら:
Diy02
テスターさん仕事して〜

| | | コメント (0)

2025/05/13

フランスラグビーTOP14でフル動画を観るための会員登録方法【2025/09/09追記】

2025-26シーズンに入り、下記の方法ではフル動画が観られなくなっています。詳細は追記を参照下さい。
ラグビー日本代表の齋藤直人選手やテビタ・タタフ選手も参戦しているフランスTOP14では、ハイライトだけでなくフルゲームの動画を試合後数日でアップしてくれていて、私も楽しんでいます。この動画、2025年の4月中旬ごろまでは誰でも自由に観られたのですが、4/29にアクセスしたところフル動画と長編ハイライトに南京錠マークが付くようになりました:
T01
結論から言うと無料の会員登録をするだけで、これらの動画は観られるようになります。しかし、そこまでにフランス語の壁があるので少々苦労しました。メモ代わりに登録方法を共有します。

はじめてTOP14サイトに入ると、中央に大きくダイアログが出ます。これがページ翻訳ツールで対応できない第一関門。内容はクッキーについての同意です:
T02
DeepL翻訳したものを畳んでおきます:
受け入れずに続ける→
TOP 14 ウェブサイトへようこそ、
お客様の同意のもと、当社および当社の22のパートナーは、クッキーまたは類似の技術を使用して、本ウェブサイトへのアクセス、IPアドレス、クッキー識別子などの個人データを保存、アクセス、処理しています。一部のパートナーは、あなたのデータを処理するためにあなたの同意を必要とせず、彼らの合法的なビジネス上の利益に依存しています。お客様はいつでも、「詳細を見る」をクリックするか、本ウェブサイトのプライバシーポリシーにアクセスして、同意を撤回したり、正当な利益に基づくデータ処理に異議を唱えたりすることができます。

お客様の個人情報は、以下の目的で処理されます:
パーソナライズされたコンテンツ、正確なジオロケーションデータおよびデバイス分析による識別、重要な機能、視聴者測定、広告、パーソナライズされた広告およびコンテンツ、広告およびコンテンツのパフォーマンス測定、視聴者調査およびサービス開発、ソーシャルネットワーク、デバイスに関する情報の保存および/またはアクセス。

詳しくはこちら 同意して閉じる

最初に「受け入れない」選択があるのが日本の感覚と違ってすごいです。また、"En savoir plus →"側で細かく設定できますが、そこまでする方はご自分で調べて下さい。(日本とは比べものにならないぐらい、細かいです。好感を覚えた私は細かく設定しています。)

続いて右上のCompteから会員登録します。ログアウト状態からのログインもこちらです:
T03
こちらもDeepL翻訳したものを畳んでおきます:
アカウント / チケット発券

マイラグビーコミュニティに参加する
マイラグビーコミュニティであなたの情熱を分かち合いましょう。

アカウントを作成する
会員登録(facebookログイン) 登録方法(Googleログイン)
- または -
サインイン

"Créer un compte"側で細かな情報を入れて登録できますが、そこまでする方はご自分で調べて下さい。その下の左右がFacebook & Googleアカウントを使ったログインで、これらは日本語で登録できますので楽勝です。ここは私もGoogleアカウントを使っています。

登録完了すると、南京錠マークが消えて、フル動画と長編ハイライトが観られるようになりました:
T04

TOP14のレギュラーシーズンは26節あって、先週末が第23節でした。終盤にかけて徐々に2位を引き離してきた首位トゥールーズの齋藤直人は先発して、最後に足が攣ったけれどほぼフル出場。2位ボルドーのテビタ・タタフはしばらく故障離脱していたのですが、今節の後半に戻ってきました(まだ観ていません)。これまでRWC:ラグビーワールドカップでしか知らなかった選手のプレーもたくさん観られて、ますますラグビー好きに拍車が掛かっています。会員登録が必要になったのは、AI学習の標的にされたのかも知れないな、と邪推しています。
以上、何かの参考になれば幸いです。

パドラッパ from MacBook Air (M2)

【2025/09/09追記】
TOP14の2025-26シーズンが開幕し、齋藤直人が引き続き在籍しているトゥールーズはクレルモンとの接戦を制して白星発進になりました。試合翌日にはREPLAYがアップされたので観ようとしたところ、「動画をご利用いただけません /この動画はお住まいの地域ではご利用いただけません」と表示されてしまいました。
T05
理由は調べていませんが、残念ながら地域によるアクセス制限が掛かってしまったようです。
但し、ログインすることで長編ハイライト(Résumé Grand Format)の方は引き続き試聴できます。

| | | コメント (0)

«Wi-Fi・BLEハイブリッドリモコンのカーソル泳ぎ対策