Mundarija:

Internetga ulangan raqamli soat: 7 qadam
Internetga ulangan raqamli soat: 7 qadam

Video: Internetga ulangan raqamli soat: 7 qadam

Video: Internetga ulangan raqamli soat: 7 qadam
Video: Telefonizga kimdur #ulanganligini aniqlash va ulanganlarni qanday uchurish /КАК ОТКЛЮЧИТЬ СЛЕЖКА 2024, Iyul
Anonim
Internetga ulangan raqamli soat
Internetga ulangan raqamli soat

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

Ko'p tomonlama displey uchun raqamli disk va segment diskini ulang
Ko'p tomonlama 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

Ulanishlarni sinab ko'ring
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

Vaqtni ko'rsatish uchun kod va yorqinlikni boshqarish uchun PWM
Vaqtni ko'rsatish uchun kod va yorqinlikni boshqarish uchun PWM
Vaqtni ko'rsatish uchun kod va yorqinlikni boshqarish uchun PWM
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

Internetga ulanish yarating
Internetga ulanish yarating

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

Vaqtni Internetdan ajratish uchun BASIC kodini qo'shing
Vaqtni Internetdan 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

Displeyni xiralashtirish uchun yorug'lik sensori va kodni qo'shing
Displeyni xiralashtirish uchun yorug'lik sensori va kodni qo'shing
Displeyni xiralashtirish uchun yorug'lik sensori va kodni qo'shing
Displeyni xiralashtirish uchun yorug'lik sensori va kodni qo'shing
Displeyni xiralashtirish uchun yorug'lik sensori va kodni qo'shing
Displeyni xiralashtirish uchun yorug'lik sensori va kodni 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

Soat tugmachasini bosing va undan foydalanishni boshlang
Soat tugmachasini 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.

Tavsiya: