ESP32 นาฬิกาเรียลไทม์ (RTC) โดยใช้ DS1307 และจอแสดงผล OLED

Esp32 Nalika Rei Yl Thim Rtc Doy Chi Ds1307 Laea Cxsae Dng Phl Oled



ESP32 มาพร้อมกับโมดูล RTC ในตัว แต่จะใช้งานได้เมื่อมีพลังงานเท่านั้น หากไฟฟ้าดับ นาฬิกาจะถูกรีเซ็ตและไม่สามารถรักษาเวลาที่ถูกต้องได้ ดังนั้นหากคุณต้องการติดตามเวลาหรือควบคุมอุปกรณ์ที่อิงตามเวลา ให้ลองใช้เซ็นเซอร์ DS1307 RTC อย่างไรก็ตาม คุณอาจกำลังคิดที่จะเชื่อมต่อแบตเตอรี่สำรองกับบอร์ด ESP32 ของคุณ แต่นั่นไม่ใช่กรณีที่ดีที่สุดหากคุณไฟฟ้าดับ ทางเลือกที่ดีที่สุดคือการใช้เซ็นเซอร์ DS1307 เนื่องจากมีแบตเตอรี่ในตัวซึ่งสามารถใช้งานได้อย่างน้อยหนึ่งปี

เพื่อให้สิ่งต่าง ๆ ชัดเจน นาฬิกาเรียลไทม์ (RTC) ภายในของ ESP32 สามารถติดตามเวลาได้แม้ว่าโปรเซสเซอร์หลักจะปิดอยู่หรืออยู่ในโหมดสลีปก็ตาม คุณสามารถใช้ ESP32 RTC เพื่อติดตามเวลาโดยไม่ต้องใช้พลังงานมากหรือส่งผลกระทบต่อโปรเซสเซอร์หลัก แต่ มันยังต้องใช้พลังงานในการทำงานไม่มากนัก แต่ต้องใช้พลังงานขั้นต่ำเพื่อให้ RTC ภายในทำงานได้

ด้วยเหตุนี้ เราจึงเหลือเพียงวิธีแก้ปัญหาในการใช้โมดูล RTC ภายนอกเท่านั้น มาดูขั้นตอนการเชื่อมต่อบอร์ด ESP32 กับโมดูล DS1307 RTC กัน







สารบัญ:

1. โมดูล RTC DS1307 คืออะไร

DS1307 เป็นอุปกรณ์ที่ใช้พลังงานต่ำซึ่งสามารถติดตามเวลาและวันที่ได้อย่างแม่นยำ ใช้รูปแบบทศนิยมแบบไบนารี (BCD) สามารถบอกเวลาในรูปแบบรายละเอียด เช่น วินาที นาที แม้กระทั่งชั่วโมงและวัน คุณยังสามารถพิมพ์วันที่ในรูปแบบเต็ม เช่น เดือนและปีได้ นอกจากนี้ยังรู้ว่าเมื่อใดเป็นปีอธิกสุรทินจนถึง 2100 หากต้องการสื่อสารกับ DS1307 คุณสามารถใช้โปรโตคอล I2C





DS1307 มีแบตเตอรี่ในตัวซึ่งสามารถจ่ายไฟได้ประมาณหนึ่งปีโดยไม่ต้องใช้แหล่งจ่ายไฟ 5V ภายนอก การใช้แบตเตอรี่สำรองนี้สามารถรักษาเวลาได้แม้ในขณะที่ปิดเครื่องหลัก นอกจากนี้ยังมี SRAM ขนาด 56 ไบต์เพื่อจัดเก็บข้อมูลบางส่วน DS1307 เป็นอุปกรณ์พกพาสะดวกที่มีแอปพลิเคชันมากมายเมื่อใช้ร่วมกับบอร์ด Arduino หรือ ESP32 ตัวอย่างเช่น ข้อมูลนี้จะมีประโยชน์ในการบันทึกข้อมูล ระบบเตือนภัย หรือการควบคุมทางอุตสาหกรรม หากคุณต้องการการบอกเวลาที่เชื่อถือได้ DS1307 เป็นตัวเลือกที่ยอดเยี่ยม





ข้อมูลจำเพาะของโมดูล RTC DS1307

โมดูล RTC DS1307 ประกอบด้วย RTC IC, EEPROM, คริสตัลออสซิลเลเตอร์ และที่ใส่แบตเตอรี่สำหรับสำรองข้อมูล



ด้านล่างนี้เป็นรายละเอียดของส่วนเหล่านี้:

DS1307 อาร์ทีซีไอซี : DS1307 RTC IC เป็นชิป 8 พินที่ติดตามเวลาและวันที่โดยใช้โปรโตคอล I2C ใช้พลังงานน้อยมาก น้อยกว่า 500nA สามารถแสดงเวลาเป็นวินาที นาที ชั่วโมง และวันที่เป็นวัน เดือน และปี นอกจากนี้ยังสามารถสลับระหว่างรูปแบบ 24 ชั่วโมงและ 12 ชั่วโมงได้อีกด้วย

24C32 อีพรอมไอซี : 24C32 EEPROM IC เป็นชิปขนาด 32 ไบต์จาก Atmel ที่เก็บการตั้งค่า เวลา และวันที่ นอกจากนี้ยังใช้โปรโตคอล I2C

คริสตัล 32.768kHz : คริสตัลออสซิลเลเตอร์ 32.768kHz ให้ความถี่สัญญาณนาฬิกาสำหรับ DS1307 RTC IC

ที่ใส่แบตเตอรี่ : ที่วางแบตเตอรี่บรรจุแบตเตอรี่ CR2032 เป็นเซลล์แบบเหรียญลิเธียม 3V มันจ่ายพลังงานอย่างต่อเนื่องให้กับ DS1307 RTC IC

การจัดหาเซ็นเซอร์ DS18B20 : การจัดหาเซ็นเซอร์ DS18B20 ช่วยให้คุณสามารถบัดกรีและใช้เซ็นเซอร์อุณหภูมิ DS18B20 ได้ มันไม่ได้ถูกบัดกรีล่วงหน้า คุณสามารถบัดกรีแพ็คเกจทะลุผ่านและรับอุณหภูมิจากพิน DS ของโมดูล

รายการด้านล่างแสดงข้อมูลจำเพาะโดยย่อของเซ็นเซอร์ DS1307 RTC:

  • แรงดันไฟฟ้า: 4.5–5.5 V โดยทั่วไปคือ 5 V
  • การบริโภคในปัจจุบัน : น้อยกว่า 1.5 มิลลิแอมป์
  • ความแม่นยำ : 0–40 °C ขึ้นอยู่กับคริสตัล
  • แบตเตอรี่ : CR2032 (เหรียญ 3V)
  • หน่วยความจำ : RAM แบบไม่ลบเลือน 56 ไบต์
  • อินเตอร์เฟซ : อินเทอร์เฟซแบบอนุกรมแบบสองสาย (I2C)
  • เอาท์พุต : ขาเอาต์พุต 1 เฮิร์ตซ์
  • เอาต์พุตคลื่นสี่เหลี่ยมที่ตั้งโปรแกรมได้ : กินไฟน้อยกว่า 500 nA ในโหมดแบตเตอรี่สำรอง
  • การตรวจจับไฟฟ้าขัดข้อง : การตรวจจับไฟฟ้าขัดข้องอัตโนมัติและวงจรสวิตช์
  • วงจรรับรู้กำลัง : สามารถสลับอัตโนมัติเพื่อสำรองแหล่งจ่ายไฟเมื่อไฟฟ้าดับ
  • เงินชดเชยปีอธิกสุรทิน : ใช้ได้จนถึงปี 2100

การปักหมุดโมดูล RTC DS1307

