Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 91 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
91
Dung lượng
3,6 MB
Nội dung
LỜI CẢM ƠN Lời em xin chân thành cảm ơn thầy giáo ThS Nguyễn Thanh Tùng, thầy tần tình giúp đỡ, định hướng cho em suốt tình tìm hiểu nghiên cứu thiếtkế mô hình cho báo cáo thực tập Em xin bày tỏ lòng cảm ơn tới ban giám hiệu thầy cô khoa Công nghệ điện tử viễn thông – Trường Đại học Công nghệ thông tin Truyền thông Thầy cô tận tình dạy dỗ tạo điều kiện học tập nghiên cứu năm tháng học nhà trường Cuối xin gửi lời cảm ơn tới gia đình, người bạn bên động viên giúp hoàn thiện tốt khóa luận Xin chân thành cảm ơn ! Thái Nguyên, tháng 3/2016 Sinh viên Bùi Quang Vũ LỚI CAM ĐOAN Tôi xin cam đoan: Những nội dung đồ án tổng hợp thực Mọi 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 địa điểm công bố Mọi chép không hợp lệ vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên Bùi Quang Vũ MỤC LỤC LỜI CẢM ƠN LỚI CAM ĐOAN MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN 11 1.1 Tổng quan tình hình nước quốc tế 11 1.1.1 Tình hình giới .11 1.1.2 Tình hình nước 13 1.2 Tổng quan đề tài 13 1.2.1 Yêu cầu đề tài 13 1.2.2 Tính cấp thiết đề tài .13 1.2.3 Giải pháp thiếtkế 14 1.3 Tổng quan Arduino 14 1.4 Tổng quan camera giámsát .17 1.4.1 Định nghĩa 17 1.4.2 Lịch sử phát triển Camera quan sát 18 1.4.3 Phân loại camera giámsát 20 1.4.4 Chất lượng hình ảnh 26 1.4.5 Điều kiện hoạt động 27 1.4.6 Góc quan sát 28 CHƯƠNG GIỚI THIỆU VỀ CÁC LINH KIỆN SỬ DỤNG TRONG 29 HỆTHỐNGGIÁMSÁT AN NINH NGÔINHÀ 29 2.1 Giới thiệu Arduino Mega2560 29 2.1.1 Giới thiệu 29 2.1.2 Sơ đồ chân Arduino mega2560 31 2.1.3 Sơ đồ nguyên lý Arduino Mega2560 36 2.2 Giới thiệu modul camera RS232 PTC08 37 2.2.1 Giới thiệu 37 2.2.2 Các số hoạt động .37 2.2.3 Cấu tạo PTC08 .38 2.2.4 Sơ đồ nguyên lý camera RS232 PTC08 41 2.2.5 Giao thức truyền thông 41 2.2.6 Quá trình chụp 42 2.2.7 Các lĩnh vực sử dụng 43 2.3 Giới thiệu module cảm biến chuyển động (PIR) HC-SR501 44 2.3.1.Cấu tạo nguyên lý hoạt động cảm biến PIR 44 2.3.2 Tìm hiểu module cảm biến PIR 46 2.3.3 Thiết bị hội tụ tia nhiệt cho module cam biến PIR 50 2.3.4 Nguyên lý hoạt động cảm biến PIR .51 2.4 Giới thiệu module sim900A 54 2.4.1 Tổng quan 54 2.4.2 Sơ đồ chân Module Sim 900a .57 2.5 Module MicroSD 61 2.5.1 Giới thiệu 61 2.5.2 Đặc tính kỹ thuật 61 2.6 Module cảm biến khí Gas MQ7 .61 2.6.1 Khái niệm 61 2.6.2 Đặc điểm kỹ thuật 62 2.6.3 Thông số kỹ thuật 62 2.7 Module cảm biến lửa .62 2.7.1 Các tính 62 2.7.2 Ứng dụng 63 2.7.3 Mô tả 63 CHƯƠNG NGÔN NGỮ LẬP TRÌNH VÀ CÁC PHẦN MỀM PHỤ TRỢ .64 3.1 Ngôn ngữ lập trình 64 3.2 Phần mềm phụ trợ .64 3.3 Phần mềm Arduino IDE 65 3.3.1 Cài đặt chương trình Arduino IDE .65 3.3.2 Cấu trúc lập trình Arduino 69 3.3.3 Chương trình điềukhiển led đơn theo tín hiệu đèn giao thông .70 CHƯƠNG THIẾTKẾVÀTHICÔNG 75 4.1 Mô hình hệthống 75 4.1.1 Sơ đồ khối hệthống 75 4.1.2 Sơ đồ nguyên lý 78 4.2 Mô hình triển khai thực nghiệm .89 4.2.1 Hình ảnh sản phẩm thực tế .89 4.2.2 Đánh giá kết 90 4.2.3 Phương hướng phát triển 90 KẾT LUẬN 91 DANH MỤC HÌNH ẢNH Hình 1.1 Thiết bị Camera chụp ảnh nhanh giới 11 Hình 1.2 Chiếc lens Dark Energy Camera 12 Hình 1.3 Những thành viên khởi xướng Arduino 15 Hình 1.4 Hình ảnh Arduino 16 Hình 1.5 Một số loại kit Arduino 17 Hình 1.6 Camera quan sát thực tế 18 Hình 1.7 Lịch sử phát triển camera giámsát .19 Hình 1.8 Camera loại analog .20 Hình 1.9 Camera CMOS 21 Hình 1.10 Camera có dây 22 Hình 1.11 Camera có dây 23 Hình 1.12 Camera IP 23 Hình 1.13 Camera áp trần .24 Hình 1.14 Camera ẩn dạng bút 24 Hình 1.15 IR camera 25 Hình 2.1 Arduino Mega2560 29 Hình 2.2 Sơ đồ linh kiện Arduino Mega2560 30 Hình 2.3 Sơ đồ chân Arduino Mega2560 31 Hình 2.4 Sơ đồ cổng vào Atmega2560 33 Hình 2.5 Shield hỗ trợ điềukhiển motor 34 Hình 2.6 Shield hỗ trợ kết nối wifi 35 Hình 2.7 Mẫu chắn cho Arduino Mega 35 Hình 2.8 Ma trận LED 8traanjhieenr thị ảnh 36 Hình 2.10 Sơ đồ nguyên lý Arduino Mega2560 36 Hình 2.11 Module camera RS232 PTC08 37 Hình 2.12 Cổng kết nối với PTC08 39 Hình 2.13 Mặt trước PTC08 .39 Hình 2.14 Mặt sau PTC08 .40 Hình 2.15 Kích thước ống lens 40 Hình 2.16 Sơ đồ nguyên lý PTC08 41 Hình 2.17 Cảm biến PIR 44 Hình 2.18 Cấu tạo phân tử PIR .45 Hình 2.19 Nguyên tắc tạo cảm biến chuyển động 45 Hình 2.20 Nguyên lý vào PIR .46 Hình 2.21 Hỉnh ảnh loại PIR 46 Hình 2.22 Các thành phần modul PIR .47 Hình 2.23 Các khổi cảm biến PIR 48 Hình 2.24 Sơ đồ chân IC BISS0001 48 Hình 2.25 Chức chân IC BISS0001 49 Hình 2.26.Cấu tạo IC BISS0001 49 Hình 2.27 Sơ đồ tương đương PIR 50 Hình 2.28 Kính Fnesnel 50 Hình 2.29 Sự hội tụ chủa kính Fresnel 51 Hình 2.30 Khi vật thể chưa vào vùng ảnh hưởng 52 Hình 2.31 Khi vật thể vào vùng ảnh hưởng 53 Hình 2.32 Khi vật thể vào vùng ảnh hưởng 53 Hình 2.33 Khi vật thể khỏi vùng ảnh hưởng 54 Hình 2.34 Khi vật thể xa .54 Hình 2.35 Sơ đồ chân Sim 900 57 Hình 2.36 Hình ảnh thực tế thứ tự chân Module Sim 900A 58 Hình 2.37 Sơ đồ khối nguồn Sim 900 .58 Hình 2.38 Sơ đồ khối Speaker .59 Hình 2.39 Sơ đồ khối microphone 59 Hình 2.40 Sơ đồ khối truyền nhận liệu .60 Hình 2.41 Mặt sau Module sim 900 .60 Hình 2.42 Sơ đồ khối Sim card 60 Hình 2.43 Module microSD 61 Hình 2.44 Cảm biến khí ga MQ7 62 Hình 2.45 Module cảm biến lửa 63 Hình 3.1 Phần mềm Proteus 65 Hình 3.2 Phần mềm Arduino IDE 65 Hình 3.2 Arduino IDE 66 Hình 3.3 File menu 67 Hình Edit menu 67 Hình 3.5 Sketch menu 68 Hình 3.6 Tool menu 68 Hình 3.7 Chọn Board 69 Hình 3.8 Lưu đồ thuật toán chương trình Arduino 70 Hình 3.9 Dịch chạy chương trình điềukhiển led đơn .72 Hình 3.10 Mạch led giao thông sử dụng Arduino 74 Hình 4.1 Sơ đồ khối hệthống 75 Hình 4.2 Khối điềukhiển 75 Hình 4.4 Còi báo 76 Hình 4.5 Module MicroSD .77 Hình 4.6 Mạch ổn áp 5V cung cấp nguồn cho board mạch Arduino 77 Hình 4.7 Sơ đồ nguyên lý 78 Hình 4.8 Lưu đồ thuật toán .88 Hình 4.9 Đi dây cho mạch thành phẩm .89 Hình 4.10 Sảm phẩm hoàn thiện .89 LỜI NÓI ĐẦU Ngày khoa học công nghệ ngày phát triển, vi điềukhiển AVR vi điềukhiển PIC ngày thông dụng hoàn thiện , nói xuất Arduino vào năm 2005 giáo sư Massimo Banzi trường Interraction Design Instistute Ivrea (IDII) Italia mở hướng cho vi điềukhiển Được vinh dự đặt theo tên vị vua King Arduin Sự xuất Arduino hỗ trợ cho người nhiều lập trình thiết kế, người bắt đầu tìm tòi vi điềukhiển mà nhiều kiến thức, hiểu biết sâu sắc vật lý điện tử Xã hội ngày rối ren, phức tạp nhiều vấn nạn trộm cắp, nên việc lắp đặt thống camera quan sátnhà cần thiết , hệthống camera quan sát chọn lựa hàng đầu cá nhân, gia đình doanh nghiệp nhằm đảm bảo an ninh, gia tăng quản lý chất lượng công việc để tự bảo vệ tránh khỏi rủi ro đáng tiếc Hệthống camera quan sát giải pháp phổ biến xem công cụ an ninh chủ đạo việc phòng chống tội phạm, giámsát dây truyền sản xuất, giámsátnhà xưởng… nơi làm việc Camera không thiết bị đắt đỏ với người dùng cá nhân doanh nghiệp camera xem phương pháp giámsát thuận lợi Camera đáp ứng nhu cầu đa dạng hệthống camera quan sát có kỹ thuật cao cho giới có tốc độ phát triển nhanh chóng ngày Trên sở kiến thức học môn học : Tin học đại cương , Lập trình chuyên dụng, Kỹ thuật lập trình thiết bị di độngVà với hiểu biết thiết bị điện tử mong muốn giúp đỡ phần tới việc bảo vệ chonhà người Em định thực đề tài thực tập tốt nghiệp với đề tài: “Thiết kếthicônghệthốngđiềukhiểngiámsáttựđộngcho nhà” Với đề tài em muốn đưa công nghệ Arduino tới gần với người việc kết nối với modul cảm biến chuyển động (PIR) modul Camera giải pháp tối ưu cho việc giámsátnhà bạn nhà tín hiệu internet Chắc hẳn công cụ hữu ích cho người Ngoài giúp thân em tìm hiểu thêm thiết bị điện tử nâng cao hiểu biết cho thân Do kiến thức hạn hẹp kít Arduino, việc nghiên cứu Camera PIR mẻ nên trình làm mạch lập trình em nhiều vướng mắc Thêm vào lần đầu thực đề tài thực tập nên chắn không tránh khỏi thiếu sót, hạn chế em mong có góp ý nhắc nhở từ thầy, cô giáo bạn để hoàn thiện đề tài Thái Nguyên, tháng năm 2016 Sinh viên Bùi Quang Vũ 10 - Thiết bị lưu trữ Camera RS232 PTC08 chụp ảnh đồng với thiết bị lưu trữ Ở chọn module Micro SD để dễ kết nối với Arduino Mega2560 Ngoài có thẻ nhớ 2GB kèm Hình 4.5 Module MicroSD f) Khối nguồn Cung cấp nguồn cho khối mạch Sử dụng nguồn 5V Ngoài board Arduino, khối nguồn IC hạ áp NCP1117- 5V ổn áp 5V cho board mạch Arduino Hình 4.6 Mạch ổn áp 5V cung cấp nguồn cho board mạch Arduino 77 Ngoài mạch dùng thêm nguồn để nuôi cho camera loa số phụ kiện khác 4.1.2 Sơ đồ nguyên lý Hình 4.7 Sơ đồ nguyên lý Hệthống bao gồm bo mạch Arduino Mega2560 điềukhiển toàn hoạt độnghệ thống, cảm biến chuyển động camera lắp vị trí phù hợp chonhà Khi có kết quả, thông số kết hiển thị Serial Monitor Thuật toán cho mạch đo Code chương trình điềukhiểnchohệ thống: #include #include #include #include #include 78 LiquidCrystal lcd(39, 38, 37, 36, 35, 34); #include const int p1Pin = 41; const int p2Pin = 43; int p3Pin = A1; int p1State = 0; int p2State = 0; #define chipSelect 53 int analogPin = A0; int val = 0; int val1 = 0; #if ARDUINO >= 100 // On Uno: camera TX connected to pin 2, camera RX to pin 3: //SoftwareSerial cameraconnection = SoftwareSerial(2, 3); // On Mega: camera TX connected to pin 69 (A15), camera RX to pin 3: SoftwareSerial cameraconnection = SoftwareSerial(69, 3); #else NewSoftSerial cameraconnection = NewSoftSerial(2, 3); #endif Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection); ////////////////////////////////////// void setup() { pinMode(41,INPUT); pinMode(43,INPUT); pinMode(5, OUTPUT); pinMode(33, OUTPUT); pinMode(32, OUTPUT); lcd.begin(16, 2); // When using hardware SPI, the SS pin MUST be set to an 79 // output (even if not connected or used) If left as a // floating input w/SPI on, this can cause lockuppage #if !defined(SOFTWARE_SPI) #if defined( AVR_ATmega1280 ) || defined( AVR_ATmega2560 ) if(chipSelect != 53) pinMode(53, OUTPUT); // SS on Mega #else if(chipSelect != 10) pinMode(10, OUTPUT); // SS on Uno, etc #endif #endif Serial.begin(9600); Serial.println("VC0706 Camera snapshot test"); // see if the card is present and can be initialized: if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); // don't anything more: return; } // Try to locate the camera if (cam.begin()) { Serial.println("Camera Found:"); lcd.setCursor(1, 0); lcd.print("Camera found"); delay(2000); lcd.clear(); } else { Serial.println("No camera found?"); return; 80 } // Print out the camera version information (optional) char *reply = cam.getVersion(); if (reply == 0) { Serial.print("Failed to get version"); } else { Serial.println(" -"); Serial.print(reply); Serial.println(" -"); } // Set the picture size - you can choose one of 640x480, 320x240 or 160x120 // Remember that bigger pictures take longer to transmit! //cam.setImageSize(VC0706_640x480); cam.setImageSize(VC0706_320x240); //cam.setImageSize(VC0706_160x120); // biggest // medium // small // You can read the size back from the camera (optional, but maybe useful?) uint8_t imgsize = cam.getImageSize(); Serial.print("Image size: "); if (imgsize == VC0706_640x480) Serial.println("640x480"); if (imgsize == VC0706_320x240) Serial.println("320x240"); if (imgsize == VC0706_160x120) Serial.println("160x120"); cam.setMotionDetect(true); Serial.print("Motion detection is "); if (cam.getMotionDetect()) Serial.println("ON"); 81 else Serial.println("OFF"); pinMode(13,OUTPUT); } void loop() { p1State = digitalRead(p1Pin); p2State = digitalRead(p2Pin); // check if the pushbutton is pressed // if it is, the buttonState is HIGH: if (p1State == HIGH) { // turn LED on: digitalWrite(32,HIGH); digitalWrite(33,LOW); delay(200); digitalWrite(33,LOW); digitalWrite(32,LOW); delay(300); delay(5000); if (cam.motionDetected()) { Serial.println("Motion!"); cam.setMotionDetect(false); if (! cam.takePicture()) Serial.println("Failed to snap!"); else Serial.println("Picture taken!"); char filename[13]; strcpy(filename, "IMAGE00.JPG"); 82 for (int i = 0; i < 100; i++) { filename[5] = '0' + i/10; filename[6] = '0' + i%10; // create if does not exist, not open existing, write, sync after write if (! SD.exists(filename)) { break; } } File imgFile = SD.open(filename, FILE_WRITE); uint16_t jpglen = cam.frameLength(); Serial.print(jpglen, DEC); Serial.println(" byte image"); Serial.print("Writing image to "); Serial.print(filename); while (jpglen > 0) { // read 32 bytes at a time; uint8_t *buffer; uint8_t bytesToRead = min(32, jpglen); // change 32 to 64 for a speedup but may not work with all setups! buffer = cam.readPicture(bytesToRead); imgFile.write(buffer, bytesToRead); //Serial.print("Read "); Serial.print(bytesToRead, Serial.println(" bytes"); jpglen -= bytesToRead; } imgFile.close(); Serial.println(" Done!"); lcd.setCursor(1, 0); lcd.print("taken camera d1"); delay(5000); 83 DEC); lcd.clear(); cam.resumeVideo(); cam.setMotionDetect(true); } } if (p2State == HIGH) { // turn LED on: digitalWrite(33,HIGH); digitalWrite(32,LOW); delay(200); digitalWrite(33,LOW); digitalWrite(32,LOW); delay(5000); if (cam.motionDetected()) { Serial.println("Motion!"); cam.setMotionDetect(false); if (! cam.takePicture()) Serial.println("Failed to snap!"); else Serial.println("Picture taken!"); char filename[13]; strcpy(filename, "IMAGE00.JPG"); for (int i = 0; i < 1000; i++) { filename[5] = '0' + i/10; filename[6] = '0' + i%10; // create if does not exist, not open existing, write, sync after write if (! SD.exists(filename)) { 84 break; } } File imgFile = SD.open(filename, FILE_WRITE); uint16_t jpglen = cam.frameLength(); Serial.print(jpglen, DEC); Serial.println(" byte image"); Serial.print("Writing image to "); Serial.print(filename); while (jpglen > 0) { // read 32 bytes at a time; uint8_t *buffer; uint8_t bytesToRead = min(32, jpglen); // change 32 to 64 for a speedup but may not work with all setups! buffer = cam.readPicture(bytesToRead); imgFile.write(buffer, bytesToRead); //Serial.print("Read "); Serial.print(bytesToRead, Serial.println(" bytes"); jpglen -= bytesToRead; } imgFile.close(); Serial.println(" Done!"); lcd.setCursor(1, 0); lcd.print("taken camera d2"); delay(5000); lcd.clear(); cam.resumeVideo(); cam.setMotionDetect(true); } } val = analogRead(analogPin); 85 DEC); val1 = analogRead(p3Pin); Serial.println(val); Serial.println(val1); delay(1000); if(val >= 300){ digitalWrite(13,HIGH); delay(3000); Serial.begin(9600); Serial.print("\r"); delay(1000); Serial.print("AT+CMGF=1\r"); delay(1000); Serial.print("AT+CMGS=\"+841666802618\"\r"); delay(1000); Serial.print("SOS co gas phong\r"); lcd.setCursor(0, 1); lcd.print("SOS GAS"); delay(5000); lcd.clear(); delay(1000); Serial.write(0x1A); delay(1000); digitalWrite(13,LOW); delay(3000); } if(val1