Turinys:

Prie interneto prijungtas skaitmeninis laikrodis: 7 žingsniai
Prie interneto prijungtas skaitmeninis laikrodis: 7 žingsniai

Video: Prie interneto prijungtas skaitmeninis laikrodis: 7 žingsniai

Video: Prie interneto prijungtas skaitmeninis laikrodis: 7 žingsniai
Video: kaip tu gali užsidirbti papildomų pinigų 2024, Lapkritis
Anonim
Prie interneto prijungtas skaitmeninis laikrodis
Prie interneto prijungtas skaitmeninis laikrodis

„Amazon“rado 10 USD vertės skaitmeninį laikrodį. Dabar pritaikykite jį, kad gautumėte laiko iš interneto.

Prekės

ARM antspaudas, programuojamas BASIC, yra čia

1 veiksmas: sujunkite skaitmeninį diską ir segmentinį diską, kad būtų rodomas daugialypis ekranas

Sujunkite skaitmeninį diską ir segmentinį diską, kad būtų rodomas daugialypis ekranas
Sujunkite skaitmeninį diską ir segmentinį diską, kad būtų rodomas daugialypis ekranas

Pradėjau nuo pigaus skaitmeninio laikrodžio. Pirmiausia pašalinau esamą laikrodžio mikroschemą. Tada šiek tiek zondavo ir nustatė 7 segmentų jungtis, kurias gali tiesiogiai valdyti mikroprocesorius. Tada surado 4 skaitmenų tvarkykles, kurios buvo tranzistoriai, kuriuos gali valdyti mikroprocesorius. Ir tada sujungė juos.

2 veiksmas: patikrinkite jungtis

Išbandykite jungtis
Išbandykite jungtis

Kaip eksperimentą parašiau BASIC programą, kad galėčiau važiuoti visomis linijomis, patikrinti laidus ir išmatuoti srovę, kuri šiuo atveju buvo 82 mA

Kitas buvo parašyti kodą, kad būtų galima nuskaityti eilutes.

“žiniatinklio laikrodžio rodymo įrenginys

IO (7) = 0 'PMOS diskas - kada nors bus PWM

y = nuo 45 iki 48

IO (y) = 0 'skaitmenų pavara

x = nuo 8 iki 15

IO (x) = 0 'segmento pavara

palaukti (500)

IO (x) = 1

kitas x

DIR (y) = 0 'išjungti diską segmente

kitas y

3 veiksmas: rodymo laiko kodas ir PWM, kad valdytumėte ryškumą

Rodymo laiko kodas ir PWM ryškumui valdyti
Rodymo laiko kodas ir PWM ryškumui valdyti
Rodymo laiko kodas ir PWM ryškumui valdyti
Rodymo laiko kodas ir PWM ryškumui valdyti

Tada prie visų skaitmenų tvarkyklių maitinimo šaltinyje pridėjau PMOS tranzistorių. Su impulso pločio moduliacija valdys ekrano ryškumą. Čia yra BASIC kodas, rodantis laiką.

„žiniatinklio laikrodžio rodymo įrenginys #įtraukite„ LPC11U3x.bas “

'globaliai

hr = 0 'apibrėžti valandą

min = 0 'apibrėžti minutę

#define SEG_0 ir HBB00

#define SEG_1 ir H1800

#define SEG_2 ir HD300

#define SEG_3 ir HD900

#define SEG_4 & H7800

#define SEG_5 ir HE900

#define SEG_6 ir HEB00

#define SEG_7 ir 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 (klaida, val., min.)

silpnas hr10, hr1, min10, min1, t

#ifdef US_TIME

jei hr> 12, tada hr -= 12

jei hr = 0, tada hr = 12

#endif

hr10 = valanda / 10

hr1 = valanda MOD 10

min10 = min / 10

min1 = min MOD 10

jei i = nuo 0 iki 1

jei 10 val

IO (45) = 0

endif

GPIO_DIR (0) = (GPIO_DIR (0) ir & HFFFF00FF) + DIGarray (10 val.)

GPIO_CLR (0) = DIGarray (10 val.)

palaukti (DIG_WAIT)

ĮVADAS (45)

IO (46) = 0

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

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

palaukti (DIG_WAIT)

