Mündəricat:
- Təchizat
- Addım 1: Rəqəm Sürücüsünü və Çoxlayıcı Ekran üçün Segment Sürücüsünü birləşdirin
- Addım 2: Bağlantıları yoxlayın
- Addım 3: Parametrləri İdarə etmək üçün Vaxtı Göstərmək üçün Kod və PWM
- Addım 4: İnternet bağlantısı qurun
- Addım 5: Vebdən Vaxt ayırmaq üçün BASIC Kodu əlavə edin
- 6 -cı addım: Ekranı söndürmək üçün İşıq Sensoru və Kod əlavə edin
- Addım 7: Saatı Yuxarı Göstərin və İstifadəyə Başlayın
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
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ə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
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
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
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
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
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
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ı.