Ứng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minhỨng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minh
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - TRỊNH QUANG LƯƠNG ỨNG DỤNG BOARD RASPBERRY-PI ĐIỀU KHIỂN THIẾT BỊ TRONG NHÀ THÔNG MINH LUẬN VĂN THẠC SĨ KỸ THUẬT TP HỒ CHÍ MINH – NĂM 2016 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - TRỊNH QUANG LƯƠNG ỨNG DỤNG BOARD RASPBERRY-PI ĐIỀU KHIỂN THIẾT BỊ TRONG NHÀ THÔNG MINH CHUYÊN NGÀNH : KỸ THUẬT VIỄN THÔNG MÃ SỐ : 60.52.02.08 LUẬN VĂN THẠC SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: TS CHUNG TẤN LÂM TP HỒ CHÍ MINH – NĂM 2016 i LỜI CAM ĐOAN Tôi xin cam đoan toàn nội dung đề cập luận văn viết dựa kết thực nghiên cứu thân, hướng dẫn trực tiếp Thầy - TS Chung Tấn Lâm Mọi thông tin số liệu tham khảo trích dẫn đầy đủ nguồn sử dụng luật quyền quy định Tôi xin chịu trách nhiệm nội dung luận văn TP.HCM, ngày …… tháng … năm 2016 Tác giả luận văn Trịnh Quang Lương ii LỜI CẢM ƠN Lời Em xin gửi lời cảm ơn đến toàn thể Thầy, Cô giảng viên Học viện Công nghệ Bưu Viễn thông tận tình bảo em suốt thời gian học tập Nhà trường Em xin bày tỏ lòng biết ơn chân thành với Thầy - TS Chung Tấn Lâm, Người trực tiếp hướng dẫn góp ý tận tình cho em suốt thời gian làm luận văn tốt nghiệp Bên cạnh đó, để hoàn thành luận văn này, em nhận nhiều giúp đỡ, lời động viên quý báu bạn bè, gia đình đồng nghiệp Em xin chân thành cảm ơn Tuy nhiên, thời gian hạn hẹp, nỗ lực mình, luận văn không tránh khỏi thiếu sót Em mong nhận thông cảm bảo tận tình Quý Thầy Cô góp ý bạn Em xin chân thành cám ơn! TP.HCM, ngày …… tháng … năm 2016 Tác giả luận văn Trịnh Quang Lương iii MỤC LỤC LỜI CAM ĐOAN .i LỜI CẢM ƠN ii MỤC LỤC iii DANH SÁCH CÁC BẢNG .v DANH SÁCH CÁC HÌNH .vi LỜI MỞ ĐẦU CHƯƠNG - NGHIÊN CỨU TỔNG QUAN 1.1 Khảo sát board Raspberry-pi: 1.1.1 Khái quát chung board Raspberry-pi: 1.1.2 Các hệ điều hành sử dụng board mạch Raspberry-pi: 1.1.3 Các module gắn ngoài: 1.2 Tổng quan giao tiếp người dùng – thiết bị: 15 1.3 Các thành phần nhà thông minh: 17 CHƯƠNG - PHÂN TÍCH THIẾT KẾ HỆ THỐNG 19 2.1 Phân tích thiết kế hệ thống chiếu sáng: .19 2.2 Phân tích thiết kế điều khiển thiết bị nhà: 22 2.3 Phân tích thiết kế thu nhận liệu cảm biến nhiệt độ độ ẩm: 26 2.4 Thiết kế điều khiển theo kịch bản: 28 2.5 Thiết kế thủ tục truyền thông sở liệu: 29 2.6 Thiết kế giao diện người dùng: 31 2.6.1 Thiết kế giao diện theo phòng: 34 2.6.2 Thiết kế giao diện theo chức chuyên dùng: 34 CHƯƠNG - CÀI ĐẶT HỆ THỐNG 38 3.1 Cài đặt điều khiển cấp cao – Web Server: 38 3.2 Cài đặt điều khiển cấp thấp - Board Raspberry-pi: 40 3.2.1 Điều khiển chiếu sáng: 40 3.2.2 Điều khiển thiết bị máy lạnh, tivi quạt: .41 3.2.3 Thu nhận liệu cảm biến nhiệt độ độ ẩm: 42 iv 3.2.4 Điều khiển theo kịch bản: 43 3.3 Thi công Demokit hệ thống điều khiển nhà thông minh: 45 3.4 Xây dựng hệ thống thu thập liệu đánh giá lượng tiêu thụ: .46 CHƯƠNG - HOÀN THIỆN HỆ THỐNG VÀ ĐÁNH GIÁ 49 4.1 Hoàn thiện hệ thống: 49 4.2 Kết thu đánh giá: 51 4.2.1 Kết thu được: 51 4.2.2 Đánh giá kết quả: 53 KẾT LUẬN VÀ KIẾN NGHỊ 56 PHỤ LỤC 57 DANH MỤC CÁC TÀI LIỆU THAM KHẢO .74 v DANH SÁCH CÁC BẢNG Bảng 1.1: Các thông số kỹ thuật Raspberry-pi model A model B Bảng 1.2: Các thông số Raspberry-pi2 Raspberry-pi3 Bảng 1.3: Các thông số kỹ thuật cảm biến DHT11 12 Bảng 2.1: Bảng lưu trữ thông tin thiết bị 29 Bảng 2.2: Bảng lưu trữ thông tin sử dụng đèn (DC) 30 Bảng 2.3: Bảng lưu trữ thông tin sử dụng phụ (DP) 30 Bảng 2.4: Bảng lưu trữ thông tin sử dụng máy lạnh (ML) 30 Bảng 2.5: Bảng lưu trữ thông tin sử dụng quạt (QUAT) 30 Bảng 2.6: Bảng lưu trữ thông tin sử dụng tivi (TV) 30 Bảng 2.7: Bảng lưu trữ thông số môi trường 30 Bảng 2.8: Đặc tính kỹ thuật TSOP 1838 (ở nhiệt độ 250C) 36 Bảng 3.1: Bảng thống kê bước thực cài đặt Web-server 38 Bảng 3.2: Nội dung chỉnh sửa file vsftpd.conf 39 Bảng 3.3: Các bước thực cài đặt thư viện GPIO cho Raspberry-pi 40 Bảng 3.4: Bảng hướng dẫn cài đặt thư viện DHT11 Raspberry-pi 43 Bảng 4.1: Bảng tổng hợp thời gian sử dụng thiết bị 52 Bảng 4.2: Bảng chi tiết thời gian sử dụng thiết bị 52 Bảng 4.3: Bảng so sánh nhà thông minh dùng Raspberry – pi với nhà thông minh hữu 54 vi DANH SÁCH CÁC HÌNH Hình 1.1: Sơ đồ khối chức board Raspberry-pi Hình 1.2: Các thành phần raspberry-pi .3 Hình 1.3: Raspberry-pi model A model B .4 Hình 1.4: phiên nâng cấp Raspberry-pi Hình 1.5: Sơ đồ chân GPIO board RPi 10 Hình 1.6: Raspberry-pi thiết bị kết nối 11 Hình 1.7: Hình dạng thực tế cảm biến DHT11 11 Hình 1.8: Sơ đồ kết nối cảm biến DHT11 với MCU 12 Hình 1.9: Hình ảnh thực tế module relay cổng với opto cách ly 14 Hình 1.10: Sơ đồ khối thành phần nhà thông minh .17 Hình 2.1: Lưu đồ giải thuật điều khiển bật đèn chính/phụ .19 Hình 2.2: Lưu đồ giải thuật điều khiển tắt đèn chính/phụ 21 Hình 2.3: Lưu đồ giải thuật điều khiển bật thiết bị 23 Hình 2.4: Lưu đồ giải thuật điều khiển tắt thiết bị 25 Hình 2.5: Lưu đồ giải thuật thu thập liệu nhiệt độ, độ ẩm 27 Hình 2.6: Giao diện đăng nhập PUTTY 31 Hình 2.7: Giao diện cửa sổ dòng lệnh terminal 32 Hình 2.8: Giao diện GUI raspbian 32 Hình 2.9: Giao diện website tương tác người dùng – thiết bị 33 Hình 2.10: Giao diện người dùng theo phòng 34 Hình 2.11: Giao diện remote điều khiển tivi 35 Hình 2.12: Hình dạng thực tế TSOP 1838 35 Hình 2.13: Led phát hồng ngoại 3mm 35 Hình 2.14: Tín hiệu thu cảm biến với khoảng cách tín hiệu 20ms 36 Hình 2.15: Sơ đồ kết nối TSOP với board Raspberry-pi 36 Hình 3.1: Raspberry-pi webserver sau cài đặt xong 39 Hình 3.2: Giao diện đồ họa điều khiển thiết bị 42 vii Hình 3.3: Giao diện phím chức điều khiển theo kịch 45 Hình 3.4: Thống kê thời gian sử dụng thiết bị 48 Hình 4.1: Giao diện điều khiển thiết bị phòng khách 49 Hình 4.2: Giao diện điều khiển phòng ngủ 50 Hình 4.3: Bảng thống kê thời gian sử dụng thiết bị 50 Hình 4.4: Giao diện remote điều khiển tivi 50 LỜI MỞ ĐẦU Cùng với tiến khoa học kỹ thuật công nghệ, thiết bị điện tử hay nói cách khác board mạch tích hợp ứng dụng ngày rộng rãi mang lại hiệu cao mặt đời sống người Với nhịp sống đại ngày động, người có xu hướng tìm kiếm điều thoải mái sau ngày làm việc mệt mỏi căng thẳng Và nhà địa điểm lý tưởng để thực điều Chính vậy, có nhiều sản phẩm ứng dụng công ty, nhà phát triển nghiên cứu nhằm mục đích tạo tiện dụng nhất, tốt cho sống sinh hoạt người Và việc thực qua board mạch tích hợp xử lý liệu điều khiển Với mục tiêu xây dựng hệ thống điều khiển có khả đáp ứng cao, thao tác dễ dàng, đảm bảo giá thành rẻ, dễ sử dụng giúp người dùng quản lý lượng tiêu thụ từ thiết bị, em tiến hành thực đề tài luận văn: “Ứng dụng board Raspberry-pi điều khiển thiết bị nhà thông minh” Luận văn chia làm Chương: Chương 1: Nghiên cứu tổng quan Chương 2: Phân tích thiết kế hệ thống Chương 3: Cài đặt hệ thống Chương 4: Hoàn thiện hệ thống đánh giá Hệ thống hoàn thiện với đủ mục tiêu nêu đầu luận văn, hạn chế kiến thức, nên luận văn “Ứng dụng board raspberry-pi điều khiển thiết bị nhà thông minh” nhiều thiếu sót Rất mong góp ý chân thành từ Quý Thầy, Cô bạn 60 try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" timedate = strftime('%Y-%m-%d %H:%M:%S', localtime()) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) GPIO.output(4,GPIO.LOW) cur.execute("SELECT THOIGIANSD FROM DP ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql if idsql == None: print "Den phu dang bat" else: cur.execute("INSERT INTO DP(IDTHIETBI,THOIGIANON) VALUES (%s,%s)",("DP1",timedate)) db.commit() cur.close() db.close() #Chương trình bật máy lạnh ghi liệu vào sở liệu (batML.py): #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO 61 from time import localtime, strftime try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" timedate = strftime('%Y-%m-%d %H:%M:%S', localtime()) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(22,GPIO.OUT) GPIO.output(22,GPIO.LOW) cur.execute("SELECT THOIGIANSD FROM ML ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql if idsql == None: print "May lanh dang bat" else: cur.execute("INSERT INTO ML(IDTHIETBI,THOIGIANON) VALUES (%s,%s)",("ML1",timedate)) db.commit() cur.close() db.close() #Chương trình bật quạt ghi liệu vào sở liệu (batQUAT.py): #!/usr/bin/env python import time import MySQLdb 62 import RPi.GPIO as GPIO from time import localtime, strftime try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" timedate = strftime('%Y-%m-%d %H:%M:%S', localtime()) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(2,GPIO.OUT) GPIO.output(2,GPIO.LOW) cur.execute("SELECT THOIGIANSD FROM QUAT ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql if idsql == None: print "Quat dang bat" else: cur.execute("INSERT INTO QUAT(IDTHIETBI,THOIGIANON) VALUES (%s,%s)",("QUAT1",timedate)) db.commit() cur.close() db.close() #Chương trình bật tivi ghi liệu vào sở liệu: #!/usr/bin/env python import time 63 import MySQLdb import RPi.GPIO as GPIO from time import localtime, strftime try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" timedate = strftime('%Y-%m-%d %H:%M:%S', localtime()) GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(27,GPIO.OUT) GPIO.output(27,GPIO.LOW) cur.execute("SELECT THOIGIANSD FROM TV ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql if idsql == None: print "Tivi dang bat" else: cur.execute("INSERT INTO TV(IDTHIETBI,THOIGIANON) VALUES (%s,%s)",("TV1",timedate)) db.commit() cur.close() db.close() #Chương trình tắt đèn ghi liệu vào sở liệu (tatDC.py): #!/usr/bin/env python 64 import time import MySQLdb import RPi.GPIO as GPIO import datetime from datetime import datetime from time import localtime, strftime, strptime ############## BAT DEN ##################### try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(3,GPIO.OUT) GPIO.output(3,GPIO.HIGH) ################ UPDATE THOIGIANOFF ############# timedatee = strftime('%Y-%m-%d %H:%M:%S', localtime()) cur.execute("SELECT ID, THOIGIANON, THOIGIANOFF FROM DC ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql cur.execute("UPDATE DC SET THOIGIANOFF=%s WHERE THOIGIANOFF IS NULL AND Id = %s",(timedatee, idsql)) ################## UPDATE THOIGIANSD ############## cur.execute("SELECT THOIGIANON, THOIGIANOFF FROM DC WHERE Id = %s",(idsql)) 65 time_results = cur.fetchall() for row in time_results: tgianON = row[0] tgianOFF = row[1] aaa = abs(tgianOFF - tgianON) print aaa.seconds sql = ("UPDATE DC SET THOIGIANSD=%s WHERE id = %s",(aaa.seconds, idsql)) ################THUC HIEN########################### try: cur.execute(*sql) db.commit() print "Ghi du lieu cong" except: db.rollback() print "Co loi qua trinh thuc hien" cur.close() db.close() #Chương trình tắt đèn phụ ghi liệu vào sở liệu (tatDP.py): #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO import datetime from datetime import datetime from time import localtime, strftime, strptime ############## BAT DEN ##################### try: 66 db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(4,GPIO.OUT) GPIO.output(4,GPIO.HIGH) ################ UPDATE THOIGIANOFF ########## timedatee = strftime('%Y-%m-%d %H:%M:%S', localtime()) cur.execute("SELECT ID, THOIGIANON, THOIGIANOFF FROM DP ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql cur.execute("UPDATE DP SET THOIGIANOFF=%s WHERE THOIGIANOFF IS NULL AND Id = %s",(timedatee, idsql)) ################## UPDATE THOIGIANSD ############## cur.execute("SELECT THOIGIANON, THOIGIANOFF FROM DP WHERE Id = %s",(idsql)) time_results = cur.fetchall() for row in time_results: tgianON = row[0] tgianOFF = row[1] aaa = abs(tgianOFF - tgianON) print aaa.seconds sql = ("UPDATE DP SET THOIGIANSD=%s WHERE id = %s",(aaa.seconds, idsql)) 67 ################THUC HIEN########################### try: cur.execute(*sql) db.commit() print "Ghi du lieu cong" except: db.rollback() print "Co loi qua trinh thuc hien" cur.close() db.close() #Chương trình tắt máy lạnh ghi liệu vào sở liệu (tatML.py): #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO import datetime from datetime import datetime from time import localtime, strftime, strptime ############## TAT MAY LANH ##################### try: db = MySQLdb.connect(host="localhost", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(22,GPIO.OUT) user="root", 68 GPIO.output(22,GPIO.HIGH) ################ UPDATE THOIGIANOFF ###### timedatee = strftime('%Y-%m-%d %H:%M:%S', localtime()) cur.execute("SELECT ID, THOIGIANON, THOIGIANOFF FROM ML ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql cur.execute("UPDATE ML SET THOIGIANOFF=%s WHERE THOIGIANOFF IS NULL AND Id = %s",(timedatee, idsql)) ################## UPDATE THOIGIANSD ############## cur.execute("SELECT THOIGIANON, THOIGIANOFF FROM ML WHERE Id = %s",(idsql)) time_results = cur.fetchall() for row in time_results: tgianON = row[0] tgianOFF = row[1] aaa = abs(tgianOFF - tgianON) print aaa.seconds sql = ("UPDATE ML SET THOIGIANSD=%s WHERE id = %s",(aaa.seconds, idsql)) ################THUC HIEN########################### try: cur.execute(*sql) db.commit() print "Ghi du lieu cong" except: db.rollback() print "Co loi qua trinh thuc hien" 69 cur.close() db.close() #Chương trình tắt quạt ghi liệu vào sở liệu (tatQUAT.py): #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO import datetime from datetime import datetime from time import localtime, strftime, strptime ############## TAT QUAT##################### try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(2,GPIO.OUT) GPIO.output(2,GPIO.HIGH) ################ UPDATE THOIGIANOFF ########## timedatee = strftime('%Y-%m-%d %H:%M:%S', localtime()) cur.execute("SELECT ID, THOIGIANON, THOIGIANOFF FROM QUAT ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql 70 cur.execute("UPDATE QUAT SET THOIGIANOFF=%s WHERE THOIGIANOFF IS NULL AND Id = %s",(timedatee, idsql)) ################## UPDATE THOIGIANSD ############## cur.execute("SELECT THOIGIANON, THOIGIANOFF FROM QUAT WHERE Id = %s",(idsql)) time_results = cur.fetchall() for row in time_results: tgianON = row[0] tgianOFF = row[1] aaa = abs(tgianOFF - tgianON) print aaa.seconds sql = ("UPDATE QUAT SET THOIGIANSD=%s WHERE id = %s",(aaa.seconds, idsql)) ################THUC HIEN########################### try: cur.execute(*sql) db.commit() print "Ghi du lieu cong" except: db.rollback() print "Co loi qua trinh thuc hien" cur.close() db.close() #Chương trình tắt tivi ghi liệu vào sở liệu (tatTV.py): #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO 71 import datetime from datetime import datetime from time import localtime, strftime, strptime ############## TAT TIVI ##################### try: db = MySQLdb.connect(host="localhost", user="root", passwd="daosimi", db="rasp") cur = db.cursor() except: print "Xay loi" GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(27,GPIO.OUT) GPIO.output(27,GPIO.HIGH) ################ UPDATE THOIGIANOFF ########## timedatee = strftime('%Y-%m-%d %H:%M:%S', localtime()) cur.execute("SELECT ID, THOIGIANON, THOIGIANOFF FROM TV ORDER BY ID DESC") results = cur.fetchone() idsql = results[0] print idsql cur.execute("UPDATE TV SET THOIGIANOFF=%s WHERE THOIGIANOFF IS NULL AND Id = %s",(timedatee, idsql)) ################## UPDATE THOIGIANSD ############## cur.execute("SELECT THOIGIANON, THOIGIANOFF FROM TV WHERE Id = %s",(idsql)) time_results = cur.fetchall() for row in time_results: tgianON = row[0] 72 tgianOFF = row[1] aaa = abs(tgianOFF - tgianON) print aaa.seconds sql = ("UPDATE TV SET THOIGIANSD=%s WHERE id = %s",(aaa.seconds, idsql)) ################THUC HIEN########################### try: cur.execute(*sql) db.commit() print "Ghi du lieu cong" except: db.rollback() print "Co loi qua trinh thuc hien" cur.close() db.close() #Chương trình thu thập liệu nhiệt độ, độ ẩm từ cảm biến DHT11 ghi liệu vào sở liệu (moitruong.py) #!/usr/bin/env python import time import MySQLdb import RPi.GPIO as GPIO import Adafruit_DHT as dht from time import localtime, strftime db = MySQLdb.connect(host="localhost", passwd="daosimi", db="rasp") cur = db.cursor() h,t = dht.read_retry(dht.DHT11, 23) print 'Nhiet do={0:0.1f}*C' format(t,h) user="root", 73 print 'Do am={1:0.1f}%'.format(t, h) timedate = strftime('%Y-%m-%d %H:%M:%S', localtime()) sql = ("""INSERT INTO moitruong(NHIETDO,DOAM,THOIGIAN) VALUES (%s,%s,%s)""",(t,h,timedate)) try: cur.execute(*sql) db.commit() print "Write Complete" except: db.rollback() print "Xay loi" cur.close() db.close() 74 DANH MỤC CÁC TÀI LIỆU THAM KHẢO [1] Abhay Kumar, Neha Tiwari (January 2015), “Energy Efficient Smart Home Automation System”, International Journal of Scientific Engineering and Research (IJSER), Volume Issue [2] Matt Rechardson and Shawn Wallace (2013), Getting Started with Raspberry Pi, O’Reilly, Sebastopol [3] Mohamed Abd El-Latif Mowad, Ahmed Fathy, Ahmed Hafez, (, May-2014), “Smart Home Automated Control System Using Android Application and Microcontroller”, International Journal of Scientific & Engineering Research, Volume 5, Issue [4] Noah Gift, Jeremy Jones (2008), Python for Unix and Linux System Administration, O'Reilly, Sebastopol [5] Shiu Kumar (January 2014), “Ubiquitous Smart Home System Using Android Application”, International Journal of Computer Networks & Communications (IJCNC) Vol.6, No.1 [6] Simon Monk (2014), Raspberry Pi Cookbook, O’Reilly [7] Steven Goodwin (2013), Smart Home Automation with Linux and Raspberry Pi, Apress [8] Website: https:// raspberrypi.org/ , truy nhập ngày 12/6/2016 [9] Website: http://raspberrypi.vn/ , truy nhập ngày 12/6/2016 [10] Website: http://codientu.org/ , truy nhập ngày 10/6/2016 [11] Website: http://smarthome.com.vn/ , truy nhập ngày 15/5/2016 [12] Website: https://en.wikipedia.org/ , truy nhập ngày 20/4/2016 [13] Website: http://tutorialspoint.com/ , truy nhập ngày 2/5/2016 [...]... giữa thiết bị người sử dụng và board Raspberry-pi - Các thiết bị tương tác với bộ xử lý (board Raspberry-pi) thông qua các cổng LAN và USB wifi, ở đây sử dụng laptop và máy tính bảng hiển thị Khối cảm biến: Sử dụng các cảm biến để theo dõi các thông số môi trường trong nhà: cảm biến nhiệt độ, độ ẩm,…và bao gồm cả cảm biến thu phát hồng ngoại sử dụng trong điều khiển hồng ngoại các thiết bị 18 Khối thiết. .. bật/tắt thiết bị Các thiết bị điện trong 1 căn nhà thường thấy như: quạt, máy lạnh, tivi, đèn sáng chính, đèn sáng phụ Khối giao tiếp người dùng TBDĐ PC ROUTER I/O RASPBERRY PI Khối xử lý Khối thiết bị điều khiển TSOP 1838 DHT 11 KHỐI NGUỒN Khối cảm biến Hình 1.10: Sơ đồ khối các thành phần của nhà thông minh Khối giao tiếp người dùng: - ROUTER: Dùng để kết nối các thiết bị có sử dụng mạng trong nhà (... khiển hồng ngoại các thiết bị 18 Khối thiết bị: - Relay: Sử dụng để đóng mở các thiết bị điện trong nhà thông qua các cổng điều khiển được nối trực tiếp vào các ngõ ra GPIO của board Raspberrypi - Các thiết bị điện gia dụng thường có mặt trong các phòng: đèn, quạt, máy lạnh, tivi Khối xử lý: là nhân tố chủ yếu trong hệ thống, ở đây là board Raspberry-pi với các thông số hệ thống được cấu hình riêng theo... quan (visual language) để biểu diễn thông tin được lưu trữ trong các máy tính Thông dụng nhất khi kể đến sự kết hợp các thành phần như vậy là mô hình WIMP (window, icon, menu, pointing device) trong các máy tính cá nhân 17 1.3 Các thành phần của nhà thông minh: Nhà thông minh bao gồm các thiết bị điện dân dụng được điều khiển theo cách đơn giản nhất, tạo cho người sử dụng có được sự tiện lợi và thoải... điện tử trong văn phòng, nhà ở Phạm vi sử dụng thuật ngữ GUI hầu như chỉ được giới hạn trong các thiết bị có màn hình 2 chiều Nó ít được sử dụng trong các thiết bị với giao diện có độ phân giải cao như một số thiết bị chơi game (HUD được sử dụng nhiều hơn) GUI được các nhà nghiên cứu tại Xerox PARC phát triển trong thập niên 1970 Ngày nay hầu hết các hệ điều hành máy tính nhiều người dùng đều sử dụng. .. điều khiển các thiết bị trong nhà: Sử dụng giao diện trên website tiến hành bật/tắt thiết bị, đồng thời ghi dữ liệu về tình trạng, thời gian bật/tắt thiết bị vào cơ sở dữ liệu phục vụ cho quá trình thống kê năng lượng tiêu thụ Các thiết bị được điều khiển ở đây gồm: quạt (cổng GPIO số 2), tivi (cổng GPIO số 27), máy lạnh (cổng GPIO số 22) Cấu trúc lệnh điều khiển các thiết bị là tương tự nhau, chỉ... nhau ở chỗ khai báo cổng GPIO điều khiển và các bảng lưu dữ liệu trong cơ sở dữ liệu, nên dưới đây giải thuật điều khiển sẽ được xây dựng chung 1 cấu trúc Nhưng do dữ liệu sử dụng của mỗi thiết bị 23 được ghi vào mỗi bảng tương ứng, nên đối với mỗi thiết bị, cần phải có 1 file điều khiển riêng biệt BẮT ĐẦU Khai báo thư viện KẾT NỐI DATABASE SAI ĐÚNG Khai báo GPIO Bật thiết bị NULL THOIGIANSD NOT NULL... thứ tự tăng dần theo khoảng n+1 - Xét điều kiện THOIGIANSD nhằm mục đích tránh hiện tượng nhấn nút bật thiết bị liên tục trong khi thiết bị đang bật, làm cho “thời gian bật thiết bị đưa vào không chính xác dẫn tới việc tính toán thời gian sử dụng không đúng 25 +) Chương trình tắt thiết bị: BẮT ĐẦU Khai báo thư viện KẾT NỐI DATABASE SAI ĐÚNG Khai báo GPIO Tắt thiết bị THOIGIANOFF NOT NULL NULL Ghi nhận... thời nó cũng lưu trữ dữ liệu thông tin sử dụng của các thiết bị để phục vụ cho công tác theo dõi quá trình sử dụng 15 1.2 Tổng quan về giao tiếp người dùng – thiết bị: Việc tương tác giữa người dùng – thiết bị được thực hiện thông thường qua 2 cách thức: cửa sổ command và GUI (Graphic Users Interface) – Giao diện đồ họa người dùng Trong đó cửa sổ command thường được sử dụng cho các lập trình viên,... dòng thông báo lỗi Nếu cột THOIGIANOFF đã có dữ liệu, giải thuật sẽ không ghi dữ liệu vào cột THOIGIANOFF và biên dịch ra thông báo Thiết bị hiện đang tắt” - Việc kiểm tra dữ liệu THOIGIANOFF nhằm mục đích tránh việc nhấn nút tắt nhiều lần, làm chèn liên tục dữ liệu “thời gian tắt thiết bị vào cơ sở dữ liệu, dẫn đến việc tính toán số liệu không chính xác 2.2 Phân tích thiết kế điều khiển các thiết bị ... CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - TRỊNH QUANG LƯƠNG ỨNG DỤNG BOARD RASPBERRY-PI ĐIỀU KHIỂN THIẾT BỊ TRONG NHÀ THÔNG MINH CHUYÊN NGÀNH : KỸ THUẬT VIỄN THÔNG MÃ SỐ : 60.52.02.08... từ thiết bị, em tiến hành thực đề tài luận văn: Ứng dụng board Raspberry-pi điều khiển thiết bị nhà thông minh Luận văn chia làm Chương: Chương 1: Nghiên cứu tổng quan Chương 2: Phân tích thiết. .. gian sử dụng thiết bị 48 Hình 4.1: Giao diện điều khiển thiết bị phòng khách 49 Hình 4.2: Giao diện điều khiển phòng ngủ 50 Hình 4.3: Bảng thống kê thời gian sử dụng thiết bị