فهرست مطالب:

ESP32 پیمایش WordClock در ماتریس LED: 5 مرحله (همراه با تصاویر)
ESP32 پیمایش WordClock در ماتریس LED: 5 مرحله (همراه با تصاویر)

تصویری: ESP32 پیمایش WordClock در ماتریس LED: 5 مرحله (همراه با تصاویر)

تصویری: ESP32 پیمایش WordClock در ماتریس LED: 5 مرحله (همراه با تصاویر)
تصویری: #299 Tricks to get NTP time for the ESP32 and the ESP8266 incl. Summer- and Daylight Saving time 2024, جولای
Anonim
Image
Image

در این پروژه من یک Scrolling WordClock با ESP32 ، LED Matrix و یک جعبه سیگار برگ ایجاد می کنم.

WordClock یک ساعت است که زمان را مشخص می کند و نه فقط آن را روی صفحه چاپ می کند یا عقربه هایی دارد که می توانید بخوانید. این ساعت به شما می گوید که 10 دقیقه از 3 بعد از ظهر یا ظهر گذشته است. من حتی برنامه ریزی کردم که از نام Prevening (از نظریه بیگ بنگ) برای مدت زمان مبهم بین بعد از ظهر و عصر استفاده کند. شروع ساعت 4 بعد از ظهر

ESP32 فوق العاده است ، بسیار سرگرم کننده و بسیار ارزان هستند ، اگر عاشق برنامه نویسی Arduino هستید ، واقعاً شگفت زده خواهید شد که ESP32 می تواند با کمتر از 10 دلار انجام دهد. آنها از Arduino IDE استفاده می کنند و برنامه ریزی آنها آسان است. من نحوه انجام این کار را در این دستورالعمل نشان خواهم داد.

تدارکات

  • ESP32 - حدود 10 دلار در آمازون
  • ماتریس LED (max7219) (و سیم) - 9 دلار آمازون
  • جعبه سیگار
  • کابل برق USB
  • چاپگر سه بعدی اختیاری برای پایه esp32

مرحله 1: IDE Arduino خود را برای پشتیبانی از ESP32 تنظیم کنید

Arduino IDE را دریافت کنید:

  • در مرورگر به https://www.arduino.cc/ بروید
  • روی Software و سپس Downloads کلیک کنید تا ARDUINO 1.8.12 دریافت شود
تصویر
تصویر

پشتیبانی ESP32 را به Arduino IDE خود اضافه کنید:

  • Arduino IDE را راه اندازی کنید
  • روی منوی File و سپس Preferences کلیک کنید.

پس از ورود به "تنظیمات برگزیده" ، پشتیبانی تولید کننده را با افزودن خط زیر به "مدیر هیئت مدیره اضافی" اضافه کنید

تصویر
تصویر

dl.espressif.com/dl/package_esp32_index.js

این به ما دسترسی می دهد تا برد را به IDE اضافه کنیم

به منوی Tools و سپس Boards بروید و به مدیر هیئت مدیره بروید

تصویر
تصویر

سپس عبارت "ESP" را جستجو کرده و بسته را توسط Expressif اضافه کنید.

تصویر
تصویر

در نهایت ما می خواهیم به منوی "Tools" ، سپس دوباره "Board" برگردیم و به پایین بروید تا دستگاه ESP32 خود را پیدا کنید.

مال من "ماژول ESP32 Wrover" است

تصویر
تصویر

مرحله 2: ماتریس LED را به ESP32 وصل کنید

تصویر
تصویر

ماتریس LED از چهار بلوک LED 8x8 تشکیل شده است و از تراشه MAX7219 استفاده می کند. این به ما LED های 8x32 در ماتریس یا 256 LED می دهد !!!.

esp32 روی محفظه ای که من در TinkerCad ایجاد کرده ام نشسته است. نگهدارنده من پین ها را رو به بالا نگه می دارد تا بتوانید سیم ها را وصل کنید.

ماتریس LED با استفاده از SPI (رابط جانبی سریال) به ESP32 متصل می شود.

از سیم های زن/زن و اتصال پین ها به شرح زیر استفاده کنید:

  • ESP32 - 5v به VCC در ماتریس
  • ESP32 - GND به GND در ماتریس
  • ESP32 - PIN5 (G5) به CS در ماتریس
  • ESP32 - PIN23 (G23) به Din on Matrix
  • ESP32 - پین 18 (G18) را به CLK در ماتریس وصل کنید

ممکن است از پین های دیگر استفاده کنید یا اگر ESP32 شما دارای پینوت متفاوتی است.

مرحله 3: ترکیب آن

کنار هم قرار دادن
کنار هم قرار دادن

بعد جعبه سیگار برگ را بریدم تا جایی برای قرار دادن نمایشگر LED به من بدهد. جعبه نرم است و من توانستم از چاقوی تیغ استفاده کنم. سپس سنباده زدم تا صاف شود.

برای سیم برق هم یک قسمت پشتی بریدم. من فقط از برق USB استفاده کردم اگر می خواستم بی سیم شارژر تلفن USB را داخل جعبه سیگار برگ اضافه کنم.

مرحله 4: Arduino IDE و فایل INO

Arduino IDE و فایل INO
Arduino IDE و فایل INO

بهترین قسمت کد است. اما ابتدا باید یک کتابخانه اضافه کنیم تا برنامه بتواند از صفحه نمایش به شکل ساده تری استفاده کند. من کتابخانه MD_MAX72xx را اضافه کردم.

