Sisällysluettelo:

Verkkoon yhdistetty digitaalikello: 7 vaihetta
Verkkoon yhdistetty digitaalikello: 7 vaihetta

Video: Verkkoon yhdistetty digitaalikello: 7 vaihetta

Video: Verkkoon yhdistetty digitaalikello: 7 vaihetta
Video: Nokia Q4'23 -tuloslive to 25.1. klo 7:55 2024, Marraskuu
Anonim
Verkkoon yhdistetty digitaalikello
Verkkoon yhdistetty digitaalikello

Amazonista löytyi 10 dollarin digitaalinen kello. Nyt voit muokata sitä saadaksesi aikaa Internetistä.

Tarvikkeet

BASIC -ohjelmoitava ARM -leima on saatavana täältä

Vaihe 1: Yhdistä Digitaalinen asema ja Segmentti -asema Multiplex -näyttöä varten

Yhdistä numeroasema ja segmenttiasema multipleksoitua näyttöä varten
Yhdistä numeroasema ja segmenttiasema multipleksoitua näyttöä varten

Aloitin halvalla hyllyllä olevasta suuresta digitaalikellosta. Ensin poistin olemassa olevan kellosirun. Sitten tutkintiin ympärille ja löydettiin 7 segmentin liitännät, joita voidaan käyttää suoraan mikroprosessorilla. Sitten löydettiin 4 -numeroiset ohjaimet, jotka olivat transistoreita, joita mikroprosessori voi ajaa. Ja sitten johdotti ne.

Vaihe 2: Testaa liitännät

Testaa liitännät
Testaa liitännät

Kirjoitin kokeiluna BASIC -ohjelman ajamaan kaikkia linjoja, tarkistamaan johdot ja mittaamaan virran, joka tässä tapauksessa oli 82 mA

Seuraavaksi oli kirjoitettava koodi rivien skannaamiseksi.

'verkkokellon näyttöasema

IO (7) = 0 'PMOS -asema - tulee PWM jonain päivänä

y = 45-48

IO (y) = 0 'numeroinen asema

x = 8-15

IO (x) = 0 'segmentin taajuusmuuttaja

odota (500)

IO (x) = 1

seuraava x

DIR (y) = 0 'poista asema käytöstä

seuraava y

Vaihe 3: Koodoi näyttöaika ja PWM kirkkauden säätämiseen

Näyttöajan koodi ja PWM kirkkauden säätämiseen
Näyttöajan koodi ja PWM kirkkauden säätämiseen
Näyttöajan koodi ja PWM kirkkauden säätämiseen
Näyttöajan koodi ja PWM kirkkauden säätämiseen

Seuraavaksi lisäsin PMOS -transistorin virtalähteeseen kaikkiin numero -ohjaimiin. Pulssinleveysmodulaatiolla ohjataan näytön kirkkautta. Tässä on BASIC -koodi ajan näyttämiseksi.

'verkkokellon näyttöasema #sisältää "LPC11U3x.bas"

'globaalit

hr = 0 'määritä tunti

min = 0 'määritä minuutti

#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

alinäytön_aika (err, hr, min)

himmeä hr10, hr1, min10, min1, i

#ifdef US_TIME

jos hr> 12, niin hr -= 12

jos hr = 0, niin hr = 12

#loppu Jos

hr10 = h / 10

hr1 = h MOD 10

min10 = min / 10

min1 = min MOD 10

i = 0-1

jos hr10 sitten

IO (45) = 0

loppu Jos

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

GPIO_CLR (0) = DIGarray (h10)

odota (DIG_WAIT)

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

odota (DIG_WAIT)

TULO (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

odota (DIG_WAIT)

TULO (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

odota (DIG_WAIT)

TULO (48)

seuraavaksi minä

EndSub

'Käyttäjä TIMER1 (32 bittiä) keskeyttää joka minuutti

KESKEYTETTY ALIAJASTIN1IRQ

T1_IR = 1 'Poista keskeytys

min += 1

jos min> 59, niin

min = 0

h +1

jos h> 23, niin

h = 0

loppu Jos

loppu Jos

ENDSUB

ALA -AJASTIN (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VIC -toiminto - tarvitaan +1 peukalon toiminnalle

SYSCON_SYSAHBCLKCTRL TAI = (1 << 10) 'käyttöön TIMER1

T1_PR = 0 'ei esiasetusta - säätää arvoa tarkemman ajan

VICIntEnable OR = (1 << TIMER1_IRQn) 'Ota keskeytys käyttöön

T1_MR0 = max_cnt-1 'aseta ms-osumamäärä

T1_MCR = 3 'Keskeytä ja nollaa

MR0 T1_IR = 1 'selkeä keskeytys

T1_TC = 0 'nollaa ajastinlaskuri

T1_TCR = 1 'AJASTIN1 Ota käyttöön

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekuntia taajuudella 48 MHz

pää:

h = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM jonain päivänä - tarve siirtyä kohtaan P0_22 ??

kun taas 1

näyttöaika (0, h, min)

silmukka

Vaihe 4: Muodosta Internet -yhteys

Muodosta Internet -yhteys
Muodosta Internet -yhteys

Käytä ESP8266 WiFi -yhteyttä varten. Hetken selaamisen jälkeen paras ratkaisu oli nodemcu -versio 0.9.6 ja vanhempi esp8266_flasher toimi parhaiten.

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

Sitten yksinkertainen PHP-verkkosivusto, joka tarjoaa aikaa Internetistä-

Coridium aikapalvelin

<? php

$ aikavyöhyke = htmlspecialchars ($ _ GET ["zone"]); jos ($ timezone == "")

$ timezone = 'Amerikka/Los_Angeles';

$ tz_object = uusi DateTimeZone ($ aikavyöhyke);

$ datetime = uusi DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

kaiku "";

echo "päivämäärä on-", $ datetime-> -muoto ('m/d/Y');

?>

Tämä verkkosivu on niin, että voit pyytää

coridium.us/time.php - ja saat hyvin Yhdysvaltain Tyynenmeren aikavyöhykkeen

tai

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

Ei virheiden tarkistusta eikä todennäköisesti tule koskaan

Ja Lua lukea sen -

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

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

sk: on ("vastaanottaa", toiminto (sck, c) print (c) end)

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

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nYhteys: keep-hengissä / r / nHyväksy: */ *\ r / n / r / n")

Ja saat ajan takaisin

aika on-09:38:49 päivämäärä on -2018-31-12

Vaihe 5: Lisää BASIC -koodi Web -ajan jäsentämiseen

Lisää BASIC -koodi Web -ajan jäsentämiseen
Lisää BASIC -koodi Web -ajan jäsentämiseen

Tämä on osa BASIC -ohjelmaa, jonka koko ohjelman voi katsoa viimeisen vaiheen linkistä.

jos strstr (build_gets, "time is-") = 0 niin

hr = build_gets (8) - "0"

jos build_gets (9) = ":" niin

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

min += build_gets (11) - "0"

muu

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

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

min += build_gets (12) - "0"

loppu Jos

loppu Jos

Vaihe 6: Lisää valoanturi ja koodi näytön himmentämiseksi

Lisää valoanturi ja koodi näytön himmentämiseksi
Lisää valoanturi ja koodi näytön himmentämiseksi
Lisää valoanturi ja koodi näytön himmentämiseksi
Lisää valoanturi ja koodi näytön himmentämiseksi
Lisää valoanturi ja koodi näytön himmentämiseksi
Lisää valoanturi ja koodi näytön himmentämiseksi

Valotransistori lisättiin huoneen ympäristön valon havaitsemiseksi. Ilman sitä näyttö on riittävän kirkas herättämään kuolleet (minä) yöllä.

Valotransistorin lähdön analoginen jännite luetaan ja pulssinleveysmodulaatio asettaa näytön yleisen kirkkauden.

Vaihe 7: Napsauta kelloa ylös ja aloita sen käyttö

Napsauta kelloa ylös ja aloita sen käyttö
Napsauta kelloa ylös ja aloita sen käyttö

Lopullinen versio näyttää ajan, ja noin kello 3:00 se menee verkkoon lukemaan nykyistä aikaa. Tämä hoitaa myös päivänvaloa säästävän ajan.

Tämän projektin motiivina olivat täällä vuoristossa esiintyvät sähkökatkot ja tarve nollata kellot tai vaihtaa paristot, jotta ne pysyisivät hengissä.

Tämä on ollut nopea katsaus hankkeeseen.

Yksityiskohdat tästä DIY -verkkoyhteydellä varustetusta kellosta.

Suositeltava: