Trong đó mạch đồng hồ số là một trong số mạch cơ bản Sau thời gian học tập và tìm hiểu cùng với sự giúp đỡ của các thầy , chúng em đã hoàn thành việc thiết kế và thi công mạch sử dụng vi
Trang 1BÁO CÁO
BÀI TẬP LỚN VI ĐIỀU KHIỂN VÀ
ỨNG DỤNG
ĐỀ TÀI: 2
THIẾT KẾ MẠCH ĐỒNG HỒ
THỜI GIAN THỰC
SỬ DỤNG VI ĐIỀU KHIỂN ARDUINO UNO R3
Nhóm: 11 – DCCDCDT67B - 2024 GVHD: ThS Nguyễn Tiến Sỹ
Trang 2Hà Nội, 12/2020
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT
BỘ MÔN KỸ THUẬT ĐIỆN - ĐIỆN TỬ
====o0o====
BÁO CÁO
BÀI TẬP LỚN VI ĐIỀU KHIỂN VÀ
ỨNG DỤNG
ĐỀ TÀI: 2
THIẾT KẾ MẠCH ĐỒNG HỒ
THỜI GIAN THỰC
SỬ DỤNG VI ĐIỀU KHIỂN ARDUINO UNO R3
Nhóm: 11 – DCCDCDT67B - 20201 GVHD: ThS Nguyễn Tiến Sỹ
Trang 3Hà Nội, 12 /2024 NHÓM 11 – DCCDCDT67B
Thành viên (#1 là trưởng nhóm):
Nhận xét (phần GVHD ghi):
Trang 4
Tiêu chí đánh giá Thang điểm
1 Điểm trừ
1.1 Không có sản phẩm
1.2 Không có báo cáo bản cứng
1.3 Thiếu chức năng theo yêu cầu chức năng của từng đề tài
1.4 Báo cáo sơ sài/thiếu nội dung (tên để tài/nhóm/mục lục/yêu cầu
của đề tài/kế hoạch nhóm/thiết kế sơ đồ khối/code)
2 Điểm cộng
2.1 Mạch in và sắp xếp linh kiện đẹp/Mạch in thủ công
2.2 Các chức năng đã thực hiện có đáp ứng tốt (độ nhạy, tốc độ tính
toán, hiển thị)
2.3 Có chức năng phụ phù hợp
2.4 Dễ sử dụng (bàn phím lớn, ghi chú rõ ràng, thao tác đơn giản)
2.5 Trình bày rõ ràng, trả lời được các câu hỏi chuyên môn
TỔNG ĐIỂM:
Trang 5MỤC LỤC
MỤC LỤC 5
DANH MỤC HÌNH VẼ 6
DANH MỤC BẢNG BIỂU 7
LỜI NÓI ĐẦU 8
CHƯƠNG 1: MÔ TẢ ĐỀ TÀI 8
1.1 Yêu cầu chức năng 8
1.2 Yêu cầu phi chức năng 9
1.3 Sơ đồ khối hệ thống 9
1.4 Kế hoạch thực hiện và phân chia công việc 10
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 10
Chương2 10
2.1 Khối chức năng RTC DS3231 10
2.2 Khối chức năng Ardunio uno r3 10
2.3 Chức năng của led 4 số 7 thanh tích hợp module tm1637 10
2.4 Nguồn điện 10
2.5 Sơ đồ nguyên lý toàn mạch 10
2.6 Hình ảnh thật sản phẩm 11
CHƯƠNG 3: KẾT LUẬN 11
3.1TÀI LIỆU THAM KHẢO 11
PHỤ LỤC A: ĐÓNG GÓP CÁC THÀNH VIÊN 11
Trang 6PHỤ LỤC B: SOFTWARE CODE 11
LỜI NÓI ĐẦU
Trang 7Ngày nay vi điều khiển được ứng dụng rộng rãi trong công nghiệp cũng như trong cuộc sống hàng ngày của con người
Ví dụ như: các thiết bị có lập trình mạch đến sản phẩm , mạch điều khiển đèn, mạch đồng hồ,
Những mạch này sẽ được lập trình để thực hiện một hay nhiều thao tác mà con người viết lệnh yêu cầu Trong đó mạch đồng hồ số là một trong số mạch cơ bản Sau thời gian học tập và tìm hiểu cùng với sự giúp đỡ của các thầy , chúng em đã hoàn thành việc thiết kế và thi công mạch sử dụng vi điều khiển , đó là mạch đồng
hồ hiển thị thời gian thực, và hiển thị trên LED 7 đoạn
Em xin chân thành cảm ợn các thầy đã hướng dẫn và giúp đõ để chúng em có thể hoàn thành mạch đồng hồ này
Mô hình không tránh khỏi sai sót và thiếu sót, chúng em mong được sự chỉ bảo của thầy để chúng em hoàn thành tốt hơn, và có thể ứng dụng vào thực tế nhiều hơn
Chúng em xin chân thành cảm ơn !
CHƯƠNG 1: MÔ TẢ ĐỀ TÀI
1.1 Yêu cầu chức năng
- Chức năng 1: Hiển thị ngày, giờ trên LED 7 thanh
- Chức năng 2: Có thể chỉnh ngày giờ của mạch
Trang 81.2 Yêu cầu phi chức năng
- Đóng hộp sản phẩm kích thước 100 x 50 x 50 cm
- Giá thành dự kiến: 500.000 đ
- Đối tượng sử dụng: kỹ sư, các doanh nghiệp, sinh viên và người học ngành điện tử
1.3 Sơ đồ khối hệ thống
- Hệ thống gồm 4 khối cơ bản
o Khối nguồn: cấp nguồn 5VDC cho các khối còn lại
o Khối Module : RTC DS3231 đồng hồ thời gian thực
o Khối vđk trung tâm : VĐK Arduino uno r3
o Khối Led: Led 7 thanh hiển thị thông tin thời gian
o
Hình 1: Sơ đồ khối sản phẩm
Trang 91.4 Kế hoạch thực hiện và phân chia công việc
Nguyễn Viết Hồng: Mua và hoàn thiện sản phẩm
Nguyễn Đức Sáng: Viết Code
Lê Văn Minh: Vẽ mô phỏng
Nguyễn Mạnh Hùng: Viết báo cáo
Trang 10CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
1.5 Khối chức năng của RTC DS3231 (Real-Time Clock)
Chức năng:
RTC DS3231 là một module đồng hồ thời gian thực, hoạt động độc lập với thời gian của Arduino nhờ pin CMOS tích hợp Nó lưu giữ chính xác thời gian ngay cả khi hệ thống mất điện
Cung cấp thời gian thực (giờ, phút, giây, ngày, tháng, năm) cho hệ thống
Có khả năng giữ thời gian ngay cả khi không có nguồn cấp chính
Kết nối:
Giao tiếp với Arduino qua giao thức I2C (hai dây SDA và SCL)
Đầu ra gồm ngày, giờ và ngày trong tuần
Vai trò:
RTC đảm bảo rằng hệ thống có dữ liệu thời gian chính xác để kiểm tra và xử lý logic hẹn giờ
Trang 111.6 Khối chức năng của Arduino uno r3 (Bộ vi điều khiển trung tâm)
Chức năng:
Là trung tâm xử lý của hệ thống, Arduino thực hiện các nhiệm vụ:
Đọc dữ liệu thời gian từ module RTC DS3231 qua giao thức I2C
So sánh thời gian hiện tại với danh sách thời gian hẹn giờ được lập trình sẵn (mảng alarms)
Hiển thị thông tin thời gian lên màn hình LCD I2C
Kết nối:
Nhận tín hiệu từ RTC DS3231 để xử lý thời gian
Điều khiển các thiết bị đầu ra như led 4 số 7 thanh
Kết nối với máy tính qua cổng Serial để gửi dữ liệu ra Serial Monitor phục vụ kiểm tra và theo dõi
Vai trò:
Trang 12Điều khiển toàn bộ hệ thống, đảm bảo việc đọc, xử lý và xuất thông tin được thực hiện đúng logic
1.7 Led 4 số 7 thanh tích hợp module tm 1637
Chức năng:
Led 7 thanh hiển thị thông tin thời gian theo định dạng:
Bấm nút lần 1 giờ phút
Bấm nút lần 2 ngày tháng
Kết nối:
Nhận tín hiệu từ Arduino qua giao thức I2C
Gồm 4 chân chính: VCC, GND, DIO, CLK
Vai trò:
Cung cấp thông tin trực quan về thời gian hiện tại, giúp người dùng theo dõi trạng
thái hệ thống
Trang 13Cung cấp năng lượng cho toàn bộ hệ thống, bao gồm:
+ Arduino (5V từ nguồn USB hoặc nguồn ngoài)
+ RTC DS3231 (cũng có pin CMOS dự phòng)
+ LED 7 thanh
Kết nối:
Arduino cấp nguồn 5V cho các module RTC, Led 7 thanh qua các chân VCC và GND
RTC có pin dự phòng để duy trì thời gian chính xác khi mất nguồn chính
Vai trò:
Đảm bảo toàn bộ hệ thống hoạt động ổn định và liên tục
1.9 Sơ đồ nguyên lý toàn mạch
Hình 2: Sơ đồ nguyên lý toàn mạch
Trang 141.10 Hình ảnh thật sản phẩm
CHƯƠNG 3: KẾT LUẬN
3.1TÀI LIỆU THAM KHẢO
https://www.arduino.cc/
PHỤ LỤC A: ĐÓNG GÓP CÁC THÀNH VIÊN
Trang 15PHỤ LỤC B: SOFTWARE CODE
#include <Wire.h>
#include <RTClib.h>
#include <TM1637Display.h>
// Khai báo chân kết nối với TM1637
#define CLK 2
#define DIO 3
// Khai báo chân nút bấm
#define BUTTON_MODE 4 // Nút để chuyển đổi giữa ngày và giờ
#define BUTTON_SET 5 // Nút để chỉnh ngày/giờ
RTC_DS3231 rtc;
TM1637Display display(CLK, DIO);
int mode = 0; // 0: hiển thị giờ, 1: hiển thị ngày
bool buttonModePressed = false;
bool buttonSetPressed = false;
void setup() {
pinMode(BUTTON_MODE, INPUT_PULLUP);
pinMode(BUTTON_SET, INPUT_PULLUP);
display.setBrightness(7); // Đặt độ sáng cao nhất
if (!rtc.begin()) {
while (1);
}
if (rtc.lostPower()) {
rtc.adjust(DateTime(F( DATE ), F( TIME ))); // Đặt thời gian hiện tại nếu RTC mất nguồn
}
}
void loop() {
// Đọc trạng thái nút bấm
if (digitalRead(BUTTON_MODE) == LOW && !buttonModePressed) {
buttonModePressed = true;
mode = !mode; // Chuyển đổi giữa hiển thị giờ và ngày
}
if (digitalRead(BUTTON_MODE) == HIGH) {
buttonModePressed = false;
Trang 16}
if (digitalRead(BUTTON_SET) == LOW && !buttonSetPressed) {
buttonSetPressed = true;
adjustTime(); // Gọi hàm chỉnh thời gian
}
if (digitalRead(BUTTON_SET) == HIGH) {
buttonSetPressed = false;
}
// Lấy thời gian từ DS3231
DateTime now = rtc.now();
if (mode == 0) {
// Hiển thị giờ
int displayTime = now.hour() * 100 + now.minute();
display.showNumberDecEx(displayTime, 0b01000000, true);
} else {
// Hiển thị ngày
int displayDate = now.day() * 100 + now.month();
display.showNumberDec(displayDate, true);
}
delay(200);
}
void adjustTime() {
DateTime now = rtc.now();
int year = now.year();
int month = now.month();
int day = now.day();
int hour = now.hour();
int minute = now.minute();
while (true) {
// Hiển thị giờ
while (digitalRead(BUTTON_SET) == LOW) {
display.showNumberDecEx(hour * 100 + minute, 0b01000000, true);
delay(200);
if (digitalRead(BUTTON_MODE) == LOW) {
minute = (minute + 1) % 60;
if (minute == 0) {
hour = (hour + 1) % 24;
Trang 17// Hiển thị ngày
while (digitalRead(BUTTON_SET) == LOW) {
display.showNumberDec(day * 100 + month, true);
delay(200);
if (digitalRead(BUTTON_MODE) == LOW) {
day++;
if (day > daysInMonth(month, year)) {
day = 1;
month = (month % 12) + 1;
}
}
}
// Lưu thời gian mới khi nhấn giữ nút SET
if (digitalRead(BUTTON_SET) == HIGH) {
rtc.adjust(DateTime(year, month, day, hour, minute, 0));
break;
}
}
}
// Hàm tính số ngày trong tháng (bao gồm năm nhuận)
int daysInMonth(int month, int year) {
if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 29;
} else {
return 28;
}
} else {
return 31;
}
}
Trang 18Kết luận
Đồng hồ thời gian thực không chỉ là một thiết bị đơn thuần để ghi nhận và duy trì thời gian mà còn đóng vai trò cốt lõi trong nhiều hệ thống hiện đại Trong thời đại công nghệ phát triển không ngừng, khả năng theo dõi và đảm bảo tính chính xác
về thời gian đã trở thành một yêu cầu tất yếu Từ cuộc sống hàng ngày với những thiết bị quen thuộc như đồng hồ đeo tay, điện thoại thông minh hay thiết bị gia dụng, cho đến các hệ thống phức tạp trong công nghiệp, khoa học, và Internet vạn vật (IoT), đồng hồ thời gian thực luôn đóng vai trò then chốt để đảm bảo các quy trình diễn ra mượt mà, đồng bộ và chính xác
Với đặc tính độ chính xác cao, hoạt động liên tục và tiêu thụ năng lượng thấp, RTC không chỉ giúp hệ thống duy trì thời gian mà còn góp phần vào việc
quản lý dữ liệu, tối ưu hóa quy trình làm việc và nâng cao hiệu suất Trong các lĩnh vực như tự động hóa công nghiệp, viễn thông, nghiên cứu khoa học và các ứng dụng nhúng, đồng hồ thời gian thực là nền tảng để tạo ra sự ổn định và đáng tin cậy cho cả hệ thống
Trong tương lai, khi công nghệ ngày càng phát triển và các hệ thống thông minh ngày càng chiếm lĩnh cuộc sống, vai trò của đồng hồ thời gian thực sẽ càng trở nên quan trọng hơn Không chỉ dừng lại ở việc ghi nhận thời gian chính xác, các thế hệ RTC mới sẽ tiếp tục được cải tiến để thích ứng với những môi trường khắc nghiệt hơn, có khả năng đồng bộ hóa dữ liệu toàn cầu và đáp ứng những yêu cầu khắt khe trong các ứng dụng công nghệ cao
Tóm lại, đồng hồ thời gian thực chính là nhịp đập của mọi hệ thống, giữ cho
các quy trình hoạt động đúng thời điểm, kết nối con người và máy móc một cách hài hòa Có thể nói, việc tối ưu hóa và sử dụng RTC hiệu quả chính là chìa khóa quan trọng giúp chúng ta khai thác tối đa tiềm năng của các công nghệ hiện đại, từ
đó mở ra những cơ hội phát triển vượt bậc trong tương lai
Trang 19K