Índice:

Relógio digital conectado à web: 7 etapas
Relógio digital conectado à web: 7 etapas

Vídeo: Relógio digital conectado à web: 7 etapas

Vídeo: Relógio digital conectado à web: 7 etapas
Vídeo: Como configurar e conectar o relogio smartwatch no celular ( todos os modelos ) 2024, Novembro
Anonim
Relógio digital conectado à web
Relógio digital conectado à web

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

Conecte a unidade digital e a unidade de segmento para display multiplexado
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

Teste as conexões
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

Código para exibir o tempo e PWM para controlar o brilho
Código para exibir o tempo e PWM para controlar o brilho
Código para exibir o tempo e PWM para controlar o brilho
Código para exibir o tempo 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

Faça uma conexão com a Internet
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

Adicione o código BASIC para analisar o tempo da Web
Adicione o código BASIC para analisar o tempo da 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

Adicione um sensor de luz e um código para escurecer a tela
Adicione um sensor de luz e um código para escurecer a tela
Adicione um sensor de luz e um código para escurecer a tela
Adicione um sensor de luz e um código para escurecer a tela
Adicione um sensor de luz e um código para escurecer a tela
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

Abotoe o relógio e comece a usá-lo
Abotoe o 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: