Агуулгын хүснэгт:

LED матриц дээр ESP32 гүйлгэх WordClock: 5 алхам (зурагтай)
LED матриц дээр ESP32 гүйлгэх WordClock: 5 алхам (зурагтай)

Видео: LED матриц дээр ESP32 гүйлгэх WordClock: 5 алхам (зурагтай)

Видео: LED матриц дээр ESP32 гүйлгэх WordClock: 5 алхам (зурагтай)
Видео: LED-матрица на ICN2053. Подключаем к ESP32 2024, Арваннэгдүгээр
Anonim
Image
Image

Энэ төсөлд би ESP32, LED матриц, навчин тамхины хайрцаг бүхий Scrolling WordClock бүтээсэн.

WordClock бол дэлгэц дээр хэвлэх эсвэл унших гартай байхаас илүүтэйгээр цагийг заадаг цаг юм. Энэ цаг нь үдээс хойш 3 цагаас 10 минут өнгөрч байгааг харуулах болно. Тэр ч байтугай үдээс оройны хоорондох тодорхой бус хугацааны хувьд Prevening (Big Bang Theory -аас) нэрийг ашиглахаар би үүнийг програмчилсан. 16:00 цагт эхэлнэ.

ESP32 бол гайхалтай, тэд маш хөгжилтэй, маш хямдхан тул хэрэв та Arduino програмчлах дуртай бол ESP32 10 доллараас бага үнээр юу хийж чадахыг та үнэхээр гайхах болно. Тэд Arduino IDE ашигладаг бөгөөд програмчлахад хялбар байдаг. Үүнийг хэрхэн яаж хийхийг би энэ зааварчилгаанд харуулах болно.

Хангамж

  • ESP32 - Amazon дээр ойролцоогоор 10 доллар
  • LED матриц (max7219) (ба утаснууд) - 9 доллар амазон
  • Тамхины хайрцаг
  • USB цахилгаан кабель
  • Esp32 индэрт зориулсан нэмэлт 3d принтер

Алхам 1: Arduino IDE -ийг ESP32 -ийг дэмжихээр тохируулна уу

Arduino IDE авах:

  • Хөтөч дээр https://www.arduino.cc/ руу очно уу.
  • Програм хангамж, дараа нь Татаж авах дээр дарж ARDUINO 1.8.12 -ийг авна уу
Зураг
Зураг

Arduino IDE дээрээ ESP32 дэмжлэгийг нэмнэ үү.

  • Arduino IDE -ийг ажиллуулна уу
  • Файл цэс, дараа нь Тохиргоо дээр дарна уу.

"Тохиргоо" хэсэгт орсны дараа "Нэмэлт зөвлөлийн менежер" хэсэгт дараах мөрийг нэмж үйлдвэрлэгчийн дэмжлэгийг нэмнэ үү.

Зураг
Зураг

dl.espressif.com/dl/package_esp32_index.js

Энэ нь самбарыг IDE дээр нэмэх боломжийг бидэнд олгоно

Багаж хэрэгслийн цэс, дараа нь самбар руу очиж самбарын менежерт очно уу

Зураг
Зураг

Дараа нь "ESP" хайж, Expressif -ээр багцыг нэмнэ үү.

Зураг
Зураг

Эцэст нь бид "Хэрэгслүүд" цэс рүү, дараа нь "Самбар" руу буцаж очоод доош гүйлгэж ESP32 төхөөрөмжөө олохыг хүсч байна.

Минийх бол "ESP32 Wrover Module" юм

Зураг
Зураг

Алхам 2: LED матрицыг ESP32 -тэй холбоно уу

Зураг
Зураг

LED матриц нь 8x8 хэмжээтэй дөрвөн LED гэрлээс бүрдэх бөгөөд MAX7219 чипийг ашигладаг. Энэ нь бидэнд матриц дахь 8x32 LED буюу 256 LED өгдөг.

Esp32 нь миний TinkerCad дээр үүсгэсэн зогсоол дээр сууж байна. Миний эзэмшигч нь тээглүүрээ дээш харсан тул та утас холбож болно.

LED матриц нь SPI (Цуваа захын интерфэйс) ашиглан ESP32 -тэй холбогддог.

Эмэгтэй/Эмэгтэй утас, холбогч тээглүүрийг дараах байдлаар ашиглана.

  • ESP32 - матриц дээрх VCC -ээс 5v хүртэл
  • ESP32 - матриц дээр GND -аас GND хүртэл
  • ESP32 - Матриц дээрх CS5 руу PIN5 (G5)
  • ESP32 - PIN23 (G23) -ийг Matrix дээр Din рүү шилжүүлэх
  • ESP32 - 18 (G18) зүүг Matrix дээрх CLK руу холбоно уу

Бусад тээглүүр ашиглах боломжтой, эсвэл таны ESP32 -д өөр зүү байгаа бол.

Алхам 3: Үүнийг нэгтгэх

Үүнийг хамтад нь оруулах
Үүнийг хамтад нь оруулах

Дараа нь би LED дэлгэц тавих газар өгөхийн тулд навчин тамхины хайрцгийг таслав. Хайрцаг зөөлөн бөгөөд би сахлын хутга хэрэглэж чадсан. Дараа нь гөлгөр болгохын тулд зүлгүүрээр хийсэн.

Би мөн цахилгааны утсыг ар талаас нь таслав. Би дөнгөж USB тэжээл ашигласан. Хэрэв би утасгүй байхыг хүсч байсан бол тамхины хайрцагт USB утасны цэнэглэгч батерейг нэмж болно.

Алхам 4: Arduino IDE ба INO файл

Arduino IDE ба INO файл
Arduino IDE ба INO файл

Хамгийн сайн хэсэг бол код юм. Гэхдээ эхлээд бид програмыг дэлгэцийг илүү энгийн байдлаар ашиглах боломжийг олгохын тулд номын сан нэмэх ёстой. Би MD_MAX72xx номын санг нэмсэн.

Номын санг нэмэхийн тулд "Ноорог" цэс дээр дараад "Номын санг оруулах" ба "Номын санг удирдах" дээр дарна уу, энэ нь ачаалагдах бөгөөд танд MD_MAX72xx номын санг хайх боломжийг олгоно. Суулгах дээр дарахад л танд байна.

Дараа нь миний Arduino INO файлыг аваарай.

github.com/aapicella/wordClock/blob/master/Word_Clock_LED_NTP_final_.ino

Ino файлыг Arduino IDE дээрээ ачаална уу.

ESP32 -ээс USB -ийг компьютерт холбоно уу.

"Ноорог" дээр дарж, байршуулна уу

Энэ үед цаг ажиллахгүй, ESP32 нь юу ч харуулахгүй. Яагаад? WordClock интернэтэд холбогдож цаг авахын тулд бид таны WIFI -г код руу оруулах ёстой. Энэ зөв … дараагийн алхам ->.

Алхам 5: Код

Эцэст нь бид дуртай хэсэгтээ хүрч чадлаа. Хөтөлбөр. Хэрэв та сонирхож байгаа бол би үүнийг дээрээс нь доош нь авч үзэх болно. Хөтөлбөрийг гэрийн интернеттэйгээ ажиллахын тулд та эдгээр мөрүүдийг өөрчлөх хэрэгтэй.

// Сүлжээнийхээ мэдээллийг оруулна уу

const char *ssid = "xxxxxx";

const char *нууц үг = "xxxxxx";

Хөтөлбөр нь нэлээд төвөгтэй боловч маш хөгжилтэй байдаг.

"Prevening" -г идэвхгүй болгохын тулд утгыг худал болгож өөрчилнө үү.

const boolean PREVENING = үнэн; //Агуу тэсрэлтийн онол.

Гүйлгэсний дараа дижитал цагийг харуулахыг идэвхгүй болгохын тулд үүнийг худал болгож өөрчилнө үү.

const boolean DISPLAY_DIGITAL = үнэн; // гүйлгэсний дараа дижитал цаг харуулахыг асаана уу.

Цагийг гүйлгэх:

Би интернэт дэх цагийн серверээс NTP (Network Time Protocol) ашиглан цаг авдаг. Цаг нь timeinfo гэж нэрлэгддэг хувьсагчтай бөгөөд бид үүнээс цаг, минутыг авдаг

int цаг = timeinfo.tm_hour; /// 0-23

int минут = timeinfo.tm_min; // 0-59

Дараа нь AM эсвэл PM -ийг шалгана уу

Түүний AM бол <12 цаг

Би "theTime" нэртэй мөр үүсгэж, үүнийг эхлүүлнэ үү

theTime = "Энэ бол";

Тоог үг болгон авахын тулд би 30 хүртэлх тооны үгсийн массив үүсгэсэн

const char *тоо = {

"0", "Нэг", "Хоёр", "Гурав", "Дөрөв", "Тав", "Зургаа", "Долоо", "Найман", "Есөн", "Арав", "Арван нэгэн", "Арван хоёр "," Арван гурав "," Арван дөрөв "," Улирал "," Арван зургаа "," Арван долоон "," Арван найм "," Арван ес "," Хорин "," Хорин нэг "," Хорин хоёр "," Хорин гурав "," Хорин дөрөв "," Хорин тав "," Хорин зургаа "," Хорин долоон "," Хорин найм "," Хорин ес "," Хагас өнгөрсөн "};

12:05 буюу таван минут арван хоёр өнгөрөхөд үнэхээр Arduino руу очно

тоо [5] өнгөрсөн тоонууд [12]

"Өнгөрсөн минутууд" эсвэл "Минутууд руу" байгаа эсэхийг тодорхойлохын тулд бид зөвхөн минутуудыг хардаг. Хэрэв минут нь <31 бол энэ нь "Өнгөрсөн минутууд" бөгөөд хэрэв минут нь 31-ээс их бол бид "To Minutes To" -г ашигладаг боловч [60-минут] тоог ашигладаг тул 12:50 нь 60-50 минут эсвэл тоо [10] байх болно. бидэнд 10 -аас 12 минут хүртэл өг.

Мэдээжийн хэрэг, 15, 30, 45 гэх мэт бусад дүрмүүд байдаг бөгөөд бид түүний хагас хагас буюу дөрөвний нэгийг ашигладаггүй, хэрэв минут 0 бол цаг нь "Арван цаг" эсвэл Үд.

Үүнийг нэгтгэхийн тулд би бүх зүйлийг String theTime -д хавсаргаад LED матриц дээр харуулна. Би If хэллэгийг ашигладаг. Би хэргийг ашиглах ёстой байсан, гэхдээ тэдгээрийг үргэлжлүүлэн нэмж оруулах нь илүү хялбар байсан.

Бидний жишээнд 12:05

theTime = "Энэ"

хэрэв минут <31 бол "Өнгөрсөн минутууд" -ийг ашиглана уу, өөрөөр хэлбэл "Минут руу"

theTime + = тоо [5] + "Өнгөрсөн минут" + тоо [12] + "O'Clock" // Тэмдэглэл: + = тэмдэглэгээг хавсаргав.

Дараа нь бид өглөө, үдээс хойш эсвэл орой эсэхийг тодорхойлохын тулд цагийг хардаг.

theTime+= "Орой"

Матриц руу орох эцсийн мөр нь:

"Орой арван хоёр цаг өнгөрч байхад таван минут өнгөрч байна"

Энэ төсөл бичихэд маш хөгжилтэй байсан. Хэрэв танд таалагдсан бол Зүрх сэтгэл дээр дарж надад саналаа өгөөрэй.

Зөвлөмж болгож буй: