Mündəricat:

Vebə Bağlı Rəqəmsal Saat: 7 addım
Vebə Bağlı Rəqəmsal Saat: 7 addım

Video: Vebə Bağlı Rəqəmsal Saat: 7 addım

Video: Vebə Bağlı Rəqəmsal Saat: 7 addım
Video: Hər hansı bir Böyük Bacarıq olmadan Onlayn HƏFTƏ başına $ 3000 qazanın! (Onlayn pul qazan)... 2024, Iyul
Anonim
Vebə Bağlı Rəqəmsal Saat
Vebə Bağlı Rəqəmsal Saat

Amazonda 10 dollarlıq rəqəmsal saat tapdı. İndi İnternetdən vaxt əldə etmək üçün bunu fərdiləşdirmək lazımdır.

Təchizat

BASIC -də proqramlaşdırıla bilən ARM Stamp burada mövcuddur

Addım 1: Rəqəm Sürücüsünü və Çoxlayıcı Ekran üçün Segment Sürücüsünü birləşdirin

Rəqəmsal Sürücü və Çoxlu Ekran üçün Segment Sürücüsünü birləşdirin
Rəqəmsal Sürücü və Çoxlu Ekran üçün Segment Sürücüsünü birləşdirin

Rəfdən çoxlu sayda rəqəmsal saatla başladım. Əvvəlcə mövcud saat çipini çıxardım. Daha sonra bir az araşdırma aparıb və birbaşa mikroprosessor tərəfindən idarə oluna bilən 7 seqmentli bağlantıları tapdı. Sonra mikroprosessorun idarə edə biləcəyi transistorlar olan 4 rəqəmli sürücülər tapıldı. Və sonra onları bağladı.

Addım 2: Bağlantıları yoxlayın

Bağlantıları yoxlayın
Bağlantıları yoxlayın

Təcrübə olaraq bütün xətləri idarə etmək, naqilləri yoxlamaq və bu vəziyyətdə 82 mA olan cərəyanı ölçmək üçün BASIC proqramı yazdım.

Sonrakı, xətləri taramaq üçün kodu yazmaq idi.

'veb saat ekran sürücüsü

IO (7) = 0 'PMOS sürücüsü - bir gün PWM olacaq

y = 45 ilə 48 arasında

IO (y) = 0 'rəqəmli sürücü

x = 8 ilə 15 arasında

IO (x) = 0 'seqment sürücüsü

gözlə (500)

IO (x) = 1

növbəti x

DIR (y) = 0 'seqmentdəki sürücünü deaktiv edin

növbəti y

Addım 3: Parametrləri İdarə etmək üçün Vaxtı Göstərmək üçün Kod və PWM

Vaxtı Göstərmək üçün Kod və Parlaqlığı İdarə etmək üçün PWM
Vaxtı Göstərmək üçün Kod və Parlaqlığı İdarə etmək üçün PWM
Vaxtı Göstərmək üçün Kod və Parlaqlığı İdarə etmək üçün PWM
Vaxtı Göstərmək üçün Kod və Parlaqlığı İdarə etmək üçün PWM

Sonra bütün rəqəmsal sürücülərə enerji təchizatına bir PMOS tranzistoru əlavə etdim. Nəbz genişliyi modulyasiyası ilə idarə olunan ekranın parlaqlığını idarə edəcək. Vaxtı göstərmək üçün BASIC kodu budur.

'web saat ekran sürücüsü #"LPC11U3x.bas" daxil edin

'qlobal

hr = 0 'saatı təyin edin

min = 0 'dəqiqəni təyin edin

#SEG_0 və HBB00 təyin edin

#SEG_1 və H1800 təyin edin

#SEG_2 & HD300 təyin edin

#SEG_3 və HD900 təyin edin

#degine SEG_4 & H7800

#SEG_5 və HE900 təyin edin

#SEG_6 və HEB00 təyin edin

#SEG_7 və H9800 təyin edin

#SEG_8 və HFB00 təyin edin

#SEG_9 və HF800 təyin edin

#SEG_o və H4B00 təyin edin

#SEG_f və HE200 təyin edin

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 1 təyin edin

#US_TIME təyin edin

sub display_time (səhv, saat, min)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

saat> 12 olarsa, saat -= 12

hr = 0 olarsa, hr = 12 olar

#endif

saat 10 = saat / 10

saat 1 = saat MOD 10

min10 = dəq / 10

min1 = dəq MOD 10

i = 0 -dan 1 -ə qədər

saat 10 olarsa

IO (45) = 0

endif

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (saat 10)

GPIO_CLR (0) = DIGarray (saat 10)

gözləyin (DIG_WAIT)

GİRİŞ (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)

gözləyin (DIG_WAIT)

