Mundarija:

LED matritsasida ESP32 aylantirish WordClock: 5 qadam (rasmlar bilan)
LED matritsasida ESP32 aylantirish WordClock: 5 qadam (rasmlar bilan)

Video: LED matritsasida ESP32 aylantirish WordClock: 5 qadam (rasmlar bilan)

Video: LED matritsasida ESP32 aylantirish WordClock: 5 qadam (rasmlar bilan)
Video: 78-dars: Televizor qanday tanlanadi. 2024, Noyabr
Anonim
Image
Image

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
Rasm
Rasm

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.

Rasm
Rasm

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

Rasm
Rasm

Keyingi "ESP" ni qidiring va Expressif paketini qo'shing.

Rasm
Rasm

Nihoyat, biz "Asboblar" menyusiga, so'ngra "Kengash" ga qaytishni va ESP32 qurilmangizni topish uchun pastga aylanishni xohlaymiz.

Meniki bu "ESP32 Wrover moduli"

Rasm
Rasm

2 -qadam: LED matritsasini ESP32 ga ulang

Rasm
Rasm

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

Birgalikda joylashtirish
Birgalikda joylashtirish

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

Arduino IDE va INO fayli
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.

Tavsiya: