You are on page 1of 30

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG


----

om
.c
ng
co
an
th

BÁO CÁO BTL THIẾT KẾ HỆ NHÚNG


g

HỆ THỐNG IOT THEO DÕI NHIỆT ĐỘ,


on

ĐỘ ẨM VÀ ĐIỀU KHIỂN
du
u

GVHD: TS. Ngô Vũ Đức


cu

Các thành viên Nguyễn Văn Tiến 20133956 KT ĐT-TT 01 K58


Nguyễn Hoàng Anh 20130138 KT ĐT-TT 08 K58
Nguyễn Văn Long 20132394 KT ĐT-TT 01 K58
Phan Thanh Việt 20134592 KT ĐT-TT 07 K58

Hà Nội, ngày 26 tháng 11 năm 2017

CuuDuongThanCong.com https://fb.com/tailieudientucntt
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
----

om
.c
BÁO CÁO BTL THIẾT KẾ HỆ NHÚNG
ng
HỆ THỐNG IOT THEO DÕI NHIỆT ĐỘ,
co
ĐỘ ẨM VÀ ĐIỀU KHIỂN
an

TS. Ngô Vũ Đức


th

GVHD:
Các thành viên: Nguyễn Văn Tiến 20133956 KT ĐT-TT 01 K58
g

Nguyễn Hoàng Anh 20130138 KT ĐT-TT 08 K58


on

Nguyễn Văn Long 20132394 KT ĐT-TT 01 K58


Phan Thanh Việt 20134592 KT ĐT-TT 07 K58
du
u
cu

Hà Nội, ngày 26 tháng 11 năm 2017

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

LỜI MỞ ĐẦU
Ngày này trên thế giới nói chung và nước ta nói riêng, sự phát triển diễn ra
mạnh mẽ toàn diện trên mọi lĩnh vực của đời sống hoạt động của xã hội loài người.
Cuộc cách mạng công nghiệp 4.0 đang tác động tới mọi hoạt động sản xuất của con
người, giúp cải tiến phương thức sản xuất, nâng cao năng suất lao động. Ứng dụng
IOT (Internet of Thing) trong sản xuất đã trở thành một nhu cầu cấp thiết, bởi
không chỉ ở tính tiện dụng mà còn phù hợp với xu thế phát triển.
Với nhu cầu thực tiễn đó cùng vốn kiến thức được học tại trường và cộng
thêm sự mong muốn làm được một thiết bị có thể ứng dụng trong thực tiễn. Nhóm
chúng em đã chọn đề tài: Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển

om
cho môn học Thiết kế hệ thống nhúng.
Trong quá trình thực hiện đề tài này, chúng em đã rất cố gắng để hoàn thành

.c
tốt nhưng có lẽ do vốn kiến thức còn hạn hẹp cũng như những yếu tố khách quan
khác mà không tránh khỏi những thiếu sót. Chúng em rất mong sự đóng góp ý kiến,
ng
phê bình và hướng dẫn thêm của thầy cô.
co
Cuối cùng chúng em xin gửi lời cảm ơn chân thành nhất tới thầy Ngô Vũ
Đức – người đã hướng dẫn tận tình, giảng giải chi tiết giúp chúng em thực hiện bài
an

tập lớn này.


th

Chúng em xin chân thành cảm ơn!


g
on
du
u
cu

1/12/2017 Page 3

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

MỤC LỤC
LỜI MỞ ĐẦU ............................................................................................................3
DANH MỤC HÌNH ẢNH .........................................................................................5
A. GIỚI THIỆU ĐỀ TÀI ..........................................................................................6
1. Ứng dụng của hệ thống IoT theo dõi nhiệt độ, độ ẩm và điều khiển ........................................ 6

B. TÌM HIỂU YÊU CẦU KỸ THUẬT CỦA THIẾT BỊ VÀ CÁC VẤN ĐỀ KỸ


THUẬT LIÊN QUAN ...............................................................................................7
1. Giới thiệu chung về Arduino ...................................................................................................... 7
2. Arduino Uno ............................................................................................................................... 9

om
2.1. Vi điều khiển...................................................................................................................... 10
2.2. Nguồn ................................................................................................................................ 11

.c
2.3. Các cổng vào ra ................................................................................................................. 11
2.4. Bộ nhớ ............................................................................................................................... 13
ng
3. ThingSpeak ............................................................................................................................... 13
co
4. Cảm biến nhiệt độ, độ ẩm DHT11 ............................................................................................ 14
5. WiFi Module - ESP8266 ............................................................................................................ 15
an

5.1. Mô tả. ................................................................................................................................ 15


th

5.2. Tính năng chính. ................................................................................................................ 15


g

5.3. Sơ đồ chân:........................................................................................................................ 16
on

6. Module SIM 900A..................................................................................................................... 17


du

6.1. Giới thiệu Module SIM900A .............................................................................................. 17


