BÁO cáo bài tập lớn kỹ thuật lập trình trong cơ điện tử đề tài hệ thống cảnh báo nhiệt độ

32 3 0
BÁO cáo bài tập lớn kỹ thuật lập trình trong cơ điện tử đề tài hệ thống cảnh báo nhiệt độ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG CƠ KHÍ ĐẠI HỌC BÁCH KHOA HÀ NỘI - BÁO CÁO BÀI TẬP LỚN Kỹ thuật lập trình Cơ điện tử Đề tài: Hệ thống cảnh báo nhiệt độ Giảng viên hướng dẫn: Ts Dương Văn Lạc Nhóm thực hiện: Nhóm 11 Hà Lưu Thành Phong (TN) 20195135 Cơ điện tử 06 – K64 Lê Anh Trung 20195206 Cơ điện tử 06 – K64 Trương Xuân Tùng 20195226 Cơ điện tử 05 – K64 Trần Sơn Việt 20195233 Cơ điện tử 05 – K64 Nguyễn Công Tuấn Vinh 20195234 Cơ điện tử 06 - K64 nội, 7/2022 Mục lục LỜI MỞ ĐẦU TIEU LUAN MOI download : skknchat123@gmail.com moi nhat PHẦN I : LẬP KẾ HOẠCH THỰC HIỆN PHẦN MỀM I LẬP KẾ HOẠCH Khởi tạo dự án .5 Phân tích tính khả thi II LỊCH BIỂU DIỄN CÔNG VIỆC Thành viên .5 Thời gian tổng thể PHẦN 2: PHÂN TÍCH HỆ THỐNG SƠ ĐỒ THIẾT KẾ .7 LINH KIỆN SỬ DỤNG .7 Sơ Đồ Kết Nối Của Màn Hình LCD1602: 11 LẬP TRÌNH ADRUINO 13 LẬP TRÌNH GIAO DIỆN C# 17 PHẦN 3: THỬ NGHIỆM VÀ KẾT LUẬN 19 THỬ NGHIỆM 19 KẾT LUẬN 20 Phần 4: Bài học kinh nghiệm: .20 Về triển khai kế hoạch tập lớn 20 Về thiết kế hệ thống .20 Về lập trình Arduino 20 Về lập trình GUI 21 LỜI CẢM ƠN .22 Không tìm thấy mục nhập nào của bảng hình minh họa TIEU LUAN MOI download : skknchat123@gmail.com moi nhat LỜI MỞ ĐẦU Những năm gần đây, khoa học công nghệ phát triển nhanh vũ bão, đặc biệt lĩnh vực công nghệ thông tin Có thể nói, cơng nghệ thơng tin len lỏi vào hầu hết tất lĩnh vực sống Trong đó, cơng nghệ phần mềm ln ln đóng vai trị tiên phong, dẫn đầu q trình Các phần mềm ứng dụng ngày nhiều công việc sống thường ngày người Nắm bắt xu hướng đó, khn khổ nội dung chương trình học học phần Kĩ thuật lập trình Cơ điện tử, nhóm chúng em định tìm hiểu xây dựng đề tài đơn giản gần gũi với thực tế: Hệ thống quản lí tiền điện xã Qua trình tìm hiểu xây dựng phần mềm thực tế, với kiến thực học giảng đường, chúng em thực cảm nhận khó khăn xây dựng phát triển phần mềm hoàn chỉnh Để xây dựng phần mềm hồn thiện, khơng đơn lập trình, mà cịn nhiều công việc khác cần phải thực Các công việc xếp pha với trình tự hợp lí, khoa học Phần mềm nhóm em xây dựng nhằm hỗ trợ cho người sử dụng nhanh chóng dễ dàng việc cập nhật tình hình nhiệt độ, độ ẩm môi trường xác định thời gian thực cách nhanh chóng dễ dàng lưu trữ thơng số đo đạt với độ xác cao mà tiện lợi Đây phần mềm mà nhóm em xây dựng nên tránh khỏi hạn chế thiếu sót, kính mong giáo bạn bổ sung, góp ý để phần mềm ngày hồn thiện thực hữu ích với người sử dụng Chúng em xin chân thành cảm ơn! TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do PHẦN I : LẬP KẾ HOẠCH THỰC HIỆN PHẦN MỀM I LẬP KẾ HOẠCH Khởi tạo dự án Mong muốn có sản phẩm quản lí nhiệt độ, độ ẩm nhằm nâng cao hiệu quản lý để đạt yêu cầu đầu đối tượng, nhóm sinh viên chúng em nghiên cứu xây dựng đề tài X để hỗ trợ người quản lý nhân viên họ công việc quản lý nhiệt độ, độ ẩm cách đại chuyên nghiệp Sản phẩm giúp tiết kiệm lượng lớn thời gian đo đạc thủ công thống kê khảo sát tình hình mơi trường thời gian thực Phân tích tính khả thi 2.1 Tính khả thi mặt kỹ thuật - Sản phẩm phát triển dựa công cụ C# Adruino công cụ hỗ trợ thơng dụng, mạnh để lập trình giao diện lập trình vi điều khiển - Sản phầm thiết kế chạy window đảm bảo phù hợp với đa số người dùng - Linh kiện không phức tạp 2.2 Tính khả thi mặt kinh tế - Linh kiện khơng khó để tìm kiếm khơng đắt đỏ 2.3 Tính khả thi mặt tổ chức - Phần mềm sau hoàn thành dễ dàng sử dụng, thân thiện với người dung, người II LỊCH BIỂU DIỄN CÔNG VIỆC Thành viên STT Tên MSSV Lớp Trần Quang Trung (TN) 20134191 KT ĐT-TT 06 K58 Trịnh Hữu Trường 20134237 KT ĐT-TT 07 K58 Nguyễn Đăng Anh Tú 20136796 CN-Điện tử TT 02 K58 Nguyễn Thị Cẩm Tú 20134495 KT ĐT-TT 09 K58 BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do Phạm Mạnh Tuấn 20134328 KT ĐT-TT 06 K58 Thời gian tổng thể Tổng thời gian dự kiến 15-17 tuần (kéo dài thời gian học) hoàn thành trước thời hạn bàn giao phần mềm tuần phân bổ sau: + Phân tích thiết kế hệ thống phần mềm : 4-5 tuần + Lập trình, kiểm thử hệ thống phần mềm, sửa lỗi, nộp báo cáo : 11-12 tuần BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do PHẦN 2: PHÂN TÍCH HỆ THỐNG SƠ ĐỒ THIẾT KẾ LINH KIỆN SỬ DỤNG a) Adruino Uno R3 BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do Thông số kỹ thuật Adruino Uno R3 Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động - 12V DC ( khuyên dùng ) Tần số hoạt động 16 MHz Dòng tiêu thụ Khoảng 30mA Điện áp vào giới hạn 19V DC Số chân Digital I/O 14 ( chân PWM ) Số chân Analog ( độ phân giải 10bit ) Dòng tối đa chân I/O 30 mA Dòng tối đa ( 5V ) 500 mA Dòng tối đa ( 3.3 ) 50 mA Bộ nhớ Flash 32 KB ( ATmega328 ) với 0.5 KB dùng bootloader SRAM KB EEPROM 1KB Khối lượng 25 gram BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do b) Cảm biến nhiệt độ, độ ẩm DHT11 Cảm biến nhiệt độ, độ ẩm DHT11 BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do Thông số kỹ thuật Cảm biến nhiệt độ độ ẩm DHT 11  Nguồn: -> VDC  Dòng sử dụng: 2.5mA max (khi truyền liệu)  Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)   Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)   Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)  Kích thước 15mm x 12mm x 5.5mm Cảm biến độ ẩm nhiệt độ DHT11 Temperature Humidity Sensor là cảm biến thơng dụng chi phí rẻ dễ lấy liệu thông qua giao tiếp wire (giao tiếp digital dây truyền liệu nhất) Bộ tiền xử lý tín hiệu tích hợp cảm biến giúp bạn có liệu xác mà khơng phải qua tính tốn So với cảm biến đời DHT22 DHT11 cho khoảng đo độ xác nhiều c) Màn hình LCD 16x2 giao tiếp I2C BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do LCD 16×2 được sử dụng để hiển thị trạng thái thơng số  LCD 16×2 có 16 chân chân liệu (D0 – D7) chân điều khiển (RS, RW, EN)  chân lại dùng để cấp nguồn đèn cho LCD 16×2  Các chân điều khiển giúp ta dễ dàng cấu hình LCD chế độ lệnh chế độ liệu  Chúng cịn giúp ta cấu hình chế độ đọc ghi LCD 16×2 sử dụng chế độ bit bit tùy theo ứng dụng ta làm Module I2C Arduino Module I2C LCD 16×2 LCD có q nhiều nhiều chân gây khó khăn q trình đấu nối chiếm dụng nhiều chân vi điều khiển.  Module I2C LCD ra đời giải vấn để cho bạn Thay phải chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 D4) module IC2 bạn cần tốn chân (SCL, SDA) để kết nối Module I2C hỗ trợ loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) tương thích với hầu hết vi điều khiển BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 10 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do CODE lập trình arduino Phần code Arduino: #include #include const int DHTPIN = 7; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); #include #include #include LiquidCrystal_I2C lcd(0x27,16,2); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; int state = 0; long time_now = 0; long time_start = 0; float gettemp(); float data = 0; BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 18 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do void setup() { Serial.begin(9600); dht.begin(); lcd.init(); lcd.backlight(); lcd.print("Nhiet do: "); lcd.setCursor(0,1); lcd.print("Do am: "); lcd.createChar(1, degree); pinMode(2,OUTPUT); } void loop() { // Điều khiển Arduino qua giá trị biến state if(Serial.available()) { char temp = Serial.read(); if(temp == '0') state = 0; if(temp == '1') state = 1; if(temp == '2') state = 2; } // Thực thi trường hợp với giá trị biến state BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 19 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do switch(state) { // state = 0: dừng Arduino case 0: break; case 1: gettemp(); Serial.print(time_now); Serial.print("|"); Serial.println(round(data)); break; // state = 2: Reset liệu thời gian case 2: data = 0; time_now = 0; state = 0; break; } float h = dht.readHumidity(); float t = dht.readTemperature(); if (t > 33) { digitalWrite(2,HIGH); digitalWrite(3,LOW); } else { digitalWrite(2,LOW); BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 20 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do digitalWrite(3,HIGH); } if (isnan(t) || isnan(h)) { } else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(" %"); } } float gettemp() { time_start = millis(); data = dht.readTemperature(); delay(100); time_now = time_now + millis() - time_start; } BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 21 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do Code lập trình giao diện using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.IO.Ports; using System.Xml; using ZedGraph; namespace GraphRealTime { public partial class Form1 : Form { string SDatas = String.Empty; // Khai báo chuỗi để lưu liệu cảm biến gửi qua Serial string SRealTime = String.Empty; // Khai báo chuỗi để lưu thời gian gửi qua Serial int status = 0; // Khai báo biến để xử lý kiện vẽ đồ thị double realtime = 0; //Khai báo biến thời gian để vẽ đồ thị double datas = 0; //Khai báo biến liệu cảm biến để vẽ đồ thị public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 22 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do comboBox1.DataSource = SerialPort.GetPortNames(); // Lấy nguồn cho comboBox tên cổng COM comboBox1.Text = Properties.Settings.Default.ComName; // Khởi tạo ZedGraph GraphPane myPane = zedGraphControl1.GraphPane; myPane.Title.Text = "Đồ thị liệu theo thời gian"; myPane.XAxis.Title.Text = "Thời gian (s)"; myPane.YAxis.Title.Text = "Dữ liệu"; RollingPointPairList list = new RollingPointPairList(60000); LineItem curve = myPane.AddCurve("Dữ liệu", list, Color.Red, SymbolType.None); myPane.XAxis.Scale.Min = 0; myPane.XAxis.Scale.Max = 30; myPane.XAxis.Scale.MinorStep = 1; myPane.XAxis.Scale.MajorStep = 5; myPane.YAxis.Scale.Min = -100; myPane.YAxis.Scale.Max = 100; myPane.AxisChange(); } // Hàm Tick bắt kiện cổng Serial mở hay không private void timer1_Tick(object sender, EventArgs e) { if (!serialPort1.IsOpen) { progressBar1.Value = 0; } else if (serialPort1.IsOpen) BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 23 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do { progressBar1.Value = 100; Draw(); Data_Listview(); status = 0; } } // Hàm lưu lại cổng COM chọn cho lần kết nối private void SaveSetting() { Properties.Settings.Default.ComName = comboBox1.Text; Properties.Settings.Default.Save(); } // Nhận xử lý string gửi từ Serial private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { string[] arrList = serialPort1.ReadLine().Split('|'); // Đọc dòng Serial, cắt chuỗi gặp ký tự gạch đứng SRealTime = arrList[0]; // Chuỗi lưu vào SRealTime SDatas = arrList[1]; // Chuỗi thứ hai lưu vào SDatas double.TryParse(SDatas, out datas); // Chuyển đổi sang kiểu double double.TryParse(SRealTime, out realtime); realtime = realtime / 1000.0; // Đối ms sang s status = 1; // Bắt kiện xử lý xong chuỗi, đổi starus để hiển thị liệu ListView vẽ đồ thị BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 24 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do } catch { return; } } // Hiển thị liệu ListView private void Data_Listview() { if (status == 0) return; else { ListViewItem item = new ListViewItem(realtime.ToString()); // Gán biến realtime vào cột ListView item.SubItems.Add(datas.ToString()); listView1.Items.Add(item); // Gán biến datas vào cột ListView // Không nên gán string SDatas xuất liệu sang Excel dạng string, khơng thực phép tốn listView1.Items[listView1.Items.Count - 1].EnsureVisible(); // Hiện thị dòng gán gần ListView, tức cuộn ListView theo liệu gần } } // Vẽ đồ thị private void Draw() { if (zedGraphControl1.GraphPane.CurveList.Count xScale.Max - xScale.MajorStep) { xScale.Max = realtime + xScale.MajorStep; xScale.Min = xScale.Max - 30; } // Tự động Scale theo trục y if (datas > yScale.Max - yScale.MajorStep) { yScale.Max = datas + yScale.MajorStep; } else if (datas < yScale.Min + yScale.MajorStep) { yScale.Min = datas - yScale.MajorStep; BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 26 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do } zedGraphControl1.AxisChange(); zedGraphControl1.Invalidate(); zedGraphControl1.Refresh(); } // Xóa đồ thị, với ZedGraph phải khai báo lại hàm Form1_Load, không không hiển thị private void ClearZedGraph() { zedGraphControl1.GraphPane.CurveList.Clear(); // Xóa đường zedGraphControl1.GraphPane.GraphObjList.Clear(); // Xóa đối tượng zedGraphControl1.AxisChange(); zedGraphControl1.Invalidate(); GraphPane myPane = zedGraphControl1.GraphPane; myPane.Title.Text = "Đồ thị liệu theo thời gian"; myPane.XAxis.Title.Text = "Thời gian (s)"; myPane.YAxis.Title.Text = "Dữ liệu"; RollingPointPairList list = new RollingPointPairList(60000); LineItem curve = myPane.AddCurve("Dữ liệu", list, Color.Red, SymbolType.None); myPane.XAxis.Scale.Min = 0; myPane.XAxis.Scale.Max = 30; myPane.XAxis.Scale.MinorStep = 1; myPane.XAxis.Scale.MajorStep = 5; myPane.YAxis.Scale.Min = -100; myPane.YAxis.Scale.Max = 100; BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 27 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do zedGraphControl1.AxisChange(); } // Hàm xóa liệu private void ResetValue() { realtime = 0; datas = 0; SDatas = String.Empty; SRealTime = String.Empty; status = 0; // Chuyển status } // Hàm lưu ListView sang Excel private void SaveToExcel() { Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application(); xla.Visible = true; Microsoft.Office.Interop.Excel.Workbook wb = xla.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet); Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)xla.ActiveSheet; rộng // Đặt tên cho hai ô A1 B1 "Thời gian (s)" "Dữ liệu", sau tự động dãn độ Microsoft.Office.Interop.Excel.Range rg = (Microsoft.Office.Interop.Excel.Range)ws.get_Range("A1", "B1"); ws.Cells[1, 1] = "Thời gian (s)"; ws.Cells[1, 2] = "Dữ liệu"; BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 28 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do rg.Columns.AutoFit(); // Lưu từ dịng thứ 2, tức ô A2 int i = 2; int j = 1; foreach (ListViewItem comp in listView1.Items) { ws.Cells[i, j] = comp.Text.ToString(); foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) { ws.Cells[i, j] = drv.Text.ToString(); j++; } j = 1; i++; } } private void btConnect_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("2"); //Gửi ký tự "2" qua Serial, tương ứng với state = serialPort1.Close(); btConnect.Text = "Kết nối"; btExit.Enabled = true; SaveSetting(); // Lưu cổng COM vào ComName } else { serialPort1.PortName = comboBox1.Text; // Lấy cổng COM BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 29 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do serialPort1.BaudRate = 9600; // Baudrate 9600, trùng với baudrate Arduino try { serialPort1.Open(); btConnect.Text = "Ngắt kết nối"; btExit.Enabled = false; } catch { MessageBox.Show("Không thể mở cổng" + serialPort1.PortName, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void btExit_Click(object sender, EventArgs e) { DialogResult traloi; traloi = MessageBox.Show("Bạn có muốn thoát?", "Thoát", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (traloi == DialogResult.OK) { Application.Exit(); // Đóng ứng dụng } } private void btSave_Click(object sender, EventArgs e) { DialogResult traloi; traloi = MessageBox.Show("Bạn có muốn lưu số liệu?", "Lưu", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); if (traloi == DialogResult.OK) { BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 30 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do SaveToExcel(); // Thực thi hàm lưu ListView sang Excel } } private void btRun_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("1"); //Gửi ký tự "1" qua Serial, chạy hàm tạo Random Arduino } else MessageBox.Show("Bạn chạy chưa kết nối với thiết bị", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } private void btPause_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write("0"); //Gửi ký tự "0" qua Serial, Dừng Arduino } else MessageBox.Show("Bạn dừng chưa kết nối với thiết bị", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } private void btClear_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { DialogResult traloi; traloi = MessageBox.Show("Bạn có muốn xóa?", "Xóa liệu", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do 31 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do BAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.doBAO.cao.bai.tap.lon.ky.thuat.lap.trinh.trong.co.dien.tu.de.tai.he.thong.canh.bao.nhiet.do

Ngày đăng: 23/12/2023, 22:59

Tài liệu cùng người dùng

Tài liệu liên quan