Obsah:

Webové digitální hodiny: 7 kroků
Webové digitální hodiny: 7 kroků

Video: Webové digitální hodiny: 7 kroků

Video: Webové digitální hodiny: 7 kroků
Video: Jak nastavit digitální časový spínač - spínací hodiny | SURPAN.CZ 2024, Červenec
Anonim
Webové digitální hodiny
Webové digitální hodiny

Na Amazonu byly nalezeny digitální hodiny za 10 $. Nyní jej přizpůsobte, abyste získali čas z internetu.

Zásoby

ARM Stamp programovatelný v BASICu k dispozici zde

Krok 1: Připojte digitální jednotku a segmentovou jednotku pro multiplexní zobrazení

Připojte digitální jednotku a segmentovou jednotku pro multiplexní zobrazení
Připojte digitální jednotku a segmentovou jednotku pro multiplexní zobrazení

Začal jsem levnými digitálními hodinami z regálu. Nejprve jsem odstranil stávající hodinový čip. Poté provedli nějaké průzkumy a lokalizovali 7 segmentová připojení, která mohou být řízena přímo mikroprocesorem. Poté byly nalezeny 4místné ovladače, což byly tranzistory, které může mikroprocesor řídit. A pak je zapojil.

Krok 2: Otestujte připojení

Otestujte připojení
Otestujte připojení

Jako experiment jsem napsal ZÁKLADNÍ program pro řízení všech vedení, kontrolu zapojení a měření proudu, který v tomto případě činil 82 mA

Další bylo napsat kód pro skenování řádků.

'zobrazovací jednotka webových hodin

IO (7) = 0 'pohon PMOS - jednou bude PWM

pro y = 45 až 48

IO (y) = 0 'číslicová jednotka

pro x = 8 až 15

IO (x) = 0 'segmentový pohon

počkej (500)

IO (x) = 1

další x

DIR (y) = 0 'deaktivuje pohon na segmentu

další y

Krok 3: Kód pro zobrazení času a PWM pro ovládání jasu

Kód pro zobrazení času a PWM pro ovládání jasu
Kód pro zobrazení času a PWM pro ovládání jasu
Kód pro zobrazení času a PWM pro ovládání jasu
Kód pro zobrazení času a PWM pro ovládání jasu

Dále jsem přidal tranzistor PMOS do napájecího zdroje ke všem digitálním ovladačům. Díky tomu bude pulsně šířková modulace ovládat jas displeje. Zde je ZÁKLADNÍ kód pro zobrazení času.

'zobrazovací jednotka webových hodin #zahrnout "LPC11U3x.bas"

'globálové

hr = 0 'definuje hodinu

min = 0 'definuje minutu

#define SEG_0 & HBB00

#define SEG_1 & H1800

#define SEG_2 & HD300

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

#definovat US_TIME

dílčí čas zobrazení (err, hr, min)

stmívání hr10, hr1, min10, min1, i

#ifdef US_TIME

pokud hr> 12, pak hr -= 12

pokud hr = 0, pak hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

pro i = 0 až 1

když hr10 tak

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

počkat (DIG_WAIT)

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

počkat (DIG_WAIT)

VSTUP (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

počkat (DIG_WAIT)

VSTUP (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

počkat (DIG_WAIT)

VSTUP (48)

příště já

endub

'uživatel TIMER1 (32 bitů) k přerušení každé minuty

PŘERUŠIT SUB TIMER1IRQ

T1_IR = 1 'Vymazat přerušení

min += 1

pokud min> 59, pak

min = 0

hr += 1

pokud hr> 23 pak

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'set function of VIC - need the +1 for Thumb operation

SYSCON_SYSAHBCLKCTRL NEBO ((1 << 10) 'povolit TIMER1

T1_PR = 0 'no prescale - upraví hodnotu pro přesnější čas

VICIntEnable NEBO ((1 << TIMER1_IRQn) 'Povolit přerušení

T1_MR0 = max_cnt-1 'nastavuje počet shod ms

T1_MCR = 3 'Přerušení a reset zapnutý

MR0 T1_IR = 1 'jasné přerušení

T1_TC = 0 'vymazat počítadlo časovače

T1_TCR = 1 'TIMER1 povoleno

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekund při 48 MHz

hlavní:

hod = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM nějaký den - je třeba přejít na P0_22 ??

zatímco 1

display_time (0, hod, min)

smyčka

Krok 4: Vytvořte připojení k internetu

Vytvořte připojení k internetu
Vytvořte připojení k internetu

Pro připojení WiFi použijte ESP8266. Poté, co chvíli pobíhal po webu, bylo nejlepším řešením nodemcu verze 0.9.6 a nejlépe fungoval starší esp8266_flasher.

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

Pak jednoduchá webová stránka PHP, která slouží času z internetu-

Časový server Coridium

<? php

$ timezone = htmlspecialchars ($ _ GET ["zóna"]); if ($ timezone == "")

$ timezone = 'Amerika/Los_Angeles';

$ tz_object = nové DateTimeZone ($ časové pásmo);

$ datetime = new DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

echo "";

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

?>

Tato webová stránka je, takže můžete požádat

coridium.us/time.php - a dobře získáte časové pásmo USA v Pacifiku

nebo

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

Žádná kontrola chyb a pravděpodobně nikdy nebude

A Lua, aby si to přečetl -

wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…

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

sk: on ("příjem", funkce (sck, c) tisk (c) konec)

sk: connect (80, „coridium.us“)

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nConnection: keep-live / r / nAccept: */ *\ r / n / r / n")

A vrátíte čas jako

čas je-09: 38: 49 datum je-2018-31-12

Krok 5: Přidejte ZÁKLADNÍ kód k analýze času z webu

Přidejte ZÁKLADNÍ kód k analýze času z webu
Přidejte ZÁKLADNÍ kód k analýze času z webu

Toto je podmnožina úplného ZÁKLADNÍHO programu, který lze v posledním kroku zobrazit na odkazu.

if strstr (build_gets, "time is-") = 0 then

hr = build_gets (8) - "0"

if build_gets (9) = ":" then

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

min += build_gets (11) - "0"

jiný

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

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

min += build_gets (12) - "0"

endif

endif

Krok 6: Přidejte světelný senzor a kód pro ztlumení displeje

Přidejte světelný senzor a kód pro ztlumení displeje
Přidejte světelný senzor a kód pro ztlumení displeje
Přidejte světelný senzor a kód pro ztlumení displeje
Přidejte světelný senzor a kód pro ztlumení displeje
Přidejte světelný senzor a kód pro ztlumení displeje
Přidejte světelný senzor a kód pro ztlumení displeje

Byl přidán fotografický tranzistor pro snímání okolního světla v místnosti. Bez něj je displej dostatečně jasný na to, aby v noci probudil mrtvé (mě).

Je načteno analogové napětí na výstupu fototranzistoru a modulace šířky pulsu nastavuje celkový jas displeje.

Krok 7: Vypněte hodiny a začněte je používat

Zapněte hodiny a začněte je používat
Zapněte hodiny a začněte je používat

Konečná verze zobrazuje čas a přibližně ve 3 hodiny ráno vychází na web a čte aktuální čas. To také zvládá úsporu času.

Motivací pro tento projekt byly výpadky proudu, které zde v horách zažíváme, a potřeba resetovat hodiny nebo vyměnit baterie, aby byly naživu.

Toto byl rychlý přehled projektu.

Úplné podrobnosti o těchto DIY web připojených hodinách.

Doporučuje: