Мазмуну:

LED Matrix боюнча ESP32 Scrolling WordClock: 5 кадам (Сүрөттөр менен)
LED Matrix боюнча ESP32 Scrolling WordClock: 5 кадам (Сүрөттөр менен)

Video: LED Matrix боюнча ESP32 Scrolling WordClock: 5 кадам (Сүрөттөр менен)

Video: LED Matrix боюнча ESP32 Scrolling WordClock: 5 кадам (Сүрөттөр менен)
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Ноябрь
Anonim
Image
Image

Бул долбоордо мен ESP32, LED Matrix жана сигара кутусу менен Scrolling WordClock түзөм.

WordClock - бул экранда басып чыгаруунун же окуй турган колуңуздун ордуна убакытты жазуучу саат. Бул саат сизге түшкү саат 3төн 10 мүнөт өткөнүн же түштө экенин айтып берет. Мен аны Prevenning (Big Bang Theory'ден) түштөн кийин жана кечиндеги белгисиз убакытка карата колдонууну программаладым. 16:00 башталат.

ESP32 укмуш, алар абдан кызыктуу жана ушунчалык арзан, эгер сиз Arduino программалоону жакшы көрсөңүз, анда ESP32 10 долларга чейин эмне кыла аларына таң каласыз. Алар Arduino IDE колдонушат жана аларды программалоо оңой. Мен муну кантип жасоону көрсөтмө берем.

Жабдуулар

  • ESP32 - Amazon боюнча болжол менен $ 10
  • LED Matrix (max7219) (жана зымдар) - $ 9 амазонка
  • Сигара кутусу
  • USB кубат кабели
  • Esp32 стенд үчүн кошумча 3d принтер

1 -кадам: ESP32ди колдоо үчүн Arduino IDE орнотуңуз

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 диоддуу төрт блоктон турат жана MAX7219 чипин колдонот. Бул бизге Matrix 8x32 LED же 256 LED берет !!!.

Esp32 мен TinkerCadда түзүлгөн кармагычта отурат. Менин кармагычым төөнөгүчтөрдү өйдө карагандыктан сиз зымдарды тиркей аласыз.

LED Matrix ESP32 менен SPI (Serial Perifheral Interface) аркылуу туташат.

Аял/Аял зымдарын колдонуңуз жана пиндерди төмөнкүдөй туташтырыңыз:

  • ESP32 - 5V матрицада VCCге
  • ESP32 - Matrix боюнча GNDден GNDге чейин
  • ESP32 - PIN5 (G5) Matrix боюнча CSге
  • ESP32 - PIN23 (G23) боюнча Matrix боюнча Din
  • ESP32 - Pin 18 (G18) Матрицада 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ге жүктөңүз, USBди ESP32ден компьютериңизге туташтырыңыз.

"Эскизди" чыкылдатыңыз, анан Жүктөө

Бул учурда саат иштебейт, ESP32 эч нерсени көрсөтпөйт. Неге? WordClock убакытты алуу үчүн интернетке туташкандыктан, биз сиздин WIFIди кодго кошушубуз керек. Туура… кийинки кадам ->.

5 -кадам: Кодекс

Акыры сүйүктүү бөлүгүмө жеттим. Программа. Эгер сизди кызыктырса, мен аны жогорудан төмөн карай карайм, Программаны үй интернети менен иштөө үчүн бул линияларды өзгөртүү керек.

// Тармак маалыматыңызды кошуңуз

const char *ssid = "xxxxxx";

const char *password = "xxxxxx";

Программа татаал, бирок абдан кызыктуу.

"Алдын ала" өчүрүү үчүн жөн гана маанини false деп өзгөртүңүз:

const boolean PREVENING = true; // Чоң жарылуу теориясы.

Жылдыргандан кийин санарип убакытты көрсөтүүнү өчүрүү үчүн муну жалганга өзгөртүңүз.

const логикалык DISPLAY_DIGITAL = туура; // жылдыргандан кийин санарип убакытты көрсөтүүнү күйгүзүңүз.

Убакытты жылдыруу:

Убакытты NTP (Network Time Protocol) аркылуу интернеттеги убакыт серверинен алам. Убакыт timeinfo деп аталган өзгөрмөнүн ичинде өткөрүлөт жана биз андан саат менен мүнөттү алабыз

int hour = 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дөн чоң болсо, биз "Минуттар үчүн" колдонобуз, бирок сандарды [60 мүнөт] колдонобуз, ошондуктан 12:50 60-50 мүнөт же сандар [10] болмок бизге 12 мүнөткө 10 мүнөт бер.

Албетте, 15, 30, 45 сыяктуу башка эрежелер бар, биз муну жарым жарым же чейрек үчүн колдонбойбуз, эгер мүнөт 0 болсо, убакыт "Он саат" же Түш.

Ошентип, аны бириктирүү үчүн, мен бардык нерселерди String theTimeге кошуп, андан кийин LED матрицасында көрсөтөм. Мен If билдирүүлөрүнүн тобун колдоном. Мен, балким, case колдонушум керек болчу, бирок аларды кошууну улантуу оңой эле.

Биздин мисал үчүн 12:05

theTime = "Бул"

if <31 мүнөт "Minutes Past" колдонулсун, болбосо анын "Minute To"

theTime + = сандар [5] + "Өткөн мүнөттөр" + сан [12] + "Саат" // Эскертүү: + = белгиси тиркелет.

Андан кийин анын эртең менен, түштөн кийин же кечинде экенин аныктоо үчүн саатты карайбыз.

theTime+= "Кечинде"

Матрицага бара турган акыркы сап:

"Кечки саат он экиден беш мүнөт өттү"

Бул долбоорду жазуу абдан кызыктуу болду. Эгер сизге жакса, Жүрөктү басып, мага добуш бериңиз.

Сунушталууда: