Table des matières:

Véritable horloge binaire avec synchronisation NTP : 4 étapes
Véritable horloge binaire avec synchronisation NTP : 4 étapes

Vidéo: Véritable horloge binaire avec synchronisation NTP : 4 étapes

Vidéo: Véritable horloge binaire avec synchronisation NTP : 4 étapes
Vidéo: EB_#511 Création d'une Horloge Numérique Très Exacte! 2024, Novembre
Anonim
Véritable horloge binaire avec synchronisation NTP
Véritable horloge binaire avec synchronisation NTP
Véritable horloge binaire avec synchronisation NTP
Véritable horloge binaire avec synchronisation NTP

Une véritable horloge binaire affiche l'heure du jour sous la forme d'une somme de fractions binaires d'une journée complète, par opposition à une « horloge binaire » traditionnelle qui affiche l'heure sous forme de chiffres décimaux codés en binaire correspondant aux heures/minutes/secondes. Les "horloges binaires" traditionnelles utilisent vraiment le sexagésimal encodé en binaire-décimal-encodé. Quel bordel! Les vraies horloges binaires simplifient énormément les choses.

Dans une vraie horloge binaire, le premier chiffre vous indique la demi-journée, le deuxième chiffre est un quart de jour, le troisième chiffre est un huitième de jour, etc. Il peut être lu à n'importe quelle résolution très rapidement (avec de la pratique bien sûr). Le premier chiffre encode efficacement AM par rapport à PM, le deuxième chiffre s'il est tôt AM/PM ou tard AM/PM, et ainsi de suite.

En concevant ma véritable horloge binaire, j'ai utilisé douze chiffres de résolution, donc le jour est divisé en 2^12=4096 parties (chaque incrément est d'environ 20 secondes). Au lieu de garder tous les chiffres sur une ligne, les 12 chiffres ont été séparés en 3 rangées de 4 chiffres. Bien que les chiffres binaires réels restent inchangés, cela permet à l'horloge d'être lue comme 3 chiffres hexadécimaux codés en binaire, la première ligne indiquant les 16èmes du jour (1,5 heures), la deuxième ligne indiquant les 256èmes du jour (~ 5 minutes) et la troisième ligne montrant 4096e d'un jour (~ 20 secondes).

L'horloge est synchronisée avec NTP (Network Time Protocol) à l'aide d'un ESP8266. L'ESP8266 est configuré de sorte qu'au démarrage, une pression sur un bouton de l'horloge l'enverra en mode paramètres. En mode paramètres, l'horloge créera un réseau WiFi qui servira une page Web qui peut être utilisée pour entrer vos propres paramètres wifi, serveur NTP et fuseau horaire. Ces informations sont stockées dans l'EEPROM de l'ESP8266 et sont lues lorsque l'horloge démarre en mode horloge afin qu'elle puisse se connecter à Internet et récupérer l'heure.

Fournitures:

  • NodeMCU ESP8266
  • Bande LED WS2812B
  • Bouton
  • Résistance de 470 Ohms
  • Résistance 10K Ohm
  • Condensateur 470 uF
  • Bâtonnets de glace
  • marbres
  • Bois (ou autre feuille de matériau) pour le boîtier

