Table des matières:
- Fournitures
- Étape 1: Connectez le lecteur de chiffres et le lecteur de segment pour un affichage multiplexé
- Étape 2: tester les connexions
- Étape 3: Code pour afficher l'heure et PWM pour contrôler la luminosité
- Étape 4: établir une connexion Internet
- Étape 5: Ajoutez le code BASIC pour analyser l'heure à partir du Web
- Étape 6: ajoutez un capteur de lumière et un code pour assombrir l'affichage
- Étape 7: boutonnez l'horloge et commencez à l'utiliser
Vidéo: Horloge numérique connectée au Web : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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é
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
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é
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
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
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
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
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é:
Comment faire une horloge analogique et une horloge numérique avec une bande LED à l'aide d'Arduino: 3 étapes
Comment faire une horloge analogique et une horloge numérique avec une bande LED à l'aide d'Arduino Horloge numérique avec Led Strip et module MAX7219 Dot avec Arduino. Elle corrigera l'heure avec le fuseau horaire local. L'horloge analogique peut utiliser une bande LED plus longue, elle peut donc être accrochée au mur pour devenir une œuvre d'art
Comment démonter un pied à coulisse numérique et comment fonctionne un pied à coulisse numérique : 4 étapes
Comment démonter un pied à coulisse numérique et comment fonctionne un pied à coulisse numérique : Beaucoup de gens savent comment utiliser des pieds à coulisse pour mesurer. Ce tutoriel vous apprendra comment démonter un pied à coulisse numérique et une explication du fonctionnement du pied à coulisse numérique
ESP8266 Horloge réseau sans RTC - Nodemcu NTP Horloge Pas de RTC - PROJET HORLOGE INTERNET : 4 étapes
ESP8266 Horloge réseau sans RTC | Nodemcu NTP Horloge Pas de RTC | PROJET D'HORLOGE INTERNET: Dans le projet, un projet d'horloge sans RTC prendra du temps sur Internet en utilisant le wifi et l'affichera sur l'écran st7735
Horloge de chevet connectée pour enfants : 12 étapes
Horloge de chevet connectée pour enfants : en suivant ces instructions, vous pourrez construire une horloge activée par le mouvement et qui affichera la date, l'heure et l'événement pertinent de la journée. Il affichera un mode nuit lorsqu'il est l'heure de dormir et lorsque les enfants se réveilleront, ils se souviendront rapidement de quoi
Horloge d'animation SMART LED connectée au Web avec panneau de commande Web, synchronisation du serveur de temps : 11 étapes (avec images)
Horloge d'animation SMART LED connectée au Web avec panneau de commande Web, synchronisation du serveur de temps : l'histoire de cette horloge remonte à plus de 30 ans. Mon père a lancé cette idée quand j'avais à peine 10 ans, bien avant la révolution des LED - à l'époque où les LED atteignaient 1/1000 de la luminosité de leur éclat aveuglant actuel. Une véritable