Table des matières:

Horloge numérique connectée au Web : 7 étapes
Horloge numérique connectée au Web : 7 étapes

Vidéo: Horloge numérique connectée au Web : 7 étapes

Vidéo: Horloge numérique connectée au Web : 7 étapes
Vidéo: Comment régler automatiquement l'heure de Windows 7 sur Internet 2024, Novembre
Anonim
Horloge numérique connectée au Web
Horloge numérique connectée au Web

J'ai trouvé une horloge numérique à 10 $ sur Amazon. Maintenant, personnalisez-le pour obtenir l'heure d'Internet.

Fournitures

ARM Stamp programmable en BASIC disponible ici

Étape 1: Connectez le lecteur de chiffres et le lecteur de segment pour un affichage multiplexé

Connectez le lecteur de chiffres et le lecteur de segment pour un affichage multiplexé
Connectez le lecteur de chiffres et le lecteur de segment pour un affichage multiplexé

J'ai commencé avec une horloge numérique à grand nombre bon marché. J'ai d'abord retiré la puce d'horloge existante. Ensuite, j'ai sondé et localisé les 7 connexions de segment, qui peuvent être pilotées directement par le microprocesseur. Ensuite, j'ai trouvé les pilotes à 4 chiffres qui étaient des transistors que le microprocesseur peut piloter. Et puis câblé ceux-ci.

Étape 2: tester les connexions

Tester les connexions
Tester les connexions

Comme expérience, j'ai écrit un programme BASIC pour piloter toutes les lignes, pour vérifier le câblage et mesurer le courant, qui dans ce cas était de 82 mA

Ensuite, il fallait écrire le code pour scanner les lignes.

' lecteur d'affichage de l'horloge Web

IO (7) = 0 ' lecteur PMOS -- sera un jour PWM

pour y=45 à 48

IO(y)=0 ' lecteur de chiffres

pour x=8 à 15

IO(x)=0 ' segmenter le lecteur

attendre (500)

IO(x)=1

x suivant

DIR(y)=0 ' désactiver le lecteur sur le segment

le prochain

Étape 3: Code pour afficher l'heure et PWM pour contrôler la luminosité

Code pour afficher l'heure et PWM pour contrôler la luminosité
Code pour afficher l'heure et PWM pour contrôler la luminosité
Code pour afficher l'heure et PWM pour contrôler la luminosité
Code pour afficher l'heure et PWM pour contrôler la luminosité

Ensuite, j'ai ajouté un transistor PMOS dans l'alimentation de tous les pilotes numériques. Avec celle entraînée par la modulation de largeur d'impulsion, la luminosité de l'écran sera contrôlée. Voici le code BASIC pour afficher l'heure.

' lecteur d'affichage de l'horloge Web #include "LPC11U3x.bas"

' mondiales

hr = 0 ' définit l'heure

min = 0 ' définit la minute

#définir SEG_0 &HBB00

#définir SEG_1 &H1800

#définir SEG_2 &HD300

#définir SEG_3 &HD900

#définir SEG_4 &H7800

#définir SEG_5 &HE900

#définir SEG_6 &HEB00

#définir SEG_7 &H9800

#définir SEG_8 &HFB00

#définir SEG_9 &HF800

#définir SEG_o &H4B00

#définir SEG_f &HE200

const DIGarray = { SEG_0, SEG_1, SEG_2, SEG_3, SEG_4, SEG_5, SEG_6, SEG_7, SEG_8, SEG_9, SEG_o, SEG_f }

#define DIG_WAIT 1

#define US_TIME

sous display_time(err, hr, min)

dim hr10, hr1, min10, min1, je

#ifdef US_TIME

si hr > 12 alors hr -= 12

si h = 0 alors h = 12

#fin si

h10 = h/10

h1 = h MOD 10

min10 = min/10

min1 = min MOD 10

pour i=0 à 1

si hr10 alors

E/S(45) = 0

fin si

GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr10)

GPIO_CLR(0) = DIGarray(hr10)

attendre(DIG_WAIT)

ENTRÉE(45)

E/S(46) = 0

GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr1) + IF(i, &H400, 0)

GPIO_CLR(0) = DIGarray(hr1) + IF(i, &H400, 0)

attendre(DIG_WAIT)

ENTRÉE(46)

E/S(47) = 0

GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min10)

GPIO_CLR(0) = DIGarray(min10)

attendre(DIG_WAIT)

ENTRÉE(47)

E/S(48) = 0

GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min1)

GPIO_CLR(0) = DIGarray(min1)

attendre(DIG_WAIT)

ENTRÉE(48)

ensuite je

endsub

' utilisateur TIMER1 (32 bits) pour interrompre chaque minute

INTERRUPTION SUB TIMER1IRQ

T1_IR = 1 ' Effacer l'interruption

min += 1

si min > 59 alors

min = 0

h += 1

si h > 23 alors

h = 0

fin si

fin si

ENDSUB

SUB ON_TIMER (max_cnt, fais ceci)

TIMER1_ISR = dothis + 1 'définir la fonction de VIC - besoin du +1 pour l'opération Thumb

SYSCON_SYSAHBCLKCTRL OR= (1<<10) ' activer TIMER1

T1_PR = 0 'pas de pré-échelle -- ajustera la valeur pour un temps plus précis

VICIntEnable OR= (1<<TIMER1_IRQn) 'Activer l'interruption

T1_MR0 = max_cnt-1 ' configurer le nombre de correspondance de ms

T1_MCR = 3' Interruption et Reset sur

MR0 T1_IR = 1 ' efface l'interruption

T1_TC = 0 ' efface le compteur de la minuterie

T1_TCR = 1 ' TIMER1 Activer

ENDSUB

#define MINUT_PCLK 2880000000 ' 60 secondes à 48 MHz

principale:

h = 9

min = 33

ON_TIMER(MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 ' PWM un jour -- besoin de passer à P0_22 ??

tandis que 1

display_time(0, h, min)

boucle

Étape 4: établir une connexion Internet

Établir une connexion Internet
Établir une connexion Internet

Utilisez un ESP8266 pour une connexion WiFi. Après avoir parcouru le Web pendant un certain temps, la meilleure solution était la version 0.9.6 de nodemcu et un ancien esp8266_flasher fonctionnait le mieux.

www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip

Ensuite, une simple page Web PHP pour servir du temps à partir d'Internet--

Serveur de temps Coridium

<?php

$timezone = htmlspecialchars($_GET["zone"]); si ($timezone == "")

$timezone = 'Amérique/Los_Angeles';

$tz_object = new DateTimeZone($timezone);

$datetime = new DateTime();

$datetime->setTimezone($tz_object);

echo "time is-", $datetime->format('H:i:s');

écho "";

echo "date is-", $datetime->format('m/d/Y');

?>

Cette page Web est pour que vous puissiez demander

coridium.us/time.php -- et vous obtenez bien le fuseau horaire américain du Pacifique

ou

coridium.us/time.php?zone=Europe/Londres

Aucune vérification d'erreur et ne le sera probablement jamais

Et le Lua de lire ça --

wifi.sta.config("votre_SSID", "votre_MOT DE PASSE")> wifi.sta.connect() …

sk=net.createConnection(net. TCP, 0)

sk:on("recevoir", function(sck, c) print(c) end)

sk:connect(80, "coridium.us")

sk:send("GET /time.php HTTP/1.1\r\nHôte: coridium.us\r\nConnexion: keep-alive\r\nAccepter: */*\r\n\r\n")

Et tu remontes le temps comme

l'heure est 09:38:49la date est le 2018-12-31

Étape 5: Ajoutez le code BASIC pour analyser l'heure à partir du Web

Ajouter du code BASIC pour analyser l'heure à partir du Web
Ajouter du code BASIC pour analyser l'heure à partir du Web

Il s'agit d'un sous-ensemble du programme BASIC complet, ce programme complet peut être consulté sur le lien à l'étape finale.

si strstr(build_gets, "time is-") = 0 alors

hr = build_gets(8) - "0"

si build_gets(9) = ":" alors

min = (build_gets(10) - "0")*10

min += build_gets(11) - "0"

autre

hr = hr * 10 + build_gets(9) - "0"

min = (build_gets(11) - "0")*10

min += build_gets(12) - "0"

fin si

fin si

Étape 6: ajoutez un capteur de lumière et un code pour assombrir l'affichage

Ajoutez un capteur de lumière et un code pour assombrir l'affichage
Ajoutez un capteur de lumière et un code pour assombrir l'affichage
Ajouter un capteur de lumière et un code pour assombrir l'affichage
Ajouter un capteur de lumière et un code pour assombrir l'affichage
Ajouter un capteur de lumière et un code pour assombrir l'affichage
Ajouter un capteur de lumière et un code pour assombrir l'affichage

Un phototransistor a été ajouté pour détecter la lumière ambiante dans la pièce. Sans cela, l'écran est suffisamment lumineux pour réveiller les morts (moi) la nuit.

La tension analogique de la sortie du phototransistor est lue et la modulation de largeur d'impulsion définit la luminosité globale de l'écran.

Étape 7: boutonnez l'horloge et commencez à l'utiliser

Boutonnez l'horloge et commencez à l'utiliser
Boutonnez l'horloge et commencez à l'utiliser

La version finale affiche l'heure et vers 3 heures du matin, elle sort sur le Web pour lire l'heure actuelle. Cela gère également l'heure d'été.

La motivation de ce projet était les pannes de courant que nous subissons ici dans les montagnes et la nécessité de réinitialiser les horloges ou de remplacer les piles pour les maintenir en vie.

Ceci a été un aperçu rapide du projet.

Tous les détails de cette horloge connectée Web DIY.

Conseillé: