Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 89 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
89
Dung lượng
4,05 MB
Nội dung
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 ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH ĐIỀU KHIỂN THIẾT BỊ DIỆN QUA MẠNG LAN DÙNG KIT RASPBLERRY PI GVHD: LÊ MINH SVTH: BÙI THỊ PHƯƠNG ANH MSSV: 121109034 SKL 0 Tp Hồ Chí Minh, tháng 07 năm 2016 an 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 2016 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên:Bùi Thị PhươngAnh MSSV: 12119034 Ngành: CNKT Máy tính Lớp: 12119CLC Giảng viên hướng dẫn: Lê Minh ĐT: 0963231835 Ngày nhận đề tài: 2/2016 Ngày nộp đề tài: 7/2016 Tên đề tài: Điều khiển thiết bị điện qua mạng LAN dùng kit Raspberry Pi Các số liệu, tài liệu ban đầu: Kit nhúng Raspberry Pi, giao tiếp mạng lập trình mạng, ngơn ngữ lập trình C# Nội dung thực đề tài: Lập trình kit nhúng chạy hệ điều hành, lập trình thiết kế phần mềm máy tính Điều khiển thiết bị đo nhiệt độ giao tiếp mạng Sản phẩm: Hệ thống gồm máy tính kit Raspberry Pi giao tiếp với qua môi trường mạng LAN, điều khiển thiết bị hiển thị kết đo nhiệt độ thiết bị điện đại diện bóng đèn TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN an CỘNG HOÀ 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 Họ tên Sinh viên: .MSSV: Ngành: Tên đề tài: Họ tên Giáo viên hướng dẫ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 2016 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) an CỘNG HOÀ 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: ……………………………………………… MSSV: Ngành:……………………………………………………………………………………… Tên đề tài: Họ tên giảng 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ằngchữ: ) Tp Hồ Chí Minh, ngày tháng năm 2016 Giáo viên phản biện (Ký & ghi rõ họ tên) an LỜI CẢM ƠN Trong thời gian thực đồ án tốt nghiệp đến nay, người nghiên cứu nhận nhiều quan tâm, giúp đỡ q Thầy Cơ Với lịng biết ơn sâu sắc, kính xin gửi đến q Thầy Cơ Khoa Điện – Điện Tử trường Đại học Sư phạm Kỹ Thuật thành phố Hồ Chí Minh với tri thức, tâm huyết để truyền đạt vốn kiến thức quý báu cho người nghiên cứu suốt thời gian qua Người nghiên cứu xin chân thành cảm ơn Thầy Lê Minh trực tiếp hướng dẫn, tận tâm truyền đạt kiến thức, kinh nghiệm qua buổi học buổi báo cáo, thảo luận Hơn hết, Thầy hỗ trợ, góp ý, giúp người nghiên cứu hoàn thiện đề tài, đạt mục tiêu ban đầu đặt Bước đầu vào thực tế, tìm hiểu lĩnh vực sáng tạo nghiên cứu khoa học, kiến thức người nghiên cứu nhiều hạn chế bỡ ngỡ Do vậy, tránh khỏi thiếu sót, mong nhận ý kiến đóng góp q báu Thầy Cơ để người nghiên cứu tiếp thu, rút kinh nghiệm cho tương lai Sau cùng, người nghiên cứu xin kính chúc quý Thầy Cô thật dồi sức khỏe, niềm tin để tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức cho hệ mai sau i an LỜI NÓI ĐẦU Trong vài thập niên gần kinh tế giới có dấu hiệu chuyển rõ rệt, ngành kỹ thuật nước có đột phá vơ mạnh mẽ, chuyển dần từ lao động máy móc sang trí tuệ nhân tạo Để bắt kịp xu hướng chung giới, với lên nên kinh tế mở, động mang tính thị trường giới, khoa học kỹ thuật nước ta có bước phát triển định Một xu hướng phát triển khoa học kỹ thuật mà nước ta hướng tới tự động hóa, đại hóa Bên cạnh đó, nhân loại có bước phát triển vượt bậc khoa học kỹ thuật, số đời thiết bị bán dẫn Các IC giải nhiều khó khăn lĩnh vực cơng nghệ mở kỷ nguyên công nghệ Kỷ nguyên "kĩ thuật số” Ứng dụng to lớn kỹ thuật số chế tạo vi mạch tích hợp IC có mật độ tích hợp cực lớn vi xử lý, vi điều khiển Từ phát triển lên kit nhúng có khả lập trình theo chức người dùng lập trình cho chúng Đồng thời, gần xuất thuật ngữ “IoTs” (internet of things) xu hướng tương lai, tất kết nối qua internet Từ ý tưởng người nghiên cứu thực đề tài điều khiển thiết bị qua mạng Lan sử dụng kit nhúng Raspberry Pi Trong q trình thực đề tài khơng tránh khỏi sai sót kiến thức có giới hạn, tham khảo từ nhiều nguồn tài liệu từ internet, sách, báo…Rất mong nhận đóng góp quý thầy cô bạn để đề tài thực thành công phát triển Người nghiên cứu xin chân thành cảm ơn!!! Người nghiên cứu đề tài Bùi Thị Phương Anh ii an TÓM TẮT Trong tất lĩnh vực đời sống người có trợ giúp máy tính, máy tính ngày làm cho cơng việc người trở nên nhẹ nhàng không nhờ vào tốc độ xử lý mà khả linh động ứng dụng Không làm giảm nhẹ gánh nặng cho người, nâng cao hiệu lao động mà máy tính cịn giúp người có phát minh, sáng chế nhiều lĩnh vực Máy tính ngày sử dụng rộng rãi quan, xí nghiệp, trường học, ngành kinh tế gia đình Việc ứng dụng máy vi tính vào kỹ thuật điều khiển đem lại kết đầy tính ưu việt Các thiết bị, hệ thống đo lường điều khiển ghép nối với máy tính có độ xác cao, thời gian thu thập liệu ngắn Ngồi ra, máy tính cịn có giao diện hình, thuận tiện cho người sử dụng Trong lĩnh vực công nghiệp điều khiển, việc kết nối máy tính với thiết bị ngoại vi ngày trở nên phổ biến Máy tính ứng dụng hầu hết lĩnh vực có điều khiển đo lường, kết hợp với phát triển không ngừng hệ thống mạng làm tăng tính linh động ứng dụng địi hỏi trao đổi thơng tin từ xa Vì mục tiêu đại hóa ngày phát triển, người nghiên cứu chọn đề tài đồ án điều khiển thiết bị điện qua mạng Lan dùng kit Raspberry Pi Hệ thống tổng quan đề tài gồm hai thành phần máy tính (client) kit Raspberry Pi(server) trình giao tiếp, điều khiển qua mạng Lan Khi hồn thành điều khiển thiết bị điện nhà thông qua mạng Lan, tương tác tay qua nút nhấn, kiểm soát nhiệt độ phòng; hiển thị trạng thái hoạt động thiết bị giao diện máy tính Khi hệ thống thành cơng áp dụng rộng rãi hữu ích cho đời sống ngày Giúp cho đất nước ngày phát triển iii an MỤC LỤC LỜI CẢM ƠN i LỜI NÓI ĐẦU ii TÓM TẮT iii MỤC LỤC vi DANH MỤC HÌNH ẢNH ix DANH MỤC BẢNG xi CÁC TỪ VIẾT TẮT xii Chương TỔNG QUAN 1.1.Giới thiệu tình hình nghiên cứu 1.2.Tính cấp thiết đề tài 1.3.Mục tiêu nghiên cứu 1.4.Nhiệm vụ nghiên cứu 1.5.Đối tượng phạm vi nghiên cứu 1.6.Phương pháp nghiên cứu 1.7.Bố cục đồ án Chương CƠ SỞ LÝ THUYẾT 2.1 Lập trình giao tiếp mạng 2.1.1 Giới thiệu socket 2.1.2 Phân loại Socket 2.1.3 Lập trình TCP Socket dùng lớp Socket 2.1.4 Họ giao thức TCP/IP 10 2.1.4.1 Tầng ứng dụng (Application Layer) 11 2.1.4.2 Tầng Giao Vận (Transport Layer) 11 2.1.4.3 Tầng Internet (Internet Layer) 16 2.1.4.4 Tầng giao tiếp mạng 18 vi an 2.1.5 Phương thức hoạt động giao thức TCP/IP 18 2.2 Kit Raspberry Pi 20 2.2.1 Sơ lược kit Rasperry Pi 20 2.2.2 Lý chọn kit Rasperry Pi 22 2.2.3 Các thành phần kit Raspberry Pi 22 2.2.4 Yêu cầu nguồn dành cho kit Raspberry Pi 25 2.2.5 Hệ điều hành cài đặt cho kit Raspberry Pi đề tài 26 2.3 IC 18B20 26 Chương THIẾT KẾ VÀ THI CÔNG 31 3.1 Mơ hình hệ thống 31 3.2 Board điều khiển trung tâm 31 3.3 Sơ đồ khối 32 3.3.1 Thiết kế khối 33 3.3.2 Chương trình xử lý board trung tâm 36 3.4 Phần mềm máy tính 41 3.4.1 Nhiệm vụ phần mềm máy tính 41 3.4.2 Lưu đồ giải thuật chương trình máy tính 41 Chương KẾT QUẢ 47 4.1 Mơ hình tồn hệ thống 47 4.2 Hoạt động hệ thống 48 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54 5.1 Kết luận 54 5.2 Hướng phát triển 54 TÀI LIỆU THAM KHẢO 56 PHỤ LỤC 57 vii an DANH MỤC HÌNH ẢNH Hình Hình minh họa socket Hình 2 Các giao thức TCP/IP phổ biến Hình Phân loại socket Hình Các bước bắt tay giao thức TCP Hình Gửi, nhận liệu với giao thức TCP Hình Cấu trúc họ giao thức TCP/IP 11 Hình Cấu trúc gói TCP 12 Hình Lưu đồ trạng thái kết nối TCP 14 Hình Cấu trúc gói tin IP 16 Hình 10 Q trình đóng mở liệu gói TCP/IP 18 Hình 11 Cấu trúc liệu TCP/IP 19 Hình 12 Chi tiết kit nhúng Raspberry Pi thực tế 20 Hình 13 Kit nhúng Raspberry Pi Model B 20 Hình 14 Kit Raspberry Pi 23 Hình 15 GPIO Model B+ 25 Hình 16 Cấu trúc IC DS18B20 27 Hình 17 Nguồn cung cấp theo kiểu Parasite cho DS18B20 29 Hình 18 Nguồn cung cấp cho DS18B20 với nguồn cung cấp 29 Hình 19 Kết nối IC 18B20 với kit Raspberry Pi 30 Hình Mơ hình hệ thống 31 Hình Sơ đồ khối board trung tâm 32 Hình 3 Kết nối kit Raspberry Pi với ngoại vi 33 Hình Sơ đồ nguyên lý hệ thống 34 Hình Khối module relay 35 Hình Sơ đồ chân khối module relay 35 Hình Lưu đồ chương trình kit Raspberry Pi 36 Hình Lưu đồ thread gửi liệu 37 ix an IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.168.1.61"), 9990); client.BeginConnect(ipep, new AsyncCallback(Connected), client); } void Connected(IAsyncResult iar) { try { client.EndConnect(iar); Display("Connected to : " + client.RemoteEndPoint.ToString()); Thread receive = new Thread(new ThreadStart(ReceiveData)); receive.Start(); } catch (SocketException) { Display("Error connecting"); } } void ReceiveData() { int recv; string stringData, tam; string nhietdo; while (true) { recv = client.Receive(data); stringData = Encoding.ASCII.GetString(data, 0, recv); Display(stringData); if (stringData == "exit") break; tam = stringData; 62 an if ((tam.Length - 4) > 0) { nhietdo = tam.Substring(4, tam.Length - 4) + "°C"; //nhietdo = tam.Substring(4) + "°C"; ttnhietdo.Text = nhietdo; tt1 = tam.Substring(0, 1); tttb1.Text = tt1; tt2 = tam.Substring(1, 1); tttb2.Text = tt2; tt3 = tam.Substring(2, 1); tttb3.Text = tt3; tt4 = tam.Substring(3, 1); tttb4.Text = tt4; if (tt1 == "1") { label10.Text = "thiết bị bật"; button1.Text = "TẮT"; } else { label10.Text = "thiết bị tắt"; button1.Text = "BẬT"; } if (tt2 == "1") { label11.Text = "thiết bị bật"; button2.Text = "TẮT"; } 63 an else { label11.Text = "thiết bị tắt"; button2.Text = "BẬT"; } if (tt3 == "1") { label12.Text = "thiết bị bật"; button3.Text = "TẮT"; } else { label12.Text = "thiết bị tắt"; button3.Text = "BẬT"; } if (tt4 == "1") { label13.Text = "thiết bị bật"; button4.Text = "TẮT"; } else { label13.Text = "thiết bị tắt"; button4.Text = "BẬT"; } } } client.Close(); Display("Connection stopped"); return; } private void sendit_Click(object sender, EventArgs e) 64 an { byte[] message = Encoding.ASCII.GetBytes("exit"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } void SendData(IAsyncResult iar) { Socket remote = (Socket)iar.AsyncState; int sent = remote.EndSend(iar); } private delegate void DlDisplay(string s); private void Display(string s) { if (listBox1.InvokeRequired) { DlDisplay sd = new DlDisplay(Display); listBox1.Invoke(sd, new object[] { s }); } else { listBox1.Items.Add(s); } } private void button1_Click(object sender, EventArgs e) { if (tt1 == "1") { byte[] message = Encoding.ASCII.GetBytes("1off"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } 65 an else { byte[] message = Encoding.ASCII.GetBytes("1on"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } } private void button2_Click(object sender, EventArgs e) { if (tt2 == "1") { byte[] message = Encoding.ASCII.GetBytes("2off"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } else { byte[] message = Encoding.ASCII.GetBytes("2on"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } } private void button3_Click(object sender, EventArgs e) { if (tt3 == "1") { byte[] message = Encoding.ASCII.GetBytes("3off"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } else { 66 an byte[] message = Encoding.ASCII.GetBytes("3on"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } } private void button4_Click(object sender, EventArgs e) { if (tt4 == "1") { byte[] message = Encoding.ASCII.GetBytes("4off"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } else { byte[] message = Encoding.ASCII.GetBytes("4on"); client.BeginSend(message, 0, message.Length, 0, new AsyncCallback (SendData), client); } } } } 67 an CODE CHƯƠNG TRÌNH TRÊN KIT RASPBERRY PI import socket import thread import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) pinList = [2,3,17,27] for i in pinList: GPIO.setup(i, GPIO.OUT) GPIO.setup(7,GPIO.IN) GPIO.setup(8, GPIO.IN) GPIO.setup(24, GPIO.IN) GPIO.setup(25, GPIO.IN) GPIO.setup(2, GPIO.OUT) GPIO.setup(3, GPIO.OUT) GPIO.setup(27, GPIO.OUT) GPIO.setup(17, GPIO.OUT) port = 9990 delay = dataReceive = "goOn" temperature = 0.0 tmp1 = tmp2 = tmp3 = 68 an tmp4 = def receiveFuntion(soc): while 1: data = soc.recv(8192) global dataReceive dataReceive = data if (data == "exit"): break global tmp1 global tmp2 global tmp3 global tmp4 if data == '1on': tmp1 = GPIO.output(2,GPIO.HIGH) print '1on' time.sleep(delay) elif data == '1off': tmp1 = GPIO.output(2,GPIO.LOW) print '1off' time.sleep(delay) elif data == '2on': tmp2 = 69 an GPIO.output(3, GPIO.HIGH) print "2on" time.sleep(delay) elif data == '2off': tmp2 = GPIO.output(3, GPIO.LOW) print "2off" time.sleep(delay) elif data == '3on': tmp3 = GPIO.output(17, GPIO.HIGH) print "3on" time.sleep(delay) elif data == '3off': tmp3 = GPIO.output(17, GPIO.LOW) print "3off" time.sleep(delay) elif data == '4on': tmp4 = GPIO.output(27, GPIO.HIGH) print "4on" time.sleep(delay) elif data == '4off': tmp4 = GPIO.output(27, GPIO.LOW) print "4off" 70 an time.sleep(delay) else: print ("du lieu nhan: ", data) def sendData (soc): print("da goi") while 1: if dataReceive == "exit": break strData = str(tmp1) + str(tmp2) + str(tmp3) + str(tmp4)+str(temperature) soc.send(strData) if dataReceive == "exit": break time.sleep(2) s = socket.socket() host = socket.gethostname() s.bind(("192.168.1.61", port)) s.listen(5) c,addr = s.accept() try: thread.start_new_thread(receiveFuntion,(c,)) except: print "Khong tao duoc luong" try: thread.start_new_thread(sendData,(c,)) 71 an except: print ("khong tao duoc luong goi") def nhietdo(): while 1: if dataReceive == "exit": break tempfile = open("/sys/bus/w1/devices/28-00000646d5d9/w1_slave") thetext = tempfile.read() tempfile.close() tempdata = thetext.split("\n")[1].split(" ")[9] dtemperature = float(tempdata[2:]) global temperature temperature = dtemperature / 1000 print ("nhiet do: ", temperature) if (dataReceive == 'exit'): break time.sleep(1) try: thread.start_new_thread(nhietdo, ()) except: print 'khong tao duoc luong nhiet do' def dieukhien(): global tmp1 global tmp2 global tmp3 global tmp4 72 an while 1: if dataReceive == "exit": break if GPIO.input(7)==True: while GPIO.input(7)==True: time.sleep(0.01) if tmp1 == 1: tmp1 = else: tmp1 = if tmp1==1: GPIO.output(2, True) time.sleep(0.01) else: GPIO.output(2, False) time.sleep(0.01) if GPIO.input(8)==True: while GPIO.input(8)==True: time.sleep(0.01) if tmp2 == 1: tmp2 = else: tmp2 = if tmp2==1: GPIO.output(3, True) 73 an time.sleep(0.01) else: GPIO.output(3, False) time.sleep(0.01) if GPIO.input(25)==True: while GPIO.input(25)==True: time.sleep(0.01) if tmp3 == 1: tmp3 = else : tmp3 = if tmp3==1: GPIO.output(17, True) time.sleep(0.01) else: GPIO.output(17, False) time.sleep(0.01) if GPIO.input(24)==True: while GPIO.input(24)==True: time.sleep(0.01) if tmp4 == 1: tmp4 = else: tmp4 = if tmp4==1: 74 an GPIO.output(27, True) time.sleep(0.01) else: GPIO.output(27, False) time.sleep(0.01) try: thread.start_new_thread(dieukhien,()) except: print 'khong khoi tao duoc thread' while 1: if dataReceive=='exit': c.close() break time.sleep(2) 75 an an ... đồ án điều khiển thiết bị điện qua mạng Lan dùng kit Raspberry Pi Hệ thống tổng quan đề tài gồm hai thành phần máy tính (client) kit Raspberry Pi( server) trình giao tiếp, điều khiển qua mạng Lan. .. kế, thi công hệ thống ? ?điều khiển thiết bị điện qua mạng LAN dùng kit Raspberry Pi? ??: Điều khiển đóng ngắt thiết bị điện thơng qua board điều khiển chương trình điều khiển máy tính Đo hiển... Nhận lệnh bật thiết bị sai Thiết bị tắt Thiết bị bật Chân GPIO điều khiển thiết bị lên mức cao (bật thiết bị) Chân GPIO điều khiển thiết bị xuống mức thấp (tắt thiết bị) Xuất liệu nhận End Hình