NTPのストレンジクロック
親愛なるElectroFriends,
久しぶりです’ 私が新しい出版物を見ない時間の..。. ウイルスのせいではないことを願っています。皆さんが健康であることを願っています。. 私は個人的に持っていません (幸いなことに) 問題, しかし、社会的な観点から、私は工業的な量を持っているでしょう. 私は住んでいます 1000 観光地となるべき国のメートル: 観光地となるべき国のメートル. 観光地となるべき国のメートル.
観光地となるべき国のメートル. 観光地となるべき国のメートル.
観光地となるべき国のメートル. 観光地となるべき国のメートル ?. 観光地となるべき国のメートル 5 分.
観光地となるべき国のメートル (観光地となるべき国のメートル: 観光地となるべき国のメートル): 観光地となるべき国のメートル 12 観光地となるべき国のメートル, 観光地となるべき国のメートル. 観光地となるべき国のメートル.
次の写真: 次の写真:

観光地となるべき国のメートル ??. 次の写真 5 次の写真 5 分. 次の写真.
次の写真: 次の写真 10 E 17 分: 次の写真 10 次の写真 20 次の写真. 次の写真 (例えば) 次の写真 10,10. 次の写真 10 E 10 分. 次の写真.
次の写真 !. 次の写真 5 分. 次の写真. 何故 ?.
いろいろなDS1307タイプのRTCに飽きたから, いろいろなDS1307タイプのRTCに飽きたから. いろいろなDS1307タイプのRTCに飽きたから: いろいろなDS1307タイプのRTCに飽きたから 50 いろいろなDS1307タイプのRTCに飽きたから 1 いろいろなDS1307タイプのRTCに飽きたから. いろいろなDS1307タイプのRTCに飽きたから: いろいろなDS1307タイプのRTCに飽きたから. いろいろなDS1307タイプのRTCに飽きたから: 1) テンション 220 いろいろなDS1307タイプのRTCに飽きたから, 2) いろいろなDS1307タイプのRTCに飽きたから, 3) いろいろなDS1307タイプのRTCに飽きたから. それで、このプロジェクトでは、私は今インターネットに依存していました. それで、このプロジェクトでは、私は今インターネットに依存していました. それで、このプロジェクトでは、私は今インターネットに依存していました.