برای افزودن کتابخانه روی منوی "Sketch" کلیک کنید ، سپس "Include Library" و "Manage Libraries" بارگیری شده و به شما امکان می دهد کتابخانه MD_MAX72xx را جستجو کنید. کافی است روی install کلیک کنید و آن را در اختیار دارید.

بعد فایل Arduino INO من را دریافت کنید:

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

فایل ino را در Arduino IDE خود بارگذاری کنید ،

USB را از ESP32 به رایانه خود وصل کنید.

روی "Sketch" و سپس Upload کلیک کنید

در این مرحله ساعت کار نمی کند ، ESP32 هیچ چیزی را نمایش نمی دهد. چرا؟ ما باید WIFI شما را به کد اضافه کنیم زیرا WordClock برای دریافت زمان به اینترنت متصل می شود. درست است… قدم بعدی ->.

مرحله 5: کد

بالاخره به قسمت مورد علاقه خودم رسیدیم. برنامه. اگر علاقه مند هستید ، از بالا به پایین آن را پوشش خواهم داد ، برای اینکه برنامه با اینترنت خانگی شما کار کند ، فقط باید این خطوط را تغییر دهید.

// اطلاعات شبکه خود را اضافه کنید

const char *ssid = "xxxxxx"؛

const char *رمز عبور = "xxxxxx"؛

این برنامه بسیار پیچیده است ، اما بسیار سرگرم کننده است.

برای غیرفعال کردن "Prevening" فقط مقدار را به false تغییر دهید:

const boolean PREVENING = true؛ //نظریه انفجار بزرگ.

برای غیر فعال کردن نمایش زمان دیجیتال پس از پیمایش ، این مورد را به false تغییر دهید.

const boolean DISPLAY_DIGITAL = true؛ // بعد از پیمایش نمایش زمان دیجیتال را روشن کنید.

پیمایش زمان:

من از سرور زمان در اینترنت با استفاده از NTP (پروتکل زمان شبکه) زمان می گیرم. زمان در متغیری به نام timeinfo نگه داشته می شود و ما ساعت و دقیقه را از آن دریافت می کنیم

ساعت int = timeinfo.tm_hour؛ /// 0-23

دقیقه int = timeinfo.tm_min؛ // 0-59

بعد از ظهر یا عصر را بررسی کنید

AM آن ساعت <12 است

من رشته ای به نام "theTime" ایجاد می کنم و آن را با این عبارت شروع می کنم:

theTime = "این" است ؛

برای بدست آوردن عدد به عنوان کلمه ، مجموعه ای از کلمات را برای اعداد تا 30 ایجاد کردم

const char *اعداد = {

"0" ، "یک" ، "دو" ، "سه" ، "چهار" ، "پنج" ، "شش" ، "هفت" ، "هشت" ، "نه" ، "ده" ، "یازده" ، "دوازده" "،" سیزده "،" چهارده "،" ربع "،" شانزده "،" هفده "،" هجده "،" نوزده "،" بیست "،" بیست و یک "،" بیست و دو "،" بیست و سه "،" بیست و چهار "،" بیست و پنج "،" بیست و شش "،" بیست و هفت "،" بیست و هشت "،" بیست و نه "،" نیمه گذشته "} ؛

بنابراین وقتی ساعت 12:05 یا پنج دقیقه از دوازده گذشته است واقعاً به آردوینو می رسد

اعداد [5] دقیقه از اعداد گذشته [12]

برای تعیین اینکه آیا "Minutes Past" یا "Minutes To" آن فقط به صورتجلسه نگاه می کنیم. اگر دقیقه <31 باشد "دقیقه گذشته" است اگر دقیقه بیشتر از 31 باشد از "دقیقه به" استفاده می کنیم اما از اعداد [60 دقیقه] استفاده می کنیم بنابراین 12:50 دقیقه 60-50 دقیقه است یا اعداد [10] که به ما 10 دقیقه تا 12 ساعت 0 بدهید.

البته قوانین دیگری نیز وجود دارد مانند 15 ، 30 ، 45 ، ما از دقیقه فقط نیم یا یک چهارم استفاده نمی کنیم و اگر دقیقه 0 باشد ، زمان فقط "ساعت ده" یا ظهر است.

بنابراین برای جمع آوری آن ، همه موارد را به String theTime اضافه می کنم و سپس روی ماتریس LED نمایش می دهم. من از چند دستور If استفاده می کنم. احتمالاً باید از کیس استفاده می کردم اما افزودن آنها ساده تر بود.

برای مثال ما 12:05

theTime = "این"

اگر دقیقه <31 از "دقیقه گذشته" استفاده کنید در غیر این صورت "دقیقه به"

theTime + = اعداد [5] + "Minutes Past" + شماره [12] + "O'Clock" // توجه: نماد + = ضمیمه شده است.

در ادامه ساعت را بررسی می کنیم تا مشخص شود صبح ، بعد از ظهر یا عصر است.

theTime+= "عصر"

رشته نهایی که به ماتریس می رود عبارت است از:

"پنج دقیقه از دوازده و نیم عصر گذشته است"

نوشتن این پروژه بسیار سرگرم کننده بود. اگر دوست دارید لطفا روی قلب کلیک کنید و به من رای دهید لطفا.

توصیه شده: