Sisukord:
- Tarvikud
- Samm: ühendage mitmekordse ekraani jaoks digitaalne ajam ja segmendi ajam
- 2. samm: katsetage ühendusi
- 3. samm: koodi kuvamise aeg ja heleduse juhtimiseks PWM
- Samm: looge Interneti -ühendus
- Samm: lisage veebist saadava aja parsimiseks BASIC Code
- Samm: lisage ekraani hämardamiseks valgusandur ja kood
- Samm: lülitage kell üles ja alustage selle kasutamist
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
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
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
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
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
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
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
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õ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.