Taula de continguts:

Rellotge digital connectat al web: 7 passos
Rellotge digital connectat al web: 7 passos

Vídeo: Rellotge digital connectat al web: 7 passos

Vídeo: Rellotge digital connectat al web: 7 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Desembre
Anonim
Rellotge digital connectat a la web
Rellotge digital connectat a la web

Hem trobat un rellotge digital de 10 dòlars a Amazon. Ara personalitzeu-lo per obtenir el temps d’Internet.

Subministraments

ARM Stamp programable en BASIC disponible aquí

Pas 1: connecteu la unitat de dígits i la unitat de segmentació per a la visualització multiplexada

Connecteu la unitat de dígits i la unitat de segmentació per a la visualització multiplexada
Connecteu la unitat de dígits i la unitat de segmentació per a la visualització multiplexada

Vaig començar amb un rellotge digital gran número barat. Primer vaig eliminar el xip de rellotge existent. A continuació, vam fer algunes proves i vam localitzar les connexions de 7 segments, que poden ser accionades directament pel microprocessador. A continuació, es van trobar els controladors de 4 dígits que eren transistors que el microprocessador pot accionar. I després els va connectar.

Pas 2: proveu les connexions

Proveu les connexions
Proveu les connexions

Com a experiment, vaig escriure un programa BASIC per conduir totes les línies, per comprovar el cablejat i mesurar el corrent, que en aquest cas era de 82 mA

El següent era escriure el codi per escanejar les línies.

'unitat de visualització de rellotge web

IO (7) = 0 'Unitat PMOS: algun dia serà PWM

per a = 45 a 48

IO (y) = unitat de 0 'dígits

per a x = 8 a 15

IO (x) = 0 'unitat de segment

espera (500)

IO (x) = 1

següent x

DIR (y) = 0 'desactiva la unitat al segment

la següent

Pas 3: Codi per mostrar el temps i PWM per controlar la brillantor

Codi per mostrar el temps i PWM per controlar la brillantor
Codi per mostrar el temps i PWM per controlar la brillantor
Codi per mostrar el temps i PWM per controlar la brillantor
Codi per mostrar el temps i PWM per controlar la brillantor

A continuació he afegit un transistor PMOS a la font d'alimentació a tots els controladors de dígits. Amb això, la modulació de l'amplada de pols controlarà la brillantor de la pantalla. Aquí teniu el codi BASIC per mostrar l’hora.

'Unitat de visualització de rellotge web #include "LPC11U3x.bas"

'globals

hr = 0 'defineix l'hora

min = 0 'defineix el minut

#define SEG_0 & HBB00

#define SEG_1 & H1800

#define SEG_2 i HD300

#define SEG_3 i 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

temps de visualització sub (err, hr, min)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

si hr> 12 llavors hr - = 12

si hr = 0, llavors hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

per a i = 0 a 1

si hr10 llavors

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

espera (DIG_WAIT)

ENTRADA (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)

espera (DIG_WAIT)

ENTRADA (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

espera (DIG_WAIT)

ENTRADA (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

espera (DIG_WAIT)

ENTRADA (48)

següent jo

endsub

'usuari TIMER1 (32 bits) per interrompre cada minut

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Esborra la interrupció

min + = 1

si min> 59 llavors

mínim = 0

h + = 1

si h> 23 llavors

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = aquesta +1 'defineix la funció de VIC: necessiteu el +1 per a l'operació del polze

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

T1_PR = 0 'sense prescala: ajustarà el valor per obtenir un temps més precís

VICIntEnable OR = (1 << TIMER1_IRQn) 'Activa la interrupció

T1_MR0 = max_cnt-1 'ha configurat el nombre de coincidències de ms

T1_MCR = 3 'Interrompre i reiniciar activat

MR0 T1_IR = 1 'interrupció neta

T1_TC = 0 'esborra el comptador del temporitzador

T1_TCR = 1 'TIMER1 activat

ENDSUB

#define MINUT_PCLK 2880000000 '60 segons a 48 MHz

principal:

h = 9

mínim = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM algun dia: heu de passar a P0_22 ??

mentre que 1

display_time (0, h, min)

bucle

Pas 4: feu una connexió a Internet

Feu una connexió a Internet
Feu una connexió a Internet

Utilitzeu un ESP8266 per a una connexió WiFi. Després de passar una estona pel web, la millor solució va ser la versió 0.9.6 de nodemcu i un antic esp8266_flasher funcionava millor.

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

A continuació, una simple pàgina web PHP per servir temps des d'Internet.

Coridium Time Server

<? php

$ zona horària = htmlspecialchars ($ _ GET ["zona"]); if ($ zona horària == "")

$ timezone = 'America / Los_Angeles';

$ tz_object = new DateTimeZone ($ fus horari);

$ datetime = new DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

ressò "";

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

?>

Aquesta pàgina web és perquè pugueu sol·licitar-la

coridium.us/time.php: i obtindreu la zona horària del Pacífic nord-americà

o bé

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

No es comprova cap error i és probable que mai no ho sigui

I la Lua per llegir això -

wifi.sta.config ("el vostre_SSID", "el vostre_PASSWORD")> wifi.sta.connect () …

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

sk: on ("rebre", funció (sck, c) imprimir (c) final)

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

sk: send ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConnexió: keep-alive / r / nAcceptar: * / * / r / n / r / n")

I obtens temps enrere

l’hora és-09: 38: 49, data: 2018-12-31

Pas 5: afegiu un codi bàsic per analitzar el temps des del web

Afegiu un codi bàsic per analitzar el temps des del web
Afegiu un codi bàsic per analitzar el temps des del web

Aquest és un subconjunt del programa BASIC complet, que el programa complet es pot veure a l'enllaç del pas final.

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

hr = build_gets (8) - "0"

if build_gets (9) = ":" llavors

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

min + = build_gets (11) - "0"

en cas contrari

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

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

min + = build_gets (12) - "0"

endif

endif

Pas 6: afegiu un sensor de llum i un codi per atenuar la pantalla

Afegiu un sensor de llum i un codi per atenuar la pantalla
Afegiu un sensor de llum i un codi per atenuar la pantalla
Afegiu un sensor de llum i un codi per atenuar la pantalla
Afegiu un sensor de llum i un codi per atenuar la pantalla
Afegiu un sensor de llum i un codi per atenuar la pantalla
Afegiu un sensor de llum i un codi per atenuar la pantalla

Es va afegir un transistor fotogràfic per detectar la llum ambiental de l'habitació. Sense ella, la pantalla és prou brillant per despertar els morts (jo) a la nit.

Es llegeix el voltatge analògic de la sortida del transistor fotogràfic i la modulació de l'amplada del pols estableix la brillantor general de la pantalla.

Pas 7: feu clic al rellotge i comenceu a utilitzar-lo

Premeu el rellotge i comenceu a utilitzar-lo
Premeu el rellotge i comenceu a utilitzar-lo

La versió final mostra l’hora i cap a les 3 de la matinada surt al web per llegir l’hora actual. Això també gestiona l'estalvi de llum del dia.

La motivació d’aquest projecte va ser la fallada d’alimentació que experimentem aquí a la muntanya i la necessitat de restablir els rellotges o substituir les bateries per mantenir-les vives.

Aquesta ha estat una ràpida visió general del projecte.

Detalls complets d’aquest rellotge connectat a la web de bricolatge.

Recomanat: