ESP32と円形LEDで壁掛け時計をつくる

# GlanceClock、お前もか

[Qrioを乗っ取った](https://qiita.com/curtain6935/items/2dec2bfcb4b18ce4f916)俺たちself-hosted Lチカ部隊は、無事に宅内完結快適スマートホーム在宅勤務を取り戻した。
しかし、自宅でくすぶってるような俺たちじゃない。

次なるサ終ネタを見つけたのだ。

不可能を可能にし、外部依存デバイスを粉砕する、俺たちひきこもりLチカチーム！

https://www.facebook.com/story.php/?story_fbid=848169480657271&id=100063926802502

> Dear Glance customers,
>
> In the last years we have worked hard and invested greatly in time and money to make our Glance clock dream come true. The start was prommissing, but the technical and financial challenges to keep Glance clock up-to-date were big. Regrettably the investments were to big to keep on going and because of this the Glance project and the related company had to be closed. There were big investment needed for updating the clock, the server and the application. We have done everything in our power to keep the Glance clock project running and to find creative ways forward, but regrettably without success. This means we have no choice than to inform you, with pain in our heart, that the Glance clock dream is over…

https://greenfunding.jp/lab/projects/2714

https://smartio.life/news/gadget/glance-clock/

# 完成品

昼と夜（日没後）で表示内容が異なります。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204320/accca645-af4d-99fb-2175-598c9e6c7801.jpeg)

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204320/1bfd50c6-1d31-f7f5-eb24-8912ddaacfa1.jpeg)

