Tabla de contenido:
- Suministros
- Paso 1: Conecte la unidad de dígitos y la unidad de segmento para una pantalla multiplexada
- Paso 2: pruebe las conexiones
- Paso 3: Código para mostrar la hora y PWM para controlar el brillo
- Paso 4: establezca una conexión a Internet
- Paso 5: agregue el código BÁSICO para analizar el tiempo desde la web
- Paso 6: agregue un sensor de luz y un código para atenuar la pantalla
- Paso 7: abotone el reloj y comience a usarlo
Video: Reloj digital conectado a la web: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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
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
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
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
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
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
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
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:
Cómo hacer un reloj analógico y un reloj digital con una tira de LED usando Arduino: 3 pasos
Cómo hacer un reloj analógico y un reloj digital con una tira de LED usando Arduino: Hoy haremos un reloj analógico & Reloj digital con Led Strip y módulo MAX7219 Dot con Arduino, corregirá la hora con la zona horaria local. El reloj analógico puede usar una tira de LED más larga, por lo que se puede colgar en la pared para convertirse en una obra de arte
Reloj de red ESP8266 sin ningún RTC - Reloj Nodemcu NTP Sin RTC - PROYECTO RELOJ DE INTERNET: 4 Pasos
Reloj de red ESP8266 sin ningún RTC | Reloj Nodemcu NTP Sin RTC | PROYECTO DE RELOJ DE INTERNET: En el proyecto se realizará un proyecto de reloj sin RTC, se tomará tiempo de Internet usando wifi y lo mostrará en la pantalla st7735
Reloj de cabecera conectado para niños: 12 pasos
Reloj de cabecera conectado para niños: siguiendo estas instrucciones, podrá construir un reloj que se active por movimiento y mostrará la fecha, la hora y el evento relevante del día. Mostrará un modo nocturno cuando sea hora de dormir y cuando los niños se despierten, pueden recordar rápidamente qué
Reloj de animación LED SMART conectado a la web con panel de control basado en la web, servidor de tiempo sincronizado: 11 pasos (con imágenes)
Reloj de animación LED SMART conectado a la web con panel de control basado en la web, servidor de tiempo sincronizado: la historia de este reloj se remonta a hace mucho tiempo: más de 30 años. Mi padre fue pionero en esta idea cuando yo tenía solo 10 años, mucho antes de la revolución del LED, cuando los LED eran 1/1000 del brillo de su brillo cegador actual. Una verdad
Haga un robot conectado a la web (por aproximadamente $ 500) (usando un Arduino y una netbook): 6 pasos (con imágenes)
Haga un robot conectado a la web (por aproximadamente $ 500) (usando un Arduino y una netbook): este instructivo le mostrará cómo construir su propio robot conectado a la web (usando un microcontrolador Arduino y Asus eee pc). Robot conectado? Para jugar, por supuesto. Conduce tu robot desde el otro lado de la habitación o desde el otro lado del recuento