(Đồ án tốt nghiệp) xây dựng hệ thống camera giám sát

75 15 0
(Đồ án tốt nghiệp) xây dựng hệ thống camera giám sá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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO KHĨA LUẬN TỐT NGHIỆP NGÀNH CƠNG NGHỆ KỸ THUẬT MÁY TÍNH XÂY DỰNG HỆ THỐNG CAMERA GIÁM SÁT GVHD: ThS LÊ MINH SVTH: TRẦN HOÀNG GIA MSSV: 11119061 SVTH: NGUYỄN VŨ THÁI HỒNG MSSV: 11119175 SKL003873 Tp Hồ Chí Minh, tháng 7/2015 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP XÂY DỰNG HỆ THỐNG CAMERA GIÁM SÁT SVTH : TRẦN HOÀNG GIA MSSV : 11119061 SVTH : NGUYỄN VŨ THÁI HOÀNG MSSV : 11119175 Khóa : 2011-2015 Ngành : CÔNG NGHỆ KỸ THUẬT MÁY TÍNH GVHD: LÊ MINH TP Hồ Chí Minh, tháng năm 2015 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc _*** _ Tp Hồ Chí Minh, ngày tháng năm 2015 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP MSSV: 11119061 Họ tên sinh viên: Trần Hoàng Gia MSSV: 11119175 Họ tên sinh viên: Nguyễn Vũ Thái Hoàng Giảng viên hướng dẫn: ThS.Lê Minh ĐT: Ngày nhận đề tài: 18-03-2015 Ngày nộp đề tài: 20-07-2015 Tên đề tài: Xây dưng hệ thống Camera giám sát Các số liệu, tài liệu ban đầu: Khơng có Nội dung thực đề tài: - Thiết kế hệ thống hoàn thiện gồm Camera - Các Camera có khả chụp hình lưu video - Góc quay Camera thay đổi Sản phẩm: Có TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc _*** _ PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN MSSV: 11119061 Họ tên sinh viên: Trần Hoàng Gia Nguyễn Vũ Thái Hồng MSSV: 11119175 Ngành: Cơng nghệ kỹ thuật máy tính Tên đề tài: Xây dựng hệ thống Camera giám sát Họ tên Giáo viên hướng dẫn: ThS.Lê Minh NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: (Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2015 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ii CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc _*** _ PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên sinh viên: Trần Hoàng Gia MSSV: 11119061 Nguyễn Vũ Thái Hoàng MSSV: 11119175 Ngành: Cơng nghệ kỹ thuật máy tính Tên đề tài: Xây dựng hệ thống Camera giám sát Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: (Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2015 Giáo viên phản biện (Ký & ghi rõ họ tên) iii LỜI CẢM ƠN Đối với sinh viên việc làm luận văn mang ý nghĩa to lớn, mang tính chất bước ngoặt, cột mốc quan trọng kết phấn đấu, nỗ lực thân người Bên cạnh đó, giúp đỡ thầy cơ, gia đình bạn bè đóng vai trị quan trọng Thầy ân cần bảo, củng cố mặt kiến thức, chun mơn Gia đình, bạn bè thúc đẩy tinh thần động lực việc hồn thành đề tài Vì vậy, chúng em xin gửi lời cảm ơn chân thành đến người luôn bên cạnh đồng hành suốt khoảng thời gian thực đề tài Trước tiên nhóm xin gửi lời cảm ơn sâu sắc đến thầy Lê Minh, người tận tình hướng dẫn, bảo nhiều suốt khoảng thời gian học tập trường việc thực đề tài Thầy định hướng giúp chúng em lựa chọn đề tài tốt nghiệp phù hợp với khả phát huy mạnh hồn thành đề tài tiến độ Nhóm xin gửi lời cảm ơn tới nhà trường tạo nhiều điều kiện thuận lợi cho chúng em học tập, hoạt động bổ ích nhằm tạo sân chơi lành mạnh cho sinh viên Nhóm xin bày tỏ lịng biết ơn thầy mơn Các thầy ln nhiệt tình bảo, hướng dẫn tạo điều kiện cho chúng em suốt khoảng thời gian học tập, nghiên cứu trường Xin cảm ơn gia đình, bố mẹ ln bên cạnh động viên hỗ trợ mặt Xin cảm ơn người bạn luôn giúp đỡ nhóm cần suốt khoảng thời gian học tập trường suốt trình thực đề tài Một lần nhóm xin gửi lời cảm ơn chân thành đến nhà trường, thầy cô, gia đình bạn bè giúp đỡ, hỗ trợ nhiều để đề tài hồn thành tốt đẹp Hồ Chí Minh, tháng 7/2015 iv TĨM TẮT Ngày nay, khoa học công nghệ phát triển cho đời nhiều thiết bị đại nhằm phục vụ cho sống người loại máy móc tự động hay hệ thống điều khiển từ xa, Mỗi hệ thống xây dựng phát triển phục vụ cho mục đích khác nhau, đem lại nhiều lợi ích Về vấn đề an ninh, hệ thống Camera đóng vai trị quan trọng, lắp đặt Camera phương pháp giúp phòng chống xâm nhập bất hợp pháp phát hành vi đáng nghi ngờ ngày lẫn đêm Vì vậy, với mong muốn nghiên cứu phát triển hệ thống Camera nhằm phục vụ nhu cầu an ninh trường học cơng ty , nhóm nghiên cứu định thực đề tài “Xây dựng hệ thống Camera giám sát” Đề tài trình bày cách xây dựng mơ hình Camera giám sát thơng qua mơi trường mạng Trong đó, hệ thống thực chức như: chụp hình, quay phim, điều khiển góc quay cho Camera Với tiêu chí đó, nhóm thực đề tài xây dựng hệ thống đơn giản, có khả ứng dụng thực tiễn Mơ hình xây dựng dựa thành phần đơn giản như:  Kit Raspberry, động servo, webcam  Ngơn ngữ lập trình Python v ABSTRACT Nowadays, scientific and technology developments have made many modern devices which are useful in life such as automatic machines or remote control system, security camera system Each system was built and developed with different purposes On security, Camera systems have a important role The installation of Camera system is the method to prevent the thieves, protect our property and life For the purpose of researching and building a camera system for the security in schools and companies, the team decided to implement the project “Designing a security camera system” This topic will show you how to build a security camera system which is transfered data through the network In particular, the system can perform basic funtions such as shooting or controlling the camera angles With these features, the team will build a simple system, capable of practical application The product is based on simple ingredients like:  Kit Raspberry, servo motors, webcam  Python programming language vi MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN iii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT v ABSTRACT vi MỤC LỤC vii DANH MỤC CÁC TỪ VIẾT TẮT ix DANH MỤC HÌNH x DANH MỤC BẢNG xi Chương TỔNG QUAN 1.1 Giới thiệu tình hình nghiên cứu .1 1.2 Tính cấp thiết của đề tài 1.3 Mục tiêu đề tài 1.4 Đối tượng nghiên cứu 1.5 Phạm vi nghiên cứu đề tài .2 1.6 Phương phh́áp nghiên cứu 1.7 Bố cục của báo cáo Chương CƠ SỞ LÝ THUYẾT 2.1 Kit Raspberry 2.2 Động Servo 2.3 Camera 14 2.4 Mạng máy tính 16 Chương THIẾT KẾ PHẦN CỨNG 26 3.1 Mơ hình hệ thống 26 3.2 Chức phần cứng 27 3.3 Sơ đồ khối chức khối 28 3.4 Lựa chọn phần cứng 29 Chương THIẾT KẾ PHẦN MỀM 33 4.1 Chương trình máy tính 33 4.1.1 Nhiệm vụ của chương trình 33 4.1.2 Lưu đồ hoạt động .34 vii s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((address,port)) s.listen(10) print "Waiting for connection " try: while True: conn, addr = s.accept() print "Connected from",addr turn = conn.recv(1024) print turn if (turn == "left"): x=x+10 pwm.ChangeDutyCycle(x) print x time.sleep(0.1) GPIO.output(13,GPIO.HIGH) GPIO.output(15,GPIO.LOW) time.sleep(0.5) GPIO.output(13,GPIO.LOW) GPIO.output(15,GPIO.LOW) time.sleep(0.01) elif (turn == "right"): x=x-10 pwm.ChangeDutyCycle(x) print x time.sleep(0.1) GPIO.output(13,GPIO.HIGH) 47 GPIO.output(15,GPIO.LOW) time.sleep(0.5) GPIO.output(13,GPIO.LOW) GPIO.output(15,GPIO.LOW) time.sleep(0.01) except KeyboardInterrupt: p.stop() GPIO.cleanup() Chương trình máy tính #!/usr/bin/python # -*- coding: utf-8 -*-import socket import cv2 import numpy as np import sys import pygame import datetime import threading from collections import deque from optparse import OptionParser 48 from PySide.QtCore import * from PySide.QtGui import * from cv2 import * class MainDialog(QWidget): def init (self,parent=None): self.data="" self.ip = '' self.RecordImage = #Khời tạo nút nhấn QToolTip.setFont(QFont('Time New Roman',10)) super(MainDialog, self). init (parent) self.btnConnect = QPushButton("Connect") self.btnDisconnect = QPushButton("Disconnect") self.btnLeft = QPushButton("Turn Left") self.btnRight = QPushButton("Turn Right") self.btnSave = QPushButton("Capture") self.btnRecord = QPushButton("Record") self.btnMore = QPushButton("More") self.btnQuit = QPushButton("Quit") #Tạo Pixmap self.lbl1 = QLabel("IP SERVER ") self.lbl3 = QLabel("PORT CAMERA ") self.lbl4 = QLabel("PORT SERVO ") self.lbl5 = QLabel(" ") self.pixmap = QPixmap(320,240) self.lbl = QLabel(self) self.lbl.setPixmap('320x240.jpeg') 49 self.txtIP = QLineEdit(self) self.txtPortCamera = QLineEdit(self) self.txtPortServo = QLineEdit(self) self.status = QTextEdit(self) self.btnConnect.setToolTip('Connect to host') self.btnDisconnect.setToolTip('Disconnect to host') self.btnLeft.setToolTip('Turn camera left') self.btnRight.setToolTip('Turn camera right') self.btnSave.setToolTip('Save Image') self.btnRecord.setToolTip('Recording') self.btnQuit.setToolTip('Quit program') self.initUI() self.layout = QVBoxLayout() self.layout1 = QHBoxLayout() self.layout1.addWidget(self.lbl1) self.layout1.addWidget(self.txtIP) self.layout2 = QHBoxLayout() self.layout2.addWidget(self.lbl3) self.layout2.addWidget(self.txtPortCamera) self.layout3 = QHBoxLayout() self.layout3.addWidget(self.lbl4) self.layout3.addWidget(self.txtPortServo) self.btnlayout4 = QHBoxLayout() self.btnlayout4.addWidget(self.btnConnect) 50 self.btnlayout4.addWidget(self.btnDisconnect) self.btnlayout5 = QHBoxLayout() self.btnlayout5.addWidget(self.btnLeft) self.btnlayout5.addWidget(self.btnRight) self.btnlayout7 = QHBoxLayout() self.btnlayout7.addWidget(self.btnSave) self.btnlayout7.addWidget(self.btnRecord) self.btnlayout6 = QHBoxLayout() self.btnlayout6.addWidget(self.btnMore) self.btnlayout6.addWidget(self.btnQuit) self.layout.addLayout(self.layout1) self.layout.addLayout(self.layout2) self.layout.addLayout(self.layout3) self.layout.addLayout(self.btnlayout4) self.layout.addLayout(self.btnlayout5) self.layout.addLayout(self.btnlayout7) self.layout.addWidget(self.status) self.layout.addLayout(self.btnlayout6) self.layout4 = QVBoxLayout() self.layout4.addWidget(self.lbl5) self.layout4.addWidget(self.lbl) self.layout1 = QHBoxLayout() self.layout1.addLayout(self.layout) self.layout1.addLayout(self.layout4) self.setLayout(self.layout1) #Kết nối chương trình nút nhấn self.connect(self.btnConnect,SIGNAL("clicked()"),self.connectserver) self.connect(self.btnDisconnect,SIGNAL("clicked()"),self.disconnect) 51 self.connect(self.btnLeft,SIGNAL("clicked()"),self.turnleft) self.connect(self.btnRight,SIGNAL("clicked()"),self.turnright) self.connect(self.btnSave,SIGNAL("clicked()"),self.saveimage) self.connect(self.btnRecord,SIGNAL("clicked()"),self.record) self.connect(self.btnMore,SIGNAL("clicked()"),self.more) self.connect(self.btnQuit,SIGNAL("clicked()"),self.closeEvent1) def initUI(self): self.move(583,284) self.resize(640,240) self.setWindowTitle('Camera Viewer') self.setWindowIcon( QIcon('images.png')) self.show() def connectserver(self): self.ip = self.txtIP.text() port = int(self.txtPortCamera.text()) pygame.init() while True: clientsocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket.connect((self.ip, port)) received = [] while True: recvd_data = clientsocket.recv(1024) if not recvd_data: break else: received.append(recvd_data) dataset = ''.join(received) self.image = pygame.image.fromstring(dataset,(320,240),"RGB") 52 pygame.image.save(self.image,self.ip+".jpeg") self.lbl.setPixmap(QPixmap(self.ip+".jpeg")) capture = self.ip+".jpeg" if self.RecordImage == : im = cv.LoadImage(capture) self.frame_size = cv.GetSize(im) cv.WriteFrame(self.writer,im) self.lbl5.setText("REC") else: fps = im1 = cv.LoadImage('320x240.jpeg') self.frame_size = cv.GetSize(im1) self.writer = cv.CreateVideoWriter("temp.avi", cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, self.frame_size, True) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() self.lbl5.setText("LIVE") self.status.append(" Receiving data ") def disconnect(self): pygame.quit() clientsocket.close() self.status.append("Server Disconnected") def turnleft(self): port1 = int(self.txtPortServo.text()) clientsocket1=socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket1.connect((self.ip, port1)) 53 clientsocket1.send("left") self.status.append("Servo turn left") clientsocket1.close() def turnright(self): port2 = int(self.txtPortServo.text()) clientsocket2=socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientsocket2.connect((self.ip, port2)) clientsocket2.send("right") self.status.append("Servo turn right") clientsocket2.close() def saveimage(self): gio = datetime.datetime.now() luu =str(gio.day)+str(gio.month)+str(gio.year)+str(gio.hour)+str(gio.minute)+str(gio.second) pygame.image.save(self.image,luu+".jpg") self.status.append("save image") def record(self) : gio = datetime.datetime.now() luu =str(gio.day)+str(gio.month)+str(gio.year)+str(gio.hour)+str(gio.minute)+str(gio.second) if self.RecordImage == : fps = im1 = cv.LoadImage('320x240.jpeg') self.frame_size = cv.GetSize(im1) self.writer = cv.CreateVideoWriter(self.ip+luu+".avi", cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, self.frame_size, True) self.RecordImage = 54 else : self.RecordImage = def closeEvent(self, event): reply = QMessageBox.question(self, 'Message', "Are you sure to quit?", QMessageBox.No | QMessageBox.Yes, QMessageBox.Yes) if reply == QMessageBox.Yes: event.accept() else: event.ignore() def more(self): reply = QMessageBox.question(self, 'Message', "Do An Tot NghiepXay Dung Ung Camera Giam SatGVHD : Le MinhSVTH : Tran Hoang GiaNguyen Vu Thai Hoang",QMessageBox.Ok) def closeEvent1(self): self.close() pygame.quit() clientsocket.close() if name == " main ": app = QApplication(sys.argv) form = MainDialog() form.show() sys.exit(app.exec_()) 55 Phụ lục Hướng dẫn sử dụng Phần hướng dẫn cách sử dụng thiết bị môi trường mạng LAN môi trường mạng Internet Đối với môi trường mạng LAN B1: Cấp nguồn cho Camera kết nối chúng vào modem hub, switch hình bên Đồng thời kết nối máy tính vào mạng LAN ln, dùng dây cáp wifi B2: Trên máy tính, khởi động chương trình điều khiển lên Tiếp theo nhập thông số địa IP, Port Camera nhấn nút Connect chương trình bắt đầu hoạt động, chức chụp hình, quay phim, quay Camera sang trái, sang phải hực 56 Đối với mơi trường mạng Internet Để hệ thống hoạt động mơi trường Internet cách làm phúc tạp địi hỏi cổng ứng dụng chương trình kit phải mở Modem máy tính có kết nối từ mạng khác truy cập vào Sau bước thực Modem quang G-93RG1 B1: Các Camera phải kết nối với thiết bị Modem có kết nối Internet B2: Truy cập vào Web Manager modem từ trình duyệt Web B3: Click chọn mục Application -> Port Forwarding Sau nhập thông số cần thiết vào ô click Add 57 Với Camera có địa IP: 192.168.1.100 có hai cổng ứng dụng cần mở 10000 20000 Với Camera có địa IP: 192.168.1.101 có hai cổng ứng dụng cần mở 30000 40000 Sau thực thao tác kết hình bên B4: Click chọn Status -> WAN Status Ghi nhớ địa IP dòng IP Address để tiến hành kết nối 58 B5: Dùng máy tính có kết nối Internet ( kết nối nằm ngồi mơi trường mạng Camera) khởi động phần mềm điều khiển lên, mục IP Address khơng cịn nhập “192.168.1.100” mà nhập vào địa IP lấy “58.186.232.102”, nhập thông số port Camera cần kết nối đến ->nhấn nút Connect 59 TÀI LIỆU THAM KHẢO Tiếng Anh [1] Brandon Rhodes & John Goerzen (2010) Foundations of Python Network Programming Paul Manning [2] David M.Beazley (Jun 2010) Python network Programming Matt Richardson & Shawn Wallace (December 2012) Getting Started with Raspberry Pi O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472 [3] 60 ... tài: Xây dưng hệ thống Camera giám sát Các số liệu, tài liệu ban đầu: Khơng có Nội dung thực đề tài: - Thiết kế hệ thống hoàn thiện gồm Camera - Các Camera có khả chụp hình lưu video - Góc quay Camera. .. hình hệ thống Camera giám sát Qua mơ hình thấy hệ thống giám sát bao gồm nhiều Camera kết nối với máy tính ( máy chủ) gửi liệu hình ảnh đồng thời máy tính Ngồi điều điều khiển góc quay cho Camera. .. thống Camera giám sát? ?? Đề tài trình bày cách xây dựng mơ hình Camera giám sát thơng qua mơi trường mạng Trong đó, hệ thống thực chức như: chụp hình, quay phim, điều khiển góc quay cho Camera Với

Ngày đăng: 20/12/2021, 06:14