Làm thế nào và tại sao để thêm đồng hồ thời gian thực vào Arduino

Làm thế nào và tại sao để thêm đồng hồ thời gian thực vào Arduino

Giữ thời gian cho các dự án Arduino không dễ dàng như bạn nghĩ: một khi kết nối máy tính không có ở đó, Arduino không được cấp nguồn của bạn chỉ đơn giản là ngừng chạy, bao gồm cả mã bên trong của nó.





cách kết nối hai màn hình với một máy tính bằng một cổng vga

Để giữ cho Arduino của bạn đồng bộ với thế giới xung quanh nó, bạn sẽ cần một thứ được gọi là 'mô-đun Đồng hồ thời gian thực'. Đây là cách sử dụng một.





Điểm của Đồng hồ thời gian thực (RTC) là gì?

Máy tính của bạn rất có thể đồng bộ hóa thời gian của nó với Internet, nhưng nó vẫn có đồng hồ bên trong tiếp tục hoạt động ngay cả khi không có kết nối Internet hoặc nguồn bị tắt. Khi bạn sử dụng Arduino được cắm vào máy tính, nó có quyền truy cập vào thời gian chính xác do đồng hồ hệ thống của bạn cung cấp. Điều đó khá hữu ích, nhưng hầu hết các dự án Arduino được thiết kế để sử dụng ngoài máy tính - tại thời điểm đó, bất kỳ lúc nào nguồn điện được rút ra hoặc Arduino khởi động lại, nó sẽ hoàn toàn không biết đó là thời gian. Đồng hồ bên trong sẽ được đặt lại và bắt đầu đếm lại từ 0 vào lần tiếp theo khi được bật nguồn.





Nếu dự án của bạn liên quan đến việc cần thời gian - chẳng hạn như đèn ngủ và đồng hồ báo bình minh của tôi - thì đây rõ ràng sẽ là một vấn đề. Trong dự án đó, chúng tôi đã giải quyết vấn đề bằng cách thiết lập thủ công thời gian mỗi đêm theo một cách khá thô thiển - người dùng sẽ nhấn nút đặt lại ngay trước khi đi ngủ, cung cấp đồng bộ thời gian thủ công. Rõ ràng đó không phải là một giải pháp lý tưởng trong thời gian dài.

Mô-đun RTC là một bit mạch bổ sung, yêu cầu một pin nhỏ bằng đồng xu, tiếp tục đếm thời gian ngay cả khi Arduino của bạn đã tắt. Sau khi được đặt một lần - nó sẽ giữ nguyên thời gian đó cho tuổi thọ của pin, thường là một năm hoặc lâu hơn.



TinyRTC

RTC phổ biến nhất cho Arduino được gọi là TinyRTC và có thể được mua với giá khoảng $ 5 - $ 10 trên eBay. Rất có thể bạn sẽ cần phải cung cấp pin của riêng mình (việc vận chuyển những thứ này ra nước ngoài đến nhiều nơi là bất hợp pháp) và một số tiêu đề (các chân cắm vào các lỗ mà bạn sẽ cần tự hàn vào).

Đây là mô-đun tôi có:





Nó thậm chí còn được tích hợp cảm biến nhiệt độ, mặc dù pin sẽ kéo dài hơn nếu bạn không sử dụng.

Số lượng lỗ trên thứ đó trông khá đáng sợ, nhưng bạn chỉ cần bốn lỗ trong số đó; GND, VCC, SCL và SDA - bạn có thể sử dụng các chân có liên quan ở hai bên của mô-đun RTC. Bạn nói chuyện với đồng hồ bằng cách sử dụng Giao thức I2C , có nghĩa là chỉ có hai chân được sử dụng - một cho 'đồng hồ' (đồng hồ dữ liệu truyền thông nối tiếp, không liên quan đến thời gian) và một cho dữ liệu. Trên thực tế, bạn thậm chí có thể xâu chuỗi tới 121 thiết bị I2C trên cùng một hai chân - hãy xem trang Adafruit này để có lựa chọn các thiết bị I2C khác mà bạn có thể thêm vào, vì có rất nhiều!





Bắt đầu

Kết nối mô-đun TinyRTC của bạn theo sơ đồ bên dưới - dòng DS màu hồng là không cần thiết, vì đó là dành cho cảm biến nhiệt độ.

Tiếp theo, tải xuống Thời gianDS1307RTC thư viện và đặt các thư mục kết quả trong / thư viện thư mục.

Thoát và khởi chạy lại môi trường Arduino để tải trong các thư viện và ví dụ.

Bạn sẽ tìm thấy hai ví dụ trong menu DS1307RTC: tải lên và chạy Cài đặt thời gian ví dụ đầu tiên - điều này sẽ đặt RTC thành thời gian chính xác. Mã thực tế không đáng để đi vào chi tiết, chỉ cần biết rằng bạn cần chạy nó một lần để thực hiện đồng bộ hóa thời gian ban đầu.

Tiếp theo, hãy xem cách sử dụng ví dụ với ReadTest .

cách tải xuống video youtube một cách hợp pháp

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Lưu ý rằng chúng tôi cũng đã bao gồm lõi Wire.h thư viện - điều này đi kèm với Arduino và được sử dụng để giao tiếp qua I2C. Tải lên mã, mở bảng điều khiển nối tiếp ở 9600 baud và xem và Arduino của bạn xuất thời gian hiện tại mỗi giây. Thật tuyệt vời!

Mã quan trọng nhất trong ví dụ này là tạo tmElements_t tm - đây là một kết cấu mà chúng tôi sẽ điền vào thời điểm hiện tại; và RTC.read (tm) chức năng lấy thời gian hiện tại từ mô-đun RTC, đưa nó vào tm cấu trúc và trả về true nếu mọi thứ diễn ra tốt đẹp. Thêm mã gỡ lỗi hoặc mã logic của bạn bên trong câu lệnh 'if' đó, chẳng hạn như in ra thời gian hoặc phản ứng với nó.

cách tìm địa chỉ ip trên iphone

Bây giờ bạn đã biết cách lấy đúng thời gian với Arduino, bạn có thể thử viết lại dự án báo thức mặt trời mọc hoặc tạo đồng hồ chữ LED - khả năng là vô tận! Bạn sẽ làm gì?

Tín dụng hình ảnh: Snootlab Qua Flickr

Đăng lại Đăng lại tiếng riu ríu E-mail Cách thay đổi giao diện của màn hình Windows 10 của bạn

Bạn muốn biết cách làm cho Windows 10 trông đẹp hơn? Sử dụng các tùy chỉnh đơn giản này để biến Windows 10 của riêng bạn.

Đọc tiếp
Chủ đề liên quan
  • DIY
  • Arduino
Giới thiệu về tác giả James Bruce(707 bài báo đã xuất bản)

James có bằng Cử nhân về Trí tuệ nhân tạo và được chứng nhận CompTIA A + và Network +. Khi không bận rộn với tư cách là Biên tập viên đánh giá phần cứng, anh ấy thích LEGO, VR và các trò chơi trên bàn cờ. Trước khi gia nhập MakeUseOf, anh ấy là kỹ thuật viên ánh sáng, giáo viên tiếng Anh và kỹ sư trung tâm dữ liệu.

Xem thêm từ James Bruce

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký
Thể LoạI Diy