Tabla de contenido:

Reloj digital conectado a la web: 7 pasos
Reloj digital conectado a la web: 7 pasos

Video: Reloj digital conectado a la web: 7 pasos

Video: Reloj digital conectado a la web: 7 pasos
Video: Reloj LED digital de un botón | Configuración de hora y fecha (Cómo Poner) 2024, Mes de julio
Anonim
Reloj digital conectado a la web
Reloj digital conectado a la web

Encontré un reloj digital de $ 10 en Amazon. Ahora para personalizarlo para obtener la hora de Internet.

Suministros

Sello ARM programable en BASIC disponible aquí

Paso 1: Conecte la unidad de dígitos y la unidad de segmento para una pantalla multiplexada

Conecte la unidad de dígitos y la unidad de segmento para visualización multiplexada
Conecte la unidad de dígitos y la unidad de segmento para visualización multiplexada

Comencé con un reloj digital de números grandes y barato. Primero eliminé el chip de reloj existente. Luego investigó un poco y localizó las conexiones de 7 segmentos, que pueden ser controladas directamente por el microprocesador. Luego encontró los controladores de 4 dígitos que eran transistores que el microprocesador puede manejar. Y luego los conecté.

Paso 2: pruebe las conexiones

Pruebe las conexiones
Pruebe las conexiones

Como experimento, escribí un programa BÁSICO para conducir todas las líneas, para verificar el cableado y medir la corriente, que en este caso era de 82 mA.

Lo siguiente fue escribir el código para escanear las líneas.

'unidad de visualización del reloj web

IO (7) = 0 'Unidad PMOS: algún día será PWM

para y = 45 a 48

IO (y) = 0 'unidad de dígitos

para x = 8 a 15

IO (x) = unidad de segmento 0 '

espera (500)

IO (x) = 1

siguiente x

DIR (y) = 0 'deshabilita la unidad en el segmento

el próximo año

Paso 3: Código para mostrar la hora y PWM para controlar el brillo

Código para mostrar el tiempo y PWM para controlar el brillo
Código para mostrar el tiempo y PWM para controlar el brillo
Código para mostrar la hora y PWM para controlar el brillo
Código para mostrar la hora y PWM para controlar el brillo

Luego agregué un transistor PMOS en la fuente de alimentación a todos los controladores de dígitos. Con eso impulsado por la modulación de ancho de pulso controlará el brillo de la pantalla. Aquí está el código BÁSICO para mostrar la hora.

'unidad de visualización de reloj web # incluye "LPC11U3x.bas"

'globales

hr = 0 'definir hora

min = 0 'definir minuto

#define SEG_0 y HBB00

#define SEG_1 y H1800

#define SEG_2 y HD300

#define SEG_3 y HD900

#define SEG_4 y H7800

#define SEG_5 y HE900

#define SEG_6 y HEB00

#define SEG_7 y H9800

#define SEG_8 y HFB00

#define SEG_9 y HF800

#define SEG_o y H4B00

#define SEG_f y 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

si hr> 12 entonces hr - = 12

si hr = 0 entonces hr = 12

#terminara si

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

para i = 0 a 1

si hr10 entonces

IO (45) = 0

terminara si

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

GPIO_CLR (0) = DIGarray (hr10)

espera (DIG_WAIT)

ENTRADA (45)

IO (46) = 0

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

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

esperar (DIG_WAIT)

ENTRADA (46)

IO (47) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & 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)

esperar (DIG_WAIT)

ENTRADA (48)

siguiente yo

endub

'usuario TIMER1 (32 bit) para interrumpir cada minuto

INTERRUPCIÓN SUB TIMER1IRQ

T1_IR = 1 'Borrar interrupción

min + = 1

si min> 59 entonces

min = 0

hr + = 1

si hr> 23 entonces

hr = 0

terminara si

terminara si

ENDSUB

SUB ON_TIMER (max_cnt, lo hace)

TIMER1_ISR = dothis + 1 'establece la función de VIC - necesita el +1 para la operación del pulgar

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

T1_PR = 0 'sin preescala: ajustará el valor para una hora más precisa

VICIntEnable OR = (1 << TIMER1_IRQn) 'Habilitar interrupción

T1_MR0 = max_cnt-1 'configura el número de coincidencia de ms

T1_MCR = 3 'Interrupción y reinicio en

MR0 T1_IR = 1 'borrar interrupción

T1_TC = 0 'borrar el contador del temporizador

T1_TCR = 1 'Activar TIMER1

ENDSUB

#define MINUT_PCLK 2880000000 '60 segundos a 48 MHz

principal:

hr = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM algún día - ¿necesita pasar a P0_22?

mientras que 1

display_time (0, h, min)

círculo

Paso 4: establezca una conexión a Internet

Hacer una conexión a Internet
Hacer una conexión a Internet

Utilice un ESP8266 para una conexión WiFi. Después de hurgar en la web durante un tiempo, la mejor solución fue nodemcu versión 0.9.6 y un esp8266_flasher anterior funcionó mejor.

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

Luego, una simple página web PHP para servir tiempo desde Internet:

Servidor de tiempo de Coridium

<? php

$ zona horaria = htmlspecialchars ($ _ GET ["zona"]); si ($ zona horaria == "")

$ timezone = 'America / Los_Angeles';

$ tz_object = new DateTimeZone ($ zona horaria);

$ fecha y hora = nueva fecha y hora ();

$ fecha y hora-> setTimezone ($ tz_object);

echo "la hora es-", $ fechahora-> formato ('H: i: s');

eco "";

echo "la fecha es-", $ fecha y hora-> formato ('m / d / Y');

?>

Esa página web es para que puedas solicitar

coridium.us/time.php - y obtendrá la zona horaria del Pacífico de EE. UU.

o

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

Sin verificación de errores y lo más probable es que nunca se

Y el Lua para leer eso -

wifi.sta.config ("su_SSID", "su_PASSWORD")> wifi.sta.connect ()…

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

sk: on ("recibir", función (sck, c) print (c) end)

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

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

Y regresas el tiempo como

hora es-09: 38: 49 fecha es-2018-12-31

Paso 5: agregue el código BÁSICO para analizar el tiempo desde la web

Agregue código BÁSICO para analizar el tiempo desde la web
Agregue código BÁSICO para analizar el tiempo desde la web

Este es un subconjunto del programa BASIC completo, ese programa completo se puede ver en el enlace en el paso final.

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

hr = build_gets (8) - "0"

si build_gets (9) = ":" entonces

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

min + = build_gets (11) - "0"

demás

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

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

min + = build_gets (12) - "0"

terminara si

terminara si

Paso 6: agregue un sensor de luz y un código para atenuar la pantalla

Agregue un sensor de luz y un código para atenuar la pantalla
Agregue un sensor de luz y un código para atenuar la pantalla
Agregue un sensor de luz y un código para atenuar la pantalla
Agregue un sensor de luz y un código para atenuar la pantalla
Agregue un sensor de luz y un código para atenuar la pantalla
Agregue un sensor de luz y un código para atenuar la pantalla

Se agregó un fototransistor para detectar la luz ambiental en la habitación. Sin él, la pantalla es lo suficientemente brillante como para despertar a los muertos (yo) por la noche.

Se lee el voltaje analógico de la salida del fototransistor y la modulación de ancho de pulso establece el brillo general de la pantalla.

Paso 7: abotone el reloj y comience a usarlo

Abotone el reloj y comience a usarlo
Abotone el reloj y comience a usarlo

La versión final muestra la hora, y alrededor de las 3 a. M. Sale a la web para leer la hora actual. Esto también maneja el horario de verano.

La motivación de este proyecto fueron los cortes de energía que experimentamos aquí en las montañas y la necesidad de reiniciar los relojes o reemplazar las baterías para mantenerlos con vida.

Esta ha sido una descripción general rápida del proyecto.

Detalles completos de este reloj DIY conectado a la web.

Recomendado: