Giao Tiếp Module Thời Gian Thực DS1307 Với Arduino - Điện Tử Việt

Facebook Telegram TikTok Twitter Youtube Đăng nhập Tham gia Đăng nhập Hoan nghênh!đăng nhập vào tài khoản của bạn Tài khoản mật khẩu của bạn Quên mật khẩu? Tạo một tài khoản Đăng kí Hoan nghênh!Đăng ký email của bạn Tài khoản Mật khẩu đã được gửi vào email của bạn. Khôi phục mật khẩu Khởi tạo mật khẩu email của bạn TÌM KIẾM 27 C Ho Chi Minh City Thứ Năm, 18 Tháng 12, 2025
  • Đăng nhập/Đăng ký
Facebook Telegram TikTok Twitter Youtube Đăng nhập Đăng nhập tài khoản Tài khoản mật khẩu của bạn Forgot your password? Get help Tạo một tài khoản Tạo một tài khoản Chào mừng bạn Đăng ký tài khoản email của bạn Tài khoản Mật khẩu đã được gửi vào email của bạn. Khôi phục mật khẩu Khởi tạo mật khẩu email của bạn Mật khẩu đã được gửi vào email của bạn. Điện Tử Việt Trang chủ IoT và Công nghệ Arduino Giao tiếp module thời gian thực DS1307 với Arduino Hiển thị thời gian thực trên LCD dùng Arduino và DS1307 FacebookTwitterPinterestWhatsApp Quảng cáo Google

Trong bài viết này, chúng ta sẽ tìm hiểu về đồng hồ thời gian thực (RTC – Real Time Clock) và cách giao tiếp Arduino với module thời gian thực DS1307.

Đồng hồ thời gian thực hay RTC (Real Time Clock) là một thiết bị định thời gian, thường được chế tạo dưới dạng IC. IC RTC chạy bằng pin và theo dõi thời gian hiện tại ngay cả khi không có điện.

IC đồng hồ thời gian thực có mặt trong máy tính, máy chủ (server), các hệ thống nhúng và trên thực tế, chúng được sử dụng ở bất cứ đâu, những nơi cần thông tin thời gian chính xác.

Tại sao chúng ta cần đồng hồ thời gian thực (RTC)?

Mặc dù Arduino và hầu hết tất cả các bộ vi điều khiển đều có bộ định thời (timer) và bộ định thời gian (hàm millis () trong trường hợp Arduino) nhưng chúng phụ thuộc vào nguồn điện, tức là chúng chỉ hoạt động khi có nguồn cung cấp. Sau khi tắt nguồn (theo cách thủ công hoặc do mất điện), tất cả bộ định giờ được reset về 0.

Mặc dù việc định thời gian bằng bộ định thời tích hợp sẵn được chấp nhận cho các ứng dụng đơn giản, nhưng một số trường hợp khác chúng ta cần một giải pháp thay thế trong các ứng dụng như bộ ghi dữ liệu, đồng hồ, báo thức, v.v.. trong đó bộ đếm thời gian chạy độc lập bất kể nguồn điện bên ngoài hoặc nếu bộ vi điều khiển (hoặc Arduino) được lập trình lại.

Khi nói đến việc sử dụng IC thời gian thực. Hầu hết tất cả các IC RTC đều là các thiết bị dòng điện thấp chạy trong nhiều năm trên một pin lithium duy nhất (thường là CR2032). Một trong những IC RTC phổ biến và được sử dụng phổ biến nhất là DS1307.

Giới thiệu IC thời gian thực DS1307

IC thời gian thực (RTC) DS1307 có chức năng cung cấp thông tin thời gian hiện tại (thời gian thực): giờ, phút, giây, thứ, ngày tháng, năm một cách chính xác ngay cả khi thiết bị đã bị tắt (ngắt điện ngoài). Giao tiếp với vi điều khiển thông qua chuẩn I2C, và đóng vai trò là slave khi kết nối đến bus I2C này. Có thể đếm thời gian theo định dạng 24 giờ hoặc 12 giờ với chỉ thị AM/PM. Ngoài ra bên trong chíp có bộ dò phát hiện mất nguồn và tự động chuyển sang sử dụng nguồn pin dự phòng. Một số tính năng nổi bật của IC RTC DS1307 được đề cập dưới đây.

  • Lưu trữ và cung cấp các thông tin thời gian thực: ngày, tháng, năm, giờ, phút, giây,…
  • Khả năng thiết lập ngày đến năm 2100.
  • Tiêu thụ điện năng thấp: dòng tiêu thụ dưới 500nA khi hoạt động bằng pin.
  • Tự động chuyển sang nguồn pin trong trường hợp mất điện.
  • Đồng hồ 24 giờ hoặc 12 giờ với chỉ báo AM/PM.
  • Sử dụng chuẩn giao tiếp I2C.

Download datasheet DS1307 tại đây.

RTC DS1307 có sẵn dưới dạng module, bao gồm tất cả các thành phần cần thiết như pin, đầu nối, điện trở kéo lên và tinh thể thạch anh. Một module như vậy được sử dụng trong bài hướng dẫn này và được hiển thị bên dưới.

Module thời gian thực RTC DS1307

Sơ đồ chân DS1307

Hình ảnh sau đây cho thấy hình dạng và sơ đồ chân của IC RTC DS1307. Để giảm công suất tiêu thụ, số lượng chân trên IC phải giảm. Do đó, DS1307 RTC sử dụng Giao tiếp I2C.

Xem thêm bài viết: Giới thiệu chuẩn giao tiếp I2C

Chân Tên Chức năng
1 X1 Đây là các chân kết nối với thạch anh tần số 32.768 KHz để kích hoạt bộ dao động nội.
2 X2
3 VBAT Chân này được kết với cực dương pin Lithium 3V để cấp nguồn nuôi dự phòng
4 GND Chân nối đất
5 SDA Chân dữ liệu nối tiếp (Serial Data). Đây là chân dữ liệu vào/ra của giao thức I2C. Chân này cần đưa lên nguồn 5V thông qua điện trở 10kΩ
6 SCL Chân đầu vào xung đồng hồ nối tiếp (Serial Clock). Đây là chân ngõ vào xung nhịp của giao thức I2C. Chân này cũng phải được kéo đến 5V thông qua một điện trở 10kΩ.
7 SQW/OUT Ngõ xuất ra xung vuông, tần số có thể lập trình để thay đổi từ 1Hz, 4Khz, 8Khz, 32Khz. Nếu không được sử dụng, chân này có thể được thả nổi.
8 VCC Chân cấp nguồn chính, khoảng 5VDC. Nếu VCC không có mà VBAT có thì DS1307 vẫn hoạt động bình thường nhưng không ghi và đọc được dữ liệu.

Giao tiếp Arduino với DS1307

Linh kiện cần thiết

STT Tên linh kiện Số lượng
1 Arduino Uno 1
2 Module RTC DS1307 1
3 LCD 16×2 1
4 Breadboard 1
5 Dây cắm breadboard
6 Nguồn cấp điện

Chúng ta đã tìm hiểu một chút về IC thời gian thực DS1307. Bây giờ, chúng ta sẽ tiến hành với giao tiếp Arduino với IC thời gian thực. Như đã đề cập trước đó, module DS1307 RTC sử dụng giao tiếp I2C.

Trong mạch giao tiếp này, vi điều khiển Arduino luôn hoạt động như Master và DS1307 hoạt động như Slave. Master trong giao tiếp I2C, tức là Arduino trong trường hợp này, chịu trách nhiệm về tín hiệu đồng hồ, truy cập bus, các tín hiệu start và stop.

Sơ đồ nguyên lý

Hình ảnh sau đây cho thấy sơ đồ mạch giao tiếp giữa IC thời gian thực DS1307 và Arduino. Mạch này cho thấy các kết nối cơ bản liên quan đến module DS1307 (một board mạch chứa IC DS1307 cùng với thạch anh, pin, điện trở kéo lên, ..).

Hiển thị thời gian thực lên LCD dùng DS1307 và Arduino

Để hiểu rõ hơn về module DS1307 RTC, hình ảnh sau đây sẽ giúp bạn vì nó chứa mạch của module thời gian thực DS1307 điển hình.

