
2026/09/19 23:01
天気予報もニュースも教えてくれる天気担当者がいます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
著者は、ESP32 上の低電力電子紙ダッシュボードを構築しており、温度、湿度、空気質などの自宅メトリクスをモニターするとともに、Hacker News の見出しなどの厳選されたコンテンツを表示しています。本プロジェクトの目的は、画面時間を削減し、夏の日射への曝露を軽減し、天体観測(例:星の隠蔽、日食)の計画を支援することです。技術的な課題として、非構造化テキストレイアウトでの初期失敗があり、これを解消するために Clojure HTTP サーバーへの切り替えが行われ、グリッドベースの UI を通じて JSON が提供されるようになりました。改良により、960×540 ピクセルのグレースケール表示は、画像を幾何学的プリミティブに置き換えること、Montserrat フォントを採用すること、UI ゾーンを統合すること(上段:天気/ToDo/AQI;下段:2 倍幅の HN フィードに加え、日付/時間/日の出・日の入)によって最適化されました。ネットワーク上の問題として、ESP32 での mDNS リゾリューション失敗が発生し、ファームウェアのバグにより Fetch エラー後にデバイスがキャッシュデータへの復旧を行わず更新を停止する問題が起きました。今後のアップデートでは、室内空気質センサーとの連携、リーディングリスト機能の強化、変更検出の実装(データが静的な場合はリフレッシュをスキップ)が含まれる予定です。究極的には、このソリューションは、環境状態と厳選されたニュースを追跡するためには、実用的でエネルギー効率が高く、目の疲れを最小限に抑える方法を提供します。
本文
環境情報とニュースを表示する自作 E Ink ディスプレイプロジェクト
プロジェクトの背景と目的
環境への対策
- 夏場の過酷な気候: 住まいの地域は夏が非常に乾燥して熱く、耐え難い暑さとなります。
- 室温低下への挑戦: 自宅の室温を実質的に下げられる対策を講じるため、データ収集と分析を開始しました。
- データの活用:
- 一定期間にわたり家中の温度と湿度を継続的に観測。
- 収集した基準となる温度データを基に標準偏差を算出し、環境変化を把握する。
デジタルライフスタイルの再構築
- アルゴリズムへの対策: SNS コンテンツ(YouTube, Instagram, Reddit など)の自動推薦量を減らす取り組みを実施中。
- Hacker News (HN) の活用:
- アルゴリズムが比較的透明であり、好きな著者の RSS フィードを通じて制御可能なため優れた情報源。
- 環境に最適化したリーダーとしてminifluxを導入し、順調に運用。
- 課題の発見: HN には定期的に出てくる最先端トピック(特にAI や大規模言語モデル(LLM))を見逃しがちでした。
天文現象への興味と解決策
- 天文観測への関心: 恒星・惑星の隠没現象や日食・月食などに関心があり、双眼鏡での観測可否を確認したい。
- 大気汚染レベルの確認: 自宅周辺の大気状況を知る必要がある。
- 機材の発見: エレキ部品バスケットに埃を被せてあったE Ink ディスプレイを発見。
- プロジェクト決定: Claude Codeを利用して、このディスプレイを気象情報やニュースを表示する静的画面として再活用することを決意。
ハードウェア仕様
数年前の組み込みプログラミング(STM32/MC60 プロジェクト)中に購入した機材を使用しています。
- メーカー/型番: LILYGO T5 E Ink ディスプレイ
- ディスプレイ:
- サイズ:4.7 インチ E Ink
- モデル:ED047TC1
- 解像度:960×540 ピクセル
- 色深度:16 段階のグレースケール
- プロセッサ: ESP32 チップ(内蔵)
- コア:デュアルコア Xtensa LX6 @ 240 MHz
- Wi-Fi: 2.4 GHz(IEEE 802.11 b/g/n)
- Bluetooth: 4.2 + BLE
- メモリ構成:
- SRAM: 520 KB
- PSRAM: 8 MB
- フラッシュメモリ: 16 MB
- その他機能:
- USB-C ポート搭載
- Li-Po バッテリー接続端子あり
- RTC(リアルタイムクロック)内蔵
- 待機電流:約170 μA
ソフトウェア開発と UI デザイン
コンテンツ構成の進化
第一回目の試み(失敗事例)
- アプローチ: 構造化せずに即座に実装。
- 結果: すぐに手詰まりとなりました。
- レイアウトへの考慮不足。
- 全ての情報を単一の左揃えテキスト塊として出力。
- 見た目が非常に醜く、画像撮影に至らなかった。
第二回目の試み(成功事例)
- 基本アーキテクチャ:
- 外部 API からフィードを収集。
- サーバー上で JSON 形式で返す。
- ESP32 が JSON をレンダリングし、定期的な画面更新を行う。
- レイアウト案:Claude に「縦×横=2×3 グリッド」の提案を受け入れ、すぐに描画を実現。
- 設計原則: 「最も関連性の高い情報は大きく・簡潔に・視認しやすいように」。
- レイアウトの最適化プロセス:
- 初期案の問題点: HN セル幅 320px で見切れること、日付/時刻と読書情報が狭いこと。
- 再設計:
- 右下 2 セルを合体: HN を横長ゾーン化。
- ** ToDo と読書の統合**: 上部中央のセルへ。
- 市場情報: 右上配置。
- 環境データ: AQI と月齢を左下へ。
- 時刻表示: 広域 HN ゾーンの底部に日付・時刻および日の出/没を表示。
- 視覚的調整:
- フォント:OpenSans からMontserratへ変更し、サイズ適応化。
- アセット使用を廃止:テキストとアイコン(プリミティブ要素)のみで構成。
- タイトルデザイン:大文字+下線でアイデンティティを強調。
ネットワークアーキテクチャと運用
接続方式の変遷
- 初期方法: ESP32 に静的 JSON ファイルをフラッシュして描画。
- HTTP URL(内部 IP アドレスを含む)でのファームウェアリリースに成功。
- 開発パートナー: Claudeに Clojure で静的 JSON を提供するサーバーを実装させた。
- mDNS の実験と挫折:
- ESPmDNS を用いたホスト名解決を試み。
- 何度も試行錯誤(デバッグ依頼等)の末、ESP が mDNS ホストネームを解決できないまま終了。
- 判断: 現状の動作良好のため見切りをつけ、サーバーからの JSON 取得体制で継続運用。
現在の問題点と今後の計画
- 現在の不具合:
- スリープ設定(10 分後に目覚め)でも起動しない頻発。
- サーバー側 Fetch 失敗時、直前の有効値を返すのではなくデータ出力が停止する。
- 追加予定の機能:
- 室内空質センサーによる大気品質測定。
- ToDo リストと読書リストへの統合強化。
- データ変更検出ロジック: 内容が変わっていない場合は E Ink 画面更新をスキップ(省電力化)。
注: これらの追加機能については今後のブログ記事で詳しくご紹介します。