使用フォント: [JK丸ゴシック](https://font.cutegirl.jp/jkmarugo.html)

# レシピ

## 原料

| 部品                                             | 調達方法例                                                                                                                                                                                                                                                                               | 参考価格(1台あたり) |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------: |
| ESP-WROOM-32                                      | [Wi-Fi モジュール ESP-WROOM-32: 半導体 秋月電子通商-電子部品・ネット通販](https://akizukidenshi.com/catalog/g/g111647/)                                                                                                                                                              | 550            |
| 60個LEDリング                             | [](https://www.adafruit.com/product/1768)[統合ドライバー付き LED ランプパネル、リング壁時計、60 x 超高輝度、ws2812、5050、rgb、1 個 - AliExpress 502](https://ja.aliexpress.com/item/1005007026918229.html)                                                                          | 800            |
| MSP2807 ILI9341搭載 2.8インチ TFTディスプレイ | [ILI9341 搭載 2.8 インチ SPI 制御タッチパネル付 TFT 液晶 MSP2807: オプトエレクトロニクス 秋月電子通商-電子部品・ネット通販](https://akizukidenshi.com/catalog/g/g116265/)                                                                                                            | 1450           |
| TM1637 4桁7セグメントLED                     | [](https://www.amazon.co.jp/dp/B0B4T6XLWS)[TM1637 led ディスプレイモジュール arduino 4 桁 7 セグメント 0.56 インチ時間時計インジケータチューブモジュール赤青緑黄白 - AliExpress 502](https://ja.aliexpress.com/item/1005002059351703.html)[](https://www.amazon.co.jp/dp/B0B4T6XLWS) | 400            |
| BH1750 照度センサー                              | [Amazon \| KKHMF 3 個 BH1750 GY302 3V-5V BH1750 BH1750FVI 光強度イルミネーション デジタル センサモジュール Arduino と互換 \| 光電センサ \| 産業・研究開発用品 通販](https://www.amazon.co.jp/dp/B08P7D9BPC)                                                                          | 200            |
| 3.3V 三端子レギュレータ                                      | [三端子レギュレーター 3.3V AZ1117CH-3.3TRG1: 半導体 秋月電子通商-電子部品・ネット通販](https://akizukidenshi.com/catalog/g/g116155/)                                                                                                                                                 | 30             |
| 深圳製謎基盤                                     | [PCB プロトタイプ＆PCB ファブリケーションメーカー - JLCPCB](https://jlcpcb.com/jp/)                                                                                                                                                                                                  | 500            |
| 背後                                             | [ペーパーランチョンマット リーフ - ダイソーネットストア【公式】](https://jp.daisonet.com/products/4549131431995)                                                                                                                                                                     | 100            |
| SDカード                                        | どこのご家庭の冷蔵庫にもある余り物で                                                                                                                                                                                                                                                 |                |
| チップ抵抗、はんだペーストなど                                   | どこのご家庭の冷蔵庫にもある余り物で                                                                                                                                                                                                                                                 |                |
| **合計**                                             |                                                                                                                                                                                                                                                                                      | 約4000円        |

円安つらい...

注: 上記aliexpressやamazonのリンクはこの記事のために適当に探したものであり、その品質や配送について本記事の筆者が保証するものではありません。無論、そもそもこの記事自体が何の保証もないものです。

## 道具

- USB-UART (3.3v)
- SDカード 読み書き装置
- 家庭用リフロー装置 （ホットプレート、アイロン、オーブンなどで代用可能(食用不可))

# ハードウェア

KiCadで謎基盤を作成し、jlcpcbにお願いして塗り塗りペタペタしてこんがり焼き上げます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204320/7b6cc5f1-b75e-bf7a-626a-3eaf4ebe0276.jpeg)

液晶と7セグのfootprintはこちらから。

http://www.lcdwiki.com/2.8inch_SPI_Module_ILI9341_SKU:MSP2807

https://www.motorobit.com/tm1637-4-digit-led-display-clock-module-blue

BH1750はi2cですが、私が買ってきたモジュールにはプルアップ抵抗が含まれていたので自分で追加する必要はありませんでした。

MSP2807は`SD_MISO`に1kのプルアップをつけてあげます。

https://yokahiyori.com/esp32-devkitc_ili9341-lcd_tft_espi/

M3のネジでダイソーのランチョンマットに貼り付けて完成です。

実はこの時計、pcbや表示内容よりこの背後をどうするのかが一番悩みました。東急ハンズ、ユザワヤ、伊東屋などを回って散々悩んだ挙句、結局ダイソー...

# ソフトウェア

## 外周LED

時針と分針を表示します。秒針を付けたら煩かったのでやめました。

Appleのカレンダーから CalDavで当日のイベントを拾ってきて、そのイベントの部分に色をつけます。

https://askubuntu.com/questions/911567/how-to-sync-icloud-calendar

この部分はesp32では大変なので、母艦となるlinuxの中で取得してMQTTで書き込みます。

## 7セグメントLED

https://github.com/avishorp/TM1637

## TFT液晶

上記カレンダーイベントや観測温度をそのまま表示してもいいのですが、今回は暦を表示してみました。

https://github.com/buelowp/sunset

https://github.com/signetica/MoonRise

計算結果が合っているかはこちらから確認。

https://eco.mtk.nao.ac.jp/cgi-bin/koyomi/sunmoon.cgi

二十四節気も計算します。

IAU sofaから太陽黄経を出そうとしたのですが、なぜかずれるので略算式を使いました。もちろん、sofaが悪いのではなく私が悪いのです。

https://iausofa.org/

https://addinbox.sakura.ne.jp/sekki24_topic.htm

月の画像はpovrayで事前に計算し、SDカードに画像として格納します。
月齢画像の範囲はintで0〜29。

https://www.phpsciencelabs.com/lunex-for-pov-ray/

文字表示はこちらのライブラリです。

https://github.com/takkaO/OpenFontRender

AIに手伝ってもらうと簡単ですね。
特にhtmlのテーブルからc++への変換なんて手作業でやっていたら死にます。

## 通知

imapで自分のメールボックスを監視して、未読メールが増えたらmqtt経由でBiffします。

https://ja.wikipedia.org/wiki/Biff

（若い人に「biffします」と言ったら通じなくて老化を痛感した...）

他にも、weathernewsの「そろそろ雨降りそう」や図書館の「そろそろ返却してね」なども表示してあげます。

https://weathernews.jp/s/mail/sample/

slackの`unread_count`の監視は煩かったのでやめました。

https://api.slack.com/messaging/retrieving

# 参考記事・謝辞

こちらの記事、そしてリンク先も参考にしております。

https://qiita.com/BotanicFields/items/a1e182f418d5a07120ac

各ライブラリ等の作者、記事の筆者の皆様に感謝いたします。

# おまけ

同じく時計付き、DisplayPort切り替え器制御（赤外線経由）とUSBファンPWM制御するおもちゃ。

https://www.amazon.co.jp/dp/B0CKKTK5CY

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204320/47e767ac-b8b1-14f8-7d89-bd582b2b02c7.jpeg)

写真で見ると半田付け汚い💦

Ghost.Script. ニキシー管も考えたのですがお値段めちゃ高騰...