Sommario:
- Forniture
- Passaggio 1: collegare Digit Drive e Segment Drive per display multiplex
- Passaggio 2: testare le connessioni
- Passaggio 3: codice per visualizzare l'ora e PWM per controllare la luminosità
- Passaggio 4: effettuare una connessione Internet
- Passaggio 5: aggiungi il codice BASIC per analizzare il tempo dal Web
- Passaggio 6: aggiungi un sensore di luce e un codice per oscurare il display
- Passaggio 7: abbottona l'orologio e inizia a usarlo
Video: Orologio digitale connesso al Web: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Ho trovato un orologio digitale da $ 10 su Amazon. Ora per personalizzarlo per ottenere l'ora da Internet.
Forniture
Timbro ARM programmabile in BASIC disponibile qui
Passaggio 1: collegare Digit Drive e Segment Drive per display multiplex
Ho iniziato con un orologio digitale a buon mercato con un grande numero di scaffale. Per prima cosa ho rimosso il chip dell'orologio esistente. Quindi ha fatto un po' di sondaggi e ha individuato le connessioni a 7 segmenti, che possono essere guidate direttamente dal microprocessore. Quindi ho trovato i driver a 4 cifre che erano transistor che il microprocessore può pilotare. E poi li ho cablati.
Passaggio 2: testare le connessioni
Per esperimento ho scritto un programma BASIC per pilotare tutte le linee, per controllare il cablaggio e misurare la corrente, che in questo caso era 82 mA
Successivamente è stato necessario scrivere il codice per scansionare le righe.
' unità di visualizzazione dell'orologio web
IO(7)=0 'Unità PMOS: un giorno sarà PWM
per y=45 a 48
IO(y)=0 ' unità di cifre
per x=8 a 15
IO(x)=0 'unità di segmento
attendere(500)
IO(x)=1
prossimo x
DIR(y)=0 'disabilita drive sul segmento
il prossimo sì
Passaggio 3: codice per visualizzare l'ora e PWM per controllare la luminosità
Successivamente ho aggiunto un transistor PMOS nell'alimentatore a tutti i driver delle cifre. Con quello pilotato dalla modulazione di larghezza d'impulso si controllerà la luminosità del display. Ecco il codice BASIC per visualizzare l'ora.
' unità di visualizzazione dell'orologio web #include "LPC11U3x.bas"
"globali"
hr = 0 'definire l'ora
min = 0 ' definisce minuto
#define SEG_0 &HBB00
#define SEG_1 &H1800
#define SEG_2 &HD300
#define SEG_3 &HD900
#define SEG_4 &H7800
#define SEG_5 &HE900
#define SEG_6 &HEB00
#define SEG_7 &H9800
#define SEG_8 &HFB00
#define SEG_9 &HF800
#define SEG_o &H4B00
#define 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
sub display_time(err, hr, min)
dim hr10, hr1, min10, min1, i
#ifdef US_TIME
se h > 12 allora h -= 12
se h = 0 allora h = 12
#finisci se
h10 = h / 10
h1 = h MOD 10
min10 = minimo / 10
min1 = minimo MOD 10
per i=0 a 1
se hr10 allora
IO(45) = 0
finisci se
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr10)
GPIO_CLR(0) = DIGarray(hr10)
aspetta (DIG_WAIT)
INGRESSO(45)
IO(46) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr1) + IF(i, &H400, 0)
GPIO_CLR(0) = DIGarray(hr1) + IF(i, &H400, 0)
aspetta (DIG_WAIT)
INGRESSO(46)
IO(47) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min10)
GPIO_CLR(0) = DIGarray(min10)
aspetta (DIG_WAIT)
INGRESSO(47)
IO(48) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min1)
GPIO_CLR(0) = DIGarray(min1)
aspetta (DIG_WAIT)
INGRESSO(48)
prossimo io
endsub
' utente TIMER1 (32 bit) per interrompere ogni minuto
INTERRUZIONE SUB TIMER1IRQ
T1_IR = 1 ' Cancella interrupt
minimo += 1
se min > 59 allora
minimo = 0
ora += 1
se h > 23 allora
ora = 0
finisci se
finisci se
ENDSUB
SUB ON_TIMER (max_cnt, fai questo)
TIMER1_ISR = dothis + 1 'imposta la funzione di VIC - è necessario il +1 per il funzionamento del pollice
SYSCON_SYSAHBCLKCTRL OR= (1<<10) ' abilita TIMER1
T1_PR = 0 'nessuna prescala -- regolerà il valore per un tempo più preciso
VICIntEnable OR= (1<<TIMER1_IRQn) 'Abilita interrupt
T1_MR0 = max_cnt-1 ' imposta il numero di corrispondenza di ms
T1_MCR = 3 ' Interrupt e Reset on
MR0 T1_IR = 1 ' azzera l'interruzione
T1_TC = 0 'azzera contatore timer
T1_TCR = 1 ' Abilita TIMER1
ENDSUB
#define MINUT_PCLK 2880000000 '60 secondi a 48 MHz
principale:
ora = 9
minimo = 33
ON_TIMER(MINUT_PCLK, INDIRIZZO DI TIMER1IRQ)
IO(7) = 0 ' PWM un giorno - devi passare a P0_22 ??
mentre 1
display_time(0, h, min)
ciclo continuo
Passaggio 4: effettuare una connessione Internet
Usa un ESP8266 per una connessione WiFi. Dopo aver rovistato per un po' sul web, la soluzione migliore era nodemcu versione 0.9.6 e un esp8266_flasher precedente funzionava meglio.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Quindi una semplice pagina Web PHP per servire il tempo da Internet--
Coridium Time Server
<?php
$timezone = htmlspecialchars($_GET["zone"]); if ($fuso orario == "")
$timezone = 'America/Los_Angeles';
$tz_object = new DateTimeZone($timezone);
$datetime = new DateTime();
$datetime->setTimezone($tz_object);
echo "time is-", $datetime->format('H:i:s');
eco "";
echo "la data è-", $datetime->format('m/g/Y');
?>
Quella pagina web è così puoi richiedere
coridium.us/time.php - e ottieni bene il fuso orario degli Stati Uniti del Pacifico
o
coridium.us/time.php?zone=Europe/London
Nessun controllo degli errori e molto probabilmente non lo sarà mai
E il Lua a leggerlo…
wifi.sta.config("tuo_SSID", "tua_PASSWORD")> wifi.sta.connect() …
sk=net.createConnection(net. TCP, 0)
sk:on("ricevi", function(sck, c) print(c) end)
sk:connect(80, "coridium.us")
sk:send("GET /time.php HTTP/1.1\r\nHost: coridium.us\r\nConnessione: keep-alive\r\nAccept: */*\r\n\r\n")
E torni nel tempo come
l'ora è-09:38:49la data è il 31-12-2018
Passaggio 5: aggiungi il codice BASIC per analizzare il tempo dal Web
Questo è un sottoinsieme del programma BASIC completo, che il programma completo può essere visualizzato al link nel passaggio finale.
se strstr(build_gets, "time is-") = 0 then
hr = build_gets(8) - "0"
se build_gets(9) = ":" allora
min = (build_gets(10) - "0")*10
min += build_gets(11) - "0"
altro
ora = ora * 10 + build_gets(9) - "0"
min = (build_gets(11) - "0")*10
min += build_gets(12) - "0"
finisci se
finisci se
Passaggio 6: aggiungi un sensore di luce e un codice per oscurare il display
È stato aggiunto un fototransistor per rilevare la luce ambientale nella stanza. Senza di esso il display è abbastanza luminoso da svegliare i morti (me) di notte.
Viene letta la tensione analogica dell'uscita del fototransistor e la modulazione dell'ampiezza dell'impulso imposta la luminosità complessiva del display.
Passaggio 7: abbottona l'orologio e inizia a usarlo
La versione finale visualizza l'ora e verso le 3 del mattino esce sul web per leggere l'ora corrente. Questo gestisce anche l'ora legale.
La motivazione di questo progetto sono state le interruzioni di corrente che sperimentiamo qui in montagna e la necessità di azzerare gli orologi o sostituire le batterie per mantenerli in vita.
Questa è stata una rapida panoramica del progetto.
Tutti i dettagli di questo orologio connesso al web fai-da-te.
Consigliato:
Come creare un orologio analogico e un orologio digitale con una striscia LED usando Arduino: 3 passaggi
Come creare un orologio analogico e un orologio digitale con una striscia LED usando Arduino: oggi realizzeremo un orologio analogico e un orologio Orologio digitale con Led Strip e modulo MAX7219 Dot con Arduino. Correggerà l'ora con il fuso orario locale. L'orologio analogico può utilizzare una striscia LED più lunga, quindi può essere appeso al muro per diventare un'opera d'arte
Orologio da comodino connesso per bambini: 12 passaggi
Orologio da comodino connesso per bambini: seguendo queste istruzioni, sarai in grado di costruire un orologio attivato dal movimento e che mostrerà la data, l'ora e l'evento rilevante del giorno. Mostrerà una modalità notturna quando è ora di dormire e quando i bambini si svegliano possono ricordare rapidamente cosa
Orologio con animazione LED SMART connesso al Web con pannello di controllo basato sul Web, server dell'ora sincronizzato: 11 passaggi (con immagini)
Orologio con animazione LED SMART connesso al Web con pannello di controllo basato sul Web, server dell'ora sincronizzato: la storia di questo orologio risale a molto tempo fa, più di 30 anni. Mio padre è stato il pioniere di questa idea quando avevo solo 10 anni, molto prima della rivoluzione dei LED, quando i LED erano 1/1000 della luminosità della loro attuale brillantezza accecante. Un vero
Crea un robot connesso al Web (per circa $ 500) (usando un Arduino e un netbook): 6 passaggi (con immagini)
Crea un robot connesso al web (per circa $ 500) (usando un Arduino e un netbook): questo Instructable ti mostrerà come costruire il tuo robot connesso al web (usando un microcontrollore Arduino e un pc Asus eee). Perché vorresti un web Robot connesso? Con cui giocare ovviamente. Guida il tuo robot dall'altra parte della stanza o dall'altra parte del conteggio
Termostato economico connesso al web: 12 passaggi (con immagini)
Termostato economico connesso al web: uno dei primi prodotti dell'Internet delle cose che ha trovato la sua strada in molte famiglie è il termostato intelligente. Possono imparare quando vuoi che la tua casa si scaldi e quale temperatura ambiente è solitamente richiesta. La cosa bella è che possono anche