Mundarija:
- Ta'minotlar
- 1 -qadam: Ko'p diskli displey uchun raqamli disk va segment diskini ulang
- 2 -qadam: ulanishlarni sinab ko'ring
- 3 -qadam: Vaqtni ko'rsatish uchun kod va yorqinlikni boshqarish uchun PWM
- 4 -qadam: Internetga ulanish
- 5 -qadam: Internetdan vaqtni ajratish uchun BASIC kodini qo'shing
- 6 -qadam: Displeyni xiralashtirish uchun yorug'lik sensori va kod qo'shing
- 7 -qadam: soatni bosing va undan foydalanishni boshlang
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Amazonda 10 dollarlik raqamli soat topildi. Endi uni Internetdan vaqt olish uchun sozlash.
Ta'minotlar
ARM Stamp BASIC -da dasturlashtirilishi mumkin
1 -qadam: Ko'p diskli displey uchun raqamli disk va segment diskini ulang
Men juda arzon raqamli raqamli soatlardan boshladim. Avval men mavjud soat chipini olib tashladim. So'ngra, mikroprotsessor to'g'ridan -to'g'ri boshqariladigan 7 segmentli ulanishlarni qidirib topdi. Keyin mikroprotsessor boshqarishi mumkin bo'lgan 4 ta raqamli drayverlar topildi. Va keyin ularni simlarga ulashdi.
2 -qadam: ulanishlarni sinab ko'ring
Tajriba sifatida men barcha chiziqlarni o'tkazish, simlarni tekshirish va oqimni o'lchash uchun BASIC dasturini yozdim, bu holda u 82 mA edi.
Keyingi qatorlarni skanerlash uchun kod yozish edi.
Veb -soat displeyi
IO (7) = 0 'PMOS drayveri - bir kun PWM bo'ladi
y = 45 dan 48 gacha
IO (y) = 0 'raqamli haydovchi
x = 8 dan 15 gacha
IO (x) = 0 'segmentli disk
kuting (500)
IO (x) = 1
keyingi x
DIR (y) = 0 'segmentdagi diskni o'chirib qo'ying
keyingi y
3 -qadam: Vaqtni ko'rsatish uchun kod va yorqinlikni boshqarish uchun PWM
Keyin men barcha raqamli drayverlarga quvvat manbaiga PMOS tranzistorini qo'shdim. Buning yordamida puls kengligi modulyatsiyasi displeyning yorqinligini boshqaradi. Vaqtni ko'rsatish uchun BASIC kodi.
veb -soat displeyi #include "LPC11U3x.bas"
'global
hr = 0 'soatni belgilang
min = 0 'daqiqani belgilang
#SEG_0 va HBB00 ni aniqlang
#SEG_1 va H1800 ni aniqlang
#SEG_2 va HD300 ni aniqlang
#SEG_3 va HD900 ni aniqlang
#SEG_4 va H7800 ni aniqlang
#SEG_5 va HE900 ni aniqlang
#SEG_6 va HEB00 ni aniqlang
#SEG_7 va H9800 ni aniqlang
#SEG_8 va HFB00 ni aniqlang
#SEG_9 va HF800 ni aniqlang
#SEG_o va H4B00 ni aniqlang
#SEG_f & HE200 ni aniqlang
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}
#DIG_WAIT ni aniqlang 1
#US_TIME ni aniqlang
sub display_time (xato, soat, min)
xira soat 10, soat 1, min10, min1, i
#ifdef US_TIME
agar soat> 12 bo'lsa, soat -= 12
agar hr = 0 bo'lsa, hr = 12
#endif
soat 10 = soat / 10
soat 1 = soat MOD 10
min10 = min / 10
min1 = min MOD 10
i = 0 dan 1 gacha
agar soat 10 bo'lsa
IO (45) = 0
endif
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (soat 10)
GPIO_CLR (0) = DIGarray (soat 10)
kuting (DIG_WAIT)
Kirish (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)
kuting (DIG_WAIT)
Kirish (46)
IO (47) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)
GPIO_CLR (0) = DIGarray (min10)
kuting (DIG_WAIT)
Kirish (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)
GPIO_CLR (0) = DIGarray (min1)
kuting (DIG_WAIT)
Kirish (48)
keyingi i
oxiri
'foydalanuvchi TIMER1 (32 bit) har bir daqiqani uzib qo'yadi
QO'ShIMChA TUB TIMER1IRQ
T1_IR = 1 'To'xtatish
min += 1
agar min> 59 bo'lsa
min = 0
soat += 1
agar soat> 23 bo'lsa
soat = 0
endif
endif
ENDSUB
ON_TIMER OBUNASI (max_cnt, dothis)
TIMER1_ISR = dothis + 1 'VIC funktsiyasi - bosh barmog'i uchun +1 kerak
SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'TIMER1 ni yoqish
T1_PR = 0 'oldindan o'lchov yo'q - bu qiymatni aniqroq vaqtga moslashtiradi
VICIntEnable OR = (1 << TIMER1_IRQn) 'uzilishni yoqish
T1_MR0 = max_cnt-1 'mos keladigan ms sonini o'rnatdi
T1_MCR = 3 'To'xtatish va qayta o'rnatish
MR0 T1_IR = 1 'aniq uzilish
T1_TC = 0 'aniq taymer hisoblagichi
T1_TCR = 1 'TIMER1 yoqish
ENDSUB
#define MINUT_PCLK 2880000000 '48 MGts da 60 soniya
asosiy:
soat = 9
min = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM bir kun - P0_22 ga o'tish kerakmi?
esa 1
display_time (0, soat, min)
pastadir
4 -qadam: Internetga ulanish
Wi -Fi ulanishi uchun ESP8266 -dan foydalaning. Bir muncha vaqt Internetni aylanib chiqqandan so'ng, eng yaxshi echim nodemcu 0.9.6 versiyasi va eski esp8266_flasher eng yaxshi ishlagan.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Keyin Internetdan vaqt ajratish uchun oddiy PHP veb-sahifasi-
Coridium vaqt serveri
<? php
$ timezone = htmlspecialchars ($ _ GET ["zone"]); agar ($ vaqt mintaqasi == "")
$ timezone = 'Amerika/Los_Angeles';
$ tz_object = yangi DateTimeZone ($ vaqt mintaqasi);
$ datetime = yangi DateTime ();
$ datetime-> setTimezone ($ tz_object);
echo "vaqt-", $ datetime-> format ('H: i: s');
aks sado "";
echo "sana-", $ datetime-> format ('m/d/Y');
?>
Bu veb -sahifa, shuning uchun siz talab qilishingiz mumkin
coridium.us/time.php - va siz AQShning Tinch okeani vaqt mintaqasini yaxshi bilasiz
yoki
coridium.us/time.php?zone=Evropa/London
Hech qanday xato tekshirilmaydi va ehtimol hech qachon bo'lmaydi
Va buni o'qish uchun Lua -
wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…
sk = net.createConnection (net. TCP, 0)
sk: on ("qabul qilish", funktsiya (sck, c) chop etish (c) oxiri)
sk: ulang (80, "coridium.us")
sk: yuborish ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nUlanish: jonli saqlang / r / nQabul qiling: */ *\ r / n / r / n")
Va siz vaqtni xuddi shunday qaytarasiz
Vaqt-09:38:49, sana-31.12.2018
5 -qadam: Internetdan vaqtni ajratish uchun BASIC kodini qo'shing
Bu to'liq BASIC dasturining bir qismi, to'liq dasturni oxirgi bosqichdagi havolada ko'rish mumkin.
agar strstr (build_gets, "time is-") = 0 bo'lsa
hr = build_gets (8) - "0"
agar build_gets (9) = ":" bo'lsa
min = (build_gets (10) - "0")*10
min += build_gets (11) - "0"
boshqa
soat = soat * 10 + qurilish_getlari (9) - "0"
min = (build_gets (11) - "0")*10
min += build_gets (12) - "0"
endif
endif
6 -qadam: Displeyni xiralashtirish uchun yorug'lik sensori va kod qo'shing
Xonadagi muhit nurini sezish uchun foto -tranzistor qo'shildi. U holda displey tunda o'liklarni (men) uyg'otadigan darajada yorqin.
Fotosurat tranzistorining analog kuchlanishi o'qiladi va puls kengligi modulyatsiyasi displeyning umumiy yorqinligini o'rnatadi.
7 -qadam: soatni bosing va undan foydalanishni boshlang
Yakuniy versiyada vaqt ko'rsatiladi va soat 3 da u hozirgi vaqtni o'qish uchun Internetga chiqadi. Bu, shuningdek, kunduzgi yorug'lik vaqtini ham boshqaradi.
Bu loyihaga turtki, biz tog'larda elektr quvvati uzilishi va tirik qolish uchun soatlarni qayta o'rnatish yoki batareyalarni almashtirish zarurati edi.
Bu loyihaning tezkor ko'rinishi edi.
Ushbu DIY Internetga ulangan soat haqida to'liq ma'lumot.