โมดูลนี้มีพินหลายพินพร้อมฟังก์ชันที่แตกต่างกัน

  • วีซีซี เป็นพินที่ต้องการแรงดัน DC ระหว่าง 3.3V ถึง 5.5V เพื่อจ่ายไฟให้กับโมดูล
  • จีเอ็นดี เป็นขาพินสำหรับแรงดันไฟต่ำหรือกราวด์
  • สดีเอ และ เอสซีแอล เป็นขาสื่อสารข้อมูลและสัญญาณนาฬิกาผ่านบัส I2C
  • ดีเอส คือพินที่ใช้วัดอุณหภูมิด้วยเซนเซอร์ DS1307 หากคุณมีอยู่บนโมดูล RTC
  • ตร.ม คือพินที่สร้างสัญญาณคลื่นสี่เหลี่ยมที่มีความถี่ 1 Hz, 4 kHz, 8 kHz หรือ 32 kHz ขึ้นอยู่กับวิธีที่คุณตั้งโปรแกรม
  • หนึ่ง เป็นพินที่ใช้แบตเตอรี่ 3V เพื่อให้เวลาแม่นยำเมื่อปิดไฟหลัก

2. วิธีเชื่อมต่อ RTC DS1307 และจอแสดงผล OLED กับ ESP32

หากต้องการเชื่อมต่อ ESP32 กับ DS1307 และจอแสดงผล OLED คุณสามารถใช้พิน I2C ในตัวของบอร์ด ESP32 ได้ ทั้งจอแสดงผล DS1307 และ OLED เป็นอุปกรณ์ที่ใช้ I2C จากนั้นสามารถสื่อสารโดยใช้โปรโตคอลทาสหลัก I2C บนบัส I2C

ก่อนที่เราจะก้าวไปสู่การเชื่อมต่อของ ESP32 กับ DS1307 และจอแสดงผล OLED ก่อนอื่นคุณต้องติดตั้งไลบรารีที่จำเป็นก่อน

การติดตั้งไลบรารีที่จำเป็น

คุณจะต้องมีไลบรารีสองไลบรารี ไลบรารีหนึ่งสำหรับโมดูล RTC และอีกไลบรารีสำหรับจอแสดงผล OLED การใช้ OLED กับโมดูล RTC คุณสามารถสร้างตัวอย่างนาฬิกาแบบโต้ตอบที่น่าทึ่งได้ หากคุณไม่มีแผนที่จะแสดงเวลาบนหน้าจอ คุณสามารถข้ามการติดตั้งไลบรารีนี้ได้

ต่อไปนี้เป็นห้องสมุดสองแห่งที่คุณต้องการ:

  • RTClib (โดย Adafruit) เป็นไลบรารี Arduino IDE สำหรับตั้งค่าและรับเวลาจาก RTC นอกจากนี้ยังมีคลาสสำหรับจัดการวันที่ เวลา และระยะเวลาอีกด้วย เมื่อใช้ไลบรารีนี้ คุณสามารถเชื่อมต่อและตั้งโปรแกรมโมดูลนาฬิกาเรียลไทม์ (RTC) เช่น DS1307 และ DS3231
  • SD1306 (โดย Adafruit) เป็นไลบรารีสำหรับ Arduino ซึ่งคุณสามารถเชื่อมต่อและตั้งโปรแกรมจอแสดงผล OLED กับ Arduino หรือบอร์ดไมโครคอนโทรลเลอร์อื่นๆ ได้

หากต้องการดาวน์โหลดและติดตั้งไลบรารีทั้งสองนี้ใน Arduino IDE ก่อนอื่นให้เปิดไฟล์ ผู้จัดการห้องสมุด ค้นหาไลบรารี RTClib แล้วคลิก ติดตั้ง -

คุณจะได้รับตัวเลือกในการติดตั้งเฉพาะไลบรารีหรือการอ้างอิงเท่านั้น คลิก ติดตั้งทั้งหมด ปุ่มเพื่อติดตั้งไลบรารี่ให้สมบูรณ์ วิธีนี้คุณจะไม่ได้รับข้อผิดพลาดใดๆ หากคุณแก้ไขโค้ดซึ่งขึ้นอยู่กับการขึ้นต่อกันของไลบรารีนี้

ในทำนองเดียวกัน ให้ค้นหาไลบรารี SSD1306 ไลบรารีนี้จำเป็นสำหรับจอแสดงผล OLED คลิก ติดตั้ง เพื่อดำเนินการต่อ.

ครั้งนี้คุณจะได้รับข้อความยืนยันเดียวกัน คลิกที่ ติดตั้งทั้งหมด ตัวเลือก.

ขณะนี้ทั้งไลบรารีสำหรับ OLED และ DS1307 ได้รับการติดตั้งและพร้อมใช้งานแล้ว แต่ก่อนหน้านั้น ก่อนอื่น ให้ค้นหาที่อยู่ I2C สำหรับจอแสดงผล OLED

3. ค้นหาที่อยู่ I2C ของจอแสดงผล OLED

ที่อยู่ I2C เป็นตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละอุปกรณ์บนบัส I2C ช่วยให้อุปกรณ์หลักสื่อสารกับอุปกรณ์ทาสเฉพาะโดยการส่งข้อมูลไปยังที่อยู่ของมัน วัตถุประสงค์ของที่อยู่ I2C คือเพื่อหลีกเลี่ยงความขัดแย้งและความสับสนระหว่างอุปกรณ์หลายตัวบนบัสเดียวกัน

หากต้องการรับที่อยู่ของอุปกรณ์ I2C คุณสามารถใช้ ร่างง่ายๆ ที่สแกนบัสและพิมพ์ที่อยู่ ของอุปกรณ์ที่พบ หรือคุณสามารถตรวจสอบเอกสารข้อมูลของอุปกรณ์เพื่อดูที่อยู่เริ่มต้นหรือที่อยู่ที่สามารถกำหนดค่าได้

ในกรณีของเราหลังจากรันโค้ดสแกนเนอร์ I2C แล้ว ที่อยู่ I2C ต่อไปนี้ของหน้าจอ OLED จะแสดงบนเทอร์มินัล Arduino IDE

โดยส่วนใหญ่มีโอกาสสูงที่คุณจะได้รับเช่นเดียวกัน 0x3C ที่อยู่สำหรับหน้าจอ OLED ของคุณ

4. การเชื่อมต่อโมดูล OLED และ RTC DS1307 กับ ESP32

1. เชื่อมต่อพิน SDA และ SCL ของทั้งโมดูล DS1307 และ จอแสดงผล OLED ไปยังพิน I2C ของ ESP32 โดยปกติ, เหล่านี้คือ GPIO 21 และ GPIO 22 แต่คุณสามารถกำหนดพินอื่น ๆ ลงในโค้ดได้เช่นกันหากจำเป็น

2. เชื่อมต่อทั้ง VCC และ GND ของ DS1307 และจอแสดงผล OLED เข้ากับพิน 3.3V และ GND ของ ESP32

3. ใส่แบตเตอรี่เซลล์แบบเหรียญ CR2032 ลงในโมดูล DS1307 เพื่อให้มีพลังงานสำรองสำหรับนาฬิกาแบบเรียลไทม์

4. อัปโหลดโค้ดตัวอย่างจากบทช่วยสอนนี้ไปยังบอร์ด ESP32 ของคุณ แก้ไขโค้ดสำหรับเอาต์พุตแบบกำหนดเอง

หลังจากอัพโหลดแล้ว นาฬิกาจะเริ่มตามเวลาที่ตั้งไว้และแสดงเวลาบนหน้าจอ OLED

5. แผนภาพวงจร