ĮVADAS (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

palaukti (DIG_WAIT)

ĮVADAS (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

palaukti (DIG_WAIT)

ĮVADAS (48)

kitas i

endubas

„vartotojas TIMER1 (32 bitų), kad pertrauktų kiekvieną minutę

PERJUNGTAS SUB TIMER1IRQ

T1_IR = 1 'Išvalyti pertrauką

min += 1

jei min> 59, tada

min = 0

val += 1

jei val> 23, tada

val = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'nustatoma VIC funkcija - reikia +1, kad veiktų nykštys

SYSCON_SYSAHBCLKCTRL ARBA = (1 << 10) 'įjungti TIMER1

T1_PR = 0 'be išankstinės skalės - koreguos vertę tikslesniam laikui

VICIntEnable OR = (1 << TIMER1_IRQn) 'Įgalinti pertrauką

T1_MR0 = max_cnt-1 'nustatykite ms atitikties skaičių

T1_MCR = 3 'Nutraukti ir iš naujo nustatyti

MR0 T1_IR = 1 'aiškus pertraukimas

T1_TC = 0 'aiškus laikmačio skaitiklis

T1_TCR = 1 'TIMER1 Įgalinti

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekundžių 48 MHz dažniu

pagrindinis:

val. = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM vieną dieną - reikia pereiti prie P0_22 ??

tuo tarpu 1

display_time (0, val., min.)

kilpa

4 veiksmas: sukurkite interneto ryšį

Sukurkite interneto ryšį
Sukurkite interneto ryšį

„WiFi“ryšiui naudokite ESP8266. Kurį laiką naršęs internete, geriausias sprendimas buvo „nodemcu“versija 0.9.6, o senesnė esp8266_flasher veikė geriausiai.

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

Tada paprastas PHP tinklalapis, skirtas laiko tiekimui iš interneto-

„Coridium“laiko serveris

<? php

$ timezone = htmlspecialchars ($ _ GET ["zona"]); jei ($ timezone == "")

$ timezone = 'Amerika/Los_Angeles';

$ tz_object = nauja DateTimeZone ($ timezone);

$ datetime = naujas DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "laikas yra-", $ datetime-> formatas ('H: i: s');

aidas "";

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

?>

Šis tinklalapis yra tam, kad galėtumėte paprašyti

coridium.us/time.php - ir jūs gausite JAV Ramiojo vandenyno laiko juostą

arba

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

Jokio klaidų tikrinimo ir greičiausiai niekada nebus

O Lua tai perskaityti -

wifi.sta.config („jūsų_SSID“, „jūsų_PASALABAS“)> wifi.sta.connect ()…

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

sk: on ("gauti", funkcija (sck, c) print (c) end)

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

sk: send ("GET /time.php HTTP/1.1 / r / nProstatas: coridium.us / r / nJungtis: išlaikyti gyvą / r / nPriimti: */ *\ r / n / r / n")

Ir atgauni laiką kaip

laikas yra-09:38:49 data yra 2018-12-12

5 veiksmas: pridėkite PAGRINDINĮ kodą, kad analizuotumėte laiką iš interneto

Pridėkite PAGRINDINĮ kodą, kad išnagrinėtumėte laiką iš interneto
Pridėkite PAGRINDINĮ kodą, kad išnagrinėtumėte laiką iš interneto

Tai yra visos BASIC programos pogrupis, kurį galima peržiūrėti paskutiniame žingsnyje esančioje nuorodoje.

jei strstr (build_gets, "laikas yra-") = 0 tada

hr = build_gets (8) - "0"

jei build_gets (9) = ":" tada

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

min += build_gets (11) - "0"

Kitas

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

min = (statyti_vidinius (11) - „0“)*10

min += build_gets (12) - "0"

endif

endif

6 veiksmas: pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną

Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną
Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną
Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną
Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną
Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną
Pridėkite šviesos jutiklį ir kodą, kad pritemdytumėte ekraną

Pridėtas foto tranzistorius, kad būtų galima pajusti aplinkos šviesą kambaryje. Be jo ekranas yra pakankamai ryškus, kad naktį pažadintų mirusįjį (mane).

Nuskaitoma analoginė foto tranzistoriaus išvesties įtampa, o impulsų pločio moduliacija nustato bendrą ekrano ryškumą.

7 veiksmas: paspauskite laikrodį ir pradėkite jį naudoti

Paspauskite laikrodį ir pradėkite jį naudoti
Paspauskite laikrodį ir pradėkite jį naudoti

Galutinėje versijoje rodomas laikas, o maždaug 3 val. Jis išeina į žiniatinklį ir perskaito dabartinį laiką. Tai taip pat sumažina dienos šviesos taupymo laiką.

Šio projekto motyvacija buvo elektros tiekimo sutrikimai, kuriuos patiriame čia, kalnuose, ir poreikis iš naujo nustatyti laikrodžius arba pakeisti baterijas, kad jie išliktų gyvi.

Tai buvo trumpa projekto apžvalga.

Išsami informacija apie šį „pasidaryk pats“žiniatinklio prijungtą laikrodį.

Rekomenduojamas: