Índice:
- Suprimentos
- Etapa 1: Conecte a unidade digital e a unidade de segmento para display multiplexado
- Etapa 2: Teste as conexões
- Etapa 3: Código para exibir a hora e PWM para controlar o brilho
- Etapa 4: Faça uma conexão com a Internet
- Etapa 5: adicione o código BASIC para analisar o tempo na web
- Etapa 6: adicione um sensor de luz e um código para escurecer a tela
- Etapa 7: Aperte o botão do relógio e comece a usá-lo
Vídeo: Relógio digital conectado à web: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Encontrei um relógio digital de $ 10 na Amazon. Agora para personalizá-lo para obter o tempo da internet.
Suprimentos
ARM Stamp programável em BASIC disponível aqui
Etapa 1: Conecte a unidade digital e a unidade de segmento para display multiplexado
Comecei com um relógio digital barato de grande número, disponível no mercado. Primeiro removi o chip do relógio existente. Em seguida, investigou e localizou as conexões de 7 segmentos, que podem ser acionadas diretamente pelo microprocessador. Em seguida, encontrei os drivers de 4 dígitos que eram transistores que o microprocessador pode conduzir. E então conectei tudo isso.
Etapa 2: Teste as conexões
Como experiência, escrevi um programa BASIC para acionar todas as linhas, verificar a fiação e medir a corrente, que neste caso era de 82 mA
Em seguida, escreveria o código para escanear as linhas.
'unidade de exibição de relógio da web
IO (7) = 0 'PMOS drive - será PWM algum dia
para y = 45 a 48
IO (y) = unidade de 0 'dígito
para x = 8 a 15
IO (x) = unidade de segmento 0 '
espere (500)
IO (x) = 1
próximo x
DIR (y) = 0 'desabilita a unidade no segmento
próximo y
Etapa 3: Código para exibir a hora e PWM para controlar o brilho
Em seguida, adicionei um transistor PMOS na fonte de alimentação para todos os drivers de dígitos. Com isso impulsionado pela modulação de largura de pulso, controlará o brilho da tela. Aqui está o código BASIC para exibir a hora.
'unidade de exibição de relógio da web #include "LPC11U3x.bas"
'globals
hr = 0 'definir hora
min = 0 'definir minuto
# define SEG_0 e HBB00
# define SEG_1 e H1800
# define SEG_2 e HD300
# define SEG_3 e HD900
# define SEG_4 e H7800
# define SEG_5 e HE900
# define SEG_6 e HEB00
# define SEG_7 e H9800
# define SEG_8 e HFB00
# define SEG_9 e HF800
# define SEG_o e H4B00
#define SEG_f e 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 hr> 12 então hr - = 12
se hr = 0 então hr = 12
#fim se
hr10 = hr / 10
hr1 = hr MOD 10
min10 = min / 10
min1 = min MOD 10
para i = 0 a 1
se hr10 então
IO (45) = 0
fim se
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr10)
GPIO_CLR (0) = DIGarray (hr10)
espera (DIG_WAIT)
INPUT (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)
espere (DIG_WAIT)
INPUT (46)
IO (47) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)
GPIO_CLR (0) = DIGarray (min10)
espere (DIG_WAIT)
INPUT (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)
GPIO_CLR (0) = DIGarray (min1)
espere (DIG_WAIT)
INPUT (48)
proximo eu
Endub
'usuário TIMER1 (32 bits) para interromper a cada minuto
INTERRUPT SUB TIMER1IRQ
T1_IR = 1 'Limpar interrupção
min + = 1
se min> 59 então
min = 0
hr + = 1
se hr> 23 então
hr = 0
fim se
fim se
ENDSUB
SUB ON_TIMER (max_cnt, dothis)
TIMER1_ISR = isto é + 1 'definir função de VIC - precisa do +1 para operação de polegar
SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'habilitar TIMER1
T1_PR = 0 'sem pré-escala - ajustará o valor para um tempo mais preciso
VICIntEnable OR = (1 << TIMER1_IRQn) 'Ativar interrupção
T1_MR0 = max_cnt-1 'configurar número de correspondência de ms
T1_MCR = 3 'Interromper e reiniciar em
MR0 T1_IR = 1 'limpar interrupção
T1_TC = 0 'limpar contador do temporizador
T1_TCR = 1 'TIMER1 Ativado
ENDSUB
# define MINUT_PCLK 2880000000 '60 segundos a 48 MHz
a Principal:
hr = 9
min = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM algum dia - precisa mudar para P0_22 ??
enquanto 1
display_time (0, hr, min)
ciclo
Etapa 4: Faça uma conexão com a Internet
Use um ESP8266 para uma conexão sem fio. Depois de vasculhar a web por um tempo, a melhor solução foi o nodemcu versão 0.9.6 e um esp8266_flasher mais antigo funcionou melhor.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Em seguida, uma página da web simples em PHP para servir tempo da Internet -
Servidor de tempo Coridium
<? php
$ timezone = htmlspecialchars ($ _ GET ["zona"]); if ($ timezone == "")
$ timezone = 'America / Los_Angeles';
$ tz_object = new DateTimeZone ($ timezone);
$ datetime = new DateTime ();
$ datetime-> setTimezone ($ tz_object);
echo "time is-", $ datetime-> format ('H: i: s');
echo "";
echo "data é-", $ datetime-> formato ('m / d / Y');
?>
Essa página da web é para que você possa solicitar
coridium.us/time.php - e você terá o fuso horário do Pacífico dos EUA
ou
coridium.us/time.php?zone=Europe/London
Nenhuma verificação de erro e provavelmente nunca será
E a Lua para ler isso -
wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…
sk = net.createConnection (net. TCP, 0)
sk: on ("receber", função (sck, c) imprimir (c) fim)
sk: conectar (80, "coridium.us")
sk: send ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConnection: keep-alive / r / nAccept: * / * / r / n / r / n")
E você volta no tempo como
hora é -09: 38: 49 data é -12 / 31/2018
Etapa 5: adicione o código BASIC para analisar o tempo na web
Este é um subconjunto do programa BASIC completo, esse programa completo pode ser visualizado no link na etapa final.
se strstr (build_gets, "time is-") = 0, então
hr = build_gets (8) - "0"
if build_gets (9) = ":" então
min = (build_gets (10) - "0") * 10
min + = build_gets (11) - "0"
outro
hr = hr * 10 + build_gets (9) - "0"
min = (build_gets (11) - "0") * 10
min + = build_gets (12) - "0"
fim se
fim se
Etapa 6: adicione um sensor de luz e um código para escurecer a tela
Um foto-transistor foi adicionado para detectar a luz ambiente na sala. Sem ele, a tela é brilhante o suficiente para acordar os mortos (eu) à noite.
A tensão analógica da saída do foto-transistor é lida e a modulação por largura de pulso define o brilho geral do visor.
Etapa 7: Aperte o botão do relógio e comece a usá-lo
A versão final exibe a hora e, por volta das 3 da manhã, vai para a web para ler a hora atual. Isso também lida com o horário de verão.
A motivação para este projeto foram as falhas de energia que vivenciamos aqui nas montanhas e a necessidade de zerar os relógios ou substituir as baterias para mantê-los vivos.
Esta foi uma visão geral rápida do projeto.
Todos os detalhes deste relógio conectado à web DIY.
Recomendado:
Como fazer relógio analógico e relógio digital com faixa LED usando o Arduino: 3 etapas
Como fazer relógio analógico e relógio digital com faixa de LED usando o Arduino: Hoje faremos um relógio analógico e relógio digital com faixa de LED. Relógio digital com Led Strip e módulo MAX7219 Dot com Arduino. Corrigirá a hora com o fuso horário local. O relógio analógico pode usar uma faixa de LED mais longa, então pode ser pendurado na parede para se tornar uma arte
Relógio de cabeceira conectado para crianças: 12 etapas
Relógio de cabeceira conectado para crianças: Seguindo estas instruções, você será capaz de construir um relógio que é ativado por movimento e mostrará a data, a hora e o evento relevante do dia. Ele mostrará um modo noturno quando for hora de dormir e quando as crianças acordarem, elas podem lembrar rapidamente o que
Relógio de animação SMART LED conectado à web com painel de controle baseado na web, servidor de hora sincronizado: 11 etapas (com imagens)
Relógio de animação SMART LED conectado à web com painel de controle baseado na web, servidor de tempo sincronizado: a história desse relógio remonta há muito tempo - mais de 30 anos. Meu pai foi o pioneiro dessa ideia quando eu tinha apenas 10 anos de idade, muito antes da revolução do LED - na época em que os LEDs tinham 1/1000 do brilho de seu atual brilho ofuscante. Um verdadeiro
Faça um robô conectado à Web (por cerca de US $ 500) (usando um Arduino e um netbook): 6 etapas (com imagens)
Faça um robô conectado à Web (por cerca de US $ 500) (usando um Arduino e um Netbook): Este instrutivo mostrará como construir seu próprio robô conectado à Web (usando um micro-controlador Arduino e Asus eee pc). Por que você quer uma Web Robô conectado? Para brincar, é claro. Dirija seu robô do outro lado da sala ou através da contagem
Termostato conectado à Web barato: 12 etapas (com fotos)
Termostato barato conectado à Web: um dos primeiros produtos da Internet das Coisas que encontrou seu caminho em muitas residências é o termostato inteligente. Eles podem aprender quando você gostaria que sua casa esquentasse e qual a temperatura ambiente geralmente necessária. O legal é que eles também podem