GİRİŞ (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

gözləyin (DIG_WAIT)

GİRİŞ (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

gözləyin (DIG_WAIT)

GİRİŞ (48)

sonrakı i

ucluq

'istifadəçi TIMER1 (32 bit) hər dəqiqə kəsmək üçün

ARALIQ ALT TIMER1IRQ

T1_IR = 1 'Kesintini sil

min += 1

əgər min> 59 olarsa

min = 0

saat += 1

saat> 23 olarsa

saat = 0

endif

endif

ENDSUB

ON_TIMER SUB (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VIC funksiyası - Thumb əməliyyatı üçün +1 lazımdır

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'TIMER1 -i aktiv et

T1_PR = 0 'ön ölçmə yoxdur - dəyəri daha dəqiq vaxt üçün düzəldəcək

VICIntEnable OR = (1 << TIMER1_IRQn) 'Fasiləni aktiv edin

T1_MR0 = max_cnt-1 'ms uyğunluq sayını qurdu

T1_MCR = 3 'Kəsmə və Sıfırlama

MR0 T1_IR = 1 'fasilə silin

T1_TC = 0 'təmiz sayğac

T1_TCR = 1 'TIMER1 Aktiv et

ENDSUB

#define MINUT_PCLK 2880000000 '48 MHz -də 60 saniyə

əsas:

saat = 9

min = 33

ON_TIMER (MINUT_PCLK, ADRESSOF TIMER1IRQ)

IO (7) = 0 'PWM bir gün - P0_22 -yə keçmək lazımdırmı?

isə 1

display_time (0, saat, dəq)

döngə

Addım 4: İnternet bağlantısı qurun

İnternet bağlantısı qurun
İnternet bağlantısı qurun

WiFi bağlantısı üçün ESP8266 istifadə edin. İnternetdə bir müddət gəzdikdən sonra ən yaxşı həll 0.9.6 versiyası nodemcu idi və ən yaxşı köhnə esp8266_flasher işləyirdi.

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

Sonra internetdən vaxt keçirmək üçün sadə bir PHP səhifəsi-

Coridium Zaman Serveri

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); əgər ($ saat qurşağı == "")

$ timezone = 'Amerika/Los_Angeles';

$ tz_object = yeni DateTimeZone ($ saat qurşağı);

$ datetime = yeni DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "time is-", $ datetime-> format ('H: i: s');

əks -səda "";

echo "date is-", $ datetime-> format ('m/d/Y');

?>

Bu veb səhifəsi tələb edə biləcəyiniz üçündür

coridium.us/time.php - və ABŞ -ın Sakit Okean saat diliminə sahibsiniz

və ya

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

Yoxlama xətası yoxdur və çox güman ki, heç vaxt olmayacaq

Və bunu oxumaq üçün Lua -

wifi.sta.config ("sizin_SSID", "ŞİFRƏSİNİZ")> wifi.sta.connect ()…

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

sk: on ("almaq", funksiya (sck, c) çap (c) son)

sk: əlaqə (80, "coridium.us")

sk: göndər ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nBağlantı: canlı saxla / r / nQəbul et: */ *\ r / n / r / n")

Və vaxtı geriyə qaytarırsınız

vaxt-09: 38: 49 tarix -2018-31-12-dir

Addım 5: Vebdən Vaxt ayırmaq üçün BASIC Kodu əlavə edin

Vebdən Vaxt ayırmaq üçün BASIC Kodu əlavə edin
Vebdən Vaxt ayırmaq üçün BASIC Kodu əlavə edin

Bu tam BASIC proqramının bir alt hissəsidir, tam proqramı son mərhələdəki linkdə görmək olar.

əgər strstr (build_gets, "time is-") = 0 olarsa

hr = build_gets (8) - "0"

əgər build_gets (9) = ":" olarsa

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

min += build_gets (11) - "0"

başqa

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

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

min += build_gets (12) - "0"

endif

endif

6 -cı addım: Ekranı söndürmək üçün İşıq Sensoru və Kod əlavə edin

Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin
Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin
Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin
Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin
Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin
Ekranı qaraldırmaq üçün İşıq Sensoru və Kod əlavə edin

Otaqdakı işığı hiss etmək üçün bir fotoşəkil tranzistoru əlavə edildi. Onsuz da ekran ölüləri (məni) gecələr oyandıracaq qədər parlaqdır.

Fotoşəkil tranzistorunun çıxışının analoq gərginliyi oxunur və nəbz genişliyi modulyasiyası ekranın ümumi parlaqlığını təyin edir.

Addım 7: Saatı Yuxarı Göstərin və İstifadəyə Başlayın

Saatı yuxarı qaldırın və istifadə etməyə başlayın
Saatı yuxarı qaldırın və istifadə etməyə başlayın

Son versiya saatı göstərir və təxminən 3 -də, cari vaxtı oxumaq üçün İnternetə çıxır. Bu da gündüz işığına qənaət etmə vaxtını idarə edir.

Bu layihənin motivasiyası, dağlarda yaşadığımız elektrik kəsintiləri və saatı sıfırlamaq və ya canlı saxlamaq üçün batareyaları dəyişdirmək ehtiyacı idi.

Bu layihəyə qısa bir baxış oldu.

Bu DIY İnternetə bağlı saatın tam təfərrüatları.

Tövsiyə: