INHOUDSOPGAWE:

Web gekoppelde digitale klok: 7 stappe
Web gekoppelde digitale klok: 7 stappe

Video: Web gekoppelde digitale klok: 7 stappe

Video: Web gekoppelde digitale klok: 7 stappe
Video: Как получить бесплатный трафик на свой сайт с помощью Quora [8 тайных подсказок] 319.000 просмотров! 2024, November
Anonim
Web gekoppelde digitale klok
Web gekoppelde digitale klok

Het 'n digitale horlosie van $ 10 by Amazon gevind. Nou om dit aan te pas om tyd van die internet te kry.

Voorrade

ARM Stamp programmeerbaar in BASIC hier beskikbaar

Stap 1: Koppel Digit Drive en Segment Drive vir veelvoudige skerm

Koppel Digit Drive en Segment Drive vir veelvoudige skerm
Koppel Digit Drive en Segment Drive vir veelvoudige skerm

Ek het begin met 'n goedkoop digitale horlosie van die rak af. Eers het ek die bestaande klokskyfie verwyder. Daarna 'n bietjie gesoek en die sewe segmentverbindings gevind, wat direk deur die mikroverwerker aangedryf kan word. Toe vind ons die vier -syfer -drywers, transistors wat die mikroverwerker kan dryf. En toe bedraad dié.

Stap 2: Toets die verbindings

Toets die verbindings
Toets die verbindings

As 'n eksperiment het ek 'n BASIC -program geskryf om al die lyne te bestuur, om die bedrading na te gaan en die stroom te meet, wat in hierdie geval 82 mA was

Die volgende was om die kode te skryf om die lyne te skandeer.

'webklok vertoonaandrywing

IO (7) = 0 'PMOS -aandrywer - sal eendag PWM wees

vir y = 45 tot 48

IO (y) = 0 'syfer aandrywing

vir x = 8 tot 15

IO (x) = 0 'segment -aandrywing

wag (500)

IO (x) = 1

volgende x

DIR (y) = 0 'skakel aandrywing op segment uit

volgende y

Stap 3: Kode vir vertoningstyd en PWM om die helderheid te beheer

Kode om tyd te vertoon en PWM om die helderheid te beheer
Kode om tyd te vertoon en PWM om die helderheid te beheer
Kode om tyd te vertoon en PWM om die helderheid te beheer
Kode om tyd te vertoon en PWM om die helderheid te beheer

Vervolgens het ek 'n PMOS -transistor in die kragtoevoer by al die syferbestuurders gevoeg. Deur die modulasie van die pulswydte aangedryf, sal die helderheid van die skerm beheer word. Hier is die BASIC -kode om die tyd te wys.

'Webklok -vertoningsaandrywing #sluit' LPC11U3x.bas 'in

'wêreldwyd

hr = 0 'definieer uur

min = 0 'definieer minuut

#definieer SEG_0 & HBB00

#definieer SEG_1 en H1800

#definieer SEG_2 en HD300

#definieer SEG_3 en HD900

#definieer SEG_4 & H7800

#definieer SEG_5 & HE900

#definieer SEG_6 & HEB00

#definieer SEG_7 & H9800

#definieer SEG_8 & HFB00

#definieer SEG_9 & HF800

#definieer SEG_o & H4B00

#definieer 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}

#definieer DIG_WAIT 1

#definieer US_TIME

sub display_time (err, hr, min)

dim hr10, hr1, min10, min1, ek

#ifdef US_TIME

as hr> 12 dan hr -= 12

as hr = 0 dan hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

vir i = 0 tot 1

as hr10 dan

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

wag (DIG_WAIT)

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

wag (DIG_WAIT)

