Professional Documents
Culture Documents
om
.c
ng
co
an
th
ĐỘ ẨM VÀ ĐIỀU KHIỂN
du
u
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
GVHD:
Các thành viên: Nguyễn Văn Tiến 20133956 KT ĐT-TT 01 K58
g
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
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
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.3. Sơ đồ chân:........................................................................................................................ 16
on
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
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
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
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
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
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
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 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
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
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
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
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:
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
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
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
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
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,...
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
CH_PD — kích hoạt chip, sử dụng cho Flash Boot và updating lại
on
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
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
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
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
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
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
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
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
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
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
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
smsSend[i]=sendStr[i];
du
}
sms.SendSMS(phoneNumber, smsSend);
u
cu
}
}
}
delay(1000);
} else Serial.println("SIM900Amini offline");
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
om
.c
ng
co
an
th
g
on
du
u
cu
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
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
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
boolean DEBUG=true;
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);
}
}
om
if (DEBUG) Serial.println(cmd);
if(espSerial.find("Error")){
if (DEBUG) Serial.println("AT+CIPSTART error");
return false;
.c
}
getStr +="&field2=";
getStr += String(value2);
th
//getStr +="<CR><LF>";
getStr += "\r\n\r\n";
g
on
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;
}
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
//================================================================================
setup
void setup() {
//setup ESP8266
DEBUG=true; // enable debug serial
Serial.begin(9600);
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
//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() {
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
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