Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 100 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
100
Dung lượng
5,41 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA KỸ THUẬT ĐIỆN ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ HỆ THỐNG BÁO CHÁY QUA SMS NGUYỄN QUANG HUY Hà Nội, tháng 12 năm 2018 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA KỸ THUẬT ĐIỆN ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ HỆ THỐNG BÁO CHÁY QUA SMS Sinh viên thực : LÊ PHÚC HƯNG Mã sinh viên : 1381420235 Giảng viên hướng dẫn : THS LƯU THỊ HUẾ Ngành : CÔNG NGHỆ KỸ THUẬT ĐIỆN, ĐIỆN TỬ Chuyên ngành : ĐIỆN CÔNG NGHIỆP VÀ DÂN DỤNG Lớp : D9DCN2 Khóa : 2014 – 2019 Hà Nội, tháng 12 năm 2018 LỜI CAM ĐOAN Tôi, Lê Phúc Hưng, cam đoan nội dung đồ án thực hướng dẫn ThS Lưu Thị Huế Các số liệu kết đồ án trung thực chưa công bố cơng trình khác Các tham khảo đồ án trích dẫn rõ ràng tên tác giả, tên cơng trình, thời gian nơi cơng bố Nếu khơng đúng nêu trên, tơi hồn tồn chịu trách nhiệm đồ án Hà Nội, ngày tháng năm 2018 Người cam đoan (Ký ghi rõ họ tên) LỜI CẢM ƠN Qua bốn năm học tập rèn luyện trường Đại học Điện Lực, bảo giảng dạy nhiệt tình quý thầy cô, đặc biệt quý thầy cô khoa Kỹ Thuật Điện khoa Công Nghệ Tự Động truyền đạt cho em kiến thức lý thuyết thực hành suốt thời gian học trường Với kiến thức học nỗ lực thân, chúng em hoàn thành đồ án tốt nghiệp với đề tài “Thiết kế hệ thống báo cháy qua SMS” Chúng em xin chân thành cảm ơn quý thầy cô trường Đại học Điện Lực, đặc biệt giảng viên hướng dẫn ThS Lưu Thị Huế tận tình giúp đỡ, định hướng chúng em trình lựa chọn đề tài hỗ trợ chúng em trình thực đề tài Chúng em gửi lời cảm ơn đến anh chị khóa trên, bạn lớp đóng góp ý kiến cho nhóm thực đề tài tốt Với thời gian thực đề tài không nhiều, kiến thức cịn hạn hẹp, q trình thiết kế, chế tạo mơ hình có điểm cịn thiếu sót mong đóng góp ý kiến thầy bạn Chúng em xin chân thành cảm ơn! Hà Nội, ngày tháng năm 2018 Sinh viên NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Hà Nội, ngày tháng năm 2018 Giảng viên hướng dẫn (Ký ghi rõ họ tên) NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Hà Nội, ngày tháng năm 2018 Giảng viên (Ký ghi rõ họ tên) MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG BÁO CHÁY QUA SMS 1.1 Đặt vấn đề 1.2 Yêu cầu hệ thống 1.3 Các phương pháp điều khiển 1.3.1 Phương pháp dùng Vi điều khiển 1.3.2 Phương pháp dùng PLC 1.3.3 Kết luận CHƯƠNG 2: GIỚI THIỆU VỀ ARDUINO UNO R3 .4 2.1 Arduino UNO R3 2.1.1 Giới thiệu chung 2.1.2 Ưu điểm 2.1.3 Nhược điểm 2.2 Cấu trúc phần cứng 2.2.1 Cấu trúc chung .6 2.2.2 Thông số kỹ thuật 2.2.3 Vi điều khiển 2.2.4 Các cổng vào 2.2.5 Nguồn nuôi 10 2.2.6 Một số lưu ý sử dụng làm hỏng Arduino .12 CHƯƠNG 3: PHÂN TÍCH NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG .25 3.1 Giải pháp thiết kế .25 3.2 Sơ đồ khối 25 3.2.1 Khối chứa cảm biến .25 3.2.2 Khối xử lí .26 3.3 Cách thức hoạt động hệ thống 26 3.4 Các chức khối 3.4.1 Khối chứa cảm biến .27 3.4.2 Khối xử lí .27 CHƯƠNG 4: THIẾT KẾ XÂY DỰNG MƠ HÌNH 28 4.1 Các phần tử mơ hình 29 4.1.1 Module SIM900A mini 29 4.1.2 Module thu phát nRF24L01 29 4.1.3 Cảm biến nhiệt DHT11 31 4.1.4 Cảm biến khói MQ2 .40 4.1.5 Động cơ, đèn Led còi báo 42 4.1.6 Module Relay .44 4.2 Thiết kế phần cứng 45 4.2.1 Khối xử lí .46 4.2.2 Khối chứa cảm biến 46 4.3 Mạch điều khiển 47 4.4 Mạch lực 4.5 Thiết kế phần mềm 4.5.1 Giới thiệu phần mềm Arduino IDE 47 4.5.2 Cấu trúc chương trình Arduino IDE 47 4.6 Lưu đồ thuật toán 51 4.6.1 Lưu đồ khối xử lí 56 4.6.2 Lưu đồ khối chứa cảm biến 56 4.7 Hình ảnh sản phẩm 57 KẾT LUẬN 58 TÀI LIỆU THAM KHẢO .60 PHỤ LỤC 62 PHỤ LỤC 69 DANH MỤC CÁC TỪ VIẾT TẮT PLC MCU Programmable Logic Controller Micro Control Unit SPI (Bộ vi điều khiển) Serial Peripheral Interface Giao diện ngoại vi nối tiếp DANH MỤC HÌNH ẢNH Hình 2.1 Cấu trúc phần cứng Arduino UNO R3 Hình 2.2 Chip Atmega328 Arduino UNO R3 .7 Hình 2.3 Sơ đồ chân Atmega328 .8 Hình 2.4 Các cổng vào Arduino UNO R3 10 Hình 2.5 Các đầu cấp nguồn cho Arduino 10 Hình 2.6 Cáp USB cấp nguồn cho cổng cấp nguồn A hình 2.5 11 Hình 2.7 Cáp cấp nguồn cho cổng cấp nguồn B hình 2.5 11 Hình 2.8 Nguồn cấp vào cổng C hình 2.5 12 Hình 2.9 Nối Output2 mức High vào GND 12 Hình 2.10 Mắc nối tiếp thêm điện trở 220Ω 13 Hình 2.11 Nối chân Output2 mức High với chân Output3 mức Low 14 Hình 2.12 Mắc nối tiếp thêm điện trở 220Ω vào Output2 .14 Hình 2.13 Cấp điện áp 9V vào Output2 15 Hình 2.14 Sử dụng thêm Diode Zenner 15 Hình 2.15 Cắm ngược cực nguồn 16 Hình 2.16 Dùng thêm Diode để cấp nguồn .17 Hình 2.17 Cấp nguồn 9V vào chân 5V 17 Hình 2.18 Dùng thêm Diode zenner có thêm Transistor đệm dịng 18 Hình 2.19 Dùng IC hạ áp 18 Hình 2.20 Nối trực tiếp chân Vin xuống GND 19 Hình 2.21 Sử dụng cầu chì tự phục hồi 19 Hình 2.22 Lấy nguồn chân Vin 20 Hình 2.23 Cấp nguồn 13V vào chân reset 22 Hình 2.24 Dùng Diode zenner để hạ điện áp 23 Hình 2.25 Nối trực tiếp chân 5V xuống GND 23 Hình 2.26 Cầu chì bảo vệ Arduino UNO R3 24 Hình 3.1 Sơ đồ khối khối chứa cảm biến .25 Hình 3.2 Sơ đồ khối khối xử lí .26 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] Lịch sử phát triển Arduino wikipedia.com [2] nRF24L01_Product_Specification_v2_0 datasheet chip nRF2401 [3] http://arduino.vn/bai-viet/42-arduino-uno-r3-la-gi [4] http://www.arduino.vn [5] http://machtudong.vn/sanpham/atmega328-vi-dieu-khien-trong-board-macharduino.html [6] http://arduino.vn/reference [7] https://www.stdio.vn/articles/cap-nguon-cho-arduino-456 [8] https://banlinhkien.vn/goods-5629-module-sim900a-mini.html [9] http://arduino.vn/bai-viet/854-sim900a-arduino-gui-va-nhan-sms [10] http://arduino.vn/bai-viet/562-su-dung-module-nrf24l01 [11] https://iotmaker.vn/cam-bien-nhiet-do-do-am-dht11.html [12] http://arduino.vn/bai-viet/91-doc-nhiet-do-do-am-va-xuat-ra-man-hinh-lcd [13] http://arduino.vn/bai-viet/899-huong-dan-su-dung-cam-bien-khi-gas-mq2-voiarduino [14] https://hourofcode.vn/lap-trinh-arduino-gioi-thieu-giao-dien-arduino-ide/ [15] https://hourofcode.vn/cau-truc-cua-mot-chuong-trinh-arduino-ide/ [16] http://mlab.vn/97969-sim900a.html [17] https://banlinhkien.vn/goods-848-module-relay-2-kenh-5v10a-rl2-0510.html [18] http://arduino.vn/bai-viet/200-lam-sao-de-pha-hong-arduino-uno-r3 [19] http://www.tme.vn/Product.aspx?id=1537#page=pro_info [20] DHT11 Data sheet https://drive.google.com/file/d/0B3hx0mu4KssVQ1NwbUpsYVQxaVU/view 70 PHỤ LỤC PHỤ LỤC CODE NẠP CHO ARDUINO Ở KHỐI XỬ LÍ Phần #include "rf24_cfg.h" #include "DHT.h" /****************** Define Value ****************************/ #define DHTPIN (8) // Dht input pin #define GAS_PIN A0 // gas pin #define ANNOUCE_LED (4) // Annouce led pin #define RELAY_PIN (5) // Motor control pin #define BUZZER_PIN (6) // buzzer pin #define TEST_PIN (7) // test button #define DHTTYPE DHT11 // Dht type #define UPPER_TEMP_THR (22) #define UPPER_SMOKE_THR (1) /****************** Structure Define ****** ***************/ /****************** Const and Global Variable ***************/ DHT dht(DHTPIN, DHTTYPE); rf_message tx_msg; // = {0xA1, 25, 75, 30}; byte temp = 0; byte humi = 0; byte smoke = 0; float R0 = 10; float SmokeCurve[3] ={2.3,0.53,-0.44}; bool fireEvent = false; bool testFlag = false; void blinking(uint8_t led_pin, uint8_t times, uint32_t delay_time); void buzzer_act(uint8_t times, uint32_t frequency, uint32_t delay_time); int MQResistanceCalculation(); float MQResistanceCalculation(int raw_adc); float MQCalibration(int mq_pin); 71 PHỤ LỤC void setup() { Serial.begin(9600); dht.begin(); rf24_master_init(); Serial.println("Done nfr24 init"); pinMode(ANNOUCE_LED, OUTPUT); pinMode(BUZZER_PIN, OUTPUT); pinMode(RELAY_PIN, OUTPUT); pinMode(TEST_PIN, INPUT); Serial.println("Done configure I/O pin"); digitalWrite(ANNOUCE_LED, LOW); digitalWrite(RELAY_PIN, HIGH); digitalWrite(BUZZER_PIN, LOW); Serial.println("Calibrating MQ "); R0 = MQCalibration(GAS_PIN); blinking(ANNOUCE_LED, 10, 100); Serial.println("Done!"); } void loop() { humi = dht.readHumidity(); // Read humidity temp = dht.readTemperature(); // Read temperature smoke = MQResistanceCalculation();//analogRead(GAS_PIN); /*Debug log */ Serial.print("Temperature value = "); Serial.println(temp); Serial.print("Smoke value = "); Serial.println(smoke); /* Prepare message to send */ if(testFlag == true) { tx_msg.command = TEST_DATA_CMD; } else { 72 PHỤ LỤC tx_msg.command = UPDATE_DATA_CMD; } tx_msg.temp = temp; tx_msg.humi = humi; tx_msg.smoke = smoke; /* Send message */ rf24_write(tx_msg); /* Test dau hieu chay */ if(digitalRead(TEST_PIN) == LOW) { if(fireEvent == true) { fireEvent = false; testFlag = false; Serial.print("fire event = "); Serial.println(fireEvent); } else { fireEvent = true; testFlag = true; Serial.print("fire event = "); Serial.println(fireEvent); } } /* Dau hieu co chay */ if((temp > UPPER_TEMP_THR) && (smoke > UPPER_SMOKE_THR)) { fireEvent = true; } /* Xu ly co chay */ if( fireEvent == true ) { blinking(ANNOUCE_LED, 10, 100); 73 PHỤ LỤC digitalWrite(RELAY_PIN, LOW); buzzer_act(2, 1000, 500); } else { digitalWrite(ANNOUCE_LED, LOW); digitalWrite(RELAY_PIN, HIGH); digitalWrite(BUZZER_PIN, LOW); } //delay(500); } void blinking(uint8_t led_pin, uint8_t times, uint32_t delay_time) { for(uint8_t i = 0; i < times ; i++) { if(i%2 == 0) { digitalWrite(led_pin, HIGH); delay(delay_time); } else { digitalWrite(led_pin, LOW); delay(delay_time); } } } void buzzer_act(uint8_t times, uint32_t frequency, uint32_t delay_time) { for(uint8_t i = 0; i < times ; i++) { if(i%2 == 0) { tone(BUZZER_PIN, frequency); // Send 1KHz sound signal delay(delay_time); } 74 PHỤ LỤC else { noTone(BUZZER_PIN); delay(delay_time); } } } int MQResistanceCalculation() { int raw_adc = analogRead(GAS_PIN); float rs = (((float)5*(1023-raw_adc)/raw_adc)); float r = rs/R0; Serial.print("r = "); Serial.println(r); return (pow(10,( ((log(r)-SmokeCurve[1])/SmokeCurve[2]) + SmokeCurve[0]))); } float MQResistanceCalculation(int raw_adc) { return ( ((float)5*(1023-raw_adc)/raw_adc)); } float MQCalibration(int mq_pin) { int i; float val=0; for (i=0;i UPPER_TEMP_THR) && (smoke > UPPER_SMOKE_THR)) { /* Blinking annouce LED */ // Nhay led blinking(ANNOUCE_LED, 10, 100); // Gui tin nhan if(sent_msg_flg == 0) { 79 PHỤ LỤC /* Send message to phone via SIM module */ SendMessage("Co' Chay'"); sent_msg_flg = 1; } } } // Tin nhan loai kiem tra if(rx_msg.command == TEST_DATA_CMD) /* Test */ { Serial.println("Test"); // Gui tin nhan if(sent_msg_flg == 0) { /* Send message to phone via SIM module */ SendMessage("Co' Chay'"); sent_msg_flg = 1; //sent_msg_flg++; } } } } // Ham nhay led void blinking(uint8_t led_pin, uint8_t times, uint32_t delay_time) { for(uint8_t i = 0; i < times ; i++) { if(i%2 == 0) { digitalWrite(led_pin, HIGH); delay(delay_time); } else { digitalWrite(led_pin, LOW); delay(delay_time); 80 PHỤ LỤC } } } SIM.h #include SoftwareSerial SIM900A(7,9); char cmd[30]; char head[] = "AT+CMGS=\""; char num[] = "0965571551"; char tail[] = "\"\r"; // Khoi tao module sim void SIM_int() { SIM900A.begin(9600); // Setting the baud rate of GSM Module delay(100); } // ham gui tin nhan void SendMessage(char* msg) { Serial.println ("Gui tin nhan "); SIM900A.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(1000); sprintf (cmd, "%s%s%s", head, num, tail); SIM900A.println(cmd); delay(1000); //SIM900A.println("AT+CMGS=\"+0348472568\"\r"); // mobile number //delay(1000); SIM900A.println(msg); delay(100); SIM900A.println((char)26);// ASCII code of CTRL+Z 81 PHỤ LỤC Serial.println ("Noi dung tin nhan"); Serial.println (msg); Serial.println ("Xong"); delay(1000); Serial.println ("Tin nhan da gui di"); } // ham nhan tin nhan void RecieveMessage() { Serial.println ("Noi dung tin nhan SMS"); delay (1000); SIM900A.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS delay(1500); Serial.write ("xong"); } rf24.cfg.h #include #include #include /****************** Define Value ****************************/ // chon chan cho nfr24 #define RF24_CE_PIN (10) #define RF24_CSN_PIN (8) // Tap cau lenh #define UPDATE_DATA_CMD (0x01) #define TEST_DATA_CMD (0x99) /****************** Structure Define ****** ***************/ typedef struct{ byte command; byte temp; byte humi; byte smoke; }rf_message; 82 PHỤ LỤC /****************** Const and Global Variable ***************/ const byte address[6] = "00001"; RF24 radio(RF24_CE_PIN, RF24_CSN_PIN); // Declare rf24 object /****************** Functions ******************************/ // Khoi tao module nrf24 phia slave void rf24_slave_init(void) { radio.begin(); radio.openReadingPipe(0, address); radio.setPALevel(RF24_PA_MIN); radio.startListening(); } // Khoi tao module nrf phia master void rf24_master_init() { radio.begin(); radio.openWritingPipe(address); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); } //Doc tin nhan den tu module nrf24 uint8_t rf24_read(rf_message* rx_msg) { uint8_t ret = 0; while(radio.available()) { radio.read(rx_msg, sizeof(rf_message)); ret = 1; } return ret; } 83 PHỤ LỤC // Gui tin nhan qua module nrf24 uint8_t rf24_write(rf_message tx_msg) { uint8_t ret; radio.write(&tx_msg, sizeof(tx_msg)); ret = true; return ret; } 84