それで、このプロジェクトでは、私は今インターネットに依存していました:
それで、このプロジェクトでは、私は今インターネットに依存していました:
それで、このプロジェクトでは、私は今インターネットに依存していました Arduinoのナノ 328 それで、このプロジェクトでは、私は今インターネットに依存していました
それで、このプロジェクトでは、私は今インターネットに依存していました それで、このプロジェクトでは、私は今インターネットに依存していました それで、このプロジェクトでは、私は今インターネットに依存していました
• MAX7219 それで、このプロジェクトでは、私は今インターネットに依存していました. すばらしいです: とともに 3 それで、このプロジェクトでは、私は今インターネットに依存していました 64 それで、このプロジェクトでは、私は今インターネットに依存していました.
• 12 LED (それで、このプロジェクトでは、私は今インターネットに依存していました).
それで、このプロジェクトでは、私は今インターネットに依存していました それで、このプロジェクトでは、私は今インターネットに依存していました 3それで、このプロジェクトでは、私は今インターネットに依存していました
それで、このプロジェクトでは、私は今インターネットに依存していました それで、このプロジェクトでは、私は今インターネットに依存していました (それで、このプロジェクトでは、私は今インターネットに依存していました) マイクロESPに電力を供給します
マイクロESPに電力を供給します. マイクロESPに電力を供給します (マイクロESPに電力を供給します).
マイクロESPに電力を供給します:
マイクロESPに電力を供給します マイクロESPに電力を供給します. マイクロESPに電力を供給します. マイクロESPに電力を供給しますマイクロESPに電力を供給しますマイクロESPに電力を供給しますマイクロESPに電力を供給します」. 管理用のメインスケッチはARDUINOIDEで管理できます: 管理用のメインスケッチはARDUINOIDEで管理できます: 管理用のメインスケッチはARDUINOIDEで管理できます:管理用のメインスケッチはARDUINOIDEで管理できます. 管理用のメインスケッチはARDUINOIDEで管理できます. 管理用のメインスケッチはARDUINOIDEで管理できます. 管理用のメインスケッチはARDUINOIDEで管理できます. 管理用のメインスケッチはARDUINOIDEで管理できます. 管理用のメインスケッチはARDUINOIDEで管理できます.
管理用のメインスケッチはARDUINOIDEで管理できます MAX7219 元のライブラリと比較して、自分で拡張および変更した「カスタム」ライブラリを使用します (ネットワークに存在する). 標準ライブラリのような特徴や形はありません (.hファイルと.cppファイルはありません) しかし、それは.inoファイルです. あらゆるタイプのLEDを管理できます, あらゆるタイプのディスプレイ 7 セグメントおよびマトリックス表示モジュール8×8 E 7×5. 私が表示するごとに 7 セグメントタイプaも提供されます COMMON_ANODE: これは、チップがデバイスのみを処理するためです。 COMMON_CATODE. この場合、小さなハードウェアの追加が必要です. なぜ「正確」ではない時計を製造するために2つのマイクロを使用するのか疑問に思う人がいるかもしれません。. プロジェクトで使用されるデバイスを駆動するのに十分な数のピンを備えたESP32を使用する方がはるかに簡単でした。. しかし、私はその時点でいくつかのESP8266を購入しており、ESP32を入手して機能を再発見する必要はありませんでした。.
馬, 繰り返します, それらは個人的な選択です.
すべての管理ソフトウェアがどのように開発されたかを見てみましょう:
ESP側: このマイクロは「エスプレッシフ」は、WEBページの開発のためのインターネット接続の完全な管理を可能にします (WIFI経由) 一般的なタブレットまたはPCで表示する. さまざまなサイズと寸法のWEBページを作成するためにいくつかのスケッチを作成しました. 私のプロジェクト「CIABATTAELETTRONICA」では、リレーの管理はWEBページで行われています。 5 リレー.
残念ながら、このESPはPINで非常にけちです: 実際には彼らは一人です 2 usabili GPIO / 0およびGPIO / 2. Iピン RX / TX それらはシリアルインターフェースとして使用されます. プログラミングのためにarduinoIDEとマイクロ自体の間にインターフェースを持つことは非常に重要です: のレベルの場合 GPIO / 0, それらは正しい状態ではありません NON あなたはそれをプログラムすることは決してできません: 接続されていてもIDEはシリアルポートを認識しません.
最初のESPを購入したとき、モジュールも購入しました。デバッガ」. このモジュールはシリアルポートと見なされます. ESPをコネクタに挿入する, IDEはポートとプログラミングを認識します (GPIO / 0質量へのポートを自動的に) 正しく行われています. モジュールには、ESPを再起動するためのリセットボタンもあります.

プロジェクトの物理的構造に移る前に、スケッチが開発されたロジックを見てみましょう。:
スケッチsuESP8266_1:
の通常の設定後 WI-FI (ルーターへの接続と動的IPアドレスの割り当て) シリアルポートが開いています (ボーレート 19200) 標準ライブラリで管理 "Software_Serial」ピンを使用して GPIO / 0およびGPIO / 1 来ます RX / TX レベルコンバータモジュールを介して2つのArduinoピンに接続されています. A "ハンドシェーク「または」データをお送りします, あなたはそれらを受け取ったと答えます」定義済みのRX / TXを使用. この最初のインタビューは、冬/夏時間を管理するために使用されます: スケッチはArduinoからコードを受け取ることを期待しています」36「太陽時または」72「夏の間. これは、NTPサーバーが太陽時で時刻を送信するだけで、それを管理するライブラリが「SetTimeOffset」は、値をに設定することにより、夏時間までの時間を更新します。 7200. これはすべて「セットアップ」で管理されます.
ネル「ループ」: Arduinoから特定の文字を受信して、Arduino自体が時計の更新に使用されるHOUR値とMINUTE値を受信する準備ができていることを示すのを待っています. この文字を受信すると、ESPはNTPサーバーに時間単位の値を送信するように要求し、それらを受信します 8 フォーム内の文字 HH:んん:SS 文字列に格納されます. NTPサーバーは、この場合は不要な日付値を送信することもできます. NTPサーバーを管理するライブラリがいくつかありますが、すべてが日付と時刻の両方の値を管理するわけではないことに注意してください。. 代わりに使用されるライブラリは完全です. 次に、時間と分の値をバイナリ形式に変換し、2バイトを取得します: 彼はバイト 今すぐ (からの値 00 A 23) と バイトMINUTI (のグループの値 5) 単純な10進数/ 2進数変換後. これらの2バイトは、シリアル経由でARDUINOに順番に送信され、ARDUINOはそれらを使用してクロックを更新します。. その後、サイクルは最初から再開されます.
NOTE: 今説明したシステムは、一連のテストの最新のものです。: 最初にESPは文字列HHを送信しました:んん:Arduinoが受信して同様の文字列で順番に保存したSSを完了してから、変換を実行して時間を更新します. このシステムは、ある程度まで正しく機能していました: 次に、受け取った文字列が「ダーティ」であり、値が完全に制御不能であるという意味で「クレイジーになりました」. これにより、値の正確性が損なわれました. 私は通常の「デバッグ」システムを通じてこれらすべてを検出することができました, シリアルモニターで, Arduinoが実際に受信したものを確認するためのメッセージの. そしてESPは正しい値を送信しました !.
Arduinoをスケッチする (マイクロ使用Arduino_Nano):
また、このスケッチでは、標準のシリアルポートと関連するポートを含むポートの通常の設定を行いました “Software_Serial” MAX719および関連するLEDを管理するためにライブラリを初期化しました, 実行される最初の操作は、コード「36」または「72」をESPに送信して、夏/冬時間を設定することです。. この選択は、地面に持って来られた、または空けられたままにされたarduinoピンのジャンパーに由来します. この送信とESPによる確認の後、セットアップサイクルは終了します.
セクション ループ 想像以上に簡単です: それらは順番に起動されます 3 関数: 時間値を最初に受け取る (ESPによって送信される2バイト), 2番目は時間LEDを更新し、3番目は分LEDを更新します. そして、サイクルが再開します.
「ライオン」の部分は、ESPから「HH」と「MM」の値を受け取る必要があるルーチンです。: この場合も「ハンドシェーク」: ESPに通知するために文字が送信されます. ESPは、変換された2つのバイを送信することで応答します. 時間の値のテストは、時計の前面に配置されたAM / PMLEDのスイッチを決定します. 他の2つのルーチンは、HH値とMM値のテストとそれらのLEDへのアクセスを処理します.
時間のLEDが点灯するロジックを見てみましょう。したがって、分も点灯します。:
MAX7219は最大で個別に管理できます 64 LEDまたはマトリックス 8×8 (64 LED). レジスタは個々のチェーンをアドレス指定します (D0 / D7) 別のレジスタがどのLEDを定義している間 (またはマトリックスのポイント) スイッチをつける (またはオフにします) 次の構成に従って、別のレジスタがどのように設定されているかによって異なります。:

DP, A / G クラシックディスプレイのセグメントの位置をそれぞれ参照します。 7 セグメント + 小数点 (DP). Oppure a 8 接続されたLED (共通カソード) 同様に、DPからGまでの位置を各LEDに割り当てることによって. 時計は 12 LED: それらすべてに対処するために、私はそれぞれ2つのチェーンを定義しました 6 LED: この場合: 登録簿 "D0」は、時間からLEDを導きます 12(00) 全て 5(17), レジスター "D1」からの時間を指示します 6(18) 全て 11(23). LEDは、時間または分が変更されるまで点灯したままになります. これは、MAX7219も多重化を考慮しているためです。. また、LEDに制限抵抗は必要ありません.
arduino_Nanoのメインスケッチでは、 12 要素には、オンまたはオフに切り替えるビットを含むデータレジスタのコーディングが含まれ、DPビットは、時間/分をオンにするために使用するチェーンを識別するために使用されます。. LEDは、相対位置を「1」または「0」にしてオフにすることで点灯します。. これはテーブルです:
バイトTab_Led_Ore [12] =
{
DPABCDEFG ORE MIN HEX Nota: 「G」ビットは使用されません
B01000000, // オフセット 0 鉱石 “0” “12” 00 0x40
B00100000, // オフセット 1 鉱石 “1” “13” 5 0x20
B00010000, // オフセット 2 鉱石 “2” “14” 10 0x10
B00001000, // オフセット 3 鉱石 “3” “15” 15 0x08
B00000100, // オフセット 4 鉱石 “4” “16” 20 0x04
B00000010, // オフセット 5 鉱石 “5” “17” 25 0x02
B11000000, // オフセット 6 鉱石 “6” “18” 30 0xC0
B10100000, // オフセット 7 鉱石 “7” “19” 35 0xA0
B10010000, // オフセット 8 鉱石 “8” “20” 40 0x90
B10001000, // オフセット 9 鉱石 “9” “21” 45 0x88
B10000100, // オフセットA鉱石 “10” “22” 50 0x84
B10000010 // オフセット鉱石 “11” “23” 55 0x82
};
注意: D0 / D1レジスタを使用する義務はありません. その他のD2からD7は、他の目的に使用されない場合にも使用できます。. チップには特定の好みはありません.
PCBおよび回路の生産
特別な設備がないので、「PRESS_AND_PEEL」. しかし、一連の経験を経て、私は十分に有効な最終製品を得ることができました。. このプロジェクトの3つのPCBは: 最初はArduinoNanomicroとMAX7219チップを収容します, 2番目はESPとインターフェース電子機器、3番目はi 12 時計LED.
最初のPCBのレイアウト:

右側には、マイクロArduinoNanoを挿入するためのコネクタがあります, 左側のMAX7219ハウジング. マイクロのUSBソケットは、5V 1 / A出力の携帯電話またはタブレット用のバッテリー充電器に接続されているため、特定の電源はありません。, 全体をサポートするのに十分です. NanoとESPを同時にリセットする小さなボタンがリセットに接続されています. 1つのコネクタはRESET信号を伝送します,V5, GND, TX, ESPを収容するPCBへのRX. AM / PMピンは、2つのAM / PMLEDで小さなプレートに接続されています. 最後に橋 36/72 いわゆる夏/冬時間を設定する.
2番目のPCBのレイアウト:

このPCBはサポートします: 5Vレギュレーター > 3ESPに電力を供給するV, レベルを5vから3vに調整するレベルコンバーター, そして最後にESPを収容するためのコネクタ. 私 5 上部のピンはそれぞれに接続されています 5 ピンデルPCBメイン. 着信RX / TX信号は、レベルコンバータを介してESPのTX / RXピンに定期的に接続されます。. NOTE: 分圧器も十分だったでしょう.
3番目のPCBのレイアウト:

宿泊施設i 12 2つのコネクタで導かれる (A_F) それぞれのチェーンと2つのDG0 / DG1ピン用. 次に、A / F接続が並列に結合されます (AとA, B con B, 等) 次に、MAX7219のそれぞれのピンに接続します. DG0 / DG1と同様に.
この最後のPCBを忘れました: レベルに応じて点灯する2つのAM / PMLEDに関連しています 0/1 入力ピンに存在.
.
結論として:
これまでのところ、解決すべき唯一の問題は、すべてを適切な箱などに入れることです。. DIYの地滑りであるため、私は何とか何かをすることができません, 少なくとも美的に, 有効.
それまでの間、すべてが完璧で実行可能であり、より良い結果が得られることを念頭に置いて、ご清聴ありがとうございました。コメントをお待ちしております。. 私はただの趣味であり続けます, 彼ら自身の無知で, 常に新しいものを発見する.
gvsoftマーチ 2021
おめでとうGvsoft! W時計. 私はあなたにメールを書きました
おめでとうございます.
私は同じようなものを試しています, しかし7SDで. ESPのため、Nanoは使用されていません-03 (私が使っているもの) DS3231とSPIをMAX7912に接続できます.
現時点では自由な時間がありません. 多分私は後で拾います.