แผนภาพวงจรของ ESP32 กับ DS1307 นั้นเรียบง่าย โดยมีสายไฟเพียงสี่เส้นที่ต้องเชื่อมต่อ คุณสามารถย่อสาย I2C SDA และ SCL ของเซ็นเซอร์ทั้ง OLED และ DS1307 ให้สั้นลงได้ ในทำนองเดียวกัน ในการเปิดเครื่องเซ็นเซอร์ทั้งสองนี้ สามารถใช้พิน 3V3 และ GND ของบอร์ด ESP32 ได้ คุณยังสามารถจ่ายไฟจากแหล่งแยกต่างหากได้หากจำเป็น

บันทึก : สามารถจ่ายไฟให้ RTC DS1307 จากพิน 3.3V ของ ESP32 ได้อย่างปลอดภัย หากไม่เกินขีดจำกัดปัจจุบันของ ESP32 แต่หากคุณต้องการอยู่ในสถานที่ที่ปลอดภัย คุณสามารถใช้แหล่งพลังงานแยกต่างหากสำหรับโมดูล RTC หรือลองใช้เซ็นเซอร์ DS3231 พลังงานต่ำซึ่งมีช่วงการทำงานอยู่ระหว่าง 3.3 ถึง 5.5 VDC

ภาพด้านล่างแสดงการเชื่อมต่อของ ESP32 กับเซ็นเซอร์ RTC DS1307

ในทำนองเดียวกัน หากคุณต้องการเชื่อมต่อหน้าจอ OLED เพื่อแสดงเวลา คุณสามารถใช้พิน I2C และพินเพาเวอร์ของบอร์ด ESP32 เดียวกันได้

6. รหัส

เราจะตั้งค่าวันที่และเวลาปัจจุบันบน RTC โดยใช้โค้ดด้านล่าง หลังจากตั้งเวลาแล้ว โค้ดจะแสดงเวลาบนเทอร์มินัล Arduino IDE ก่อนที่คุณจะอัปโหลดโค้ด คุณต้องอัปเดตโค้ดด้วยวันที่และเวลาปัจจุบันของคุณ

#รวม 'RTClib.h'
RTC_DS1307 DS1307_RTC;
ถ่าน Week_days - 7 - - 12 - - - 'วันอาทิตย์' - 'วันจันทร์' - 'วันอังคาร' - 'วันพุธ' - 'วันพฤหัสบดี' - 'วันศุกร์' - 'วันเสาร์' - -
การตั้งค่าเป็นโมฆะ - - -
อนุกรม.begin - 115200 - -
#ifndefESP8266
ในขณะที่ - - อนุกรม - -
#เอ็นดิฟ
ถ้า - - DS1307_RTC.เริ่มต้น - - - -
Serial.println - 'ไม่พบ RTC' - -
ในขณะที่ - 1 - -
-
DS1307_RTC.ปรับ - วันเวลา - เอฟ - __วันที่__ - , เอฟ - __เวลา__ - - - -
-
ห่วงเป็นโมฆะ - - -
วันที่และเวลาตอนนี้ = DS1307_RTC.now - - -
อนุกรม.พิมพ์ - ตอนนี้ปี - - , ธ.ค - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - ตอนนี้.เดือน - - , ธ.ค - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - ตอนนี้.วัน - - , ธ.ค - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - สัปดาห์_วัน - now.dayOfTheWeek - - - - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - ตอนนี้.ชั่วโมง - - , ธ.ค - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - ตอนนี้นาที - - , ธ.ค - -
อนุกรม.พิมพ์ - - - -
อนุกรม.พิมพ์ - ตอนนี้วินาที - - , ธ.ค - -
Serial.println - - -
ล่าช้า - 1,000 - -
-

รหัสนี้ใช้ ไลบรารี RTClib เพื่อเชื่อมต่อกับโมดูลนาฬิกาแบบเรียลไทม์ DS1307 ที่คอยติดตามวันที่และเวลา

ที่ ติดตั้ง ฟังก์ชั่นเริ่มต้นด้วยการเริ่มต้นอัตรารับส่งข้อมูล หลังจากนั้น ในส่วนนี้ เราได้กำหนดฟังก์ชันเพื่อซิงค์วันที่และเวลาของคอมพิวเตอร์กับเซ็นเซอร์ DS1307 นี่จะอัปโหลดเวลาของการคอมไพล์โค้ดไปยังเซ็นเซอร์ RTC

คุณสามารถใช้ วนซ้ำ ฟังก์ชั่นรับวันที่และเวลาจาก RTC จากนั้น คุณสามารถแสดงผลบนมอนิเตอร์อนุกรมได้ดังนี้: ปี/เดือน/วัน (วันในสัปดาห์) ชั่วโมง:นาที:วินาที อย่าลืมเพิ่มการหน่วงเวลาหนึ่งวินาทีหลังจากแต่ละลูป เพื่อให้โค้ดไม่ได้ทำงานเร็วเกินไป

แสดงเวลาปัจจุบันบนจอแสดงผล OLED

หากต้องการแสดงเวลาเดียวกันบนหน้าจอ OLED เราต้องเพิ่มส่วนโค้ดพิเศษสำหรับหน้าจอ OLED เพียงอัปโหลดรหัสที่กำหนด รหัสนี้จะแสดงเวลาปัจจุบันบนหน้าจอ OLED ของคุณ

โปรดจำไว้ว่า เราใช้โมดูลแสดงผล OLED ขนาด 128×64 I2C SSD ขนาด 0.96 นิ้ว หากคุณใช้ขนาดอื่น ให้แก้ไขโค้ดตามนั้น ตรวจสอบที่อยู่ I2C และแก้ไขในรหัสที่กำหนด ในกรณีของเรา เรามีที่อยู่ I2C 0x3C สำหรับหน้าจอ OLED

#รวม
#รวม
#รวม
#รวม 'RTClib.h'
#กำหนด SCREEN_WIDTH 128
#กำหนด SCREEN_HEIGHT 64

จอแสดงผล Adafruit_SSD1306 - SCREEN_WIDTH, SCREEN_HEIGHT, - ลวด, - 1 - -
RTC_DS1307 อาร์ทีซี;
วันถ่าน - 7 - - 12 - - - 'วันอาทิตย์' - 'วันจันทร์' - 'วันอังคาร' - 'วันพุธ' - 'วันพฤหัสบดี' - 'วันศุกร์' - 'วันเสาร์' - -
การตั้งค่าเป็นโมฆะ - - -
อนุกรม.begin - 115200 - -
ถ้า - - RTC.เริ่มต้น - - - -
Serial.println - 'ไม่พบ RTC' - -
ในขณะที่ - 1 - -
-
RTC.ปรับ - วันเวลา - เอฟ - __วันที่__ - , เอฟ - __เวลา__ - - - -
ถ้า - - จอแสดงผล. เริ่มต้น - SSD1306_SWITCHCAPVCC, 0x3C - - -
Serial.println - เอฟ - 'การจัดสรร SSD1306 ล้มเหลว' - - -
สำหรับ - - - -
-
ล่าช้า - 1,000 - -
display.clearDisplay - - -
display.setTextSize - 2 - -
display.setTextColor - สีขาว - -
display.setCursor - 30 - ยี่สิบ - -
จอแสดงผล println - 'ลินุกซ์' - -
จอแสดงผล.จอแสดงผล - - -
ล่าช้า - 3000 - -
display.clearDisplay - - -
-
ห่วงเป็นโมฆะ - - -
DateTime ตอนนี้ = RTC.now - - -
display.clearDisplay - - -
display.setTextSize - 2 - -
display.setCursor - 0 - 0 - -
จอแสดงผลพิมพ์ - ตอนนี้.วัน - - - -
จอแสดงผลพิมพ์ - - - -
จอแสดงผลพิมพ์ - ตอนนี้.เดือน - - - -
จอแสดงผลพิมพ์ - - - -
จอแสดงผลพิมพ์ - ตอนนี้ปี - - - -
จอแสดงผล println - วัน - now.dayOfTheWeek - - - - -
จอแสดงผล println - - - -
display.setCursor - 0 - 40 - -
ถ้า - ตอนนี้.ชั่วโมง - - - 10 -
จอแสดงผลพิมพ์ - '0' - -
จอแสดงผลพิมพ์ - ตอนนี้.ชั่วโมง - - - -
จอแสดงผลพิมพ์ - - - -
ถ้า - ตอนนี้นาที - - - 10 -
จอแสดงผลพิมพ์ - '0' - -
จอแสดงผลพิมพ์ - ตอนนี้นาที - - - -
จอแสดงผลพิมพ์ - - - -
ถ้า - ตอนนี้วินาที - - - 10 -
จอแสดงผลพิมพ์ - '0' - -
จอแสดงผล println - ตอนนี้วินาที - - - -
จอแสดงผล.จอแสดงผล - - -
-

รหัสเริ่มต้นด้วยไลบรารีที่เราติดตั้งสำหรับ RTC และจอแสดงผล หลังจากนั้นจะกำหนดขนาดหน้าจอและที่อยู่ที่แสดง เริ่มต้นอาร์เรย์ด้วยชื่อวันทำงาน

ที่ ติดตั้ง ส่วนหนึ่งเริ่มต้นด้วยการสื่อสารแบบอนุกรม จะตรวจสอบว่า RTC และจอแสดงผลทำงานหรือไม่ หลังจากนั้นเราได้กำหนดข้อความสตริง 'Linuxhint' ที่จะแสดงเป็นเวลา 3 วินาที นี่เป็นข้อความเปิดหรือเริ่มต้นเท่านั้น คุณสามารถแก้ไขข้อความนี้ด้วยข้อความที่คุณกำหนดเองได้เช่นกัน

ที่ วนซ้ำ ฟังก์ชั่นรับวันที่และเวลาของโมดูล DS1307 หลังจากนั้นจะล้างจอแสดงผลและพิมพ์วันที่และเวลาในรูปแบบที่จัดรูปแบบไว้ รหัสยังเพิ่มเลขศูนย์นำหน้าให้กับชั่วโมง นาที และวินาที ในกรณีที่ค่าน้อยกว่า 10

7. ฮาร์ดแวร์

หลังจากอัปโหลดโค้ดไปยังบอร์ด ESP32 แล้ว คุณจะเห็นผลลัพธ์ต่อไปนี้บนหน้าจอ OLED สำหรับฮาร์ดแวร์ เราใช้หน้าจอ OLED และโมดูล I2C RTC DS1307 ใช้บอร์ด ESP32 แบบ 30 พิน คุณสามารถทดลองกับบอร์ด ESP32 อื่นๆ ได้เช่นกัน แต่ต้องแน่ใจว่าได้เชื่อมต่อพิน I2C อย่างถูกต้อง

บทสรุป

RTC DS1307 มี SRAM ขนาด 56 ไบต์พร้อมการรองรับแบตเตอรี่สำรอง เป็นอุปกรณ์ 8 พินที่ใช้โปรโตคอลการสื่อสาร I2C หากต้องการเชื่อมต่อโมดูล DS1307 RTC กับ ESP32 คุณสามารถใช้พิน I2C (GPIO 22 (SCL) และ GPIO 21 (SDA)) ของบอร์ด ESP32 ได้ คุณสามารถพิมพ์เวลาบนคอนโซล Arduino IDE หรือใช้หน้าจอใดก็ได้ เช่น OLED หรือ I2C LCD เพื่อแสดงเวลา โมดูล DS1307 RTC เป็นอุปกรณ์ที่มีประโยชน์สำหรับการติดตามเวลาและวันที่ในการใช้งานต่างๆ แอปพลิเคชันหลักบางแอปพลิเคชัน ได้แก่ เครื่องบันทึกข้อมูล นาฬิกาดิจิทัล และสมาร์ทวอทช์