6.2. Kết nối với Arduino ........................................................................................................... 17
u

6.3. Một số lệnh AT cơ bản cho SIM900A ................................................................................ 18


cu

C. THIẾT KẾ HỆ THỐNG ....................................................................................19


1. Sơ đồ khối hệ thống ................................................................................................................. 19
2. Sơ đồ nối dây các module ........................................................................................................ 20
4. Code ......................................................................................................................................... 21
5. Thực hiện mạch, kết quả chạy kiểm thử .................................................................................. 23

D. TÀI LIỆU THAM KHẢO ......................................................................................26


PHỤ LỤC .................................................................................................................27

1/12/2017 Page 4

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

DANH MỤC HÌNH ẢNH

Hình 1. Arduino Uno...................................................................................................9


Hình 2. Vi điều khiển trên Arduino ..........................................................................10
Hình 3. Các chân vào ra ............................................................................................11
Hình 4. Module cảm biến nhiệt độ, độ ẩm DHT11...................................................14
Hình 5. Module ESP8266 .........................................................................................15
Hình 6. Sơ đồ chân ESP8266 ....................................................................................16
Hình 7. Module SIM900A ........................................................................................17

om
Hình 8. Sơ đồ khối hệ thống .....................................................................................19
Hình 9. Sơ đồ nối dây các module ............................................................................20

.c
Hình 10. Mạch lắp ráp thực tế ...................................................................................23
ng
Hình 11. Kết quả trả về của mạch qua cổng Serial của máy tính .............................24
Hình 12. Giao diện theo dõi nhiệt độ, độ ẩm được cập nhật trên ThingSpeaks .......24
co
Hình 13. Giao tiếp với hệ thống qua tin nhắn ...........................................................25
an
th
g
on
du
u
cu

1/12/2017 Page 5

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

A. GIỚI THIỆU ĐỀ TÀI


1. Ứng dụng của hệ thống IoT theo dõi nhiệt độ, độ ẩm và điều khiển

Hệ thống IoT theo dõi nhiệt độ, độ ẩm và điều khiển có chức năng đo đạc, nhận
dữ liệu từ cảm biến, gửi lên web qua mạng internet. Từ các dữ liệu có được có thể
có những ứng dụng sau:
 Theo dõi tình hình thời tiết (nhiệt độ, độ ẩm).
 Có thể ứng dụng làm hệ thống cảnh báo cháy. VD: khi giá trị nhiệt độ cao và
độ ẩm trong không khí thấp, thiết bị có thể phát cảnh báo cháy bằng tín hiệu
hoặc gửi lên web tín hiệu cảnh báo. Có thể sử dụng trong các cửa hàng, các
khu vực dễ xảy ra cháy nổ, các khu vực rừng vào mùa khô,…

om
 Có thể ứng dụng trong trồng trọt, trong chăn nuôi, theo dõi điều khiển các
thiết bị để duy trì điều kiện nhiệt độ độ ẩm đảm bảo cho cây trồng, vật nuôi

.c
luôn có điều kiện phát triển tốt nhất, giúp tăng năng suất cho việc sản xuất
nông nghiệp.
ng
co
an
th
g
on
du
u
cu

1/12/2017 Page 6

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

B. TÌM HIỂU YÊU CẦU KỸ THUẬT CỦA THIẾT BỊ VÀ CÁC VẤN ĐỀ


KỸ THUẬT LIÊN QUAN
1. Giới thiệu chung về Arduino
 Arduino là một công ty phần mềm, dự án, và cộng đồng người dùng thiết kế
và sản xuất máy tính phần cứng nguồn mở, phần mềm mã nguồn mở, và vi
điều khiển dựa trên bộ công cụ để xây dựng các thiết bị kỹ thuật số và các
đối tượng tương tác có thể cảm nhận và điều khiển các thiết bị vật lý.
 Dự án được dựa trên thiết kế bảng vi điều khiển, được sản xuất bởi nhiều nhà

om
cung cấp, sử dụng vi điều khiển khác nhau. Những hệ thống này cung cấp bộ
cổng kỹ thuật số và I/O có thể giao tiếp với board mở rộng khác nhau và các

.c
mạch khác. Với tính năng giao diện truyền thông nối tiếp, bao gồm Universal
ng
Serial Bus ( USB ) trên một số mô hình, các chương trình tải từ máy tính cá
nhân. Đối với lập trình vi điều khiển, Arduino không chỉ cung cấp một môi
co
trường phát triển tích hợp(IDE) dựa trên một ngôn ngữ lập trình có tên là
an

Processing, mà còn hỗ trợ các ngôn ngữ C và C ++.


th

 Arduino đầu tiên được giới thiệu vào năm 2005, nhằm cung cấp một chi phí
thấp, dễ dàng cho người mới và các chuyên gia để tạo ra các thiết bị tương
g
on

tác với môi trường của họ sử dụng cảm biến và cơ cấu chấp hành. Một số dụ
du

phổ biến của các thiết bị như vậy là dành cho người có sở thích, mới bắt đầu
với những thứ đơn giản như robot máy điều nhiệt và phát hiện chuyển động.
u

 Arduino có bán ở dạng preassembled, hoặc là bộ công cụ Do-it-yourself. Các


cu

thông số kỹ thuật thiết kế phần cứng là công khai có sẵn, cho phép các bảng
Arduino được sản xuất bởi bất cứ ai. Adafruit Industries ước tính vào giữa
năm 2011 là hơn 300.000 bản Arduinos chính thức đã được sản xuất thương
mại, và năm 2013 là 700.000 bản chính thức đến tay của người sử dụng.
 Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY ( là những
người tự sáng chế ra sản phẩm của mình) trên toàn thế giới trong vài năm
gần đây, gần giống với những gì mà Apple đã làm được trên thị trương thiết
bị di động. Số lượng người dùng cực kì lớn và đa dạng với trình độ trải rộng

1/12/2017 Page 7

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

từ bậc phổ thông đến bậc đại học đã làm cho ngay cả những người sáng tạo
ra cũng phải ngạc nhiên về mức độ phổ biến.
 Arduino thực ra là một bo mạch vi xử lí được dùng để tương tác với các thiết
bị phần cứng như cảm biến, động cơ, đèn hay các thiết bị khác. Đặc điểm nổi
bật của Arduino là môi trường phát triển ứng dựng cực kì dễ sử dụng. Với
ngôn ngữ lập trình có thể học nhanh chóng ngay cả khi người học ít hiểu biết
về điện tử và lập trình. Và điều làm nên Arduino chính là mức giá rất thấp và
tính chất nguồn mở từ cứng tới mềm. Chỉ với $30, người dùng đã có thể sở

om
hữu một board Arduino có 20 ngõ I/O có thể tương tác và điều khiển chừng
đấy thiết bị.

.c
Thế mạnh của arduino so với các nền tảng vi điều khiển khác:
ng
 Chạy trên đa nền tảng: Việc lập trình có thể thực hiện trên các hệ điều hành
co
khác nhau như Window, Mac Os, Linux trên destop, android trên di động.
an

 Ngôn ngữ lập trình đơn giản, dễ hiểu.


th

 Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nên phần mềm
chạy trên Arduino được chia sẻ dễ dàng tích hợp vào các nền tảng khác
g
on

nhau.
 Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạng module
du

nên việc mở rộng phần cứng khá dễ dàng.


u

 Đơn giản và nhanh: Rễ dàng lắp ráp, lập trình và sử dụng thiết bị.
cu

 Dễ dàng chia sẻ: Mọi người dễ dàng chia sẻ mã nguồn với nhau mà không
lo lắng về ngôn ngữ hay hệ điều hành mình đang sử dụng.
Những ứng dụng nổi bật của Arduino:
 Máy in 3d, robot, thiết bị bay không người lái UAV, game tương tác, điều
khiển ánh sáng, kích hoạt chụp ảnh tốc độ cao...
 Một hệ thống Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với
môi trường xung quanh với:

1/12/2017 Page 8

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

 Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia
tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát
hiện chuyển động, phát hiện kim loại, khí độc,…)
 Các thiết bị hiển thị (màn hình LCD, đèn LED,…).
 Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị
khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi,
Bluetooth, 315/433Mhz, 2.4Ghz,…). Định vị GPS, nhắn tin SMS, và
nhiều thứ thú vị khác.

om
2. Arduino Uno

.c
ng
co
an
th
g
on
du
u
cu

Hình 1. Arduino Uno

Vi điều khiển ATmega328 họ 8bit

Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động 16 MHz

1/12/2017 Page 9

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

Dòng tiêu thụ khoảng 30mA

Điện áp vào khuyên dùng 7-12V DC

Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA

om
Dòng ra tối đa (5V) 500 mA

.c
Dòng ra tối đa (3.3V) 50 mA
ng
32 KB (ATmega328) với 0.5KB dùng bởi
co
Bộ nhớ flash
bootloader
an

SRAM 2 KB (ATmega328)
th
g

EEPROM 1 KB (ATmega328)
on

Các thông số cơ bản của arduino


du

2.1. Vi điều khiển


u
cu

Hình 2. Vi điều khiển trên Arduino

 Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,


ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản
1/12/2017 Page 10

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa,
làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD
 Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển ATmega328
với giá khoảng 90.000đ. Tuy nhiên nếu yêu cầu phần cứng của bạn không
cao hoặc túi tiền không cho phép, bạn có thể sử dụng các loại vi điều khiển
khác có chức năng tương đương nhưng rẻ hơn như ATmega8 (bộ nhớ flash
8KB) với giá khoảng 45.000đ hoặc ATmega168 (bộ nhớ flash 16KB) với giá
khoảng 65.000đ.

om
2.2. Nguồn
 Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp

.c
nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V.
ng
Thường thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có
co
sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn
sẽ làm hỏng Arduino UNO.
an
th

2.3. Các cổng vào ra


g
on
du
u
cu

Hình 3. Các chân vào ra

 Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ
có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA.
Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều
khiển ATmega328 (mặc định thì các điện trở này không được kết nối).

1/12/2017 Page 11

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

 Một số chân digital có các chức năng đặc biệt như sau:

 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận


(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na
chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn
không nên sử dụng 2 chân này nếu không cần thiết
 Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng

om
hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được

.c
điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và
5V như những chân khác.

ng
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài
co
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu
bằng giao thức SPI với các thiết bị khác.
an

 LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi
th

bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối
g

với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
on
du

 Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu
10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với
u

chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử
cu

dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn
có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với
độ phân giải vẫn là 10bit.
 Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.

1/12/2017 Page 12

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

2.4. Bộ nhớ

 Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:

 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong
bộ nhớ Flash của vi điều khiển. Thường thì sẽ có khoảng vài KB trong số
này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần
quá 20KB bộ nhớ này đâu.

 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai

om
báo khi lập trình sẽ lưu ở đây. Bạn khai báo càng nhiều biến thì càng cần

.c
nhiều bộ nhớ RAM. Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại
trở thành thứ mà bạn phải bận tâm. Khi mất điện, dữ liệu trên SRAM sẽ bị
mất.
ng
co
 1KB cho EEPROM (Electrically Eraseble Programmable Read Only
Memory) đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi
an

dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ
th

liệu trên SRAM.


g
on

3. ThingSpeak
du

 ThingSpeak là một mã nguồn mở cho các ứng dụng của ―Internet of Things‖.
Mã nguồn này hỗ trợ các API lưu trữ, lấy dữ liệu từ các thiết bị, sản phẩm sử
u
cu

dụng HTTP qua Internet hoặc thông qua một Local Area Network. Như một
HUB đợi các thông tin cảm biến từ thiết bị và có nhiệm vụ lưu trữ và xử lý
dữ liệu, với ThingSpeak, bạn có thể tạo ra các ứng dụng phân tích dữ liệu,
lưu trữ dữ liệu, quản lý dữ liệu một cách đơn giản.
 ThinkSpeak được phát triển bởi ioBridge và được opensource trên GITHUB
https://github.com/iobridge/thingspeak

1/12/2017 Page 13

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

4. Cảm biến nhiệt độ, độ ẩm DHT11

om
.c
ng
Hình 4. Module cảm biến nhiệt độ, độ ẩm DHT11
co
 DHT11 Là cảm biến nhiệt độ, độ ẩm rất thông dụng hiện nay vì chi phí rẻ và
an

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
th

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.
g

 Đặc điểm:
on

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


du

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


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

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


o Khoảng cách truyển tối đa: 20m
 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
 Cách điều khiển:
DHT11 gửi và nhận dữ liệu với một dây tín hiệu data, với chuẩn dữ liệu
truyền 1 dây này, chúng ta phải đảm bảo sao cho ở chế độ chờ (idle) dây
DATA có giá trị ở mức cao, nên trong mạch sử dụng DHT11, dây
DATA phải được mắc với một trở kéo bên ngoài(thông thường giá trị là
4.7kΩ).
Dữ liệu truyền về của DHT11 gồm 40bit dữ liệu theo thứ tự: 8 bit biểu thị
phần nguyên của độ ẩm + 8 bit biểu thị phần thập phân của độ ẩm + 8 bit

1/12/2017 Page 14

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

biểu thị phần nguyên của nhiệt độ + 8 bit biểu thị phần thập phân của nhiệt
độ + 8 bit check sum.
Ví dụ: ta nhận được 40 bit dữ liệu như sau:
0011 0101 0000 0000 0001 1000 0000 0000 0100 1101

Tính toán:
8 bit checksum: 0011 0101 + 0000 0000 + 0001 1000 + 0000 0000 = 0100
1101
Độ ẩm: 0011 0101 = 35H = 53% (ở đây do phần thập phân có giá trị 0000
0000, nên ta bỏ qua không tính phần thập phân)
Nhiệt độ: 0001 1000 = 18H = 24°C (ở đây do phần thập phân có giá trị 0000

om
0000, nên ta bỏ qua không tính phần thập phân)

.c
5. WiFi Module - ESP8266
5.1. Mô tả. ng
co
an
th
g
on
du
u

Hình 5. Module ESP8266


cu

 Mạch thu phát Wifi ESP8266 Uart ESP-01 sử dụng IC Wifi SoC ESP8266
của hãng Espressif, được sử dụng để kết nối với vi điều khiển thực hiện chức
năng truyền nhận dữ liệu qua Wifi, mạch có thiết kế nhỏ gọn, sử dụng giao
tiếp UART với bộ thư viện và code mẫu rất nhiều từ cộng đồng, ESP-01
được sử dụng trong các ứng dụng IoT và điều khiển thiết bị qua Wifi,...

5.2. Tính năng chính.


 Điện áp sử dụng: 3.3VDC
 Điện áp giao tiếp: 3.3VDC
 Dòng tiêu thụ: Max 320mA (nên sử dụng module cấp nguồn riêng cho
mạch).
 Hỗ trợ chuẩn 802.11 b/g/n.

1/12/2017 Page 15

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

 Wi-Fi 2.4 GHz, hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK,
WPA2_PSK, WPA_WPA2_PSK.
 Hỗ trợ cả 2 giao tiếp TCP và UDP.
 Chuẩn giao tiếp UART với Firmware hỗ trợ bộ tập lệnh AT Command, tốc
độ Baudrate mặc định 9600 hoặc 115200.
 Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point.
 Kích thước: 24.8 x 14.3mm

5.3. Sơ đồ chân:

om
.c
ng
co
Hình 6. Sơ đồ chân ESP8266
an

 RX — dùng để nhận tín hiệu trong giao tiếp UART với vi điều khiển
 VCC — đầu vào 3.3V
th

 GPIO 0 — kéo xuống thấp cho chế độ upload bootloader


 RESET — chân reset cứng của module, kéo xuống mass để reset
g

 CH_PD — kích hoạt chip, sử dụng cho Flash Boot và updating lại
on

module, nối với mức cao.


du

 GPIO 2 — thường được dùng như một cổng TX trong giao tiếp UART
để debug lỗi.
 TX — dùng để truyền tín hiệu trong giao tiếp UART với vi điều
u
cu

khiển
 GND — nối với mass

1/12/2017 Page 16

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

6. Module SIM 900A


6.1. Giới thiệu Module SIM900A

om
.c
Hình 7. Module SIM900A
ng
 Module SIM900A là module GSM, hoạt động ở 2 băng tần 900/1900 MHz,
co
xây dựng dựa trên SIM900A của hãng SIMCOM.
an

 Module SIM900A được thiết kế tập trung hướng đến sự ổn định trong hoạt
th

động của thiết bị, dễ sử dụng với người dùng và phục vụ chủ yếu cho việc
điều khiển và giám sát các thiết bị qua GSM/GPRS.
g
on

Đặc điểm:
du

 Sử dụng nguồn ngoài: 4.3VDC - 4.8VDC/ 3A.


 Trên mạch có phần bảo vệ ESD và chống cắm ngược nguồn
u
cu

 Giao tiếp UART, dùng được với cả MCU 5V và 3.3V


 Có thể khởi động module sim bằng phím bấm hoặc khởi động mềm bằng
cách điều khiển chân PWKEY
 Kích thước: 3.42 cm x 5.87 cm

6.2. Kết nối với Arduino


 Chân TX của Arduino nối với chân TXD của module SIM900A
 Chân RX của Arduino nối với chân RXD của module SIM900A
 Chân GND của Arduino nối với chân GND của module SIM900A
 Chân 5V/3.3V của Arduino nối với chân VMCU của module SIM900A

1/12/2017 Page 17

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

6.3. Một số lệnh AT cơ bản cho SIM900A


Lệnh Mô tả
AT<CR><LF> Kiểm tra đáp ứng của Module Sim 900A, nếu
trả về OK thì module hoạt động
ATE[x]<CR><LF> Chế độ echo là chế độ phản hồi dữ liệu truyền
đến của module Sim 900A.
bật chế độ echo.
t t chế độ echo n n t t chế độ nà hi
giao tiếp với vi điều khiển).
AT+IPR=[baud rate]<CR><LF> Cài đặt baudrate giao tiếp dữ liệu với module
SIM900A, cài đặt được các baudrate sau: 0

om
(auto), 1200, 2400, 4800, 9600, 19200, 38400,
57600, 115200
Lưu lại các lệnh đã cài đặt.

.c
AT&W<CR><LF>
AT+CLIP=1<CR><LF> Hiển thị thông tin cuộc gọi đến.
ATD Số_điện_thoại ;<CR><LF> Lệnh thực hiện cuộc gọi.
ng
ATH<CR><LF> Lệnh thực hiện kết thúc cuộc gọi, hoặc cúp máy
co
khi có cuộc gọi đến.
ATA<CR><LF> Lệnh thực hiện chấp nhận khi có cuộc gọi đến.
an

AT+CMGF=1<CR><LF> Lệnh đưa SMS về chế độ text, phải có lệnh này


mới gửi nhận tin nhắn dạng text.
th

AT+CMGS=‖Số_điện Lệnh gửi tin nhắn:


_thoại‖<CR><LF> ợi đến hi có t > được gửi về thì đ nh
g
on

nối dung tin nh n.


ửi m t hay 0x1A để ết th c nội dung
du

và gửi tin nh n.
AT+CMGR=x<CR><LF> Đọc một nhắn vừa gửi đến, lệnh được trả về nội
dung tin nhắn, thông tin người gửi, thời gian
u
cu

gửi, x là địa chỉ tin nhắn cần đọc.


AT+CMGDA="DEL Xóa toàn bộ tin nhắn trong các hộp thư.
ALL"<CR><LF>
AT+CNMI=2,2<CR><LF> Hiển thị nội dung tin nhắn ngay khi có tin nhắn
đến.

1/12/2017 Page 18

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

C. THIẾT KẾ HỆ THỐNG
1. Sơ đồ khối hệ thống

Telephone ThingSpeak

SIM900A ESP8266

om
.c
Cảm
biến Arduino UNO ng Thiết bị
DHT11
co
an

Nguồn 5V (USB)
th
g
on

Hình 8. Sơ đồ khối hệ thống


du

Nguồn 5V
 Nguồn cho mạch là nguồn 5V, có thể lấy từ các cổng sạc, cổng USB máy
u
cu

tính, hoặc pin, acquy được ổn áp với điện áp đầu ra 5V.


ESP8266
 Module Wifi ESP8266 có các chức năng: kết nối, gửi và nhận dữ liệu qua
internet.
SIM900A
 Module SIM900A có các chức năng: nhận và gửi tin nhắn qua di động, thực
hiện chức năng điều khiển.
Thiết bị
 Các thiết bị được điều khiển bật tắt bởi Arduino UNO như: lò sưởi, máy
lạnh, máy phun sương… với mục đích điều chỉnh nhiệt độ, độ ẩm đến giá trị

1/12/2017 Page 19

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

đặt trước. Ở đây ta sử dụng các đèn led báo hiệu việc bật tắt thay cho các
thiết bị thực tế.
Cảm biến DHT11
 Cung cấp dữ liệu nhiệt độ, độ ẩm gửi đến Arduino.
ThingSpeak
 Hiển thị các dữ liệu được gửi lên dưới dạng biểu đồ trực quan. Người dùng
có thể theo dõi dữ liệu được gửi lên, đặt lại các giới hạn điều khiển.
Arduino UNO
 Bộ xử lý chính của hệ thống, kết nối với các module, được lập trình để hoạt

om
động theo chức năng mong muốn.

.c
2. Sơ đồ nối dây các module

ng
co
an
th
g
on
du
u
cu

Hình 9. Sơ đồ nối dây các module

1/12/2017 Page 20

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

4. Code
Chi tiết toàn bộ mã nguồn của mạch được viết trong phần PHỤ LỤC.
Một số hàm chính của code:
 Hàm gửi dữ liệu lên ThingSpeak:
boolean thingSpeakWrite(float value1, float value2){
String cmd = "AT+CIPSTART=\"TCP\",\""; //lenh mo ket noi TCP
cmd += "184.106.153.149"; //dia chi IP: api.thingspeak.com
cmd += "\",80"; //port: 80
esp8266Serial.println(cmd); //ESP8266 gui lenh len web mo ket noi
if (DEBUG) Serial.println(cmd);
if(esp8266Serial.find("Error")){

om
if (DEBUG) Serial.println("AT+CIPSTART error");
return false;
}

.c
ng
String getStr = "GET /update?api_key=0O2D8QWZTBTP9M7I&field1="; //lenh update
du lieu len web
//getStr += apiKey;
co
//getStr +="&field1=";
an

getStr += String(value1);
getStr +="&field2=";
th

getStr += String(value2);
g

//getStr +="<CR><LF>";
on

getStr += "\r\n\r\n";
du

//gui do dai chuoi du lieu


cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
u

esp8266Serial.println(cmd);
cu

if (DEBUG) Serial.println(cmd);

delay(100);
if(esp8266Serial.find(">")){
esp8266Serial.print(getStr);
if (DEBUG) Serial.print("Write Completed\r\n\r\n");
}
else{
esp8266Serial.println("AT+CIPCLOSE");
// alert user
if (DEBUG) Serial.println("AT+CIPCLOSE\r\n");
return false;
}
return true;
}

1/12/2017 Page 21

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

 Hàm đọc dữ liệu từ cảm biến


float t = dht.readTemperature();
float h = dht.readHumidity();

 Hàm đọc tin nhắn


if(startSIM900){
int pos; //dia chi bo nho luu tren sim
pos = sms.IsSMSPresent(SMS_UNREAD); //kiem tra tin nhan moi
//neu co tin nhan moi thi se tra ve tu 1-40, neu khong co tra ve 0

om
if(pos){//neu co tin nhan moi
if(sms.GetSMS(pos, phoneNumber, smstext, 160)){

.c
Serial.print("So dien thoại: ");
Serial.println(phoneNumber);
Serial.print("Noi dung tin nhan: ");
ng
co
Serial.println(smstext);
an

if(smstext=="info")
{
th

sendStr= "Temp="+String(t)+" *C//Humidity="+String(h)+" %";


g

for(int i=0; i<sendStr.length(); i++){


on

smsSend[i]=sendStr[i];
du

}
sms.SendSMS(phoneNumber, smsSend);
u
cu

}
}
}
delay(1000);
} else Serial.println("SIM900Amini offline");

 Hàm điều khiển các thiết bị


void control(float value1, float value2){
if (value1>maxTemp) digitalWrite(maxTempPIN, HIGH);
else digitalWrite(maxTempPIN, LOW);
if (value1<minTemp) digitalWrite(minTempPIN, HIGH);

1/12/2017 Page 22

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

else digitalWrite(minTempPIN, LOW);


if (value2>maxHumidity) digitalWrite(maxHumidityPIN, HIGH);
else digitalWrite(maxHumidityPIN, LOW);
if (value2<minHumidity) digitalWrite(minHumidityPIN, HIGH);
else digitalWrite(minTempPIN, LOW);
}

5. Thực hiện mạch, kết quả chạy kiểm thử

om
.c
ng
co
an
th
g
on
du
u
cu

Hình 10. Mạch l p ráp th c tế

1/12/2017 Page 23

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

om
.c
Hình 11. Kết quả trả về của mạch qua cổng Serial của máy tính
ng
co
an
th
g
on
du

Hình 12. Giao diện theo dõi nhiệt độ, độ ẩm được cập nhật trên ThingSpeaks
u
cu

1/12/2017 Page 24

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

om
.c
ng
co
an
th
g
on
du
u
cu

Hình 13. Giao tiếp với hệ thống qua tin nh n

Kết luận:
 Hệ thống đã hoạt động theo đúng chức năng mong muốn.

1/12/2017 Page 25

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

D. TÀI LIỆU THAM KHẢO


 Sử dụng các tài liệu tham khảo trên một số trang web:
http://www.wikipedia.org
http://www.alldatasheet.com
http://www.tailieu.vn
http://arduino.vn/
https://www.arduino.cc/

om
.c
ng
co
an
th
g
on
du
u
cu

1/12/2017 Page 26

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

PHỤ LỤC
 Sau đây là toàn bộ mã nguồn của chương trình nạp cho Arduino UNO.
Mã nguồn chương trình viết và biên dịch trên Arduino IDE.
#include <SoftwareSerial.h>
SoftwareSerial espSerial = SoftwareSerial(6,7); //gia lap mot cong Serial cho
ESP8266
//dat pin 2 cua arduino la RX, pin 3 cua arduino la TX
//ket noi RX cua arduino voi TX cua ESP8266, TX cua arduino voi RX cua ESP8266

#define maxTempPIN 8 //dat pin 8 dieu khien bat tat thiet bi giam nhiet do
khi nhiet do cao hon gioi han dat truoc
#define minTempPIN 9 //dat pin 9 dieu khien bat tat thiet bi tang nhiet do
khi nhiet do thap hon gioi han dat truoc
#define maxHumidityPIN 10 //dat pin 10 dieu khien bat tat thiet bi giam do am khi

om
do am cao hon gioi han dat truoc
#define minHumidityPIN 11 //dat pin 11 dieu khien bat tat thiet bi tang do am khi
do am thap hon gioi han dat truoc

.c
float maxTemp=25;
float minTemp=15;
float
float
maxHumidity=80;
minHumidity=50;
ng
co
#include "SIM900.h"
#include "sms.h"
an

SMSGSM sms; //
th

int numdata;
boolean startSIM900=false; //trang thai modul sim
char smstext[160];//noi dung tin nhan
g

char bossNumber[20] = "+841255485567";//so dien thoai dieu khien modulsim, dinh dang
on

quoc te
char phoneNumber[20]; //so dien thoai, dinh dang quoc te
String sendStr;
du

char smsSend[160];

#include <DHT.h>
u

float t;
cu

float h;

#define DHTPIN 5 // dat pin 5 cua arduino là chan data cua DHT
#define DHTTYPE DHT11 //chon loai DHT là DHT11
DHT dht(DHTPIN, DHTTYPE); //khai bao modulue DHT

String apiKey = "0O2D8QWZTBTP9M7I"; //WRITE API key cua chanel ThinkSpeak

String ssid="FPT Telecom"; //Ten WIFI


String password ="12345678"; //Mat khau WIFI

boolean DEBUG=true;

//Ham hien thi ket qua qua cong com


void showResponse(int waitTime){
long t=millis();
char c;
while (t+waitTime>millis()){

1/12/2017 Page 27

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

if (espSerial.available()){
c=espSerial.read();
if (DEBUG) Serial.print(c);
}
}

//Ham ghi gia tri len web


boolean thingSpeakWrite(float value1, float value2){
String cmd = "AT+CIPSTART=\"TCP\",\""; //lenh mo ket noi TCP
cmd += "184.106.153.149"; //dia chi IP:
api.thingspeak.com
cmd += "\",80"; //port: 80
espSerial.println(cmd); //ESP8266 gui lenh len web
mo ket noi

om
if (DEBUG) Serial.println(cmd);
if(espSerial.find("Error")){
if (DEBUG) Serial.println("AT+CIPSTART error");
return false;

.c
}

String getStr = "GET /update?api_key=";


getStr += apiKey;
ng
//lenh update du lieu len web
co
getStr +="&field1=";
getStr += String(value1);
an

getStr +="&field2=";
getStr += String(value2);
th

//getStr +="<CR><LF>";
getStr += "\r\n\r\n";
g
on

//gui do dai chuoi du lieu


cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
du

espSerial.println(cmd);
if (DEBUG) Serial.println(cmd);
u

delay(100);
cu

if(espSerial.find(">")){
espSerial.print(getStr);
if (DEBUG) Serial.print(getStr);
}
else{
espSerial.println("AT+CIPCLOSE");
// alert user
if (DEBUG) Serial.println("AT+CIPCLOSE");
return false;
}
return true;
}

//ham dieu khien


void control(float value1, float value2){
if (value1>maxTemp) digitalWrite(maxTempPIN, HIGH);
else digitalWrite(maxTempPIN, LOW);
if (value1<minTemp) digitalWrite(minTempPIN, HIGH);

1/12/2017 Page 28

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

else digitalWrite(minTempPIN, LOW);


if (value2>maxHumidity) digitalWrite(maxHumidityPIN, HIGH);
else digitalWrite(maxHumidityPIN, LOW);
if (value2<minHumidity) digitalWrite(minHumidityPIN, HIGH);
else digitalWrite(minTempPIN, LOW);
}

//================================================================================
setup
void setup() {
//setup ESP8266
DEBUG=true; // enable debug serial
Serial.begin(9600);

dht.begin(); // mo cam bien DHT

om
espSerial.begin(115200); //mo ket noi Serial
//ESP8266 ban dau duoc set baudrate 115200
//sau do duoc dat lai thanh 9600 o nhung lan upload sau

.c
espSerial.println("AT+CWMODE=1"); // cai dat ESP8266 la client
showResponse(1000); ng
co
espSerial.println("AT+CWJAP=\""+ssid+"\",\""+password+"\""); //ket noi ESP8266
voi mang WIFI
showResponse(5000);
an

if (DEBUG) Serial.println("Setup ESP8266 completed");


th

//setup SIM900Amini
Serial.println("Gui va nhan tin nhan");
g

if (gsm.begin(2400)){
on

Serial.println("\nstatus=READY");
startSIM900=true;
} else
du

Serial.println("\nstatus=IDLE");

if(startSIM900){
u

sms.SendSMS(bossNumber, "Online"); //gui tin nhan bao da hoat dong toi chu
cu

nhan
Serial.println("Setup SIM900Amini completed");
}
}

// ====================================================================== loop
void loop() {

//Doc gia tri cam bien


t = dht.readTemperature();
h = dht.readHumidity();
if (isnan(t) || isnan(h)) {
if (DEBUG) Serial.println("Khong doc duoc gia tri cam bien");
}
else {
if (DEBUG) Serial.println("Temp="+String(t)+" *C");
if (DEBUG) Serial.println("Humidity="+String(h)+" %");

1/12/2017 Page 29

CuuDuongThanCong.com https://fb.com/tailieudientucntt
BTL - Hệ thống IOT theo dõi nhiệt độ, độ ẩm và điều khiển 2017

thingSpeakWrite(t,h); //Gui gia tri


cam bien len ThinkSpeak
if(startSIM900){
int pos; //dia chi bo nho luu tren sim
pos = sms.IsSMSPresent(SMS_UNREAD); //kiem tra tin nhan moi
//neu co tin nhan moi thi se tra ve tu 1-40, neu khong co tra ve 0
if(pos){//neu co tin nhan moi
if(sms.GetSMS(pos, phoneNumber, smstext, 160)){
Serial.print("So dien thoại: ");
Serial.println(phoneNumber);
Serial.print("Noi dung tin nhan: ");
Serial.println(smstext);
if(smstext=="info")
{
sendStr= "Temp="+String(t)+" *C//Humidity="+String(h)+" %";
for(int i=0; i<sendStr.length(); i++){

om
smsSend[i]=sendStr[i];
}
sms.SendSMS(phoneNumber, smsSend);
}

.c
}
}
delay(1000);
ng
} else Serial.println("SIM900Amini offline");
control(t,h);
co
}
}
an
th
g
on
du
u
cu

1/12/2017 Page 30

CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like