Étape 1: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Afin d'avoir un affichage, ce projet utilise une bande led RVB disposée en 3 rangées. J'ai coupé 3 bandes de 8 leds dans la bande de leds WS2812B et les ai soudées ensemble. (Elles sont fragiles et souder les petites pastilles peut être difficile. J'ai enveloppé les extrémités soudées dans du ruban isolant afin de les isoler de toute flexion.) Même si je n'avais besoin que de 4 leds par rangée, j'ai découpé des bandes de 8 pour que je pourrait avoir un plus grand espacement entre les lumières en n'utilisant qu'une LED sur deux. Ces bandes ont ensuite été collées sur une base plate faite de bâtons de popsicle. Entre chaque rangée, une double couche de bâtonnets de popsicle assure le profil afin que la face avant puisse être collée contre l'intérieur du boîtier de l'horloge (voir photo).

La bande LED est alimentée par le VU et le GND du NodeMCU. VU est alimenté (presque) directement par l'USB, il fournit donc 5V aux LED WS2812B même si l'ESP8266 fonctionne à 3,3V. J'ai placé un condensateur de 470 uF sur l'alimentation de la bande WS2812B pour protéger les leds. Les données de la bande LED sont connectées à la broche D3 du NodeMCU via la résistance de 470 Ohm. Reportez-vous à cette instructable pour plus d'informations sur la façon de contrôler les leds WS2812B avec l'ESP8266. Le circuit a été soudé sur une proto-carte avec des en-têtes mâle-femelle pour le NodeMCU.

Un bouton-poussoir était également attaché à D6 du NodeMCU. Ce bouton-poussoir peut être enfoncé pendant le démarrage de l'horloge pour l'envoyer en mode paramètres (dans lequel les paramètres wifi, le serveur NTP et les préférences de fuseau horaire peuvent être modifiés). À une extrémité, le bouton-poussoir est connecté à D6 et également à GND via une résistance de 10K Ohm et à l'autre extrémité, il est connecté à l'alimentation. Lorsque le bouton n'est pas enfoncé, D6 affiche un niveau bas; lorsqu'il est enfoncé, D6 est élevé.

Étape 2: Logiciel

Logiciel
Logiciel

Le logiciel de l'ESP8266 a été écrit en utilisant le code Arduino. Les LED sont gérées à l'aide de la bibliothèque FastLED et la synchronisation NTP est effectuée par la bibliothèque NTPClient. L'heure est synchronisée par NTP toutes les heures.

Au démarrage de la fonction de configuration, le programme vérifie si le bouton connecté à D6 est enfoncé. Si c'est le cas, l'ESP8266 crée un réseau wifi (le SSID et le mot de passe peuvent être modifiés dans le code, le SSID par défaut est "TrueBinary" et le mot de passe est "thepoweroftwo"). Connectez-vous à ce réseau depuis n'importe quel appareil et accédez à 192.168.1.1. L'ESP8266 proposera une page Web avec des formulaires où vous pourrez saisir votre SSID et votre mot de passe wifi, le serveur NTP préféré et le décalage horaire par rapport à UTC. Une fois ces formulaires soumis à l'ESP8266, il enregistrera les informations dans son stockage EEPROM interne.

Si le bouton n'est pas enfoncé, l'horloge démarre normalement, lit les paramètres de l'EEPROM, se connecte au wifi pour utiliser NTP et commence à afficher l'heure.

REMARQUE: la fonction setDisplay(int index) prend le numéro de chiffre de 0 à 11 où 0 est le premier chiffre (la demi-journée) et 11 est le dernier (1/4096 d'une journée) et allume la LED correspondante à l'aide de la touche " tableau de leds". Cette fonction est à renseigner selon la manière dont vous avez configuré l'affichage. Mon exemple commenté correspond à la façon dont j'ai soudé les rangées en zigzag plutôt que de bout en bout et j'ai sauté toutes les autres LED.

Étape 3: Logement

Logement
Logement
Logement
Logement
Logement
Logement

Pour loger l'horloge, j'ai utilisé un angle de bois peint que je possédais. Sur une face extérieure, j'ai percé 12 trous dans une grille correspondant aux positions des LED. J'ai ensuite collé les LED à l'intérieur de l'angle en collant les faces surélevées des bâtons de popsicle entre les rangées sur le bois (comme indiqué). Pour diffuser la lumière des LED, j'ai collé des billes de verre au dessus des trous. J'ai accompli cela en trempant la moitié inférieure de chaque marbre dans de la résine époxy, puis en les plaçant dans les trous. Le NodeMCU et la proto-carte ont été vissés dans l'autre face intérieure de l'angle. Les côtés ont été recouverts à l'aide de petits triangles de bois, fixés avec de la colle à bois. L'un des côtés a un trou pour le port micro USB du NodeMCU et une découpe dans le coin pour le bouton-poussoir.

Étape 4: terminé

Terminé!
Terminé!
Terminé!
Terminé!

Notre vraie horloge binaire est terminée ! Pour le configurer, maintenez le bouton enfoncé tout en le branchant pour le mettre en mode paramètres, puis entrez les informations d'identification WiFi sur sa page Web. Une fois configurée, l'horloge peut être branchée n'importe où et se connectera automatiquement à Internet et commencera à afficher l'heure en binaire.

Il faut un peu de pratique pour lire l'heure dans un vrai format binaire, mais c'est un exercice amusant et après un certain temps, cela devient un moyen rapide d'obtenir l'heure d'un simple coup d'œil !

Conseillé: