Hiển thị giờ trên màn hình với Arduino và ds323

Trong Hướng dẫn Arduino này, chúng ta sẽ tìm hiểu cách sử dụng Mô-đun đồng hồ thời gian thực DS3231. Bạn có thể xem video sau hoặc đọc hướng dẫn dưới đây.

Tổng quan

Câu hỏi đầu tiên xuất hiện ở đây là tại sao chúng ta thực sự cần một RTC riêng cho Dự án Arduino của chúng ta khi bản thân Arduino có máy chấm công tích hợp. Vấn đề là mô-đun RTC chạy bằng pin và có thể theo dõi thời gian ngay cả khi chúng ta lập trình lại vi điều khiển hoặc ngắt kết nối nguồn chính.

DS3231 là Đồng hồ thời gian thực chi phí thấp, độ chính xác cao, có thể đọc giờ, phút và giây, cũng như thông tin về ngày, tháng và năm. Ngoài ra, nó có đọc tự động cho năm nhuận và những tháng với ít hơn 31 ngày.

Thông số kỹ thuật đồng hồ thời gian thực DS3231

Mô-đun có thể hoạt động trên 3,3 hoặc 5 V, điều này phù hợp với nhiều nền tảng phát triển hoặc vi điều khiển. Đầu vào nguồn là 3V và CR2032 3V thông thường có thể cung cấp nguồn điệm cho mô-đun và duy trì thông tin trong hơn một năm.

Mô-đun sử dụng Giao thức truyền thông I2C giúp kết nối với Board Arduino rất dễ dàng.

Đây là sơ đồ mạch:

Sơ đồ mạch đồng hồ thời gian thực Arduino và DS3231

Vì vậy, tất cả những gì chúng ta cần là 4 dây, chân VCC và GND để cấp nguồn cho mô-đun và hai chân giao tiếp I2C, SDA và SCL.

Các linh kiện cần thiết cho Hướng dẫn Arduino này:

  • Đồng hồ thời gian thực DS3231
  • Board Arduino
  • Breadboard và dây dẫn

Lập trình

Khi chúng ta kết nối mô-đun, chúng ta cần lập trình Board Arduino để hoạt động với Đồng hồ thời gian thực. Tuy nhiên, khi nói đến việc lập trình giao tiếp giữa Arduino và mô-đun I2C, code không nhỏ và dễ dàng. May mắn thay, đã có một số thư viện cho DS3231 RTC có thể được tìm thấy trên internet.

Đối với hướng dẫn này, tôi đã chọn sử dụng Thư viện được tạo bởi Henning Karlsen, có thể tìm thấy và tải xuống từ trang web của anh ấy, www.rinkydinkelectronics.com .

Vì vậy, một khi tải xuống và cài đặt thư viện, chúng ta có thể sử dụng ví dụ demo đầu tiên để kích hoạt đồng hồ của mô-đun RTC. Trong phần thiết lập của code ví dụ demo, chúng ta có thể nhận thấy rằng có ba dòng mà chúng ta cần bỏ ghi chú để thiết lập ngày trong tuần, thời gian và dữ liệu đầu tiên.

// Code from the Demo Example of the DS3231 Library

void setup()
{
  // Setup Serial connection
  Serial.begin(115200);
  // Uncomment the next line if you are using an Arduino Leonardo
  //while (!Serial) {}
  
  // Initialize the rtc object
  rtc.begin();
  
  // The following lines can be uncommented to set the date and time
  //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
  //rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014
}

Dòng đầu tiên là để thiết lập ngày trong tuần, dòng thứ hai là để đặt thời gian theo giờ, phút và giây và dòng thứ ba là để đặt ngày theo ngày, tháng và năm.

Khi tải lên code này, chúng tôi cần chú thích lại ba dòng và tải lại code một lần nữa.

// Code from the Demo Example of the DS3231 Library

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating
  delay (1000);
}

Nếu chúng ta xem phần vòng lặp của code, chúng ta có thể thấy rằng bây giờ bằng cách sử dụng ba chức năng tùy chỉnh, chúng ta sẽ nhận được thông tin từ RTC và in chúng trong Trình giám sát nối tiếp. Đây là cách chúng xuất hiện trong Màn hình nối tiếp.

Kết quả giám sát nối tiếp DS3231 RTC

Bây giờ khi chúng ta ngắt kết nối nguồn Arduino, sau đó kết nối lại và chạy lại Màn hình nối tiếp, chúng ta có thể nhận thấy rằng thời gian vẫn tiếp tục mà không  đặt lại.

Cuối cùng, Đồng hồ thời gian thực của chúng tôi đã hoàn thành và hoạt động và chúng tôi có thể sử dụng trong bất kỳ Dự án Arduino nào. Như một ví dụ thứ hai, tôi đã kết nối một màn hình LCD với Arduino và in thời gian và ngày trên đó.

Ví dụ về đồng hồ và màn hình LCD sử dụng Arduino điều khiển DS3231

Đây là mã nguồn của ví dụ này:

#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library 

DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
 rtc.begin(); // Initialize the rtc object
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } 
}

void loop() { 
 lcd.setCursor(0,0);
 lcd.print("Time:  ");
 lcd.print(rtc.getTimeStr());
 
 lcd.setCursor(0,1);
 lcd.print("Date: ");
 lcd.print(rtc.getDateStr());
 
 delay(1000); 
}

Dịch từ: https://howtomechatronics.com/tutorials/arduino/arduino-ds3231-real-time-clock-tutorial/

 

 

 

 

 

 

2 những suy nghĩ trên “Hiển thị giờ trên màn hình với Arduino và ds323

  1. Việt nói:

    add cho mình hỏi, nếu ngưng cấp nguồn cho mạch ví dụ tgian là 30 phút, thì ds 3231 có tiếp tục duy trì thời gian để sau 30 phút cấp nguồn lại, màn hình hiển thị đúng thời gian k ạ

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Chat hỗ trợ
Chat ngay