INVOER (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

wag (DIG_WAIT)

INVOER (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

wag (DIG_WAIT)

INVOER (48)

volgende i

eindsub

'gebruiker TIMER1 (32 bis) om elke minuut te onderbreek

ONDERBREEK SUB TIMER1IRQ

T1_IR = 1 'Vee onderbreking uit

min += 1

as min> 59 dan

min = 0

uur += 1

as hr> 23 dan

uur = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dit is dit)

TIMER1_ISR = hierdie + 1 'stel funksie van VIC - benodig die +1 vir duim operasie

SYSCON_SYSAHBCLKCTRL OF = (1 << 10) 'aktiveer TIMER1

T1_PR = 0 'geen voorskaal nie - sal die waarde vir meer akkurate tyd aanpas

VICIntEnable OF = (1 << TIMER1_IRQn) 'Aktiveer onderbreking

T1_MR0 = max_cnt-1 'stel wedstrydgetal ms op

T1_MCR = 3 'Onderbreek en herstel aan

MR0 T1_IR = 1 'duidelike onderbreking

T1_TC = 0 'tydteller

T1_TCR = 1 'TIMER1 Aktiveer

ENDSUB

#definieer MINUT_PCLK 2880000000 '60 sekondes by 48 MHz

hoof:

uur = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM eendag - moet u na P0_22 skuif ??

terwyl 1

vertoningstyd (0, uur, min)

lus

Stap 4: Maak 'n internetverbinding

Maak 'n internetverbinding
Maak 'n internetverbinding

Gebruik 'n ESP8266 vir 'n WiFi -verbinding. Na 'n rukkie op die internet gesoek het, was die beste oplossing nodemcu weergawe 0.9.6 en 'n ouer esp8266_flasher het die beste gewerk.

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

Dan 'n eenvoudige PHP-webblad om tyd van die internet af te bedien-

Coridium Time Server

<? php

$ tydsone = htmlspecialchars ($ _ GET ["zone"]); as ($ tydsone == "")

$ timezone = 'America/Los_Angeles';

$ tz_object = nuwe DateTimeZone ($ tydsone);

$ datetime = nuwe DateTime ();

$ datetime-> setTimezone ($ tz_object);

eggo "tyd is-", $ datetime-> formaat ('H: i: s');

eggo "";

eggo "datum is-", $ datetime-> formaat ('m/d/Y');

?>

Die webblad is sodat u dit kan aanvra

coridium.us/time.php - en u kry die tydsone van die Amerikaanse Stille Oseaan

of

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

Daar is geen foutkontrole nie en sal waarskynlik nooit wees nie

En die Lua om dit te lees -

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

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

sk: on ("ontvang", funksie (sck, c) druk (c) einde)

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

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

En jy kry tyd terug as

tyd is-09: 38: 49datum is-2018-31-12

Stap 5: Voeg BASIC -kode by om die tyd vanaf die internet te ontleed

Voeg BASIC -kode by om die tyd vanaf die internet te ontleed
Voeg BASIC -kode by om die tyd vanaf die internet te ontleed

Dit is 'n deelversameling van die volledige BASIC -program, en die volledige program kan op die skakel in die laaste stap gesien word.

as strstr (build_gets, "time is-") = 0 dan

hr = build_gets (8) - "0"

as build_gets (9) = ":" dan

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

min += build_gets (11) - "0"

anders

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

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

min += build_gets (12) - "0"

endif

endif

Stap 6: Voeg 'n ligsensor en kode by om die skerm te verdof

Voeg 'n ligsensor en kode by om die skerm te verdof
Voeg 'n ligsensor en kode by om die skerm te verdof
Voeg 'n ligsensor en kode by om die skerm te verdof
Voeg 'n ligsensor en kode by om die skerm te verdof
Voeg 'n ligsensor en kode by om die skerm te verdof
Voeg 'n ligsensor en kode by om die skerm te verdof

'N Fototransistor is bygevoeg om die omringende lig in die kamer te voel. Daarsonder is die skerm helder genoeg om die dooies (ek) in die nag wakker te maak.

Die analoog spanning van die uitset van die fototransistor word gelees en die modulasie van die pulswydte bepaal die algehele helderheid van die skerm.

Stap 7: Maak die horlosie oop en begin dit gebruik

Maak die horlosie oop en begin dit gebruik
Maak die horlosie oop en begin dit gebruik

Die finale weergawe wys die tyd, en omstreeks 03:00 gaan dit op die internet om die huidige tyd te lees. Dit hanteer ook dagligbesparingstyd.

Die motivering vir hierdie projek was die kragonderbrekings wat ons hier in die berge ondervind, en die noodsaaklikheid om horlosies terug te stel of batterye te vervang om dit aan die lewe te hou.

Dit was 'n vinnige oorsig van die projek.

Volledige besonderhede van hierdie selfoon -gekoppelde horlosie.

Aanbeveel: