ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÁO CÁO GIỮA KỲ MÔN HỌC VI ĐIỀU KHIỂN VÀ VI XỬ LÝ Sinh viên thực hiện Phí Văn Hòa 19021047 K64 M CLC2 Hoàng Văn Thịnh 19021117 K64 M CLC2 Giảng viên hư[.]
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÁO CÁO GIỮA KỲ MÔN HỌC VI ĐIỀU KHIỂN VÀ VI XỬ LÝ ĐỀ TÀI 02: THIẾT KẾ BỘ ĐO NHIỆT ĐỘ CẢNH BÁO BẰNG LED VÀ LƯU TRỮ GIÁ TRỊ ĐO VÀO CƠ SỞ DỮ LIỆU Sinh viên thực hiện: Phí Văn Hịa 19021047 K64 M-CLC2 Hồng Văn Thịnh 19021117 K64 M-CLC2 Giảng viên hướng dẫn: PGS.TS Phạm Mạnh Thắng Hà Nội-2022 MỤC LỤC NỘI DUNG YÊU CẦU 2 CƠ SỞ LÝ THUYẾT 2.1 Vi điều khiển Arduino Uno R3 2.2 Cảm biến DHT22 2.3 Module thời gián thực 1302 2.4 Module SD card THIẾT KẾ HỆ THỐNG VÀ MÔ PHỎNG 3.1 Sơ đồ tổng quan hệ thống 3.2 Thiết kế phần cứng 3.3 Thiết kế phần mềm 3.4 Kết hệ thống 16 KẾT LUẬN 17 4.1 Kết luận 17 4.2 Hạn chế 18 4.3 Hướng phát triển 18 1 NỘI DUNG YÊU CẦU Đề bài: Thiết kế đo nhiệt độ, cảnh báo led lưu trữ giá trị đo vào CSDL Yêu cầu: • Mạch điện tử thiết kế máy tính phần mềm chuyên dụng • Sai số cho phép: 0,5oC • Thao tác điều khiển khống chế mô LED: LED màu đỏ sáng nhiệt độ môi trường nhỏ nhiệt độ khống chế; LED màu xanh sáng nhiệt độ môi trường lớn nhiệt độ khống chế; LED màu vàng sáng nhiệt độ môi trường nhiệt độ khống chế ➢ Led cảnh báo màu xanh: 20 – 32 độ C ➢ Led cảnh báo màu vàng: 33– 40 độ C từ 10 – 20 độ C ➢ Ngoài khoảng led màu đỏ cảnh báo • Lưu trữ giá trị đo vào Cơ sở liệu PC CƠ SỞ LÝ THUYẾT 2.1 Vi điều khiển Arduino Uno R3 Arduino tảng mã nguồn mở sử dụng để xây dựng dự án điện tử Arduino bao gồm bảng mạch lập trình (thường gọi vi điều khiển) phần mềm (IDE) sử dụng để lập trình viết tải mã máy tính lên bo mạch Hiện có nhiều phiên Arduino, chúng thiết kế để hướng tới phục vụ nhiều mục đích khác tùy theo người sử dụng Tuy nhiên phổ biến sử dụng nhiều Arduino UNO R3 Hình 11 Cấu tạo vi điều khiển arduino Uno R3 Cổng USB (loại B): cổng giao tiếp để ta upload code từ PC lên vi điểu khiển Đồng thời giao tiếp serial để truyền liệu vi điểu khiển với máy tính - Jack nguồn: để chạy Arduino lấy nguồn từ cổng USB trên, lúc cắm với máy tính Lúc đó, ta cần nguồn 9V đến 12V - Hàng Header: đánh số từ đến 12 hàng digital pin, nhận vào xuất tín hiệu số Ngồi có pin đất (GND) pin điện áp tham chiếu (AREF) - Hàng header thứ hai: chủ yếu liên quan đến điện áp đất, nguồn - Hàng header thứ ba: chân để nhận vào xuất tín hiệu analog Ví dụ đọc thông tin thiết bị cảm biến - Vi điều khiển AVR: xử lý trung tâm toàn bo mạch Với mẫu Arduino khác chip khác Ở Arduino Uno sử dụng ATMega328 2.2 Cảm biến DHT22 Cảm biến nhiệt độ độ ẩm DHT 22 cảm biến thơng dụng tích hợp vừa đo nhiệt độ độ ẩm, độ xác cao ❑ Thơng số kỹ thuật • Nguồn: 3~5V • Dịng điện sử dụng: 2.5mA max (khi truyền liệu) • Khoảng đo độ ẩm: 0% - 100% RH sai số 2-5% RH • Khoảng đo nhiệt độ: -40 - 80 độ C sai số 0.5% độ C • Tần số lấy mẫu tối đa 0.5Hz (2 giây / lần) • Kích thước: 28mm x 12mm x 10mm ❑ Sơ đồ chân Hình 1 Sơ đồ chân cảm biến DHT 22 Tuy nhiên, sử dụng, sử dụng chân 1,2 4, chân số không sử dụng mơ – đun, bị bỏ qua nên nhiều cảm biến DHT_22 thiết kế có chân mà khơng có chân NC ❑ Ngun lý hoạt động DHT 22 Chúng bao gồm linh kiện cảm biến độ ẩm, cảm biến nhiệt độ NTC (hoặc nhiệt điện trở) IC phía sau cảm biến Hình Chi tiết cấu tạo cảm biến DHT 22 Để đo độ ẩm, họ sử dụng thành phần cảm biến độ ẩm có hai điện cực với chất giữ ẩm chúng Vì vậy, độ ẩm thay đổi, độ dẫn chất thay đổi điện trở điện cực thay đổi Sự thay đổi điện trở đo xử lý IC khiến cho vi điều khiển sẵn sàng để đọc Cách thức hoạt động cảm biến DHT 22 Mặt khác, để đo nhiệt độ, cảm biến sử dụng cảm biến nhiệt độ NTC nhiệt điện trở Một nhiệt điện trở thực điện trở thay đổi điện trở với thay đổi nhiệt độ Những cảm biến chế tạo cách thiêu kết vật liệu bán dẫn gốm polyme để cung cấp thay đổi lớn điện trở với thay đổi nhỏ nhiệt độ Thuật ngữ có tên “NTC” có nghĩa hệ số nhiệt độ âm, có nghĩa điện trở giảm nhiệt độ tăng Đồ thị chuyển dịch nhiệt độ độ ẩm 2.3 Module thời gián thực 1302 ❑ Giới thiệu chung Module Thời Gian Thực DS1302 sử dụng làm đồng hồ loại thị led 7Segs, lcd, thị lên hình máy tính Module Thời Gian Thực DS1302 sử dụng IC DS1302 chip đồng hồ, gồm có thời gian thực đồng hồ / lịch 31byte RAM tĩnh, giao tiếp thông qua giao diện nối tiếp đơn giản cho vi điều khiển Real-time mạch đồng hồ / lịch cung cấp giây, phút, giờ, ngày, tuần, tháng, năm thông tin, số ngày tháng bước nhảy ngày năm tự động điều chỉnh Hoạt động đồng hồ thiết lập 24 12 định dạng AM / PM Có thể sử dụng loại chip thông dụng để nhận xử lý liệu 8051, AVR, PIC, Ardunio ❑ Thông số kỹ thuật PCB bảng điều khiển nhất, kích thước: 44mm * 23mm * 1.6mm - Với lỗ định vị, đường kính 3,1mm Kích thước: 47mm x 17mm x 6mm (L x W x H) - Chip chính: DS1302 IC thời gian thực Điện áp làm việc: DC 3.3~ 5V - Phạm vi nhiệt độ chịu đựng (độ C): ~ 70 - Chế độ I/O nối tiếp - Phương thức mối dây (lấy chương trình cung cấp làm ví dụ, bạn kết nối cổng IO nào, sửa đổi định nghĩa cổng chương trình) VCC => + 5V / 3.3V GND => GND CLK => P02 DAT => P01 RST => P00 • LƯU Ý: - Không đảo ngược kết nối VCC GND để tránh làm cháy chip Điện trở kéo lên cần kết nối với cổng P0 vi điều khiển 2.51 Nếu vi điều khiển bạn không kết nối với điện trở kéo lên, bạn kết nối cáp liệu với cổng khác 2.4 Module SD card ❑ Giới thiệu chung Module Micro SD card module đọc/ghi thẻ nhớ micro SD dành cho Arduino sử dụng giao tiếp SPI, dễ dàng sử dụng với thư viện SPI.h SD.h Arduino IDE Có thể đọc/ghi liệu từ micro SD Cho phép thực dự án lưu trữ liệu (data logging), phát nhạc MP3… - Hỗ trợ thẻ nhớ micro SD, micro SDHC Giao thức: SPI - Thẻ nhớ Micro SD hỗ trợ định dạng FAT16 FAT32 - Hỗ trợ việc recording playback cho lượng âm lớn Điện áp cung cấp: 5VDC - Kích thước dài x rộng x cao: 42mm X 24mm X 12mm ❑ Thơng số kỹ thuật - Tương thích với nguồn 5V 3.3V - Hỗ trợ khe cắm mở rộng - SD Card hỗ trợ định dạng FAT16 FAT32 (các định dạng khác NTFS, ext1-4, không chơi cool) Tốt bỏ vào máy windows format lại theo định dạng FAT16 FAT32 - Hỗ trợ việc recording playback cho lượng âm lớn THIẾT KẾ HỆ THỐNG VÀ MÔ PHỎNG 3.1 Sơ đồ tổng quan hệ thống Sơ đồ kết nối hệ thống 3.2 Thiết kế phần cứng Phần mềm Proteus cho phép mô hoạt động mạch điện tử bao gồm phần thiết kế mạch viết chương trình điều khiển cho họ vi điều khiển MCS-51, PIC, AVR, … Proteus phần mềm mô mạch điện tử Labcenter Electronics, mô cho hầu hết linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho MCU PIC, 8051, AVR, Motorola Dựa vào mơ hình hệ thống bên dưới, phần điều khiển vi điều khiển Arduino để điều khiển cảm biến để lưu liệu, thời gian thực đo đưa cảnh báo LED Tất liệu đo lưu vào module SD card giúp người dùng đánh giá tổng quan hệ thống theo thời gian Sơ đồ kết nối phần cứng mô proteus 3.3 Thiết kế phần mềm Hình để bắt đầu chương trình hệ thống, cần phải cần thêm thư viện cần thiết để đáp ứng nhu cầu chạy yêu cầu hệ thống Ví dụ để lấy thời gian thực thư viện RtcDS1302.h cho phép thực nhiệm vụ Thư viện SD.h phép dùng thẻ SD sử dụng chức thẻ SD card Ngoài việc định nghĩa cho chân cho led định nghĩ chân cho module thời gian thực chân cho cảm biến để thực việc lấy liệu từ bên Để thực việc lưu trữ vào sở liệu máy thì cần có file txt chân để truyền liệu vào thẻ SD Khai báo thư viện set chân cho module mô Trong hàm void setup(), để thực chương trình việc cấu hình khởi động cho module điều quan trọng để bắt đầu chương trình Trong hệ thống khởi tạo DHT, cài đặt thời gian ban đầu, cài đặt thẻ SD thời gian để lặp lại chu kỳ có kết theo mong mn người dùng Hàm void Setup() hệ thống Hàm void loop() hàm thực chương trình cách liên tục sau thực xong hàm void setup() Ở hàm loop thực tất chức người dùng đặt cho hệ thống Như hình bên đọc giá trị nhiệt độ độ ẩm từ cảm biến DHT22 lấy giá trị thời gian thực từ module DS1302 Sau có liệu cảm biến nhiệt độ có đưa cảnh báo led với nhiệt độ thấp vượt mức cho phép gây nguy hiểm ảnh hưởng đến người LED màu đỏ sáng nhiệt độ môi trường nhỏ nhiệt độ khống chế; LED màu xanh sáng nhiệt độ môi trường lớn nhiệt độ khống chế; LED màu vàng sáng nhiệt độ môi trường nhiệt độ khống chế đồng thời lưu liệu đo vào thẻ SD ❑ Led cảnh báo màu xanh: 20 – 32 độ C ❑ Led cảnh báo màu vàng: 33– 40 độ C từ 10 – 20 độ C ❑ Ngồi khoảng led màu đỏ cảnh báo Hàm void loop() thực chương trình cách liên tục Để tránh dài cho hàm void loop khó kiểm sốt, việc tạo function điều cần thiết Ở hình function RtcSetting để kiểm tra xem module DS1302 kết nối với vi điều khiển truyền nhận liệu thành công hay thất bại báo cho người dùng biết 10 Hàm rtcSetting cho biết kết nối cảm biến DS1302 Tương tự DS1302 kiếm tra kết nối thẻ SD diễn để xác minh thẻ SD kết nối thành công sẵn sàng nhận liệu Hàm sdSetting cho biết kết nối thẻ SD card Hàm writetoSD dùng đề viết liệu thẻ SD lưu Cơ sở liệu máy 11 Viết liệu thẻ SD Để định dạng liệu theo mà người tạo yêu cầu: Ngày thàng năm/ Thời gian/ nhiệt độ/ độ ẩm hàm bên nhiệm vụ định dạng liệu trước lưu vào thẻ SD Hàm định dạng liệu Trên chi tiết phần function hệ thống Cuối Code chi tiết cho chương trình: CODE: 12 * #include * #include * #include "DHT.h" * #include * #include * * #define red * #define yellow * #define green * * ThreeWire myWire(A0, A1, A2); // IO, SCLK, CE * RtcDS1302 Rtc(myWire); * * const int DHTPIN = 2; * const int DHTTYPE = DHT11; * DHT dht(DHTPIN, DHTTYPE); * float h; * float t; * * File myFile; * const int chipSelect = 10; * String fileName = "store.txt"; * * void setup () *{ * Serial.begin(9600); * pinMode( red, OUTPUT); * pinMode( green, OUTPUT); * pinMode( yellow, OUTPUT); * * dht.begin(); // khoi tao cam bien * rtcSetting(); // setup ve thoi gian * sdSetting(); * delay(3000); *} * * void loop () *{ * RtcDateTime set = Rtc.GetDateTime(); * String dateTime = printDateTime(set); * if (!set.IsValid()) * { * Serial.println("RTC lost confidence in the DateTime!"); * } * * h = dht.readHumidity(); //Đọc độ ẩm * t = dht.readTemperature(); //Đọc nhiệt độ * if( t >=20 && t =20 && t 32 && t < 40) || (t >= 10 && t < 20 )) { digitalWrite(yellow, HIGH); digitalWrite(green, LOW); digitalWrite(red, LOW); } else { digitalWrite(red, HIGH); digitalWrite(yellow, LOW); digitalWrite(green, LOW); } String ht = printDHT(h,t); writeToSD(fileName,dateTime +","+ ht); delay(1000); // one seconds } void rtcSetting() { Serial.print("compiled: "); Serial.print( DATE ); Serial.print(" "); Serial.println( TIME ); 14 void rtcSetting() { Serial.print("compiled: "); Serial.print( DATE ); Serial.print(" "); Serial.println( TIME ); Rtc.Begin(); RtcDateTime set = RtcDateTime( DATE , TIME ); printDateTime(set); Serial.println(); if (!Rtc.IsDateTimeValid()) // set thoi gian hien tai co dươc hay khong { Serial.println("RTC can't set up the DateTime!"); Rtc.SetDateTime(set); } if (!Rtc.GetIsRunning()) { Serial.println("RTC was not actively running, starting now"); Rtc.SetIsRunning(true); } } void sdSetting() { Serial.print("Initializing SD card "); // kiem tra the hop le if (!SD.begin(chipSelect)) { Serial.println("initialization failed!"); while(1); } Serial.println("initialization done."); myFile = SD.open(fileName); if (myFile) // kiem tra file ton tai { Serial.println(fileName); while (myFile.available()) { Serial.write(myFile.read()); } myFile.close(); } } } void writeToSD(String fileName, String str) { File dataFile = SD.open(fileName, FILE_WRITE); // if the file is available, write to it: 15 void writeToSD(String fileName, String str) { File dataFile = SD.open(fileName, FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.println(str); dataFile.close(); Serial.print("Saved: "); Serial.println(str); } // if the file isn't open, pop up an error: else { Serial.println("error opening file"); } } #define countof(a) (sizeof(a) / sizeof(a[0])) String printDateTime(const RtcDateTime& dt) { char datestring[20]; snprintf_P(datestring, countof(datestring), PSTR("%02u/%02u/%04u %02u:%02u:%02u"), dt.Month(), dt.Day(), dt.Year(), dt.Hour(), dt.Minute(), dt.Second() ); Serial.print(datestring); return datestring; } String printDHT(float h, float t) { Serial.print(" Temperature: "); Serial.print(t); //Xuất nhiệt độ Serial.print(" Humidity: "); Serial.println(h); return String(t) + "," + String(h); } 3.4 Kết hệ thống 16 Kết mô đáp ứng đủ yêu cầu đề Bảng kết sở liệu KẾT LUẬN 4.1 Kết luận Qua trình nghiên cứu tìm hiểu, thiết kế, xây dựng mơ hình, mơ phỏng, nhóm thực công việc sau: - Nghiên cứu hiểu rõ cấu tạo, chức năng, nguyên lý hoạt động cách kết nối với vi điều khiển cảm biến 17 - Kết nối module với phần mềm mơ để tạo hệ thống hồn chỉnh thực yêu cầu đề 4.2 Hạn chế - Hệ thống dừng lại công việc mơ phần mềm proteus nên cịn chưa thực tế, chưa có sai số - Hệ thống chưa thiết kế mạch PCB để tăng độ xác hệ thống 4.3 Hướng phát triển - Hoàn thiện nâng cấp sản phẩm hướng đến sản phẩm IOT ứng dụng vào đời sống, sản xuất để nâng cao hiểu chất lượng - Thêm tính cho hệ thống để ứng dụng nhiều vào thực tế Thiết kế mạch PCB tăng độ ổn định cho hệ thống 18 ... lớn nhiệt độ khống chế; LED màu vàng sáng nhiệt độ môi trường nhiệt độ khống chế ➢ Led cảnh báo màu xanh: 20 – 32 độ C ➢ Led cảnh báo màu vàng: 33– 40 độ C từ 10 – 20 độ C ➢ Ngồi khoảng led màu... 17 4.1 Kết luận 17 4.2 Hạn chế 18 4.3 Hướng phát triển 18 1 NỘI DUNG YÊU CẦU Đề bài: Thiết kế đo nhiệt độ, cảnh báo led lưu trữ giá trị đo vào CSDL... người LED màu đỏ sáng nhiệt độ môi trường nhỏ nhiệt độ khống chế; LED màu xanh sáng nhiệt độ môi trường lớn nhiệt độ khống chế; LED màu vàng sáng nhiệt độ môi trường nhiệt độ khống chế đồng thời lưu