Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Ushbu loyihada men ESP32, LED matritsali va sigaret qutisi bo'lgan aylantiruvchi WordClock yarataman.
WordClock - bu soatni ekranda chop etish yoki o'qish uchun qo'llar emas, balki vaqtni belgilaydigan soat. Bu soat sizga kunduzi soat 3 dan 10 minut yoki peshin ekanligini aytadi. Men hatto uni tushdan keyin kechgacha bo'lgan noaniq vaqt uchun Prevening (Katta portlash nazariyasidan) nomidan foydalanishni dasturlashtirdim. 16:00 da boshlanadi.
ESP32 ajoyib, ular juda qiziqarli va juda arzon, agar siz Arduino dasturini yoqtirsangiz, ESP32 10 dollardan pastroqda nima qila olishidan hayron qolasiz. Ular Arduino IDE -dan foydalanadilar va dasturlash oson. Men buni qanday qilishni ko'rsatma ko'rsatmasida ko'rsataman.
Ta'minotlar
- ESP32 - Amazonda taxminan 10 dollar
- LED matritsasi (max7219) (va simlar) - 9 dollarlik Amazon
- Sigara qutisi
- USB quvvat kabeli
- Esp32 stend uchun ixtiyoriy 3d printer
1 -qadam: Arduino IDE -ni ESP32 -ni qo'llab -quvvatlash uchun o'rnating
Arduino IDE -ni oling:
- Brauzerda https://www.arduino.cc/ saytiga o'ting.
- "ARDUINO 1.8.12" ni olish uchun "Dasturiy ta'minot" ni, so'ng "Yuklamalar" ni bosing
Arduino IDE -ga ESP32 qo'llab -quvvatlashini qo'shing:
- Arduino IDE -ni ishga tushiring
- Fayl menyusini, so'ngra Sozlamalar -ni bosing.
"Sozlamalar" bo'limida "Qo'shimcha boshqaruv menejeri" ga quyidagi qatorni qo'shib, ishlab chiqaruvchi yordamini qo'shing.
dl.espressif.com/dl/package_esp32_index.js
Bu bizga taxtani IDE -ga qo'shish imkoniyatini beradi
"Asboblar" menyusiga, so'ng "Kengashlar" ga o'ting va boshqaruv menejeriga o'ting
Keyingi "ESP" ni qidiring va Expressif paketini qo'shing.
Nihoyat, biz "Asboblar" menyusiga, so'ngra "Kengash" ga qaytishni va ESP32 qurilmangizni topish uchun pastga aylanishni xohlaymiz.
Meniki bu "ESP32 Wrover moduli"
2 -qadam: LED matritsasini ESP32 ga ulang
LED matritsasi 8x8 o'lchamli to'rtta LED blokdan iborat bo'lib, MAX7219 chipidan foydalanadi. Bu bizga Matrixdagi 8x32 LED yoki 256 LEDni beradi !!!.
Esp32 men TinkerCad -da yaratgan panjara ustida joylashgan. Mening ushlagichim pinlarni yuqoriga qaragan holda ushlab turadi, shunda siz simlarni ulashingiz mumkin.
LED matritsasi ESP32 ga SPI (ketma -ket periferik interfeys) yordamida ulanadi.
Ayol/ayol simlarini va ulanish pinlarini quyidagicha ishlating:
- ESP32 - matritsadagi VCC uchun 5V
- ESP32 - matritsada GND dan GNDgacha
- ESP32 - Matrix bo'yicha CS5 -ga PIN5 (G5)
- ESP32 - Matrixdagi Din -ga PIN23 (G23)
- ESP32 - 18 -gachasi (G18) matritsadagi CLK -ga ulang
Boshqa pinlardan foydalanish mumkin yoki ESP32 -da boshqa pinout bo'lsa.
3 -qadam: uni birlashtirish
Men LED displey qo'yish uchun joy berish uchun sigaret qutisini kesib tashladim. Quti yumshoq va men ustara pichog'ini ishlatishga muvaffaq bo'ldim. Keyin silliqlash uchun zımpara qildim.
Men ham elektr simini orqasidan bir butunni kesib tashladim. Men faqat USB quvvatidan foydalandim. Agar men simsiz bo'lishni xohlaganimda, hatto sigaret qutisiga USB telefon zaryadlovchi batareyasini qo'shgan bo'lardim.
4 -qadam: Arduino IDE va INO fayli
Eng yaxshi qism - bu kod. Lekin avval dasturni displeydan sodda tarzda foydalanishiga ruxsat berish uchun kutubxona qo'shishimiz kerak. MD_MAX72xx kutubxonasini qo'shdim.
Kutubxonani qo'shish uchun "Chizma" menyusini bosing, so'ng "Kutubxonani qo'shish" va "Kutubxonalarni boshqarish" tugmachalari yuklanadi va MD_MAX72xx kutubxonasini qidirishga imkon beradi. O'rnatish tugmachasini bosish kifoya.
Keyin mening Arduino INO faylimni oling:
github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino
Ino faylini Arduino IDE -ga yuklang, ESP32 -dan USB -ni kompyuteringizga ulang.
"Eskiz" ni bosing, so'ng yuklang
Bu vaqtda soat ishlamaydi, ESP32 hech narsani ko'rsatmaydi. Nima uchun? biz sizning Wi -Fi -ni kodga qo'shishimiz kerak, chunki WordClock vaqtni olish uchun Internetga ulanadi. To'g'ri … keyingi qadam ->.
5 -qadam: Kod
Nihoyat men eng sevimli qismimga etib keldik. Dastur. Agar siz qiziqsangiz, men uni yuqoridan pastgacha qamrab olaman, dasturni uyingizdagi Internet bilan ishlash uchun siz faqat ushbu satrlarni o'zgartirishingiz kerak.
// Tarmoq ma'lumotlarini qo'shing
const char *ssid = "xxxxxx";
const char *parol = "xxxxxx";
Dastur juda murakkab, lekin juda qiziqarli.
"Prevening" ni o'chirish uchun qiymatni false ga o'zgartiring:
const boolean PREVENING = rost; // Katta portlash nazariyasi.
O'tkazgandan so'ng raqamli vaqtni ko'rsatishni o'chirish uchun buni noto'g'ri deb o'zgartiring.
const boolean DISPLAY_DIGITAL = rost; // aylantirilgandan keyin raqamli vaqtni ko'rsatishni yoqing.
Vaqtni aylantirish:
Vaqtni NTP (Tarmoq vaqti protokoli) yordamida Internetdagi vaqt serveridan olaman. Vaqt timeinfo deb nomlangan o'zgaruvchida saqlanadi va biz undan soat va daqiqani olamiz
int soat = timeinfo.tm_hour; /// 0-23
int daqiqa = timeinfo.tm_min; // 0-59
Keyin AM yoki PM ni tekshiring
Agar soat <12 bo'lsa, uning AM
Men "theTime" nomli satr yarataman va uni quyidagidan boshlayman:
theTime = "Bu";
Raqamni so'z sifatida olish uchun men 30 gacha raqamlar uchun so'zlar majmuasini yaratdim
const char *raqamlari = {
"0", "Bir", "Ikki", "Uch", "To'rt", "Besh", "Olti", "Etti", "Sakkiz", "To'qqiz", "O'n", "O'n bir", "O'n ikki" "," O'n uch "," O'n to'rt "," Chorak "," O'n olti "," O'n etti "," O'n sakkiz "," O'n to'qqiz "," Yigirma "," Yigirma bir "," Yigirma ikki "," Yigirma uch " "," Yigirma to'rt "," Yigirma besh "," Yigirma olti "," Yigirma etti "," Yigirma sakkiz "," Yigirma to'qqiz "," Yarim o'tgan "};
Shunday qilib, soat 12:05 yoki o'n beshdan besh minut o'tganda, bu Arduinoga to'g'ri keladi
raqamlar [5] sonlardan o'tgan daqiqalar [12]
"O'tgan daqiqalar" yoki "daqiqalar" ni aniqlash uchun biz faqat daqiqalarga qaraymiz. Agar daqiqalar <31 bo'lsa, bu "O'tgan daqiqalar", agar daqiqalar 31dan katta bo'lsa, biz "Daqiqalar uchun" dan foydalanamiz, lekin sonlarni ishlatamiz [60 daqiqa], shuning uchun 12:50 60-50 daqiqani yoki raqamlarni [10] tashkil qiladi. bizga 10 dan 12 minutgacha.
Albatta, boshqa qoidalar bor, masalan, 15, 30, 45 da biz yarim soat yoki chorakni ishlatmaymiz, agar daqiqa 0 bo'lsa, vaqt "O'n soat" yoki peshin.
Shunday qilib, uni birlashtirish uchun men barcha elementlarni String theTime -ga qo'shaman va keyin LED matritsasida ko'rsataman. Men If iboralaridan foydalanaman. Ehtimol, men ishni ishlatishim kerak edi, lekin ularni qo'shishni davom ettirish osonroq edi.
Bizning misolimiz uchun 12:05
theTime = "Bu"
agar <31 daqiqada "O'tgan daqiqalar" ishlatilsa, aks holda "Minutgacha"
theTime + = raqamlar [5] + "O'tgan daqiqalar" + raqam [12] + "O'Clock" // Eslatma: + = belgisi qo'shilgan.
Keyin biz ertalabmi, tushdanmi yoki kechmi ekanligini aniqlash uchun soatga qaraymiz.
theTime+= "Kechqurun"
Matritsaga ketadigan oxirgi satr:
"Kechki soat o'n ikkidan besh daqiqa o'tdi"
Bu loyihani yozish juda qiziq edi. Agar sizga yoqqan bo'lsa, "Yurak" tugmasini bosing va menga ovoz bering.