Sisukord:

Veebiga ühendatud digitaalne kell: 7 sammu
Veebiga ühendatud digitaalne kell: 7 sammu

Video: Veebiga ühendatud digitaalne kell: 7 sammu

Video: Veebiga ühendatud digitaalne kell: 7 sammu
Video: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Juuli
Anonim
Veebiga ühendatud digitaalne kell
Veebiga ühendatud digitaalne kell

Leidsin Amazonist 10 -dollarise digitaalse kella. Nüüd kohandage seda, et Internetist aega saada.

Tarvikud

BASIC programmeeritav ARM -tempel on saadaval siin

Samm: ühendage mitmekordse ekraani jaoks digitaalne ajam ja segmendi ajam

Ühendage mitmekordse ekraani jaoks digitaalne ajam ja segmendi ajam
Ühendage mitmekordse ekraani jaoks digitaalne ajam ja segmendi ajam

Alustasin odava riiulist suure numbriga digitaalkellaga. Kõigepealt eemaldasin olemasoleva kellakiibi. Seejärel uuris ja leidis 7 segmendi ühendused, mida saab otse mikroprotsessori abil juhtida. Seejärel leiti 4 -kohalised draiverid, mis olid transistorid, mida mikroprotsessor saab juhtida. Ja siis ühendas need kokku.

2. samm: katsetage ühendusi

Testige ühendusi
Testige ühendusi

Katseks kirjutasin BASIC programmi kõigi liinide juhtimiseks, juhtmestiku kontrollimiseks ja voolu mõõtmiseks, mis antud juhul oli 82 mA

Järgmisena tuli ridade skannimiseks kood kirjutada.

'veebikella kuvamise draiv

IO (7) = 0 'PMOS -draiv - saab kunagi PWM -i

y = 45 kuni 48

IO (y) = 0 'kohaline ajam

x = 8 kuni 15

IO (x) = 0 'segmendi ajam

oota (500)

IO (x) = 1

järgmine x

DIR (y) = 0 'keelab segmendi ajami

järgmine y

3. samm: koodi kuvamise aeg ja heleduse juhtimiseks PWM

Kood kuvamisajale ja heleduse juhtimiseks PWM
Kood kuvamisajale ja heleduse juhtimiseks PWM
Kood kuvamisajale ja heleduse juhtimiseks PWM
Kood kuvamisajale ja heleduse juhtimiseks PWM

Järgmisena lisasin kõikidele numbridraiveritele toiteallikasse PMOS -transistori. Sellega, mida juhib impulsi laiuse modulatsioon, juhitakse ekraani heledust. Siin on kella kuvamiseks BASIC -kood.

'veebikella kuvaseade #sisaldab "LPC11U3x.bas"

'globaalselt

hr = 0 'määra tund

min = 0 'minuti määratlemine

#define SEG_0 & HBB00

#define SEG_1 & H1800

#define SEG_2 & HD300

#define SEG_3 ja HD900

#define SEG_4 & H7800

#define SEG_5 ja HE900

#define SEG_6 ja 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}

#defineeri DIG_WAIT 1

#define US_TIME

alamkuva_aeg (viga, tund, min)

hämar hr10, hr1, min10, min1, st

#ifdef US_TIME

kui hr> 12, siis hr -= 12

kui hr = 0, siis hr = 12

#endif

hr10 = tund / 10

hr1 = tund MOD 10

min10 = min / 10

min1 = min MOD 10

i = 0 kuni 1

kui tund 10 siis

IO (45) = 0

endif

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (10. tund)

GPIO_CLR (0) = DIGarray (tund 10)

oota (DIG_WAIT)

SISEND (45)

IO (46) = 0

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

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

oota (DIG_WAIT)

SISEND (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

oota (DIG_WAIT)

SISEND (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

oota (DIG_WAIT)

SISEND (48)

järgmine i

endub

'kasutaja TIMER1 (32 bit) iga minuti katkestamiseks

KATKEMINE SUB TIMER1IRQ

T1_IR = 1 'Kustuta katkestus

min += 1

kui min> 59, siis

min = 0

tund += 1

kui tund> 23 siis

tund = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VIC funktsioon - vaja pöidla jaoks +1

SYSCON_SYSAHBCLKCTRL VÕI = (1 << 10) 'lubage TIMER1

T1_PR = 0 'ilma eelseadistusteta - reguleerib väärtust täpsemaks ajaks

VICIntEnable OR = (1 << TIMER1_IRQn) 'Luba katkestus

T1_MR0 = max_cnt-1 'seadistage vastete arv ms

T1_MCR = 3 'Katkesta ja lähtesta

MR0 T1_IR = 1 'selge katkestus

T1_TC = 0 'tühjendage taimeriloendur

T1_TCR = 1 'TIMER1 Luba

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekundit sagedusel 48 MHz

peamine:

tund = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM ühel päeval - kas peate liikuma P0_22 -le?

samas 1

display_time (0, h, min)

silmus

Samm: looge Interneti -ühendus

Looge Interneti -ühendus
Looge Interneti -ühendus

Kasutage WiFi -ühenduse jaoks ESP8266. Pärast mõnda aega veebis ringi tuhnimist oli parim lahendus nodemcu versioon 0.9.6 ja vanem esp8266_flasher töötas kõige paremini.

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

Siis lihtne PHP veebileht, et Internetist aega teenida-

Coridium aja server

<? php

$ timezone = htmlspecialchars ($ _ GET ["tsoon"]); kui ($ timezone == "")

$ timezone = 'Ameerika/Los_Angeles';

$ tz_object = uus DateTimeZone ($ ajavöönd);

$ datetime = uus DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "aeg on-", $ datetime-> formaat ('H: i: s');

kaja "";

kaja "kuupäev on-", $ datetime-> formaat ('m/d/Y');

?>

See veebileht on selleks, et saaksite taotleda

coridium.us/time.php - ja saate USA Vaikse ookeani ajavööndi

või

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

Vigade kontrollimist ei toimu ja tõenäoliselt ka mitte kunagi

Ja Lua seda lugeda -

wifi.sta.config ("teie_SID", "teie_PALASANA")> wifi.sta.connect ()…

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

sk: on ("vastuvõtt", funktsioon (sck, c) print (c) lõpp)

sk: ühenda (80, "coridium.us")

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nühendus: hoida elus / r / nAktsepteeri: */ *\ r / n / r / n")

Ja saate aja tagasi nagu

aeg on -09: 38: 49kuupäev on -2018-31-12

Samm: lisage veebist saadava aja parsimiseks BASIC Code

Lisage veebist saadava aja parsimiseks BASIC Code
Lisage veebist saadava aja parsimiseks BASIC Code

See on täieliku BASIC -programmi alamhulk, mida saab vaadata viimases etapis oleva lingi kaudu.

kui strstr (build_gets, "time is-") = 0 siis

hr = build_gets (8) - "0"

kui build_gets (9) = ":" siis

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

min += build_gets (11) - "0"

muidu

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

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

min += build_gets (12) - "0"

endif

endif

Samm: lisage ekraani hämardamiseks valgusandur ja kood

Lisage ekraani hämardamiseks valgusandur ja kood
Lisage ekraani hämardamiseks valgusandur ja kood
Lisage ekraani hämardamiseks valgusandur ja kood
Lisage ekraani hämardamiseks valgusandur ja kood
Lisage ekraani hämardamiseks valgusandur ja kood
Lisage ekraani hämardamiseks valgusandur ja kood

Ruumi ümbritseva valguse tajumiseks lisati fototransistor. Ilma selleta on ekraan piisavalt ere, et äratada surnud (mina) öösel.

Loetakse fototransistori väljundi analoogpinge ja impulsi laiuse modulatsioon määrab ekraani üldise heleduse.

Samm: lülitage kell üles ja alustage selle kasutamist

Lülitage kell üles ja hakake seda kasutama
Lülitage kell üles ja hakake seda kasutama

Lõplik versioon kuvab kellaaja ja umbes kell 3:00 läheb see veebis praegust aega lugema. Sellega saab hakkama ka päevavalgusega.

Selle projekti ajendiks olid elektrikatkestused, mida me siin mägedes kogeme, ja vajadus kellad lähtestada või patareid välja vahetada, et neid elus hoida.

See on olnud kiire ülevaade projektist.

Selle DIY veebiga ühendatud kella täielikud üksikasjad.

Soovitan: