آموزش Espآموزش اینترنت اشیاپروژه های Esp

پروژه نمایش ساعت و تاریخ با برد ESP32 در نمایشگر OLED

در این پروژه ESP32، ما از ماژول DS3231 برای دریافت زمان صحیح و نمایش آن در صفحه نمایش OLED SSD1306 استفاده میکنیم. ESP32 بیشتر از یک میکروکنترلر ساده است. ESP32 دارای تراشه بلوتوث و وایفای داخلی و همچنین دارای 39 پین GPIO است. این میکروکنترلر از تمام پروتکل های ارتباطی مانند SPI، I2C، UART و … پشتیبانی میکند. اگر در زمینه ESP32 تازه کار هستید، آموزش برنامه نویسی ESP32 را مشاهده کنید.

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

شماتیک مدار پروژه ساعت و تاریخ با ESP32

شماتیک مدار برای اتصال RTC3231 به برد ESP در زیر آورده شده است، RTC DS3231 از پروتکل ارتباطی I2C استفاده می کند و دارای پین های SCL ، SDA ، Vcc و GND است.

مدار پروژه ساعت و تاریخ با ESP32

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

اتصالات ماژول RTC با برد ESP32 در زیر آمده است :

SCL از RTC -> SCL از ESP32 (پین D22)

SDA از RTC -> SDA از ESP32 (پین D21)

GND RTC -> GND ESP3

Vcc از RTC -> Vcc ESP32

در اینجا ، ما از حالت SPI برای اتصال ماژول نمایشگر  OLED SSD1306 به ESP32 استفاده می کنیم. بنابراین ، از 7 پین استفاده خواهیم کرد. اتصالات با ESP32 به شرح زیر است:

  1. CS Chip select پین از OLED -> پین D5 از ESP32
  2. DC از OLED -> پین D4 از ESP32
  3. RES از OLED -> پین D2 از ESP32
  4. SDA از OLED -> پین D23 MOSI از ESP32
  5. SCK از OLED -> پین D18 SCK از ESP32
  6. Vdd از OLED -> Vcc از ESP32
  7. GND از OLED -> GND از ESP32

همچنین می توانید برای این پروژه از ESP12 استفاده کنید.

ماژول DS3231 چیست؟

DS3231 یک ماژول RTC = Real Time Clock است و برای حفظ تاریخ و زمان برای اکثر پروژه های الکترونیک استفاده می شود. این ماژول دارای منبع تغذیه باتری سکه ای خاص خود است که با استفاده از آن تاریخ و زمان را حتی در صورت حذف برق اصلی یا میکروکنترلر، حفظ می کند.

ماژول DS3231 چیست؟

 

توضیحات ماژول نمایشگر OLED SSD1306 64*128

اصطلاح OLED مخفف Organic Light emitting diode است به معنی دیود تابش نور ارگانیک. این نوع صفحه نمایشگر ها از همان فناوری استفاده شده در بیشتر تلویزیون ها استفاده میکنند اما نسبت به آنها پیکسل های کمتری دارند. استفاده از این نمایشگر ها باعث جذاب تر شدن پروژه های ما میشود. در اینجا ، ما از یک صفحه نمایش OLED تک رنگ 4 پین SSD1306 سایز 0.96 اینچ استفاده می کنیم. این صفحه نمایش فقط می تواند در حالت I2C کار کند.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

ماژول نمایشگر OLED SSD1306 64*128

پین های نمایشگر OLED

  • VCC = ولتاژ 3.3
  • GND = GND
  • SDA = پین فیزیکی 3 (SDA)
  • SCL = پین فیزیکی 5 (SCL)

ما در این پروژه از کتابخانه گرافیکی Adafruit_SSD1306 استفاده کردیم که میتوانید آن را از این لینک دانلود کنید : دانلود کتابخانه های ماژول نمایشگر OLED SSD1306 64*128 + مشخصات

قطعات مورد نیاز

  1. برد ESP32
  2. ماژول DS3231 RTC
  3. ماژول صفحه نمایش 128×64 OLED SSD1306
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

کد پروژه نمایش ساعت و تاریخ در نمایشگر با ESP32

کد کامل پروژه در انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

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

در ابتدای کد ما تمامی کتابخانه های مورد نیاز را فراخوانی میکنیم.

#include <SPI.h>   // برای نمایشگر OLED
#include <Wire.h>  // برای ماژول RTC
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>  
#include "RTClib.h"       // برای نمایش زمان

سپس پین های OLED را تعیین میکنیم. شما نیازی به تعیین پین برای ماژول RTC ندارید زیرا این پین ها قبلاً در کتابخانه WIRE تعریف شده اند.

#define OLED_MOSI  23
#define OLED_CLK   18
#define OLED_DC    4
#define OLED_CS    5
#define OLED_RESET 2
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

در تابع void setup ، ما یک تابع rtc.adjust (DateTime (__ DATE__ ، __TIME__)) می آوریم که زمان را مطابق با زمان رایانه ما تنظیم می کند.

void setup() 
{
Serial.begin(9600);

if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}

rtc.adjust(DateTime(__DATE__, __TIME__));

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

display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.setTextColor(WHITE);
//display.startscrollright(0x00, 0x0F); // اگر دو اسلش را بردارید متن اسکرول میشود        
display.setTextSize(2);
display.setCursor(0,5);
display.print("  Clock "); //نمایش کلمه برای 3 ثانیه
display.display();
delay(3000);
}

سپس در نهایت در تابع loop ، زمان خود را در متغیر از پیش تعریف شده DateTime ذخیره می کنیم و زمان را با استفاده از توابع نمایشگر مانند setTextSize ، setCursor و … نمایش می دهیم. اینها را مطابق نیاز خود تنظیم کنید و از عملکرد display.println استفاده کنید تا در OLED نمایش داده شود.

void loop()
{
DateTime now = rtc.now();

display.clearDisplay();
display.setTextSize(2);
display.setCursor(75,0);
display.println(now.second(), DEC);

بنابراین بدین ترتیب است که می توانید با استفاده از ESP32 زمان را در نمایشگر OLED نمایش دهید و همانطور که می دانید ESP به دلیل قابلیت های اینترنت اشیا بسیار شناخته شده است ، بنابراین می توانید از این طریق برای انتشار زمان در اینترنت استفاده کنید.

موارد موجود در فایل : سورس کامل ، شماتیک

دانلود فایل های پروژه

برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

تصویر از محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *