Kazalo:

Spletno povezana digitalna ura: 7 korakov
Spletno povezana digitalna ura: 7 korakov

Video: Spletno povezana digitalna ura: 7 korakov

Video: Spletno povezana digitalna ura: 7 korakov
Video: Дэниел Шмахтенбергер: Уничтожат ли нас технологии? 2024, Julij
Anonim
Spletna digitalna ura
Spletna digitalna ura

Na Amazonu sem našel digitalno uro za 10 USD. Zdaj ga prilagodite, da boste imeli čas iz interneta.

Zaloge

ARM Stamp, ki ga je mogoče programirati v BASIC -u, je na voljo tukaj

1. korak: Povežite številski pogon in segmentni pogon za večstranski prikaz

Povežite številski pogon in segmentni pogon za multipleksni prikaz
Povežite številski pogon in segmentni pogon za multipleksni prikaz

Začel sem z poceni digitalno uro z veliko številko. Najprej sem odstranil obstoječi čip ure. Nato so naredili nekaj sondanja in našli 7 segmentne povezave, ki jih lahko poganja neposredno mikroprocesor. Nato so našli 4 -mestne gonilnike, ki so bili tranzistorji, ki jih mikroprocesor lahko poganja. In potem jih priklopil.

2. korak: Preizkusite povezave

Preizkusite povezave
Preizkusite povezave

Kot poskus sem napisal BASIC program za vožnjo po vseh vodih, za preverjanje ožičenja in merjenje toka, ki je bil v tem primeru 82 mA

Nato je bilo treba napisati kodo za skeniranje vrstic.

'pogon za prikaz spletne ure

IO (7) = 0 'PMOS pogon - nekoč bo PWM

za y = 45 do 48

IO (y) = 0 'mestni pogon

za x = 8 do 15

IO (x) = 0 'segmentni pogon

počakaj (500)

IO (x) = 1

naslednji x

DIR (y) = 0 'onemogoči pogon na segmentu

naslednji y

Korak 3: Koda za prikaz časa in PWM za nadzor svetlosti

Koda za prikaz časa in PWM za nadzor svetlosti
Koda za prikaz časa in PWM za nadzor svetlosti
Koda za prikaz časa in PWM za nadzor svetlosti
Koda za prikaz časa in PWM za nadzor svetlosti

Nato sem vsem napajalnikom za števce dodal tranzistor PMOS. S tem, ki ga poganja širina impulza, bo modulacija nadzorovala svetlost zaslona. Tukaj je BASIC koda za prikaz časa.

'pogon za prikaz spletne ure #include "LPC11U3x.bas"

'global

hr = 0 'določi uro

min = 0 'določi minuto

#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

#define US_TIME

sub display_time (napaka, h, min)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

če je hr> 12, potem je hr -= 12

če je hr = 0, potem je hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

za i = 0 do 1

če hr10 potem

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

počakaj (DIG_WAIT)

VHOD (45)

IO (46) = 0

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

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

počakaj (DIG_WAIT)

VHOD (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

počakaj (DIG_WAIT)

VHOD (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

počakaj (DIG_WAIT)

VHOD (48)

naslednji i

konca

'TIMER1 (32 -bitni), da prekine vsako minuto

PREKINI SUB TIMER1IRQ

T1_IR = 1 'Počisti prekinitev

min +1

če je min> 59, potem

min = 0

hr += 1

če je hr> 23, potem

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, to)

TIMER1_ISR = Ali je to nastavljena funkcija VIC + 1 ' - potrebujete +1 za operacijo Thumb

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'omogoči TIMER1

T1_PR = 0 'brez predrazmerja - bo vrednost prilagodila za natančnejši čas

VICIntEnable OR = (1 << TIMER1_IRQn) 'Omogoči prekinitev

T1_MR0 = max_cnt-1 'nastavljeno število ujemanja ms

T1_MCR = 3 'Prekinitev in ponastavitev vklopljena

MR0 T1_IR = 1 'čisti prekinitev

T1_TC = 0 'počisti števec časovnika

T1_TCR = 1 'TIMER1 Omogoči

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekund pri 48 MHz

glavni:

hr = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM nekega dne - premakniti se na P0_22 ??

medtem ko 1

display_time (0, h, min)

zanka

4. korak: vzpostavite internetno povezavo

Vzpostavite internetno povezavo
Vzpostavite internetno povezavo

Za povezavo WiFi uporabite ESP8266. Potem ko sem nekaj časa brskala po spletu, je bila najboljša rešitev nodemcu različice 0.9.6, starejši esp8266_flasher pa je deloval najbolje.

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

Nato preprosto spletno mesto PHP, ki služi času iz interneta-

Coridium Time Server

<? php

$ časovni pas = htmlspecialchars ($ _ GET ["cona"]); če ($ časovni pas == "")

$ timezone = 'America/Los_Angeles';

$ tz_object = nov DateTimeZone ($ časovni pas);

$ datetime = nov DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

odmev "";

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

?>

Ta spletna stran je takšna, da lahko zahtevate

coridium.us/time.php - in dobro boste dobili pacifiški časovni pas ZDA

ali

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

Brez preverjanja napak in najverjetneje nikoli ne bo

In Lua naj to prebere -

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

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

sk: on ("sprejemi", funkcija (sck, c) print (c) konec))

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

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / n Povezava: keep-living / r / nSprejmi: */ *\ r / n / r / n")

In vrnete čas nazaj kot

ura je-09: 38: 49 datum je -2018-31-12

5. korak: Dodajte OSNOVNO kodo za razčlenitev časa iz spleta

Dodajte OSNOVNO kodo za razčlenitev časa iz spleta
Dodajte OSNOVNO kodo za razčlenitev časa iz spleta

To je podmnožica celotnega programa BASIC, ki si ga lahko ogledate na povezavi v zadnjem koraku.

če je strstr (build_gets, "čas je-") = 0, potem

hr = build_gets (8) - "0"

če build_gets (9) = ":" potem

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

min += build_gets (11) - "0"

drugače

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

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

min += build_gets (12) - "0"

endif

endif

6. korak: Dodajte svetlobni senzor in kodo za zatemnitev zaslona

Zatemnite zaslon in dodajte svetlobni senzor in kodo
Zatemnite zaslon in dodajte svetlobni senzor in kodo
Zatemnite zaslon in dodajte svetlobni senzor in kodo
Zatemnite zaslon in dodajte svetlobni senzor in kodo
Zatemnite zaslon in dodajte svetlobni senzor in kodo
Zatemnite zaslon in dodajte svetlobni senzor in kodo

Dodan je bil foto tranzistor za zaznavanje zunanje svetlobe v sobi. Brez njega je zaslon dovolj svetel, da ponoči zbudi mrtve (mene).

Analogna napetost izhoda fototranzistorja se prebere in modulacija širine impulza nastavi celotno svetlost zaslona.

7. korak: Ura pritisnite in začnite uporabljati

Zaprite uro in jo začnite uporabljati
Zaprite uro in jo začnite uporabljati

Končna različica prikazuje čas, okoli 3. ure pa gre v splet, da prebere trenutni čas. To omogoča tudi časovni prihranek dnevne svetlobe.

Motivacija za ta projekt je bila izpad električne energije, ki ga doživimo tukaj v gorah, in potreba po ponastavitvi ur ali zamenjavi baterij, da ostanejo pri življenju.

To je bil hiter pregled projekta.

Vse podrobnosti o tej DIY spletni povezavi ure.

Priporočena: