You are on page 1of 46

THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

PHỤ LỤC

TÓM TẮT.................................................................................................................3
LỜI NÓI ĐẦU..........................................................................................................4
DANH MỤC CÁC HÌNH.........................................................................................5
GIỚI THIỆU CHUNG….……………………………………………………….....6
CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ NGÔI NHÀ THÔNG MINH

1.1.TỔNG QUAN ............................................................................................... 7

1.2.CÁC THÀNH PHẦN CƠ BẢN TRONG HỆ THỐNG NHÀ THÔNG MINH

1.2.1. Hệ thống quản lý chiếu sáng .................................................................. 9

1.2.2. Hệ thống kiểm soát vào ra ..................................................................... 9

1.2.3. Hệ thống quản lý cấp điện, nước, gas ................................................... 10

1.2.4. Hệ thống cảm biến và báo động, báo cháy .......................................... 10

1.2.5. Hệ thống điều hòa không khí, kiểm soát môi trường……………......….11

1.2.6.Hệ thống các công tắc điều khiển trạng thái........................................... 12

1.2.7. Hệ thống mạng, xử lý trung tâm và sự kết hợp hoạt động ..................... 12

1.3. TRIỂN KHAI MÔ HÌNH NGÔI NHÀ THÔNG MINH THỰC TẾ ............ 13
1.3.1. Mô tả yêu cầu ....................................................................................... 14
1.3.2. Mục tiêu thực hiện ................................................................................ 15
1.3.3. Sơ đồ khối nguyên lý ............................................................................ 15

CHƯƠNG II. NGHIÊN CỨU CHẾ TẠO NHÀ THÔNG MINH SỬ DỤNG
RASPBERRY PI
2.1. Giới thiệu về các linh kiện ........................................................................... 16

2.1.1. Bo mạch Raspberry Pi 3 ....................................................................... 16

Lương Cao Thế 145D5202160051 Trang 1


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

2.1.2 Module Arduino .................................................................................... 17

2.1.3 Module thu phat wifi ESP8266 NodeMCU…………………………………………… 18

2.1.4 Cảm biến khí ga MQ2 ........................................................................... 19

2.1.5 cảm biến nhiệt độ , độ ẩm DHT11 ......................................................... 20

2.1.5 Cảm biến siêu âm HC-SR04 .................................................................. 21

2.2. Lập trình điều khiển thiết bị với web-server sử dụng cayenne ................. 22

2.2.1. Cài đặt những công cụ cần thiết trên raspberry pi3 ............................... 22

CHƯƠNG III: CHƯƠNG TRÌNH ĐIỀU KHIỂN NHÀ THÔNG MINH

SỬ DỤNG NGÔN NGỮ PYTHON

3.1. Giới thiệu về ngôn ngữ Python .................................................................... 25

3.1. Giới thiệu ngôn ngữ lập trình C………………………………………………………………….31

3.1.Chương trình điều khiển ............................................................................... 32

Kết quả của sản phẩm thực tế ............................................................................... 42

KẾT LUẬN.......................................................................................................... 45

CÁC TÀI LIỆU THAM KHẢO ........................................................................... 46

Lương Cao Thế 145D5202160051 Trang 2


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

TÓM TẮT

Ngày nay trên thế giới với sự bùng nổ của các ngành công nghệ thông tin, điện
tử đã đáp ứng các nhu cầu của con người trong đời sống hằng ngày càng được tốt
hơn. Các thiết bị tự động hóa đã ngày càng xuất hiện nhiều trong sản xuất và cuộc
sống sinh hoạt hằng ngày của mỗi con người. Do đó một ngôi nhà thông minh
không còn là mơ ước của con người nữa mà nó đã trở thành hiện thực. Qua báo
chí, các phương tiện truyền thông và internet chúng ta có thể thấy có rất nhiều mô
hình ngôi nhà thông minh đã ra đời, để đáp ứng nhu cầu không ngừng gia tăng của
con người. Một ví dụ thực tế được kể đến là hệ thông nhà thông minh Bkar Smart
home. Giải pháp nhà thông minh sẽ làm cho những thiết bị điện tử bình thường
trong ngôi nhà trở nên thông minh và gần gũi với người dùng hơn, chúng được
kiểm soát thông qua các thiết bị truyền thông như điều khiển bằng thiết bị từ xa,
điện thoại di động hoặc internet. Vì những lý do đó, nhóm sinh viên quyết định
thực hiện đề tài “ thiết kế và chế tạo ngôi nhà thông minh”.

Đề tài tập trung nghiên cứu giải pháp điều khiển các thiết bị điện, kết hợp với
phần điều khiển là module Arduino và bảo mật module khiển các hệ thống chấp
hành. Điều khiển qua điện thoại và máy tính có kết nối internet, sử dụng chủ yếu
các loại cảm biến thông dụng như cảm biến nhiệt độ, cảm biến khói, cảm biến khí
gaz, cảm biến siêu âm.

Kết quả em đạt được là hoàn chỉnh được mô hình nhà thông minh có độ trế thấp
và hoạt động ổn định.

Lương Cao Thế 145D5202160051 Trang 3


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

LỜI NÓI ĐẦU

Em xin chân thành cám ơn giảng viên hướng dẫn ThS. Phan Văn Dư đã giúp
đỡ và góp ý tận tình trong suốt thời gian thực hiện đề tài để em có thể hoàn thành
tốt đề tài đúng thời gian quy định.

Em xin cam đoan đề tài là công trình nghiên cứu của riêng em. Các kết quả và
số liệu và mô hình trong đề tài là của em có được và xây dựng trong quá trình xây
dựng đồ án.

Em sẽ cố gắng xây dựng và phát triển hơn nữa đề tài được cho với hy vọng có
thể ứng dụng vào thực tế, đồng thời sẵn sàng chia sẽ cũng như giúp đỡ các bạn
sinh viên khóa sau về phần mềm đã viết để có thể xây dựng các hệ thống liên quan.

Vì thời gian và trình độ bản thân có giới hạn nên trong đề tài không thể tránh
khỏi những sai sót, rất mong nhận được sự góp ý của quý thầy cô để em có thể rút
kinh nghiệm và phát triển hơn nữa đề tài được giao.

Lương Cao Thế 145D5202160051 Trang 4


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

DANH MỤC CÁC HÌNH


Hình 1.1: Sơ đồ minh họa hệ thống điều khiển thiết bị điện cho nhà thông minh

Hình 1.2: 1.2 Hệ thống quản lí chiếu sáng nhà thông minh

Hình 1.3 Hệ thống kiểm soát vào ra

Hình 1.4 :Hệ thống cảm biến và báo động và báo cháy

Hình 1.5 Hệ thống điều hòa

Hình 1.6 Hệ thống điều khiển trạng thái các thiết bị trong gia đình

Hình 1.7 Hệ thống xử lí trung tâm

Hình 1.8.Sơ đồ nguyên lý hoạt động

Hình 2.1: Bo mạch raspberry pi 3

Hình 2.2: Raspberry pi 3 kết nối với các phụ kiện


Hình 2.3: Module Arduino Uno
HÌnh 2.4: Module Esp 8266
Hình 2.5: Module cảm biến khí gas
Hình 2.6: Module cảm biến nhiệt độ , độ ẩm DHT11

Hình 2.7: Module Cảm biến siêu âm HC-SR04

