
2026/02/10 1:26
**プロジェクト概要** Walmart の 3.88 インチアナログ時計を、ESP‑8266 ベースの Wi‑Fi 時計に変換します。 --- ### 必要な材料 - Walmart の 3.88″ アナログ時計 1 個 - ESP‑8266 NodeMCU または Wemos D1 Mini 1 個 - DS3231 リアルタイムクロックモジュール(オプション、オフライン時の時間保持用) 1 個 - 10 kΩ プルアップ抵抗(I²C 用) 1 本 - ジャンパー線 - はんだごて&はんだ - ケースまたは取り付けハードウェア ### 配線図 ``` ESP8266 時計 D2 ----> CLK (クロック信号) D4 ----> DT (データ信号) GND <---- GND VIN <---- VCC(USB/AC アダプタからの5 V) ``` *DS3231 を使用する場合:* - SDA ↔ A4 - SCL ↔ A5 - VCC ↔ 3.3 V - GND ↔ GND ### ソフトウェア手順 1. **Arduino IDE の設定** - ESP8266 ボードパッケージをインストール。 2. `config.h` に Wi‑Fi 認証情報を入力。 3. ライブラリをインストール: - `ESP8266WiFi`, `NTPClient`, (必要に応じて)`TimeLib`。 4. 以下の機能を備えたスケッチをアップロード: - Wi‑Fi 接続 - NTP で時刻取得 - D2/D4 の PWM を使って時計のポテンショメータを駆動 5. 動作確認 – 時計の針がずれたらキャリブレーションを調整。 ### キャリブレーション - 12 時間ダイヤルで既知の時刻に合わせてください。 - コード内の `pwmMin` と `pwmMax` を調整し、針が正確に合うようにします。 --- #### ヒント - 時計本体の電源と ESP‑8266 の電源は分離してノイズを抑えます。 - 電子部品は安全性のためケースで覆い、ESP 部品には十分な換気を確保してください。 - 手動同期用にボタンを追加することも検討すると便利です。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
このプロジェクトは、安価なアナログ石英時計をインターネット接続型デジタル時計に変換します。WEMOS D1 Mini ESP8266 が Arduino スケッチを実行し、ステッピングモーターを駆動させます。ESP8266 は NTP サーバーから現在の UTC 時間を 15 分ごと に取得し、時計に表示されている時間と比較します。この比較は 1 秒あたり 10 回 行われます。もし時計が遅れていた場合、マイクロコントローラはモータコイルへ短い (~30 ms) のバイポーラパルス(
PULSETIME 定数で調整可能)を送信し、秒針を前進させます。
アナログの動きには位置センサがないため、システムは各針(時・分・秒)の位置を毎秒 Microchip の 47L04 Serial EERAM(4 kbit SRAM と EEPROM バックアップ)に保存します。初回起動時、ESP8266 はウェブページを提供し、ユーザーが初期針位置を設定できるようにします。その後の再起動では、EERAM に保存されたデータから継続します。初期化後は、ステータスウェブページで SVG/Canvas またはプレーンテキストを用いて時計表面を表示できます。
時計は NTP 時間取得を通じて自動的に 夏時間(DST) を調整し、この設計は IoT コントローラがレガシー機械装置を復活させつつ、低コストで簡単に構築できることを示しています。
本文
ESP8266 WiFi アナログ時計
はじめに
本プロジェクトでは、WEMOS D1 Mini ESP8266 モジュールと Arduino スケッチを使用して NTP(Network Time Protocol)サーバーへ接続します。モジュールは自動的にローカル時間を取得し、安価なアナログクォーツ時計を駆動します。ESP8266 は 15 分ごとに NTP サーバーへ再接続し、時計の精度を保ちつつ夏時間(DST)にも対応します。
ハードウェア
- モジュール:EERAM IC 搭載 WEMOS D1 Mini ESP8266
- 時計:どんな安価なクォーツムーブメントでも可(例:$3.88 の Walmart モデル)
時計のムーブメントを改造する手順
- ムーブメントを開ける(ほとんどはスナップ式で留め具不要)。
- Lavet ステッピングモーターの内部コイルをクォーツオシレータから切り離す。
- コイル端子に ESP8266 への接続用ワイヤをはんだ付けする。
注意:コイルワイヤは非常に細く壊れやすいので、取り扱いには十分ご注意ください。
ソフトウェア
AnalogClock.ino スケッチの動作は以下の通りです。
- 0.1 秒ごとに ESP8266 はアナログ時計の表示時間と実際の NTP 時間を比較します。
- 時計が遅れている場合、ESP8266 は秒針を進めて両者を合わせます。
- 時計が先行している場合は、実時間に追いつくまで待機し(逆戻りはしません)。
パルス生成
ESP8266 は Lavet モーターコイルへ交互の双極性パルスを送ります。
PULSETIME 定数(私の場合は約 30 ms)を自分の機構に合わせて調整してください。
位置メモリ
安価なアナログ時計には位置フィードバックがないため、ESP8266 は Microchip の 47L04 シリアル EERAM(4 kbit SRAM + EEPROM バックアップ)に時刻データを保存します。毎秒現在の位置を更新し、電源喪失・再起動時には最後に記録された位置から復元します。
初期設定
初回実行時、ESP8266 は簡易ウェブページを提供し、手動で時計針の初期位置を設定できます。以降は EERAM に保存されたデータが利用されます。
ウェブページ
| ページ | 内容 |
|---|---|
| Setup Page | 初回使用時に時計針を手動で配置できるページ |
| Status Page (SVG) | スケーラブルなベクターグラフィックで時計状態を表示 |
| Status Page (Canvas) | HTML Canvas を使って時計フェイスを描画 |
| Text‑Only Status | テキストのみでステータス情報を表示 |
シリアルモニタ
起動時に Arduino のシリアルモニタには初期化進捗とネットワーク状態が表示されます。