1 ポイント 投稿者 GN⁺ 2026-02-10 | 1件のコメント | WhatsAppで共有
  • 低価格の アナログクォーツ時計ESP8266モジュールArduinoスケッチ で制御し、インターネット時刻に同期させるプロジェクト
  • NTPサーバー から15分ごとに時刻を取得して精度を維持し、サマータイム自動調整 機能を含む
  • 時計の Lavetステッピングモーターコイル を分離してESP8266が制御できるように改造し、EERAMチップ を使って電源断時でも時針・分針・秒針の位置を保存
  • 初期設定時にはESP8266が提供する Webページインターフェース を通じて時計の針位置を指定し、その後はステータスページで SVGまたはHTML Canvas により時計の状態を可視化
  • 低価格ハードウェアを活用して 高精度なネットワーク同期時計 を実現できるオープンソースの例であり、組み込みIoT制御技術 の実用的な応用を示している

プロジェクト概要

  • ESP8266 WiFi Analog Clock は、WEMOS D1 Mini ESP8266モジュールとArduinoスケッチを使って NTP(Network Time Protocol) サーバーからローカル時刻を自動取得して表示するシステム
    • 15分ごとにNTPサーバーへ再接続して時計の精度を維持
    • サマータイム(Daylight Saving Time) の自動調整機能を搭載
  • このプロジェクトは 低価格のアナログクォーツ時計 をベースに、ハードウェア改造とソフトウェア制御を組み合わせたもの

ハードウェア構成

  • 使用された時計は ウォルマートで3.88ドルで購入したアナログクォーツ時計
  • 時計の クォーツムーブメント を開け、内部の Lavetステッピングモーターコイル をクォーツオシレーターから分離し、各リード線にESP8266接続用のワイヤをはんだ付け
    • 多くのムーブメントはネジなしのスナップ方式で組み立てられている
    • コイルの線は髪の毛より細いため、取り扱いには特に注意が必要
  • 完成した回路は EERAM IC とそのほかの部品を ユニバーサル基板(perfboard) 上に構成

ソフトウェア動作

  • AnalogClock.ino スケッチでは、ESP8266が1秒間に10回、実時刻と時計の表示時刻を比較
    • 時計が遅れている場合は秒針を速く進めて同期
    • 時計が進んでいる場合は実時刻が追いつくまで待機
  • 秒針の移動は、バイポーラパルス(bipolar pulse) をLavetモーターコイルに印加して行う
    • モーター特性に応じて PULSETIME定数 を調整する必要があり、実験では30msが適切
  • 低価格の時計には針位置のフィードバックがないため、電源断時に位置情報が失われる
    • これを解決するために Microchip 47L04 Serial EERAM(4Kbit SRAM + EEPROMバックアップ) を使用
    • 時針・分針・秒針の位置を毎秒保存し、再通電時に復元

初期設定とWebインターフェース

  • スケッチの初回実行時、ESP8266が シンプルなWebページ を提供し、ユーザーが時計の針の初期位置を指定できる
  • その後、ESP8266はEERAMに保存されたデータを使って針位置を記憶
  • 動作中には ステータスページ(status page) を提供し、次の3つの表示モードをサポート
    • SVGベースの文字盤グラフィック表示
    • HTML Canvasベースの文字盤表示
    • テキスト専用の状態表示

ライセンスと技術情報

  • プロジェクトは MITライセンス で公開
  • 主な言語構成は C++ 64.1%C 35.9%
  • GitHubリポジトリは 252スター2フォーク を保有
  • 関連トピックタグ: arduinoesp8266clockanalog-clockntphardware-construction

意義

  • 低価格の時計を Wi-Fi同期型スマート時計 に変換する実用例
  • ESP8266とArduino環境 を活用した 高精度な時刻制御とWebベースインターフェース実装 の事例
  • IoTハードウェア改造とファームウェア同期技術 を学ぶためのオープンソース参考資料

1件のコメント

 
GN⁺ 2026-02-10
Hacker Newsのコメント
  • 本当に素晴らしいプロジェクトだと思う。
    特に興味深かったのは 「SRAM with EEPROM backup」 チップだった。
    このチップは時計の針の位置を動かすたびに永続的に保存できるが、通常のEEPROMのように 書き込み寿命 を消費しない。
    単価も1ドル未満なので、趣味や小規模プロジェクトに便利な部品だ。
    • このチップの動作原理をまとめると、こんな感じだと思う。
      SRAMとEEPROMがコントローラと一緒に1つのパッケージに入っていて、近くに小さな コンデンサ (4.7µF) がある。
      SRAMは電源が維持されている間はデータを保持し、EEPROMは電源が切れてもデータを永続保存できるが、書き込み回数に制限がある。
      コントローラは電圧低下を検知すると、SRAMの内容を即座にEEPROMへダンプする。
      コンデンサはその瞬間にEEPROMへデータを書き込めるよう電力を供給する。
      電源が復旧すると、EEPROMのデータを再びSRAMへコピーする。
      欠点は容量が4キロビットと小さいことだが、1ドルでこうした問題を解決できるなら十分に価値がある。
    • 似た技術かどうかははっきりしないが、Adafruitの製品リンクも興味深い。
    • 私は FRAM もこういう用途に向いていると思う。
      特にデバッグログをリングバッファとして保存しておけば、開発用PCにつながっていなくても組み込みシステムの クラッシュログ を残せるので便利だ。
  • Walmartでは価格が$3.88に見えるが、地域・ユーザー別の動的価格設定 のせいで、私の地域では$5.92と表示される。
    製品リンク
  • うちにはWWVB信号で自動時刻補正を期待する Seikoの電波時計 がある。
    しかし今住んでいる場所では信号が弱すぎて、手動設定がとても面倒だ。
    そこで ESP32とNTPサーバー を使って世界の電波時計信号をエミュレートする Arduinoコード を自作した。
    各国の標準電波の歴史や違いを調べるのもかなり面白い。
    • ただし、WWVBと同じ周波数で送信するのは 違法となる可能性 が高いので注意が必要だ。
  • 誰かがこういうプロジェクション時計を改造するのを見てみたい。
    赤い投影の明るさが夜にちょうどいいのに、Wi-Fi同期 がないのでNTPやGPSで時刻を合わせられない。
    プロジェクタ部分がリボンケーブルで本体につながっているので、リバースエンジニアリングしたら面白そうだ。
    理想を言えば、天井に LEDマトリクス で時刻以外の情報も表示できるといい。
    そういう製品はあるが、buyfrixos.com のように非常に高価だ。
    • 明るさを抑えた版を自作したことがある。
      私の製作記リンク
    • リンク先の製品には「Atomic Time」機能があるので、WWVB信号で同期しているようだ。
      私もこうした低価格の壁掛け時計をいくつか使っているが、時刻のずれがほとんどない
      NTPよりジッターが少ないかもしれないと思う。
    • 私もWWV/WWVB時計が好きだ。
      一度も時刻合わせをする必要がなく、NTP時計とも1秒以内で一致する。
      ただ、オーブンや電子レンジの時計は消してしまいたい。
    • 実際のところ、こうした改造をやっていると、部品代と時間のせいで結局 市販品の価格は妥当だ という結論に至る。
    • Temuで買ったデジタル時計がいくつかあるが、時間がだんだん進んでいく問題 がある。
      1か月で1分ほど進むので、Wi-Fi同期機能があればよかったのにと思う。
  • こういう ハック感 がすごく好きだ。
    最近の製品はどんどんクローズドになっていて、単純でハック可能な物を自分で作ることが恋しくなった。
    いつか本業から離れたら、シンプルで信頼性が高く、ハッカー向けの家電 を自分で作ってみたい。
    こういうプロジェクトを見ると本当に感心する。
  • あまり手を汚したくないなら Crazy Clock を勧める。
    娘のために買ったが、不規則なチクタク音 が勉強の邪魔になるので今は休ませている。
    それでもかなり楽しい体験だった。
    • 「Early clock」モードは時計を0〜10分進めた状態に保つので、遅刻防止用 に向いている。
      ただし家に時計が複数あるなら、1つだけ使うと決めないと効果がない。
  • 予算に少し余裕があるなら、30秒ごとに 「ドン」という音 が鳴る大型時計もある。
    Gents Turret Movementの紹介
    私はこれを使って 音叉ベースの電磁時計 を作った。
    高精度の時刻源の代わりに 音叉と74xxロジック で駆動している。
    • こういう 音叉時計 は本当にかっこいい。
      なぜAccutronがいまだにこういう時計を作らないのか不思議だ。
      共振周波数を使う方式は クォーツ時計に似ているが、見た目にはもっと魅力的 だ。
  • ステッピングモーター用の Hブリッジ回路 を設計する際は、逆電流を必ず考慮すべきだ。
    そうしないとスパイクで誤動作したり、マイコンが損傷 する可能性がある。
    フォトトランジスタ でゲート電圧を分離し、モーター電源は別に供給するのが理想的だ。
  • 「€0の廃材から€400の動画編集デッキを作る」という YouTube動画 を見た。
    GitHubプロジェクト もある。
    • VCRコントローラをデジタル入力デバイスとして再利用する アイデアが素晴らしい。
      古いデッキやLANCコントローラがまだたくさん残っているので、活用価値が大きい。
  • このプロジェクトは素晴らしいが、時間ドリフト が起きる可能性はありそうだ。
    時計が正確な時刻を知っていても、実際の駆動速度が少しずつずれると累積誤差が大きくなる可能性がある。
    特にPULSETIME定数を1msでも誤って設定すると、1日で差が出るかもしれない。
    もちろんLavetステッピングモーターは理論上、一定の 周波数ベースのステップ を維持するが、摩耗やノイズによる偏りが出る可能性もある。
    ただし壁掛け時計レベルなら無視できる誤差かもしれない。
    • Lavet型ステッピングモーター はパルス数で動作が制御されるので、パルス幅よりも個数のほうが重要だ。
      Wikipediaの説明 を参照すると理解しやすい。
    • pulsetimeは単に1ステップ進める時間にすぎない。
      ステップが欠落しない限り 累積誤差は発生しない
      つまり、ステップ数を正確に維持すれば十分だ。