במדריך זה נלמד על שעון זמן אמת (RTC) והממשק שלו לתצוגת ESP32 ו- OLED.
אנו נשתמש במודול DS3231 RTC כדי לעקוב אחר הזמן הנכון ולהציג אותו ב- SPI OLED באמצעות ESP32 כמיקרו-בקר שלנו. ESP32 הוא יותר ממיקרו-בקר. יש בו Wi-Fi ושבב Bluetooth ו -39 סיכות GPIO. הוא תומך בכל פרוטוקולי התקשורת כמו SPI, I2C, UART וכו '. אם אתה חדש ב- ESP32, תחילה עיין במדריך התחלת העבודה עם ESP32.
מה זה RTC ??
DS3231 הוא מודול RTC (שעון זמן אמת). הוא משמש לשמירת התאריך והשעה עבור מרבית פרויקטים של אלקטרוניקה. למודול זה יש ספק כוח מטבע משלו באמצעותו הוא שומר על התאריך והשעה גם כאשר הכוח הראשי מוסר או שה- MCU עבר איפוס קשה. אז ברגע שנקבע את התאריך והשעה במודול זה הוא יעקוב אחריו תמיד. ישנם מספר סוגים של RTC ICs זמינים כמו DS1307, DS3231 וכו '.
בעבר השתמשנו ב- DS3231 RTC עם Arduino בפרויקטים הבאים:
- מזין חיות מחמד אוטומטי באמצעות ארדואינו
- לוגר נתונים של ארדואינו
הערה: בעת שימוש במודול זה בפעם הראשונה עליך להגדיר את התאריך והשעה. אתה יכול גם להשתמש ב- RTC IC DS1307, בעבר השתמשנו ב- DS1307 עם Arduino.
היכרות עם תצוגות OLED:
המונח OLED מייצג " דיודה פולטת אור אורגני" הוא משתמש באותה טכנולוגיה המשמשת ברוב הטלוויזיות שלנו אך יש בה פחות פיקסלים בהשוואה אליהן. זה ממש כיף לקבל את המודולים התצוגיים המגניבים האלה מכיוון שזה יגרום לפרויקטים שלנו להיראות מגניבים. סקרנו כאן מאמר מלא על תצוגות OLED וסוגיה.
אנו משתמשים בתצוגת OLED מונו-כרום 7 פינים SSD1306 0.96 אינץ '. הסיבה לבחירת תצוגה זו היא שהיא יכולה לעבוד על שלושה פרוטוקולי תקשורת שונים כגון מצב חוט SPI 3, מצב ארבעה חוטים SPI ומצב IIC. מדריך זה יכסה כיצד להשתמש במודול במצב SPI בעל 4 חוטים מכיוון שהוא המצב המהיר ביותר של תקשורת ומצב ברירת המחדל.
הסיכות ותפקידיה מוסברים בטבלה שלהלן.
מספר סיכה |
שם סיכה |
שמות אחרים |
נוֹהָג |
1 |
Gnd |
קרקע, אדמה |
סיכת קרקע של המודול |
2 |
Vdd |
Vcc, 5V |
פינת חשמל (נסבלת 3-5 V) |
3 |
SCK |
D0, SCL, CLK |
פועל כסיכת השעון. משמש גם ל- I2C וגם ל- SPI |
4 |
SDA |
D1, MOSI |
סיכת נתונים של המודול. משמש גם ל- IIC וגם ל- SPI |
5 |
RES |
RST, RESET |
מאפס את המודול (שימושי במהלך SPI) |
6 |
זֶרֶם יָשָׁר |
A0 |
סיכת פקודת נתונים. משמש לפרוטוקול SPI |
7 |
CS |
בחר שבב |
שימושי כאשר משתמשים ביותר ממודול אחד תחת פרוטוקול SPI |
במדריך זה פשוט נפעיל את המודול במצב SPI עם 4 חוטים, את השאר נשאיר להדרכה אחרת.
קהילת ארדואינו כבר נתנה לנו הרבה ספריות שניתן להשתמש בהן ישירות כדי להפוך את זה להרבה יותר פשוט. ניסיתי כמה ספריות ומצאתי שספריית Adafruit_SSD1306 הייתה קלה מאוד לשימוש והיתה לה קומץ אפשרויות גרפיות ולכן נשתמש בהן במדריך זה. עם זאת, אם לפרויקט שלך יש מגבלת זיכרון / מהירות נסה להשתמש בספריית U8g מכיוון שהוא עובד מהר יותר ותופס פחות זיכרון תוכנית.
יש לנו גם ממשק OLED עם פטל pi ועם Arduino.
חומר נדרש:
- ESP32
- מודול DS3231 RTC
- 7 פינים 128 × 64 מודול תצוגת OLED (SSD1306)
- חוטי זכר-נקבה
- קרש לחם
תרשים מעגל:
תרשים מעגלים לחיבור RTC3231 ללוח ESP מוצג להלן:
RTC DS3231 IC משתמש במצב תקשורת I2C. יש לו סיכות SCL, SDA, Vcc ו- GND שיוצאות ממנו. חיבור של מודול RTC עם ESP32 ניתן להלן:
- SCL של RTC -> SCL של ESP32 כלומר פין D22
- SDA של RTC -> SDA של ESP32 כלומר פין D21
- GND של RTC -> GND של ESP32
- Vcc של RTC -> Vcc של ESP32
כאן אנו משתמשים במצב SPI כדי לחבר את מודול התצוגה OLED 128 × 64 (SSD1306) ל- ESP32. אז זה ישתמש בשבעה פינים. חיבורים עם ESP32 ניתנים כ:
- סיכת CS (שבב בחר) של OLED -> PIN D5 של ESP32
- סיכת DC של OLED -> PIN D4 של ESP32
- סיכת RES של OLED -> PIN D2 של ESP32
- סיכת SDA של OLED -> PIN D23 כלומר MOSI של ESP32
- סיכת SCK של OLED -> PIN D18 כלומר SCK של ESP32
- Vdd של OLED -> Vcc של ESP32
- GND של OLED -> GND של ESP32
אתה זקוק לקבצי לוח עבור ה- ESP32 שלך. בדוק בתפריט הנפתח של מנהל הלוח של ערכת Arduino IDE עבור ערכת dev ESP32. אם זה לא שם, בצע את השלבים המופיעים בקישור למטה:
circuitdigest.com/microcontroller-projects/getting-started-with-esp32-with-arduino-ide
אתה יכול גם להשתמש ב- ESP12 לפרויקט זה, למד כאן להשתמש ב- ESP12.
הסבר קוד:
קוד מלא ל- ESP32 ניתן בסוף המאמר. כאן אנו מסבירים כמה חלקים חשובים בקוד.
אנו זקוקים למספר ספריות כדי להשתמש בקוד שלנו, אותו ניתן להוריד מהקישורים הבאים:
1. Adafruit_SSD1306:
2. SPI:
3. Adafruit_GFX:
4. RTClib:
אז צירפנו את כל הספריות
#לִכלוֹל
ואז הגדר את כל הפינים של 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);
בשנת ההתקנה פונקציה, אנחנו נתקשר פונקציה rtc.adjust (DateTime (__ DATE__, __TIME__)) אשר תקבע את הזמן בהתאם לזמן PC שלנו.
הגדרת חלל () { Serial.begin (9600); אם (! rtc.begin ()) { Serial.println ("לא נמצא RTC"); ואילו (1); } rtc.adjust (DateTime (__ DATE__, __TIME__));
לאחר מכן אנו קוראים לפונקציות תצוגה להצגה ב- OLED.
display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay (); display.setTextColor (WHITE); //display.startscrollright(0x00, 0x0F); // ניתן לבטל את התגובה של השורה הזו כדי לגלול את הטקסט בתצוגה של oled . SetTextSize (2); display.setCursor (0,5); display.print ("שעון"); // זה יציג שעון ב- OLED למשך 3 שניות display.display (); עיכוב (3000); }
ואז סוף סוף בפונקציית לולאה , נאחסן את הזמן שלנו במשתנה מוגדר מראש כעת ונציג את השעה באמצעות פונקציות תצוגה כמו setTextSize, setCursor וכו '. הגדר אלה בהתאם לצורך שלך והשתמש בפונקציה display.println כדי להציג ב- OLED.
loop loop () { DateTime now = rtc.now (); display.clearDisplay (); display.setTextSize (2); display.setCursor (75,0); display.println (now.second (), DEC);
אז ככה תוכלו להציג זמן ב- OLED באמצעות ESP32 וכידוע ESP ידועה ביכולות ה- IoT שלה, כך שתוכלו להשתמש בזה כדי לפרסם את הזמן באינטרנט. במאמר הבא אנו נראה לכם להציג את זמן האינטרנט ב- ESP מבלי להשתמש במודול RTC כלשהו.