ESP32 Module RTC DS1307

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng module RTC DS1307 với ESP32. Cụ thể, chúng ta sẽ học các chủ đề sau:

Linh Kiện Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Module Real-Time Clock DS1307
1×Pin CR2032
1×Dây Jumper
1×breadboard
1×(Tùy chọn) DC Power Jack
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Module Real-Time Clock DS1307

Bản thân ESP32 có một số hàm liên quan đến thời gian như millis(), micros(). Tuy nhiên, chúng không thể cung cấp ngày tháng và thời gian (giây, phút, giờ, thứ, ngày, tháng và năm). Để lấy ngày tháng và thời gian, chúng ta cần sử dụng module Real-Time Clock (RTC) như DS3231, DS1370. Module DS3231 có độ chính xác cao hơn DS1370. Xem DS3231 vs DS1307

Sơ Đồ Chân

Module Real-Time Clock DS1307 có 12 chân. Tuy nhiên, để sử dụng bình thường, chỉ cần sử dụng 4 chân: VCC, GND, SDA, SCL:

  • Chân SCL: là chân clock cho giao tiếp I2C.
  • Chân SDA: là chân data cho giao tiếp I2C.
  • Chân VCC: cấp nguồn cho module. Có thể từ 3.3V đến 5.5V.
  • Chân GND: là chân mass.
đồng hồ thời gian thực ds1307 module sơ đồ chân

Module DS1307 cũng có khe cắm pin.

  • Nếu chúng ta cắm pin CR2032, nó sẽ giữ thời gian trên module chạy khi nguồn chính bị tắt.
  • Nếu chúng ta không cắm pin, thông tin thời gian sẽ mất khi nguồn chính bị tắt và bạn cần phải cài đặt lại thời gian.

Sơ Đồ Kết Nối

ESP32 đồng hồ thời gian thực ds1307 sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

ESP32 - Module RTC DS1307

Module RTC DS1307 ESP32
Vin 3.3V
GND GND
SDA GPIO21
SCL GPIO22

Cách Lập Trình Cho Module RTC DS1307

  • Khai báo thư viện:
#include <RTClib.h>
  • Khai báo đối tượng RTC:
RTC_DS1307 rtc;
  • Khởi tạo RTC:
if (! rtc.begin()) { Serial.println("RTC module is NOT found"); while (1); }
  • Lần đầu tiên, cài đặt RTC theo ngày & giờ trên PC khi sketch được compile
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Đọc thông tin ngày tháng và thời gian từ module RTC
DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(now.dayOfTheWeek()); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC);

Code ESP32 – Cách lấy ngày tháng và thời gian

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-ds1307-rtc-module */ #include <RTClib.h> RTC_DS1307 rtc; char daysOfWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; void setup () { Serial.begin(9600); // SETUP RTC MODULE if (! rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.flush(); while (1); } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // manually sets the RTC with an explicit date & time, for example to set // January 21, 2021 at 3am you would call: // rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0)); } void loop () { DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC); delay(1000); // delay 1 seconds }

Các Bước Thực Hiện

  • Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Thực hiện kết nối theo hình trên.
  • Kết nối board ESP32 với PC qua cáp micro USB
  • Mở Arduino IDE trên PC.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Mở Library Manager bằng cách click vào biểu tượng Library Manager trên thanh điều hướng bên trái của Arduino IDE
  • Tìm kiếm "RTClib", sau đó tìm thư viện RTC của Adafruit
  • Click nút Install để cài đặt thư viện RTC.
ESP32 rtc thư viện
  • Bạn có thể được yêu cầu cài đặt các dependency cho thư viện
  • Cài đặt tất cả dependency cho thư viện bằng cách click nút Install All.
ESP32 adafruit busio thư viện
  • Copy code trên và paste vào Arduino IDE
  • Compile và upload code lên board ESP32 bằng cách click nút Upload trên Arduino IDE
  • Mở Serial Monitor trên Arduino IDE
  • Xem kết quả trên Serial Monitor.
COM6
Send
ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:35 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:36 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:37 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:38 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:39 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:40 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:41 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:42 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:43 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:44
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bình Luận