Hình 2.8:Chọn thiết bị Raspberry pi

Hình 2.9: Trang tổng quan khi cài đặt xong trên pi3

Hình 3.1: Hình ảnh thiết kế nhà thông minh

Hình 3.2: Bật tắt các thiết bị điện, kiểm tra các thông số trong nhà qua qua máy
tính hoặc điện thoại (các thiết bị kết nối internet)

Lương Cao Thế 145D5202160051 Trang 5


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

GIỚI THIỆU CHUNG

Bài trình bày đồ án gồm 3 chương:

➢ Chương 1: Giới thiệu tổng quan về ngôi nhà thông minh

Nội dung chương cho chúng ta cái nhìn tổng quát về ngôi nhà thông minh và
cơ chế hoạt động của khối xử lí, điều khiển, khối cảm biến, khối nguồn. Bộ này
gồm 2 khối, một có chức năng nhận và xử lý thông tin và khối còn lại có chức
năng xử lý tín hiệu từ WebSever gửi về thiết bị thông qua kết nối Wifi

➢ Chương 2: Thiết kế hệ thống, lựa chọn thiết bị

Tìm hiểu các yêu cầu hệ thống từ đó lên phương án thiết kế và xây dựng mô
hình. Lựa chọn các linh kiện, thiết bị cần thiết.

➢ Chương 3: Chương trình điều khiển nhà thông minh sử dụng ngôn ngữ
python và ngôn ngữ lập trình c

Tìm hiểu về ảnh số và vấn đề xử lý ảnh biển số xe. Từ đó đưa ra giải thuật xử
lý ảnh thích hợp và hoàn thiện phần mềm trên matlab.

Lương Cao Thế 145D5202160051 Trang 6


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

CHƯƠNG 1. GIỚI THIỆU TỔNG QUAN VỀ NGÔI NHÀ THÔNG


MINH

1.1 TỔNG QUAN

Nhà thông minh là ngôi nhà được trang bị các hệ thống tự động thông minh cùng
với cách bố trí hợp lý, các hệ thống này có khả năng tự điều phối các hoạt động trong
ngôi nhà theo thói quen sinh hoạt và nhu cầu cá nhân của gia chủ. Chúng ta cũng có
thể hiểu ngôi nhà thông minh là một hệ thống chỉnh thể mà trong đó, tất cả các thiết
bị điện tử gia dụng đều được liên kết với thiết bị điều khiển trung tâm và có thế phối
hợp với nhau để cùng thực hiện một chức năng. Các thiết bị này có thể tự đưa ra
cách xử lý tình huống được lập trình trước, hoặc là được điều khiển và giám sát từ
xa.

Hình 1.1: Sơ đồ minh họa hệ thống điều khiển thiết bị điện cho nhà thông
minh

Giải pháp nhà thông minh sẽ biến những món đồ điện tử bình thường trong ngôi
nhà trở nên thông minh và gần gũi với người dùng hơn, chúng được kiểm soát thông

Lương Cao Thế 145D5202160051 Trang 7


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

qua các thiết bị truyền thông như điều khiển từ xa, điện thoại di động… ngôi nhà
thông minh đơn giản nhất có thể được hình dung bao gồm một mạng điều khiển liên
kết một số lượng cố định các thiết bị điện, điện tử gia dụng trong ngôi nhà và chúng
được điều khiển thông qua một chiếc điều khiển từ xa. Chỉ với kết nối đơn giản như
trên cũng đủ để hài lòng một số lượng lớn các cá nhân có nhu cầu nhà thông minh ở
mức trung bình.
Vậy liệu nhà thông minh có làm thay đổi các thói quen vốn đã rất gắn bó từ trước
đến nay với hầu hết mọi người?.
Chúng ta đều biết phần lớn căn hộ từ trung bình đến cao cấp đều sử dụng các loại
điều khiển từ xa để điều khiển máy lạnh, ti vi…còn lại phần lớn các thiết bị khác
như hệ thống đèn, bình nước nóng lạnh…phải điều khiển bằng tay. Những việc như
vậy đôi lúc sẽ đem lại sự bất tiện, khi mà chúng ta mong muốn có một sự tiện nghi
và thoải mái hơn, vừa có thể tận hưởng nằm trên giường coi ti vi vừa có thể kiểm
soát được hệ thống các thiết bị trong nhà chỉ với một chiếc smartphone hay máy tính
bảng.

1.2 CÁC THÀNH PHẦN CƠ BẢN TRONG HỆ THỐNG NGÔI NHÀ THÔNG
MINH

Mô hình mô phỏng ngôi nhà trong thực tế và sự phân bố khá hợp lý các hệ thống
đi kèm.
Việc bố trí rất quan trọng, những thiết bị không sử dụng nên sắp xếp vào chỗ hợp
lý tránh gây bất tiện trong sinh hoạt. Vì vậy, khi thiết kế ngôi nhà thông minh cần
quan tâm đến sự thay đổi mềm dẻo trong cách thức lắp đặt và cấu hình sử dụng.

1.2.1 Hệ thống quản lý chiếu sang

Các thiết bị chiếu sáng như bóng đèn sợi đốt, đèn neon, đèn ngủ, trang trí…được
sử dụng rất nhiều. Vì vậy nếu phối hợp chiếu sáng không hợp lý sẽ dẫn tới bị “ô
nhiễm” ánh sáng. Ngoài ra, việc chiếu sáng như vậy còn gây lãng phí điện, giảm tuổi

Lương Cao Thế 145D5202160051 Trang 8


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

thọ thiết bị. Bên cạnh đó số lượng đèn dùng để chiếu sáng là khá lớn, gia chủ sẽ gặp
những bất tiện nhỏ trong việc bật tắt, điều chỉnh độ sáng cho phù hợp.
Hệ thống chiếu sáng sẽ được tích hợp chung với các hệ thống khác hoặc sẽ được
tách riêng ra để điều khiển độc lập. Các giải pháp đều nhằm tối ưu hóa hệ thống và
giúp gia chủ điều khiển dễ dàng hơn. Các giải pháp kết hợp sẽ được tính đến để tự
động hóa tới mức tối đa.

Hình 1.2: Hệ thống quản lí chiếu sáng nhà thông minh

1.2.2 Hệ thống kiểm soát vào ra

Hình 1.3: Hệ thống kiểm soát vào ra.

Lương Cao Thế 145D5202160051 Trang 9


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Khi gia chủ đi vắng, việc kiểm soát các hệ thống vào ra trong ngôi nhà là rất quan
trọng, giúp đề phòng trộm v.v… Ngôi nhà thông minh cung cấp hệ thống kiểm soát
vào ra cho phép chủ nhà quản lý và cấp quyền “đăng nhập” cho các thành viên trong
gia đình và người thân.
Hệ thống cửa ra vào ở các phòng sẽ được lắp đặt các khóa vân tay hoặc khóa phím
v.v… nhằm nhận dạng người trong nhà hoặc khách để cấp quyền “đăng nhập”. Ngoài
ra, còn có thể dùng hệ thống nhận diện khuôn mặt hay giọng nói tùy vào phòng riêng
của mỗi người.
Mỗi khi có sự kiện mới, hệ thống kiểm soát ra vào này cũng sẽ kích hoạt các hệ
thống khác để lưu giữ các thay đổi do người dùng tạo ra.

1.2.3 Hệ thống quản lý cấp điện, nước, gas

Đối với một ngôi nhà bình thường thì việc cung cấp và đo lường các chỉ số điện
nước đều phải thông qua các cơ quan nhà nước.
Ngôi nhà thông minh cung cấp giải pháp nhằm đo lường và báo lại các thông số
điện, nước thường xuyên, kết hợp với hệ thống quản lý chiếu sáng và hệ thống kiểm
soát vào ra, từ đó tự động bật/tắt các thiết bị trong nhà nhằm tiết kiệm năng lượng.
Ngoài ra, các cảm biến sẽ giúp hạn chế và cảnh báo các nguy cơ khác như rò rỉ gas,
mực nước ở bể chứa thấp, bể đường ống nước, cháy chập điện…

1.2.4 Hệ thống cảm biến và báo động, báo cháy

Hình 1.4 :Hệ thống cảm biến và báo động và báo cháy

Lương Cao Thế 145D5202160051 Trang 10


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hệ thống các cảm biến là thành phần quan trọng trong bất kì hệ thống nào của
ngôi nhà, các cảm biến có nhiệm vụ gửi các thông số đo được về cho bộ xử lý trung
tâm để có giải pháp phù hợp với từng gói dữ liệu và xử lý từng tình huống tương
ứng.
Các cảm biến cơ bản như cảm biến nhiệt độ, độ ẩm, cảm biến gas, cảm biến áp
suất, cảm biến hồng ngoại…

1.2.5 Hệ thống điều hòa không khí, kiểm soát môi trường

Thông thường thì một ngôi nhà cần có những không gian xanh, nó không chỉ giúp
các thành viên trong gia đình thư giãn mà còn giúp điều hòa không khí. Việc xây
dựng và duy trì màu xanh trong ngôi nhà là cần thiết, do đó hệ thống điều hòa không
khí và kiểm soát môi trường sẽ giúp ích rất nhiều trong việc chăm sóc cây như độ
ẩm cần thiết, hay là ánh sáng phù hợp…

Hình 1.5: Hệ thống điều hòa

Lương Cao Thế 145D5202160051 Trang 11


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

1.2.6 Hệ thống các công tắc điều khiển trạng thái

Hình 1.6: Hệ thống điều khiển trạng thái các thiết bị trong gia đình

Hệ thống các công tắc và bảng hiển thị sẽ cung cấp thông tin cũng như nhận lệnh
điều khiển từ gia chủ. Đảm bảo sự tương tác hai chiều giữa các thành viên và hệ
thống tự động. Hệ thống bao gồm: các điều khiển từ xa, các công tắc gắn tường, các
bảng điều khiển tương tác HMI, điện thoại thông minh…

1.2.7 Hệ thống mạng, xử lý trung tâm và sự kết hợp hoạt động

Hình 1.7: Hệ thống xử lí trung tâm

Lương Cao Thế 145D5202160051 Trang 12


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Ngôi nhà thông minh được đánh giá cao và khác hẳn những ngôi nhà bình thường
là do nó được trang bị một hệ thống mạng điều khiển và toàn bộ các thay đổi và điều
khiển tự động trong ngôi nhà được xử lý đồng nhất thông qua hệ thống mạng và xử
lý trung tâm. Nó có vai trò quan trọng, làm nhiệm vụ liên kết các hệ thống khác trong
ngôi nhà lại với nhau, điều phối của hệ thống chấp hành một cách nhịp nhàng theo
các điều kiện tác động được lập trình từ trước. Chúng ta gọi đó là các hoạt cảnh –
hay là các điều kiện môi trường trong ngôi nhà. Một vài sự kết hợp tiêu biểu:

Hệ thống chiếu sáng với Hệ thống xử lý trung tâm có thể được lập trình theo thói
quen của người sử dụng. Các thiết bị chiếu sáng sẽ hoạt động theo chu trình thời
gian đặt trước.

Hệ thống cảnh báo kết hợp với hệ thống chiếu sáng: khi có vấn đề xảy ra như cháy
nổ, phát hiện ăn trộm…các bóng đèn sẽ chớp sáng liên tục, đồng thời sẽ có tiếng còi
báo hiệu.

Hệ thống cảm biến kết hợp với hệ thống xử lý trung tâm báo cáo tình trạng lưu
trữ điện trong các UPS, báo cáo mực nước trong bồn chứa…nhằm đảm bảo nguồn
cung cho nhu cầu sinh hoạt hằng ngày.

1.3 TRIỂN KHAI MÔ HÌNH NGÔI NHÀ THÔNG MINH THỰC TẾ

1.3.1 Mô tả yêu cầu

Đảm bảo đầy đủ các yếu tố cơ bản nhất mô phỏng một ngôi nhà thông minh thu
nhỏ.

Có tính khả thi và thực hiện được trong thời gian ngắn.

Đảm bảo phát triển theo mục tiêu của đề tài đặt ra: điều khiển và quản lý các thiết
bị thông qua mạng internet.

Lương Cao Thế 145D5202160051 Trang 13


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

1.3.2 Mục tiêu thực hiện

Thiết lập mô hình mạng điều khiển từ internet đến board điều khiển trung tâm, rồi
từ đó đi đến các nút mạng khác

Giao tiếp dữ liệu bằng sóng radio thành công giữa board điều khiển trung tâm và
các nút mạng.

Xây dựng chương trình điều khiển là một web server được tích hợp trên board,
cho phép điều khiển thông qua trình duyệt web. Có thể dùng các thiết bị như laptop,
máy tính bàn, điện thoại thông minh để truy cập.

Thiết kế và thi công một số cảm biến như: cảm biến ánh sáng, cảm biến nhiệt độ,
độ ẩm…và các mạch công suất để điều khiển các thiết bị như đèn chiếu sáng, quạt…

1.3.3 Sơ đồ khối nguyên lý

Hình 1.8: Sơ đồ khối nguyên lý hoạt động

Lương Cao Thế 145D5202160051 Trang 14


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Khối giao tiếp người dùng:cũng cấp giao diện tương tác giữa người dùng và
thiết bị

Khối cảm biến:cung cấp các cảm biến để lấy dữ liệu điều khiển thiết bị.

Khối thiết bị: gồm các thiết bị dùng để điều khiển.

Khối nguồn:cung cấp năng lượng điện áp cho toàn bộ hệ thống hoạt động.

Kết luận

Chương 1 cho chúng ta cái nhìn tổng quát về ngôi nhà thông minh và cơ chế hoạt
động của khối xử lí, điều khiển, khối cảm biến, khối nguồn. Bộ này gồm 2 khối,
một có chức năng nhận và xử lý thông tin và khối còn lại có chức năng xử lý tín hiệu
từ WebSever gửi về thiết bị thông qua kết nối Wifi

Lương Cao Thế 145D5202160051 Trang 15


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

CHƯƠNG II. THIẾT KẾ HỆ THỐNG LỰA CHON THIẾT BỊ


2.1. Giới thiệu về các linh kiện
2.1.1. Bo mạch Raspberry Pi 3
Raspberry Pi 3 (viết tắt là Pi3) là một máy vi tính được sử dụng như một máy tính
thông thường khi được kết nối với một màn hình máy vi tính hay màn hinh ti vi qua
cáp HDMI hoặc jack video analog, người dùng tương tác với Raspberry Pi 3 thông
qua bàn phím và chuột USB.

Hình 2.1: Bo mạch Raspberry Pi 3


Raspberry Pi có các ưu điểm:
- Kích thước nhỏ, nhẹ
- Giá cả phải chăng
- Tiết kiệm điện năng
Máy tính Raspberry Pi 3 khi mới mua về chỉ là một bo mạch, muốn Raspberry Pi
3 trở thành một máy tính thực thụ ta phải kết nối Raspberry Pi 3 với các thiết bị
ngoại vi như màn hình, bàn phím và chuột thông qua các cổng kết nối trên bo mạch,
sau đó cung cấp nguồn điện cho Raspberry Pi 3 bằng cách cắm sạc micro USB 5V
vào Raspberry Pi 3. Khi đã được kết nối đầy đủ với các thiết bị ngoại vi, Raspberry
Pi 3 sẽ trở thành một máy tính thực thụ như hình bên dưới.

Lương Cao Thế 145D5202160051 Trang 16


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hình 2.2: Raspberry Pi 3 kết nối với các phụ kiện


Raspberry Pi 3 là một thiết bị nhỏ cho phép mọi người ở mọi lứa tuổi có thể tìm
hiểu, khám phá máy vi tính, học lập trình với các ngôn ngữ lập trình như Python
hoặc C. Raspberry Pi 3 sử dụng các hệ điều hành dựa trên hệ điều hành Linux và có
thể làm được gần như tất cả mọi thứ mà một máy tính thông thường có thể làm.
Raspberry Pi 3 được sử dụng cho rất nhiều dự án khoa học và học tập. Raspberry
Pi 3 có thể kết nối với nhiều thiết bị ngoại vi và tương tác với thế giới bên ngoài.
Chẳng hạn như Raspberry Pi 3 được sử dụng để tạo thành một trạm đo thời tiết thông
qua các cảm biến nhiệt độ, cảm biến đo độ ẩm, máy đo mưa kết nối với các chân
GPIO trên bo mạch của Raspberry Pi 3. Raspberry Pi 3 có thể sử dụng để học tập,
nghe nhạc, chơi game và Raspberry Pi 3 có thể tạo ra một siêu máy tính bằng cách
ghép nhiều Raspberry Pi 3 lại với nhau..
2.1.2 Module Arduino uno

Hình 2.3: Module arduino uno

Lương Cao Thế 145D5202160051 Trang 17


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Giới thiệu tổng quan về arduino: Arduino là nền tảng thiết bị điện tử mã nguồn
mở, một nền tảng mà mọi thiết bị phần cứng đều được làm sẵn và chuẩn hóa có thể
được sử dụng để dễ dàng giao tiếp với phần cứng và bộ cảm biến để mở rộng các hệ
thống mong muốn. Arduino ra đời tại thị trấn Ivrea, nước Ý và được đặt theo tên
một vị vua vào thế kỷ thứ 9 là King Arduin.Nó chính thức được đưa ra giới thiệu
vào năm 2005 như là một công cụ cho sinh viên học tập của giáo sư Massimo Banzi,
một trong những người phát triển Arduino tại trường Interaction Design Instistute
Ivrea (IDII).
Thông số module arduino uno:Arduino Uno được xây dựng với phần xử lý là vi
điều khiển ATmega328P sử dụng thạch anh có chu kì dao động là 16 MHz. Với vi
điều khiển này, ta có tổng cộng 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong
đó có 6 pin PWM, được đánh dấu ~ trước mã số của pin). Song song đó, ta có thêm
6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử
dụng được như các pin ra / vào bình thường (như pin 0 - 13). Ở các pin được đề cập,
pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board. Trên board còn
có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng
jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn.
2.1.3 Module thu phát Wifi ESP8266 NodeMCU

Hình 2.4: Module ESP8266 NodeMCU

Lương Cao Thế 145D5202160051 Trang 18


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Kit RF thu phát Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền chip
Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp
trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và
lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản.
Kit RF thu phát Wifi ESP8266 NodeMCU Lua được dùng cho các ứng dụng cần
kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên
quan đến IoT.
Thông số kỹ thuật:

• IC chính: ESP8266 Wifi SoC.


• Chip nạp và giao tiếp UART: CP2102.
• GPIO tương thích hoàn toàn với firmware Node MCU.
• Cấp nguồn: 5VDC MicroUSB hoặc Vin.
• GIPO giao tiếp mức 3.3VDC
• Tích hợp Led báo trạng thái, nút Reset, Flash.
• Tương thích hoàn toàn với trình biên dịch Arduino.
2.1.4 Cảm biến khí ga MQ2
Cảm biến khí ga MQ2 là một trong những loại cảm biến được sử dụng để nhận
biết: LPG, i-butan, Propane, Methane , Alcohol, Hydrogen, Smoke và khí ga. Được
thiết kế với độ nhạy cao, thời gian đáp ứng nhanh. Gía trị đọc được từ cảm biến sẽ
được đọc về từ chân Analog của vi điều khiển.

Lương Cao Thế 145D5202160051 Trang 19


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hình 2.5: Module cảm biến khí ga.


Thông số kỹ thuật:
• Nguồn hoạt động: 5VDC
• Dòng: 150mA
• Tính hiệu tương tự (analog)
• Hoạt động trong thời gian dài, ổn định
• Thứ tự chân:VCC_- GND – D0 – A0
2.1.5 cảm biến nhiệt độ , độ ẩm DHT11

DHT11 Là cảm biến nhiệt độ, độ ẩm rất thô dụng hiện nay vì chi phí rẻ và rất dễ
lấy dữ liệu thông qua giao tiếp 1-wire ( giao tiếp digital 1-wire truyền dữ liệu duy
nhất). Cảm biến được tích hợp bộ tiền xử lý tín hiệu giúp dữ liệu nhận về được chính
xác mà không cần phải qua bất kỳ tính toán nào.

Đặc điểm:

• Dải độ ẩm hoạt động : 20% - 90% RH, sai số ±5%RH

• Dải nhiệt độ hoạt động : 0°C ~ 50°C, sai số ±2°C

• Điện áp hoạt động : 3V - 5V (DC)

• Tần số lấy mẫu tối đa: 1 Hz

Sơ đồ chân Cảm biến DHT11 gồm 2 chân cấp nguồn, và 1 chân tín hiệu. Hiện
nay, thông dụng ngoài thị trường có hai loại đóng gói cho DHT11: 3 chân và 4 chân

Hình 2.6: Module cảm biến nhiệt độ , độ ẩm DHT11

Lương Cao Thế 145D5202160051 Trang 20


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

2.1.6 Cảm biến siêu âm HC-SR04

Cảm biến siêu âm HC-SR04 (cảm biến đo khoảng cách) sử dụng rất phổ biến để
xác định khoảng cách sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng
từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.

Các thông số chính:

• Nguồn làm việc: 3.3V – 5V (chuẩn 5V)

• Dòng tiêu thụ : 2mA

• Tín hiệu đầu ra xung: HIGH (5V) và LOW (0V)

• Khoảng cách đo: 2cm – 300cm

• Độ chính xác: 0.5cm

Sơ đồ chân của HC-SR04 gồm 4 chân:

• VCC –> pin 5V

• trig –> chân digital (OUTPUT), đây là chân sẽ phát tín hiệu từ cảm biến.

• echo –> chân digital (INPUT), đây là chân nhận lại tín hiệu được phản xạ từ
vật cản

Hình 2.7: Module Cảm biến siêu âm HC-SR04

Lương Cao Thế 145D5202160051 Trang 21


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

2.2. Lập trình điều khiển thiết bị với web-server sử dụng cayenne

2.2.1. Cài đặt những công cụ cần thiết trên raspberry pi3

• Cài đặt Apache

Khi nói về web-server, chúng ta thường hình dung tới khía cạnh phần cứng là
một máy chủ dùng để chứa các tài nguyên của một hay nhiều website. Và trên thực
tế thì một máy chủ có thể phục vụ nhiều loại tài nguyên khác nhau. Ví dụ một máy
chủ vừa có thể làm một máy chủ phục vụ việc chứa các tập tin chia sẻ (file server)
hoặc có thể là máy chủ chứa cơ sở dữ liệu (database server) hoặc máy chủ phục vụ
việc gửi và nhận email (mail server).

Tuy nhiên, thuật ngữ web-server còn được hiểu trên khía cạnh của một phần
mềm được cài đặt trên máy chủ (phần cứng). Chính phần mềm này sẽ xác định xem
web-server được dùng với mục đích gì. Ví dụ một web-server sẽ cần cài đặt trên đó
phần mềm HTTP web-server. Có nhiều phần mềm như vậy và Apache là một trong
những phần mềm phổ biến nhất.

Khi bạn cài Apache trên máy tính cá nhân thì máy tính của bạn lúc này vừa
đóng vai trò là một client vừa đóng vai trò của một web-server. Địa chỉ nội bộ
http://localhost là một địa chỉ đặc biệt. Nó chỉ tồn tại trên máy tính của mỗi người
và khi truy cập địa chỉ này máy tính của bạn sẽ gửi HTTP request tới chính nó. Như
vậy nếu bạn cài đặt Apache trên máy tính, bạn đã tạo ra môi trường giả lập một web-
server trên chính máy tính mình

Để cài đặt Apache trên Pi các bạn gõ lệnh sau :

sudo apt-get install apache2

Lương Cao Thế 145D5202160051 Trang 22


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

• Cài đặt PHP


PHP (Hypertext Preprocessor) là một ngôn ngữ lập trình chủ yếu được dùng để
phát triển các ứng dụng cho máy chủ. Nó rất thích hợp với web và có thể dễ dàng
nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh,
nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối
ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn
ngữ lập trình web phổ biến nhất thế giới.

Để cài đặt PHP và các module của PHP trên Pi ta gõ các lệnh sau :

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt php5-mysql

• Cài đặt Mysql


Mysql là một công cụ quản trị database. Nó được xây dựng lên để lưu trữ và quản
lý dữ liệu. Mysql sẽ kết hợp với Php để lưu trữ ứng dụng trên web của chúng ta. Ví
dụ như các thông số về thiết bị được điều khiển, hay thông tin của các cảm biến.
Việc sử dụng hệ quản trị liệu là rất cần thiết vì việc quản lý dữ liệu sẽ đơn giản hơn,
giảm thiểu các sự cố do thiết bị gặp trục trặc hay mất điện, vì dữ liệu đươc lưu trên
phần cứng của máy.

Để cài đặt Mysql :

sudo apt-get install mysql-server

• Cài đặt Cayenne

- Bước 1: Vào trang web cayenne lập 1 tài khoản

- Bước 2: Chọn thiết bị raspberry pi

Cayenne hiện đang hỗ trợ các thiết bị Raspberry Pi, Arduino và LoRa. Chọn thiết
bị bạn muốn bắt đầu với dự án IoT : Ở đây ta sử dụng Raspberry Pi 3

Lương Cao Thế 145D5202160051 Trang 23


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hình 2.8:Chọn thiết bị Raspberry pi

- Bước 3: cài đặt Cayenne vào thiết bị raspberry pi

Để cài đặt Cayenne vào Pi ta gõ các lệnh sau :

Pip istall cayenne-mqtt

Ngay sau khi quá trình cài đặt hoàn tất, Trang tổng quan trực tuyến sẽ tự động
xuất hiện. Raspberry Pi của bạn đã sẵn sàng để sử dụng!

Hình 2.9: Trang tổng quan khi cài đặt xong trên pi3

Bây giờ ta chỉ viêc cài đăt Cài đặt trình điều khiển các thiết bị mà ta mong muốn

Lương Cao Thế 145D5202160051 Trang 24


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

CHƯƠNG III: CHƯƠNG TRÌNH ĐIỀU KHIỂN NHÀ THÔNG MINH


SỬ DỤNG NGÔN NGỮ PYTHON VÀ NGÔN NGỮ LẬP TRÌNH C

3.1. Giới thiệu về ngôn ngữ Python

Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra
năm 1990. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động,
do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát
triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software
Foundation quản lý.

Theo đánh giá của Eric S. Raymond, Python là ngôn ngữ có hình thức rất sáng
sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python
còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, như nhận định
của chính Guido van Rossum trong một bài phỏng vấn ông.

Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian,
nó đã "bành trướng" sang mọi hệ điều hành từ MS-DOS đến Mac OS,
OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát
triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum
hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết
định hướng phát triển của Python.

a.Lịch sử phát triển

Sự phát triển của Python đến nay có thể chia làm các giai đoạn:

Python 1: bao gồm các bản phát hành 1.x. Giai đoạn này, kéo dài từ đầu đến
cuối thập niên 1990. Từ năm 1990 đến 1995, Guido làm việc tại CWI (Centrum voor
Wiskunde en Informatica - Trung tâm Toán-Tin học tại Amsterdam, Hà Lan). Vì
vậy, các phiên bản Python đầu tiên đều do CWI phát hành. Phiên bản cuối cùng phát
hành tại CWI là 1.2.

Lương Cao Thế 145D5202160051 Trang 25


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Vào năm 1995, Guido chuyển sang CNRI (Corporation for National Research
Initiatives) ở Reston, Virginia. Tại đây, ông phát hành một số phiên bản khác.
Python 1.6 là phiên bản cuối cùng phát hành tại CNRI.

Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trình viên
chuyên viết phần mềm thương mại. Tại đây, ông có ý tưởng sử dụng Python với các
phần mềm tuân theo chuẩn GPL. Sau đó, CNRI và FSF (Free Software Foundation -
Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làm bản quyền Python phù hợp
với GPL. Cùng năm đó, Guido được nhận Giải thưởng FSF vì Sự phát triển Phần
mềm tự do (Award for the Advancement of Free Software).

Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theo bản quyền GPL. Tuy
nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửa lỗi cần thiết.

Python 2: vào năm 2000, Guido và nhóm phát triển Python dời
đến BeOpen.com và thành lập BeOpen PythonLabs team. Phiên bản Python 2.0
được phát hành tại đây. Sau khi phát hành Python 2.0, Guido và các thành viên
PythonLabs gia nhập Digital Creations. Python 2.1 ra đời kế thừa từ Python 1.6.1 và
Python 2.0. Bản quyền của phiên bản này được đổi thành Python Software
Foundation License. Từ thời điểm này trở đi, Python thuộc sở hữu của Python
Software Foundation (PSF), một tổ chức phi lợi nhuận được thành lập theo
mẫu Apache Software Foundation.

Python 3: còn gọi là Python 3000 hoặc Py3K: Dòng 3.x sẽ không hoàn toàn
tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ các phiên bản 2.x
sang 3.x. Nguyên tắc chủ đạo để phát triển Python 3.x là "bỏ cách làm việc cũ nhằm
hạn chế trùng lặp về mặt chức năng của Python". Trong PEP (Python Enhancement
Proposal) có mô tả chi tiết các thay đổi trong Python.

• Từ khóa.
Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các ký hiệu và cấu trúc
cú pháp so với các ngôn ngữ khác.

Lương Cao Thế 145D5202160051 Trang 26


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Python là một ngôn ngữ phân biệt kiểu chữ hoa, chữ thường như C/C++, các từ
khóa của Python đều ở dạng chữ thường.

• Khối lệnh.
Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng cặp ký hiệu hoặc
từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một khối
lệnh. Python, trái lại, có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu
lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa
nó.

• Các bản hiện thực


Python được viết từ những ngôn ngữ khác, tạo ra những bản hiện thực khác nhau.
Bản hiện thực Python chính, còn gọi là CPython, được viết bằng C, và được phân
phối kèm một thư viện chuẩn lớn được viết hỗn hợp bằng C và Python. CPython có
thể chạy trên nhiều nền và khả chuyển trên nhiều nền khác. Dưới đây là các nền
trên đó, CPython có thể chạy.

Các hệ điều hành họ Unix: AIX, Darwin, FreeBSD, Mac OS X, NetBSD, Linux,
OpenBSD, Solaris,…

Các hệ điều hành dành cho máy desktop: Amiga, AROS, BeOS, Mac OS 9,
Microsoft Windows, OS/2, RISC OS.

Các hệ thống nhúng và các hệ đặc biệt: GP2X, Máy ảo Java, Nokia 770 Internet
Tablet, Palm OS, PlayStation 2, PlayStation Portable, Psion, QNX, Sharp Zaurus,
Symbian OS, Windows CE/Pocket PC, Xbox/XBMC, VxWorks.

Các hệ máy tính lớn và các hệ khác: AS/400, OS/390, Plan 9 from Bell Labs,
VMS, z/OS.

Ngoài CPython, còn có hai hiện thực Python khác: Jython cho môi trường Java
và IronPython cho môi trường .NET và Mono.

Lương Cao Thế 145D5202160051 Trang 27


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

• Khả năng mở rộng.


Python có thể được mở rộng: nếu ta biết sử dụng C, ta có thể dễ dàng viết và tích
hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành hàm xây
dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng chức năng của trình thông
dịch, hoặc liên kết các chương trình Python với các thư viện chỉ ở dạng nhị phân
(như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp). Hơn thế nữa, ta cũng có
thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và sử dụng nó
như là một mở rộng hoặc một ngôn ngữ dòng lệnh phụ trợ cho ứng dụng đó.

• Lệnh và cấu trúc điều khiển.


Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần phải kết
thúc câu lệnh bằng bất kì ký tự gì. Cũng như các ngôn ngữ khác, Python cũng có các
cấu trúc điều khiển. Chúng bao gồm:

Cấu trúc rẽ nhánh: cấu trúc if (có thể sử dụng thêm elif hoặc else ), dùng để thực
thi có điều kiện một khối mã cụ thể.

- Cấu trúc lặp, bao gồm:

Lệnh while : chạy một khối mã cụ thể cho đến khi điều kiện lặp có giá trị false .

Vòng lặp for : lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào
biến cục bộ để sử dụng với khối mã trong vòng lặp.

Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng

đối tượng) và lệnh def dùng để định nghĩa hàm.

- Hệ thống kiểu dữ liệu.


Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự động xác
định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ liệu tại thời

Lương Cao Thế 145D5202160051 Trang 28


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu một thao tác trên một đối
tượng bị thất bại, thì có nghĩa là đối tượng đó không sử dụng một kiểu thích hợp.

Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác không hợp
lệ, ví dụ cộng một con số vào chuỗi ký tự.

Sử dụng Python, ta không cần phải khai báo biến. Biến được xem là đã khai báo
nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python sẽ tự động
xác định kiểu dữ liệu của biến. Python có một số kiểu dữ liệu thông dụng sau:

int , long : số nguyên (trong phiên bản 3.x long được nhập vào trong kiểu int). Độ
dài của kiểu số nguyên là tùy ý, chỉ bị giới hạn bởi bộ nhớ máy tính.

float : số thực

complex : số phức, chẳng hạn 5+4j

list : dãy trong đó các phần tử của nó có thể được thay đổi, chẳng hạn [8, 2, 'b', -

1.5] . Kiểu dãy khác với kiểu mảng (array) thường gặp trong các ngôn ngữ lập trình
ở chỗ các phần tử của dãy không nhất thiết có kiểu giống nhau. Ngoài ra phần tử của
dãy còn có thể là một dãy khác.

tuple : dãy trong đó các phần tử của nó không thể thay đổi.

str : chuỗi ký tự. Từng ký tự trong chuỗi không thể thay đổi. Chuỗi ký tự được đặt
trong dấu nháy đơn, hoặc nháy kép.

dict : từ điển, còn gọi là "hashtable": là một cặp các dữ liệu được gắn theo kiểu
{từ khóa: giá trị}, trong đó các từ khóa trong một từ điển nhất thiết phải khác nhau.
Chẳng hạn {1: "Python", 2: "Pascal"}

set : một tập không xếp theo thứ tự, ở đó, mỗi phần tử chỉ xuất hiện một lần.

Lương Cao Thế 145D5202160051 Trang 29


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Python cho phép chia chương trình thành các module để có thể sử dụng lại trong
các chương trình khác. Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà
lập trình viên có thể sử dụng lại trong chương trình của họ. Các module này cung
cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, trợ
giúp lập trình mạng (socket),…

• Đa năng.
Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.

So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều cấu
trúc hơn.

So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn
nhiều kiểu dữ liệu cấp cao, ví dụ như các mảng (array) linh hoạt và từ
điển (dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng C.

Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập
trình viên:

Python thích hợp với các chương trình lớn hơn cả AWK và Perl.

Python được sử dụng để lập trình Web. Nó có thể được sử dụng như một ngôn
ngữ kịch bản.

Python được thiết kế để có thể nhúng và phục vụ như một ngôn ngữ kịch bản để
tuỳ biến và mở rộng các ứng dụng lớn hơn.

Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong phú,
Python cho phép người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các thành
phần COM hay CORBA,

Hỗ hỗ trợ các loại định dạng dữ liệu Internet như email, HTML, XML và
các ngôn ngữ đánh dấu khác. Python cũng được cung cấp các thư viện xử lý các giao
thức Internet thông dụng như HTTP, FTP,…

Lương Cao Thế 145D5202160051 Trang 30


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả năng xử
lý văn bản, tài liệu hiệu quả, và có thể làm việc tốt với các công nghệ Web khác.

Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công
cụ Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric
Python, ScientificPython,…

Python có thể được sử dụng để phát triển các ứng dụng desktop. Lập trình viên có
thể dùng wxPython, PyQt, PyGtk để phát triển các ứng dụng giao diện đồ họa (GUI)
chất lượng cao. Python còn hỗ trợ các nền tảng phát triển phần mềm khác
như MFC, Carbon, Delphi, X11, Motif, Tk, Fox, FLTK, …

Python cũng có sẵn một unit testing framework để tạo ra các bộ test (test suites).

Multiple paradigms (đa biến hóa)

Python là một ngôn ngữ đa biến hóa (multiple paradigms). Có nghĩa là, thay vì ép
buộc mọi người phải sử dụng duy nhất một phương pháp lập trình, Python lại cho
phép sử dụng nhiều phương pháp lập trình khác nhau: hướng đối tượng, có cấu trúc,
chức năng, hoặc chỉ hướng đến một khía cạnh. Python kiểu kiểu động và sử dụng bộ
thu gom rác để quản lý bộ nhớ. Một đặc điểm quan trọng nữa của Python là giải
pháp tên động, kết nối tên biến và tên phương thức lại với nhau trong suốt thực thi
của chương trình.

3.2. Giới thiệu về ngôn ngữ lập trình C

Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh, được phát triển từ đầu năm
1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Cũng từ đó ngôn ngữ
này đã lan rộng ra nhiều hệ điều hành khác, dần trở nên phổ biến trên toàn cầu.

Tuy nhiên, nhiều người nghĩ rằng lập trình C chỉ cho chúng ta nền tảng để chúng
ta phát triển ra nhiều ngôn ngữ khác. Thực tế không hẳn vậy, việc lập trình C và C++
đóng vai trò rất quan trọng trong đời sống của chúng ta

Lương Cao Thế 145D5202160051 Trang 31


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Một số ứng dụng tiêu biểu về việc lập trình ngôn ngữ này là lập trình C đã được
sử dụng để viết ra hệ điều hành Windows và Linux, Back-end một số chương trình
cần hiệu năng cao như Zalo, Games. Ngoài ra khi chúng ta lập trình nhúng ( lập trình
cho các phần cứng như vi điều khiển, vi xử lý ) như cho Audi, Mercedes, việc tương
tác với phần cứng thì ứng cử viên sáng giá luôn là ngôn ngữ C cũng như C++. Server
của Facebook viết bằng PHP nhưng nguồn gốc của chúng vẫn là C, C++. Ngôn ngữ
C xuất hiện cả trong việc bảo mật, tạo ra virus, hack tools.

3.3 Chương trình điều khiển

Sau đây là chương trình nhà thông minh viết bằng ngôn ngữ python và ngôn
ngữ C:

a. Cảm biến nhiệt độ

import Adafruit_DHT

import RPi.GPIO as GPIO

import time

# Adafruit_DHT ho tro nhieu loai cam bien DHT, o day dung DHT11 nen

chon_cam_bien = Adafruit_DHT.DHT11

GPIO.setmode(GPIO.BCM)

# chan DATA duoc noi vao chan GPIO14 cua PI

pin_sensor = 14

print ("RASPI.VN Demo cam bien do am DHT 11");

while(1):

# Doc Do am va Nhiet do tu cam bien thong qua thu vien Adafruit_DHT

# Ham read_retry se doc gia tri Do am va Nhiet do cua cam bien

Lương Cao Thế 145D5202160051 Trang 32


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

# neu khong thanh cong se thu 15 lan, moi lan cach nhau 2 giay.

do_am, nhiet_do = Adafruit_DHT.read_retry(chon_cam_bien, pin_sensor);

# Kiem tra gia tri tra ve tu cam bien (do _am va nhiet_do) khac NULL

#neu nhiet do lon hon

if Nhietdo> 35:

GPIO.output(5,GPIO.HIGH)

else:

GPIO.output(5,GPIO.LOW)

if do_am is not None and nhiet_do is not None:

print ("NNhiet Do = {0:0.1f} Do Am = {1:0.1f}\n").format(nhiet_do,

do_am);

print ("RASPI.VN cho 2 giay de tiep tuc do ...\n");

time.sleep(2)

else:

# Loi

print("Loi khong the doc tu cam bien DHT11 :(\n")

b. Cảm biến siêu âm

import RPi.GPIO as GPIO

import time

import thread

from Tkinter import *

Lương Cao Thế 145D5202160051 Trang 33


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

root = Tk()

TRIG_PIN = 21

ECHO_PIN = 20

GPIO.setmode(GPIO.BCM)

GPIO.setup(27, GPIO.OUT) #THEM

GPIO.setup(TRIG_PIN, GPIO.OUT)

GPIO.setup(ECHO_PIN, GPIO.IN)

batdaudo = 0

ketthucdo = 0

thoigiando = 0

khoangcach = 0

hienthi = StringVar()

hienthi.set('0.00')

root.title(' Cam bien sieu am')

frame.grid(row=0, column=0, sticky='NW')

frame.grid_propagate(0)

frame.update()

lbfont = ('times', 20, 'bold')

label.config(font=lbfont)

label.place(x=240,y=150,anchor="center")

#tac vu do khoang cach

Lương Cao Thế 145D5202160051 Trang 34


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

def dokhoangcach(ten, chodoi):

print('bat dau do')

time.sleep(chodoi)

#moi giay do 1 lan

while True:

#kich hoat cam bien theo muc LOW-HIGH-LOW

GPIO.output(TRIG_PIN, False)

#cho 200 ms

time.sleep(0.2)

GPIO.output(TRIG_PIN, True)

#cho 10 micro giay

time.sleep(0.00001)

GPIO.output(TRIG_PIN, False)

#chan ECHO duoc keo xuong muc 0 cho toi khi nhan duoc tin hieu

#ham time() de lay thoi gian hien tai

batdaudo = time.time()

while GPIO.input(ECHO_PIN) == 0:

batdaudo = time.time()

#co tin hieu phan hoi chan ECHO duoc keo len muc 1,

#wait cho den khi nhan duoc het tin hieu phan hoi

ketthucdo = time.time()

Lương Cao Thế 145D5202160051 Trang 35


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

#hoan tat nhan tin hieu phan hoi, tinh khoang thoi gian phan hoi

thoigiando = ketthucdo - batdaudo

#van toc sieu am la 344m/s = 34400cm/s

khoangcach = (thoigiando * 34400)/2

hienthi.set(str(round(khoangcach, 2)) + ' cm')

time.sleep(1)

# Khoảng cách bật tắt

if khoangcach < 14:

GPIO.output(27,GPIO.LOW)

else:

GPIO.output(27,GPIO.HIGH)

try:

thread.start_new_thread(dokhoangcach, ('luong 1', 2,))

except:

print 'loi tao luong'

sys.exit()

#tac vu hien thi giao dien

root.mainloop()

c. Mở khóa cửa:
#include <Servo.h> // Khai báo thư viện sử dụng cho động cơ
#include <LiquidCrystal_I2C.h> // Khai báo thư viện LCD sử dụng I2C

Lương Cao Thế 145D5202160051 Trang 36


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 địa chỉ LCD, 16 cột và 2 hàng
#include <Keypad.h> // Khai báo thư viện Keypad
const byte ROWS = 4; // Bốn hàng
const byte COLS = 4;
char keys[ROWS][COLS] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = { 9, 8, 7, 6 };// Connect keypad COL0, COL1 and
COL2 to these Arduino pins.
byte colPins[COLS] = { 5, 4, 3, 2 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS,
COLS);
Servo myServo;
char STR[4] = {'2', '0', '1', '9'};
char str[4] = {' ', ' ', ' ', ' '};
int i, j, count = 0;
void setup() {
myServo.attach(10); // Khai báo chân điều khiển động cơ
lcd.init(); // Khai báo sử dụng LCD
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.print(" Enter Password");
Serial.begin(9600);
Serial.write(254);

Lương Cao Thế 145D5202160051 Trang 37


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Serial.write(0x01);
delay(200);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
char key = keypad.getKey(); // Ký tự nhập vào sẽ gán cho biến Key
if (key) // Nhập mật khẩu
{
if (i == 0) {
str[0] = key;
lcd.setCursor(6, 1);
lcd.print(str[0]);
delay(1000); // Ký tự hiển thị trên màn hình LCD trong 1s
lcd.setCursor(6, 1);
lcd.print("*"); // Ký tự được che bởi dấu *
}
if (i == 1) {
str[1] = key;
lcd.setCursor(7, 1);
lcd.print(str[1]);
delay(1000);
lcd.setCursor(7, 1);
lcd.print("*");
}
if (i == 2) {
str[2] = key;
lcd.setCursor(8, 1);
lcd.print(str[2]);

Lương Cao Thế 145D5202160051 Trang 38


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

delay(1000);
lcd.setCursor(8, 1);
lcd.print("*");
}
if (i == 3) {
str[3] = key;
lcd.setCursor(9, 1);
lcd.print(str[3]);
delay(1000);
lcd.setCursor(9, 1);
lcd.print("*");
count = 1;
}
i = i + 1;
}
if (count == 1) {
if (str[0] == STR[0] && str[1] == STR[1] && str[2] == STR[2] &&
str[3] == STR[3]) {
lcd.clear();
lcd.print(" Correct!");
delay(3000);
myServo.write(180); // Mở cửa
digitalWrite(11, HIGH);
digitalWrite(12, LOW);//turn off
lcd.clear();
lcd.print(" Opened!");
i = 0;
count = 0;
} else {

Lương Cao Thế 145D5202160051 Trang 39


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

lcd.clear();
lcd.print(" Incorrect!");
delay(3000);
lcd.clear();
lcd.print(" Try Again!");
delay(3000);
lcd.clear();
lcd.print(" Enter Password");
i = 0;
count = 0;
}
}
switch (key) {
case '#':
lcd.clear();
myServo.write(90);
lcd.print(" Closed!");
digitalWrite(11, LOW);// turn off
digitalWrite(12, HIGH); //turn on
delay(10000);
lcd.clear();
lcd.print(" Enter Password");
i = 0;
break;
}}
d. Cảm biến khí gas
#include <CayenneMessage.h>
#include <CayenneMQTTESP8266.h>
#include <CayenneMQTTWiFiClient.h>

Lương Cao Thế 145D5202160051 Trang 40


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

#include <DetectDevice.h>
#include "MQ135.h"
#define CAYANNE_DEBUG
#define CAYANNE_PRINT Serial
#define VIRTUAL_PIN 5
#define ANALOGPIN A0
char ssid[] = "HOANG TRINH_plus";
char wifiPassword[] = "12345678910";
char username[] = "69a1ead0-405f-11e8-ac80-85ded0fe5d33";
char password[] = "dfe3744838fcc44ba4f4cb9984e5963b71f58912";
char clientID[] = "4d55e520-1507-11e9-a254-e163efaadfe8";
MQ135 gasSensor = MQ135(ANALOGPIN);
void setup() {
Serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
}
void loop() {
Cayenne.loop();
float rzero = gasSensor.getRZero();
float ppm = gasSensor.getPPM();
Serial.println(rzero);
Serial.println(ppm);
Cayenne.virtualWrite(VIRTUAL_PIN,ppm);

Lương Cao Thế 145D5202160051 Trang 41


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

KẾT QUẢ SẢN PHẨM THỰC TẾ

Lương Cao Thế 145D5202160051 Trang 42


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hình 3.1: Hình ảnh thiết kế nhà thông minh

Lương Cao Thế 145D5202160051 Trang 43


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

Hình 3.3: Bật tắt các thiết bị điện, kiểm tra các thông số trong nhà qua qua
máy tính hoặc điện thoại (các thiết bị kết nối internet)

Lương Cao Thế 145D5202160051 Trang 44


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

KẾT LUẬN

“Thiết kế và chế tạo ngôi nhà thông minh” là một đề tài đỏi hỏi thời gian nghiên
cứu bởi có rất nhiều phương pháp điề khiển để ngôi nhà của chúng ta ngày càng
“thông minh” hơn. Như em đã trình bày ở trên một ngôi nhà thông minh có thể đơn
giản hoặc phức tạp tùy theo tính năng mà chủ nhà mong muốn

Trong thời gian làm đồ án vừa qua, em đã nghiên cứu về hệ thống chiếu sáng,
hệ thống báo rò rỉ khí ga, hệ thống bật tắt thiết bị điện tự động và hệ thống mở cửa
tự động bằng nhận diện khuôn mặt của chủ nhà. Theo đó em đã tìm hiểu thực tế
trong nước và ngoài nước về các hệ thống nhà thông minh.

Tuy nhiên, do giới hạn về thời gian và trình độ nên trong khi thực hiện đồ án
môn học lần này em củng không tránh khỏi những hạn chế. Em mong được sự đóng
góp ý kiến của các thầy cô và các bạn để có thể xây dựng một ngôi nhà thông minh
hoàn chỉnh hơn trong tương lai. Ngôi nhà có nhiều tính năng thông minh hơn với sự
điều khiển tối ưu hơn để có thể áp dụng vào thực tiễn cuộc sống hằng ngày của chúng
ta.

Em xin chân thành cảm ơn!

Lương Cao Thế 145D5202160051 Trang 45


THIẾT KẾ VÀ CHẾ TẠO NGÔI NHÀ THÔNG MINH

TÀI LIỆU THAM KHẢO

[1] Nhà thông minh Bkav Smarthome, http://www.smarthome.com.vn.


[2] Ngô Hoàng Xem, Lê Tuấn Dũng, “Xây dựng hệ thống điều khiển và giám
sát ngôi nhà bằng điện thoại”, ĐH Sư phạm Kỹ thuật Tp.HCM, 2010.
[3] Nguyễn Văn Hiệp, “Giáo trình công nghệ nhận dạng bằng sóng vô tuyến”,
ĐH Sư phạm Kỹ thuật Tp.HCM, 08/2014.
[4] Kỹ thuật vi xử lý, Văn Thế Minh , NXB Giáo dục, 1997.

[5]Lập trình Python căn bản và nâng cao, Võ Duy Tuấn.

[6] Python Programming for Raspberry Pi.

[7] Learning Python With Raspberry Pi.

[8]Mạng truyền thông công nghiệp, Hoàng Minh Sơn

[9]https://raspberrypi.vn/thu-thuat-raspberry-pi/su-dung-camera-tren-
raspberry-pi-3-2736.pi.
[10]https://www.slideshare.net/hoanghcmus/tm-hiu-v-my-tnh-Raspberry Pi 3.
[11]https://vi.wikipedia.org/wiki/Python.
[12]http://github.com .
[13]https://stackoverflow.com .
[14]http://mlab.vn/

[15] http://arduino.vn/

[16] https://www.instructables.com/

[17] https://forum.arduino.cc/

Lương Cao Thế 145D5202160051 Trang 46

You might also like