Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

DS1307 thời gian thực

Trong bản phác thảo này, chúng ta sẽ tạo một đồng hồ kỹ thuật số để hiển thị thời
gian thực (DS1307) và nhiệt độ (LM35) trong màn hình Nối tiếp.

Yêu cầu phần cứng


 Arduino
 LM35
 DS1307
 Nhảy dây
 Breadboard

Lý thuyết
Mô-đun RTC DS1307

DS1307 có thể theo dõi giây, phút, giờ, ngày, ngày, tháng và năm. Nó có thể hoạt
động ở định dạng 12 giờ hoặc 24 giờ và có chỉ báo AM/PM. Đối với những tháng có
ít hơn 31 ngày, nó sẽ tự động điều chỉnh ngày vào cuối tháng, bao gồm cả chỉnh sửa
năm nhuận (có hiệu lực đến năm 2100).

( IC DS1307 RTC, Pin dự phòng, EEPROM 24C32 trên bo mạch)

LM35

LM35 tạo ra điện áp tỷ lệ tuyến tính với nhiệt độ C. Hệ số tỷ lệ đầu ra của LM35 là 10
mV/°C. Điều đó có nghĩa là nhiệt độ được tính bằng cách chia điện áp (mV) ở chân
đầu ra cho 10.

Cài đặt thư viện DS1307 trong Arduino IDE: RTClib

Liên kết: adafruit/RTClib: Một nhánh của thư viện RTC Arduino tuyệt vời của Jeelab
(github.com)

HOẶC bạn có thể nhập thư viện như thế này:


Nếu bạn nhận được một số lỗi thiếu thư viện, hãy thử nhập Adafbean_BuSio này
Mạch
Hãy kết nối RTC và LM35 với Arduino.

Arduino DS1307
Arduino LM35
5V VCC
5V VCC
GND GND
A0 NGOÀI
A4 SDA
GND GND
A5 SCL

(Sơ đồ khối và sơ đồ mạch thể hiện kết nối dây).

Mã số
// Hàm ngày và giờ sử dụng DS1307 RTC được kết nối qua I2C và Wire lib
#include <RTClib.h>

// THAM SỐ KHÔNG THỂ THAY ĐỔI


#xác định NGÀY CHỦ NHẬT 0
#xác định THỨ HAI 1
#xác định THỨ BA 2
#xác định NGÀY THỨ 3
#xác định THỨ NĂM 4
#xác định THỨ SÁU 5
#xác định THỨ BẢY 6

// sự kiện vào thứ Hai, từ 13:50 đến 14:10


uint8_t WEEKLY_EVENT_DAY = THỨ HAI;
uint8_t WEEKLY_EVENT_START_HH = 13; // thời gian bắt đầu sự kiện: giờ
uint8_t WEEKLY_EVENT_START_MM = 50; // thời gian bắt đầu sự kiện: phút
uint8_t WEEKLY_EVENT_END_HH = 14; // thời gian kết thúc sự kiện: giờ
uint8_t WEEKLY_EVENT_END_MM = 10; // thời gian kết thúc sự kiện: phút
const int cảm biếnPin = A0;
Giá trị cảm biến phao;
điện áp thả nổiOut;

nhiệt độ nổi C;
RTC_DS1307 rtc;

char ngàyOfTheWeek[7][12] = {
"Chủ nhật",
"Thứ hai",
"Thứ ba",
"Thứ Tư",
"Thứ năm",
"Thứ sáu",
"Thứ bảy"
};

thiết lập trống () {


Serial.begin(9600);

// THIẾT LẬP MÔ-ĐUN RTC


if (! rtc.begin()) {
Serial.println("Không thể tìm thấy RTC");
trong khi (1);
}

// đặt RTC thành ngày và giờ trên PC, bản phác thảo này đã được biên
dịch
rtc.just(DateTime(F(__DATE__), F(__TIME__)));

// đặt RTC với ngày và giờ rõ ràng, ví dụ: đặt


// Lúc 3 giờ sáng ngày 21 tháng 1 năm 2021 bạn sẽ gọi:
// rtc. adjustment(DateTime(2021, 1, 21, 3, 0, 0));

vòng lặp trống () {


cảm biếnValue = analogRead(sensorPin);
điện ápOut = (giá trị cảm biến * 5000) / 1024;

// tính nhiệt độ cho LM35 (LM35DZ)

nhiệt độC = điện ápOut/10;


Ngày giờ bây giờ = rtc.now();

printTime(bây giờ);
}
void printTime(DateTime time) {
Serial.print("THỜI GIAN: ");
Serial.print(time.year(), DEC);
Serial.print('/');
Serial.print(time.month(), DEC);
Serial.print('/');
Serial.print(time.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[time.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(time.hour(), DEC);
Serial.print(':');
Serial.print(time. Minute(), DEC);
Serial.print(':');
Serial.println(time.second(), DEC);

Serial.print("nhiệt độ: ");


Serial.println(nhiệt độC);
độ trễ (5000);
}

Biểu tình
 Sau khi tải Arduino lên, hãy mở màn hình nối tiếp để xem kết quả.

 Nếu màn hình serial in “Không thể tìm thấy RTC”, hãy kiểm tra xem chân SDL
và chân SCL có được kết nối đúng vị trí hay không?

(Minh họa bằng hình ảnh thí nghiệm)


Người giới thiệu
ds1307.pdf (analog.com)
Chuyên sâu: Mô-đun giao diện DS1307 RTC (Đồng hồ thời gian thực) với Arduino
(last Minuteengineers.com)
C ả m bi ế n nhi hệ t đ ộ LM35 và cách sử dụng ụ nó trong môi trường trư ờ ng
Arduino | Bộ công cụ Arduino Việt Nam
Arduino - Cảm biến nhiệt độ LM35 | Hướng dẫn về Arduino
(arduinogetstarted.com)
RTClib: Tham chiếu lớp RTC_DS1307 ( dafruit.github.io)

You might also like