Ứ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Ứng dụng Board Raspberrypi điều khiển thiết bị trong nhà thông minh
Trang 1HỌ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
TÓM TẮT LUẬN VĂN THẠC SĨ
THÀNH PHỐ HỒ CHÍ MINH - 2016
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS CHUNG TẤN LÂM
Phản biện 1: ………
Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
LUẬN VĂN THẠC SĨ KỸ THUẬT
Trang 3MỞ ĐẦU
Cùng với sự tiến bộ của khoa học kỹ thuật và công nghệ, các thiết bị điện tử hay nói cách khác là các board mạch tích hợp đã và đang được ứng dụng ngày càng rộng rãi và mang lại hiệu quả cao trong mọi mặt của đời sống con người
Với nhịp sống hiện đại ngày càng năng động, con người chúng
ta luôn có xu hướng tìm kiếm những điều thoải mái nhất sau những ngày làm việc mệt mỏi và căng thẳng Và ngôi nhà là địa điểm lý tưởng nhất để thực hiện điều này Chính vì vậy, đã có rất nhiều sản phẩm, phát minh về nhà thông minh được các công ty, nhà phát triển nghiên cứu ra nhằm mục đích tạo sự tiện dụng nhất, tốt nhất cho cuộc sống sinh hoạt của con người Và việc này được thực hiện qua các board mạch tích hợp, các khối xử lý dữ liệu và điều khiển
Nhưng đi kèm với đó, giá thành của các board mạch tích hợp rất cao, kèm với các thiết bị đi kèm cũng khá đắt đỏ Nên để sở hữu được những hệ thống này, người sử dụng phải chi một khoản tiền khá lớn Vậy nên vấn đề đặt ra là làm sao để có thể sở hữu được 1 hệ thống
có khả năng làm được nhưng thao tác điều khiển như nhà thông minh, với giá thành rẻ, có tính khả thi cao
Với mục tiêu xây dựng hệ thống điều khiển có khả năng đáp ứng cao, thao tác dễ dàng, đảm bảo giá thành rẻ, dễ sử dụng và giúp người sử dụng có thể quản lý được năng lượng tiêu thụ của các thiết
bị, em tiến hành thực hiện đề tài luận văn: “Ứng dụng board Raspberry–pi điều khiển thiết bị trong nhà thông minh”
Trang 4Luận văn được chia làm 4 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 và đánh giá
Hệ thống đã được hoàn thiện với đủ các mục tiêu đặt ra, nhưng
do hạn chế về kiến thức, nên cuốn luận văn “Ứng dụng board raspberry – pi điều khiển thiết bị trong nhà thông minh” vẫn còn nhiều thiếu sót Rất mong được sự góp ý chân thành từ Quý Thầy, Cô và các bạn
Trang 5CHƯƠNG 1 - NGHIÊN CỨU TỔNG QUAN
1.1 Khảo sát về board Raspberry-pi:
1.1.1 Khái quát chung về board Raspberry-pi:
Raspberry-pi là một chiếc máy tính tí hon nhỏ bằng chiếc thẻ ATM chạy hệ điều hành Linux ra mắt vào tháng 2 năm 2012
Với Raspberry-pi (RPi), chỉ cần 1 bàn phím, 1 tivi hoặc 1 màn hình có cổng HDMI/DVI, 1 nguồn USB 5V và 1 dây micro USB là đã
có thể sử dụng Raspberry-pi như 1 máy tính bình thường
Raspberry-pi có nhiều ứng dụng từ đơn giản đến phức tạp có thể kể đến như: dùng Raspberry-pi làm trung tâm giải trí đa phương tiện, internet tv, datacenter, kết hợp với webcam làm hệ thống phát hiện chuyển động, nhận diện khuôn mặt, điều khiển robot, nhận và gửi tin nhắn, điều khiển bật/tắt thiết bị, và còn rất nhiều ứng dụng khác
Hình 1.1: Hình dạng thực tế board Raspberry-pi2
Trang 6Raspberry-pi hiện nay có khá nhiều phiên bản, 2 phiên bản mới nhất là pi3 và pi-zero Cuốn luận văn sử dụng phiên bản pi2
Bảng 1.1: Các thông số của board Raspberry-pi2
Storage MicroSDHC slot
Graphics Broadcom VideoCore IV
bị
1.1.3 Các module gắn ngoài:
- Khe cắm thẻ nhớ
- Nguồn nuôi (Micro USB Power):
- Khe cắm màn hình hiển thị (Screen - cảm ứng hoặc không):
- Khe cắm camera (Camera expansion):
- Cổng HDMI
- Cổng kết nối Ethenet
Trang 7- STEREO AUDIO
- GPIO
- Cảm biến nhiệt độ, độ ẩm DHT 11
- Module 8 cổng Relay với Opto cách ly (5VDC)
- Cảm biến thu hồng ngoại TSOP 1838 và cảm biến phát hồng ngoại
Hình 1.2: Raspberry-pi và các thiết bị kết nối
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 bởi phải có sự hiểu biết nhất định về các dòng lệnh và cú pháp lệnh Giao diện GUI lại phổ
Trang 8biến hơn bởi tính tiện lợi và trực quan hơn với người dùng mà không cần thiết phải am hiểu về cấu trúc dòng lệnh
1.3 Các thành phần của nhà thông minh:
Khối thiết bị điều khiển
Khối giao tiếp người dùng
thống hoạt động
Trang 9CHƯƠNG 2 - PHÂN TÍCH THIẾT KẾ HỆ THỐNG 2.1 Phân tích thiết kế hệ thống chiếu sáng:
+) Chương trình bật đèn chính/phụ được thực hiện theo giải thuật sau:
THOIGIANSD
BẮT ĐẦU
Khai báo thư viện
Khai báo GPIO Bật thiết bị KẾT NỐI DATABASE
Hình 2.1: Giải thuật điều khiển bật đèn chính/phụ
Sau khi tiến hành khai báo các thư viện sử dụng, giải thuật tiến hành kết nối với cơ sở dữ liệu Nếu kết nối được với cơ sở dữ liệu, giải
Trang 10thuật tiến hành khai báo các cổng GPIO dùng để điều khiển thiết bị qua relay, và thực hiện bật đèn đồng thời ghi dữ liệu thời gian vào cơ
sở dữ liệu để tiến hành thống kê thời gian sử dụng thiết bị
Giải thuật bật đèn chính và bật đèn phụ là tương tự nhau, nhưng khác ở chỗ cổng GPIO điều khiển và bảng lưu trữ dữ liệu trong
cơ sở dữ liệu (đèn chính cổng GPIO số 3, đèn phụ cổng GPIO số 4) +) Chương trình tắt đèn chính/phụ:
THOIGIANOFF
BẮT ĐẦU
Khai báo thư viện
Khai báo GPIO Tắt thiết bị KẾT NỐI DATABASE
Hình 2.2: Giải thuật điều khiển tắt đèn chính/phụ
- Cũng giống như giải thuật thực hiện bật đèn chính/phụ, ban đầu giải thuật sẻ tiến hành khai báo các thư viện sử dụng, và thực hiện kết nối với cơ sở dữ liệu Nếu kết nối được với cơ sở dữ liệu,
Trang 11giải thuật sẻ tiếp tục khai báo cổng GPIO để điều khiển đèn và tắt đèn
- Tại đây, giải thuật sẽ tiến hành so sánh giá trị
THOIGIANOFF trong cơ sở dữ liệu với NULL, để tránh trường hợp cột THOIGIANOFF đã có dữ liệu mà vẫn chèn dữ liệu thời gian vào gây ra sự sai lệch khoảng thời gian sử dụng thiết bị
- Bên cạnh đó, giải thuật cũng tiến hành tính toán thời gian
sử dụng thiết bị và gửi dữ liệu vào cột THOIGIANSD trong cơ sở dữ liệu
- Giải thuật tắt đèn chính tương tự như giải thuật tắt đèn phụ nhưng khác ở chỗ khai báo cổng GPIO và bảng lưu trữ dữ liệu trong
cơ sở dữ liệu
2.2 Phân tích thiết kế điều khiển các thiết bị trong nhà:
- Chương trình điều khiển bật thiết bị cũng tương tự như chương trình điều khiển bật đèn, giải thuật để xây dựng chúng là tương tự nhau, nhưng ở đây, khi khai báo cổng GPIO điều khiển thiết
bị là cổng chưa được sử dụng vì mục đích nào Bảng lưu trữ dữ liệu trong cơ sở dữ liệu cũng phải khác nhau, mỗi bảng lưu trữ dữ liệu phải là của từng thiết bị riêng biệt
- Chương trình điều khiển tắt thiết bị cũng tương tự chương trình điều khiển tắt đèn chính/phụ Tuy nhiên cổng GPIO ở đây phải tương ứng với cổng GPIO bật thiết bị (bật thiết bị bằng cổng GPIO nào thì tắt cũng bằng cổng GPIO đó) và phải khác nhau với từng thiết bị
Trang 122.3 Phân tích thiết kế thu nhận dữ liệu cảm biến nhiệt độ và độ ẩm:
- Việc thực hiện thu thập dữ liệu môi trường sống như: nhiệt
độ và độ ẩm do các thiết bị chuyên dụng thực hiện Ở đây, sử dụng cảm biến DHT11 để thực hiện đo nhiệt độ và độ ẩm căn phòng ( cần cài đặt thư viện để sử dụng) Để cảm biến có thể hoạt động được, chỉ cẩn kết nối đúng sơ đồ, cài đặt thư viện hoàn chỉnh và cấu hình đúng file lấy dữ liệu
- Dữ liệu về nhiệt độ và độ ẩm cũng sẽ được lưu trữ vào 1 bảng riêng trong cơ sở dữ liệu để phục vụ cho quá trình xuất dữ liệu cho người dùng theo dõi
2.4 Thiết kế điều khiển theo kịch bản:
-Việc phối ngữ cảnh cho ngôi nhà đặc biệt quan trọng Người
sử dụng luôn mong muốn có thể tạo được môi trường theo ý muốn mình 1 cách nhanh chóng nhất với thao tác ít nhất, và việc này chỉ cẩn thực hiện qua 1 nút bấm
-Việc phối ngữ cảnh sẽ dựa theo nhu cầu chung nhất của con người, vì vậy ở đây tiến hành xây dựng với 4 ngữ cảnh:
Friend: sử dụng quạt, đén chính, đèn phụ, máy lạnh, tivi Normal: sử dụng máy lạnh, tivi
Night: sử dụng đèn phụ, quạt
Family: sử dụng đèn chính, đèn phụ, máy lạnh, tivi
Trang 132.5 Thiết kế thủ tục truyền thông và cơ sở dữ liệu:
Chúng ta có thể kiểm soát ngôi nhà từ bất cứ vị trí nào trong căn nhà, chỉ cần kết nối được với board Raspberry-pi Việc kết nối giữa board raspberry-pi và các thiết bị được thực hiện bởi giao thức TCP/IP qua ROUTER đóng vai trò là DHCP server, kết nối không dây tới thiết bị người sử dụng Mọi thao tác điều khiển đều được thực hiện qua giao diện website
Bên cạnh đó, việc lưu trữ dữ liệu là vô cùng quan trọng, nó giúp chúng ta có thể theo dõi, thống kê và dùng mọi số liệu về thiết bị cho các mục đích cá nhân
Ở đây, sử dụng mySQL để làm máy chủ lưu trữ dữ liệu, dữ liệu gồm các thông tin về thiết bị, thời gian bật/tắt thiết bị và thời gian
sử dụng thiết bị: Từ đó, tiến hành xây dựng các bảng dữ liệu sau:
thietbi: Lưu trữ thông tin của thiết bị
DC: Lưu trữ dữ liệu thời gian tắt/bật/sử dụng đèn chính
DP: Lưu trữ dữ liệu thời gian tắt/bật/sử dụng đèn phụ
ML: Lưu trữ dữ liệu thời gian tắt/bật/sử dụng máy lạnh
QUAT: Lưu trữ dữ liệu thời gian tắt/bật/sử dụng quạt TV: Lưu trữ dữ liệu thời gian tắt/bật/sử dụng tivi
moitruong: Lưu trữ dữ liệu về nhiệt độ, độ ẩm phòng
Trang 142.6 Thiết kế giao diện người dùng:
Sử dụng giao diện GUI hoặc command khi thực hiện lập trình, điều khiển trên board Raspberry-pi
Giao diện tương tác người dùng – board raspberry-pi (giao diện cấu hình): có thể bằng nhiều cách như: dùng phần mềm
PUTTY để sử dụng cửa sổ terminal, hoặc sử dụng giao diện GUI dành riêng cho raspbian bằng remote desktop hoặc sử dụng LCD kết nối trực tiếp để hiển thị
Giao diện người dùng – Board Raspberry-pi (giao diện điều khiển) : Thiết lập giao diện Website tương tác giữa người dùng
– thiết bị: Giao diện phải thực hiện dựa trên nguyên tắc thân thiện, gần gũi với người dùng, mang tính đơn giản, dễ sử dụng nhưng vẫn đảm bảo đủ các nội dung cần thiết cho mục đích của luận văn
2.6.1 Thiết kế giao diện theo phòng:
Các thiết bị cơ bản trong 1 căn phòng thông thường sẽ gồm
có 5 thiết bị cơ bản: Tivi, đèn chính, đèn phụ, máy lạnh và quạt Tương ứng sẽ có các nút điều khiển bật/tắt cho từng thiết bị
Ở đây, kết hợp phần hiển thị thông số môi trường: nhiệt độ
và độ ẩm giúp người sử dụng có thể dễ dàng theo dõi và điều chỉnh cho phù hợp với môi trường sống
Các nút chuyên dụng để bật chế độ ngữ cảnh cũng được đặt
ở khung điều khiển này
Trang 152.6.2 Thiết kế giao diện theo chức năng chuyên dùng:
Khi nhu cầu về điều khiển thiết bị sinh hoạt nhiều hơn là bật/tắt thì phải thực hiện 1 giao diện khác mô phỏng quá trình điều khiển các tác vụ như trên remote điều khiển Và ở đây, sẽ thực hiện việc điều khiển hồng ngoại tivi với giao diện điều khiển như remote của tivi, nhưng chỉ bao gồm các nút hay sử dụng nhất
Hình 2.3: Giao diện điều khiển tivi
Trang 16CHƯƠNG 3 - CÀI ĐẶT HỆ THỐNG
3.1 Cài đặt điều khiển cấp cao – Web Server:
- Raspberry-pi sử dụng phiên bản của hệ điều hành Linux là Raspbian, được tạo ra từ nền tảng của hệ điều hành Debian Nên nhà phát triển cũng đã tích hợp Apache sẵn có trong kho ứng dụng, nhưng phải thực hiện cài đăt nó vào board raspberry-pi để có thể sử dụng
- Xây dựng website điều khiển thiết bị cần giao diện gọn gàng, thân thiện với người sử dụng Phần bảng điều khiển được tách ra riêng
để thuận lợi cho quá trình điều khiển thiết bị, cũng như phần hiển thị thông tin về môi trường như nhiệt độ và độ ẩm
- Kết nối với cơ sở dữ liệu từ raspberry-pi để đưa dữ liệu điều khiển, đưa dữ liệu thông tin thu thập từ cảm biến lên website
Hình 3.1: Giao diện điều khiển các thiết bị trong phòng khách
Trang 173.2 Cài đặt điều khiển cấp thấp - board Raspberry-pi:
- Cài đặt hệ điều hành Raspbian cho raspberry-pi và cấu hình các thông số cơ bản về thời gian, địa điểm, đổi mật khẩu và mở cổng SSH để sử dụng cho nhiều thiết bị khác
- Trước tiên, cần cài đặt thư viện bcm trên board raspberry-pi Khi thực hiện xong bước này phần lập trình điều khiển các ngõ ra GPIO mới có thể thực hiện được
3.2.1 Điều khiển chiếu sáng:
- Điều khiển chiếu sáng chia thành 2 mức độ sáng để sử dụng luôn cho phần phối ngữ cảnh: gồm có đèn chính và đèn phụ
- Sử dụng cổng GPIO của board Raspberry-pi để điều khiển bật/tắt đèn chính (cổng GPIO số 3) và đèn phụ (cổng GPIO số 4) thông qua đóng/mở relay Relay phải được cách ly nguồn điện áp cao để bảo
vệ cho board Dữ liệu thời gian bật/tắt thiết bị được lưu trữ vào cơ sở
dữ liệu
3.2.2 Điều khiển thiết bị máy lạnh, tivi và quạt:
- Điều khiển các thiết bị khác cũng giống như việc điều khiển đèn, việc điều khiển tắt/mở được thực hiện qua giao diện website, từ website dữ liệu điều khiển sẽ được đưa về board Raspberry-pi để điều khiển đưa các mức điện áp thấp/cao ra ngõ GPIO
- Sử dụng cổng GPIO của board Raspberry-pi để điều khiển bật/tắt thiết bị tương ứng như sau: quạt (cổng GPIO số 2), tivi (cổng GPIO số 27), máy lạnh (cổng GPIO số 22) Chúng được kết nối với
Trang 18relay để cách ly nguồn điện áp cao nhằm bảo vệ cho board Đồng thời quá trình bật/tắt thiết bị cũng ghi nhận thời gian vào cơ sở dữ liệu
Hình 3.2: Giao diện đồ họa điều khiển thiết bị
3.2.3 Thu nhận dữ liệu cảm biến nhiệt độ và độ ẩm:
- Sau khi cài đặt thư viện DHT11 từ Adafruit, để lấy dữ liệu
từ cảm biến DHT11, lập trình file lấy dữ liệu theo như phần phân tích thiết kế Phần khai báo thư viện sử dụng điều khiển, phải khai báo
thêm thư viện điều khiển dht
- Có thể lấy qua dòng lệnh trên cữa sổ terminal: sudo python moitruong.py
- Dữ liệu thu thập được qua cảm biến DHT11 sẽ được lưu trữ vào bảng moitruong trong cơ sở dữ liệu, gồm 2 thông số tách biệt là nhiệt độ và độ ẩm
3.2.4 Điều khiển theo kịch bản:
+ Với kịch bản Friend:
Điều khiển board Raspberry-pi đóng các relay là các ngõ nối với đèn chính, đèn phụ, quạt, máy lạnh và tivi, hay thực hiện chạy các file điều khiển bật thiết bị đã được lập trình sẳn, tương ứng với đưa điện áp thấp tới các ngõ GPIO số 3, 4, 2, 22, 27 để bật thiết bị và lưu trữ dữ liệu thời gian vào cơ sở dữ liệu
Trang 19+ Kịch bản Family:
Điều khiển board Raspberry-pi đóng các relay là các ngõ nối với đèn chính, đèn phụ, máy lạnh và tivi, hay chạy các file điều khiển bật thiết bị đã được lập trình sẳn, tương ứng với đưa điện áp thấp tới các ngõ GPIO số 3, 4, 22, 27 để bật thiết bị và lưu trữ dữ liệu thời gian vào cơ sở dữ liệu
+ Kịch bản Normal:
Điều khiển board Raspberry-pi đóng các relay là các ngõ nối với máy lạnh và tivi, hay chạy các file điều khiển bật thiết bị đã được lập trình sẳn, tương ứng với đưa điện áp thấp tới các ngõ GPIO số 22,
27 để bật thiết bị và lưu trữ dữ liệu thời gian vào cơ sở dữ liệu
+ Kịch bản Night:
Điều khiển board Raspberry-pi đóng các relay là các ngõ nối với đèn phụ, quạt và tivi, tức là chạy các file điều khiển bật thiết bị đã được lập trình sẳn, tương ứng với đưa điện áp thấp tới các ngõ GPIO
số 4, 2, 27 để bật thiết bị và lưu trữ dữ liệu thời gian vào cơ sở dữ liệu
Hình 3.3: Giao diện phím chức năng điều khiển theo kịch bản
3.3 Thi công Demokit hệ thống điều khiển nhà thông minh:
- Demokit là mô hình chứa toàn bộ các thiết bị sử dụng trong quá trình điều khiển, nó được xây dựng dựa trên các tiêu chí:
+ Đơn giản, dễ làm