Hoạt động của mạch

Một ứng dụng đơn giản trong đó Arduino UNO được giao tiếp với module thời gian thực DS1307 để hiển thị ngày giờ lên màn hình LCD. Trong ứng dụng này, chúng ta sẽ lập trình cho DS1307 RTC với ngày giờ hiện tại và xem liệu nó có thực sự giữ dữ liệu đó hay không ngay cả khi nguồn cung cấp cho Arduino bị loại bỏ.

Một thư viện đặc biệt được gọi là “RTClib” được sử dụng trong chương trình. Các bạn có thể tải xuống từ liên kết này. Đảm bảo rằng thư viện được tải xuống trước và được thêm vào cơ sở dữ liệu thư viện Arduino.

Để nạp dữ liệu và thời gian vào IC DS1307 RTC, chúng ta sẽ sử dụng một tính năng có sẵn trong thư viện RTClib, nơi Arduino sẽ tải ngày và giờ từ máy tính lên ngay khi chương trình được nạp vào.

Chương trình

// Chương trình hiển thị thời gian thực trên LCD dùng module RTC DS1307

#include <Wire.h>

#include <LiquidCrystal.h>

#include “RTClib.h”

RTC_DS1307 rtc;

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (rs, e, d4, d5, d6, d7)

char daysOfTheWeek[7][12] = {“Sun”, “Mon”, “Tue”, “Wed”, “Thu”, “Fri”, “Sat”};

void setup ()

{

Serial.begin(9600);

lcd.begin(16, 2);

if (! rtc.begin())

{

lcd.print(“Khong the tim thay RTC”);

while (1);

}

if (! rtc.isrunning())

{

lcd.print(“RTC khong hoat dong!”);

}

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

//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

}

void loop ()

{

DateTime now = rtc.now();

lcd.setCursor(0, 1);

lcd.print(now.hour());

lcd.print(‘:’);

lcd.print(now.minute());

lcd.print(‘:’);

lcd.print(now.second());

lcd.print(” “);

lcd.setCursor(0, 0);

lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

lcd.print(” ,”);

lcd.print(now.day());

lcd.print(‘/’);

lcd.print(now.month());

lcd.print(‘/’);

lcd.print(now.year());

}

Ứng dụng

Với sự trợ giúp của giao tiếp đồng hồ thời gian thực và Arduino, chúng ta có thể thực hiện một số ứng dụng liên quan đến ghi dữ liệu, báo thức, đồng hồ, v.v.Vì module RTC DS1307 được hỗ trợ cấp nguồn bằng pin nên nó sẽ tiếp tục duy trì thời gian ngay cả trong trường hợp mất điện.

BÀI VIẾT LIÊN QUANXEM THÊM

Giao tiếp module điều khiển động bước TMC2208 với Arduino

Giao tiếp module điều khiển động cơ bước TMC2208 với Arduino

Giao tiếp màn hình OLED SSD1306 0.96 inch với ESP8266 NodeMCU

Giao tiếp màn hình OLED SSD1306 0.96 với ESP8266 NodeMCU theo chuẩn I2C

Mạch nguồn điều chỉnh điện áp dùng IC LM317

Mạch nguồn điều chỉnh điện áp dùng IC LM317

BÌNH LUẬN Hủy trả lời

Vui lòng nhập bình luận của bạn Vui lòng nhập tên của bạn ở đây Bạn đã nhập một địa chỉ email không chính xác! Vui lòng nhập địa chỉ email của bạn ở đây

Lưu tên, email và trang web của tôi trong trình duyệt này cho lần tiếp theo tôi nhận xét.

Δ

KHO EBOOK KỸ THUẬT ĐIỆN - ĐIỆN TỬ

BÀI VIẾT MỚI NHẤT

Mạch nhắc nhở tự động khi bật nguồn

Mạch nhắc nhở tự động

Nguyễn Hữu Phước - 9 Tháng 12, 2025 0 Mạch điều khiển đèn bằng âm thanh - Điện Tử Việt

Mạch điều khiển đèn bằng âm thanh

Nguyễn Hữu Phước - 31 Tháng 10, 2025 0 Giáo trình Mạch điện cho sinh viên kỹ thuật

Giáo trình Mạch điện – Tài liệu học tập chuẩn dành...

Nguyễn Hữu Phước - 22 Tháng 10, 2025 0 Giáo trình điều khiển và lập trình với Arduino

Giáo trình điều khiển và lập trình với Arduino Uno

Nguyễn Hữu Phước - 14 Tháng 10, 2025 0 Giáo trình điện tử công suất

Giáo trình Điện tử công suất

Nguyễn Hữu Phước - 8 Tháng 10, 2025 0

BÀI VIẾT NỔI BẬT

Cảm biến màu sắc TCS3200

Nhận biết màu sắc dùng cảm biến màu TCS3200

19 Tháng 10, 2020 Hướng dẫn lập trình ESP8266 NodeMCU dùng Arduino IDE

Hướng dẫn lập trình ESP8266 NodeMCU dùng Arduino IDE

6 Tháng 3, 2021 Hướng dẫn cài đặt proteus 8.9 không tự tắt

Hướng dẫn cài đặt Proteus 8.9 không bị lỗi tự tắt

9 Tháng 6, 2020 Điều khiển động cơ servo dùng Arduino

Điều khiển động cơ servo sử dụng Arduino

31 Tháng 10, 2018 Mạch bàn phím đơn giản

Mạch bàn phím đơn giản dùng IC 74LS147

22 Tháng 5, 2019 Xem thêm

TÀI LIỆU - GIÁO TRÌNH

Giáo trình Mạch điện cho sinh viên kỹ thuật

Giáo trình Mạch điện – Tài liệu học tập chuẩn dành cho sinh viên kỹ thuật

Nguyễn Hữu Phước - 22 Tháng 10, 2025 0 Giáo trình điều khiển và lập trình với Arduino

Giáo trình điều khiển và lập trình với Arduino Uno

Nguyễn Hữu Phước - 14 Tháng 10, 2025 0 Giáo trình điện tử công suất

Giáo trình Điện tử công suất

Nguyễn Hữu Phước - 8 Tháng 10, 2025 0 Thiết kế điện tử với phần mềm Fritzing

Download phần mềm Fritzing

Nguyễn Hữu Phước - 9 Tháng 7, 2023 0 Tài liệu hương dẫn sử dụng Altium Designer

Tài liệu hướng dẫn sử dụng Altium Designer

Nguyễn Hữu Phước - 25 Tháng 4, 2022 0

KÊNH YOUTUBE ĐIỆN TỬ VIỆT

Chào các bạn! Website này được tạo ra nhằm mục đích chia sẽ miễn phí những kiến thức liên quan đến lĩnh vực điện tử và IoT, giúp bạn học hỏi, khám phá và ứng dụng công nghệ dễ dàng hơn mỗi ngày. Chúng tôi luôn trân trọng mọi ý kiến đóng góp để cùng xây dựng một cộng đồng yêu công nghệ ngày càng lớn mạnh. Cảm ơn bạn đã đồng hành cùng Điện Tử Việt!Liên hệ chúng tôi: [email protected] Facebook Telegram TikTok Twitter Youtube

DANH MỤC NỔI BẬT

  • Hướng dẫn48
  • Arduino41
  • Điện tử cơ bản29
  • IoT - Internet of Things25
  • Điện tử công suất24
  • Linh kiện điện tử23
  • Sách điện tử18
  • Điện tử ứng dụng18

KÊNH YOUTUBE ĐIỆN TỬ VIỆT

© Copywright 2025 - Điện Tử Việt NHIỀU BÀI VIẾT HƠN Mạch nhắc nhở tự động khi bật nguồn

Mạch nhắc nhở tự động

Nguyễn Hữu Phước - 9 Tháng 12, 2025 0 Mạch nhắc nhở tự động đang trở thành một giải pháp hết sức cần thiết trong môi trường làm việc hiện đại, nơi nhiều... Thanh Liên Hệ Nổi
  • Facebook
  • Chat Zalo
  • Gọi điện
  • Messenger
  • Telegram

Từ khóa » Thư Viện Ds1307