You are on page 1of 42

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH

TIỂU LUẬN TỐT NGHIỆP

MÔ HÌNH LẬP TRÌNH ĐIỀU KHIỂN TỪ XA VỚI ESP8266 VÀ


ARDUINO

SVTH: NGUYỄN DUY KHÁNH MSSV: 18138043


NGÀNH: KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA
NIÊN KHÓA : 2018-2022
Tháng 5 /2022

NHIỆM VỤ TIỂU LUẬN TỐT NGHIỆP

Họ và tên sinh viên: NGUYỄN DUY KHÁNH. MSSV: 18138043

1. Tên đề tài: MÔ HÌNH LẬP TRÌNH ĐIỂU KHIỂN TỪ XA VỚI ESP8226 VÀ


ARDUINO

2. Nhiệm vụ giao (ghi rõ nội dung phải thực hiện):

- Làm quen với module wifi ESP8226.

- Giao tiếp module wifi ESP8226 với Arduino.

- Thực hiện mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ web.

- Thực hiện mô hình trạm dự báo thời tiết sử dụng wifi ESP8226.

- Chạy thử nghiệm mô hình, rút ra kết luận, viết báo cáo.

3. Ngày giao:

4. Ngày hoàn thành:


5. Họ và tên người hướng dẫn: Nội dung hướng dẫn
Th.S Nguyễn Võ Ngọc Thạch 100%

Nội dung và yêu cầu TL đã được thông qua Bộ môn Người hướng dẫn
Ngày .... tháng ….. năm 2020 Ký tên, ghi rõ họ và tên
Trưởng Bộ Môn

PHẦN DÀNH CHO KHOA:


- Người duyệt: Th.S Nguyễn Võ Ngọc Thạch
- Ngày bảo vệ:
MÔ HÌNH LẬP TRÌNH ĐIỀU KHIỂN TỪ XA VỚI ESP8266 VÀ
ARDUINO

Tác giả

NGUYỄN DUY KHÁNH

Giáo viên hướng dẫn:


Th.S Nguyễn Võ Ngọc Thạch

Tháng 5 năm 2022


LỜI CẢM ƠN
Tiểu luận tốt nghiệp là tiền đề giúp trang bị cho chúng em những kiến thức
Em xin gửi lời cảm ơn sâu sắc đến quý thầy cô Khoa Cơ Khí Công Nghệ đã tận
tâm chỉ dạy và truyền đạt cho em những kiến thức và kinh nghiệm sống đầy quý báu.
Đặc biệt, em xin chân thành gửi lời cảm ơn đến giảng viên hướng dẫn - thầy Nguyễn
Võ Ngọc Thạch đã không quản khó khăn trực tiếp chỉ bảo và giúp đỡ em để hoàn
thành tốt tiểu luận này.
Em cũng gửi lời cảm ơn sâu sắc đến Ban giám hiệu trường Đại Học Nông Lâm đã
tạo điều kiện tốt cho em được học tập và trải nghiệm bản thân.
Em xin chân thành cảm ơn.
TP.Hồ Chí Minh, tháng 7 năm 2022
SINH VIÊN THỰC HIỆN

NGUYỄN DUY KHÁNH



TÓM TẮT
Với đề tài “ Mô hình lập trình điều khiển từ xa với Esp8266 và Arduino”, tại
trường Đại học Nông Lâm TP.Hồ Chí Minh từ ngày 20/4/2022 đến ngày 20/5/2022.
Mô hình đã được hoàn chỉnh có thể hiển thị nhiệt độ và độ ẩm và dự báo được thời
tiết.
Sau khi nghiên cứu các tài liệu tham khảo và những phương pháp, em đã chuẩn bị
những phần cần thiết để thực hiện đề tài như sau:
Phần mềm sử dụng: phần mềm lập trình Arduino IDE
Mục tiêu để tài hướng đến gồm:
 Làm quen với module wifi ESP8226.
 Giao tiếp module wifi ESP8226 với Arduino.
 Thực hiện mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ web.
 Thực hiện mô hình trạm dự báo thời tiết sử dụng wifi ESP8226.
 Kết quả:
-Lập trình hoàn thành chương trình
- Hoàn thành lắp đặt các thiết bị phần cứng
- Chạy thử nghiệm mô hình
Qua việc thực hiện đề tài “ Mô hình lập trình điều khiển từ xa với Esp8266 và
Arduino” giúp ta hiểu được nguyên lý của ESP8266 và ngôn ngữ lập trình.
MỤC LỤC
LỜI CẢM ƠN................................................................................................................. i

TÓM TẮT.....................................................................................................................ii

DANH MỤC BẢNG....................................................................................................vi

DANH MỤC HÌNH ẢNH...........................................................................................vii

Chương 1: MỞ ĐẦU....................................................................................................1

1.1. Đặt vấn đề........................................................................................................1

1.2. Nội dung nghiên cứu........................................................................................1

1.3. Ý nghĩa của đề tài.............................................................................................1

Chương 2: TỔNG QUAN..............................................................................................2

2.1. Làm quen với module ESP8266.......................................................................2

2.1.1. Giới thiệu về module ESP8226..............................................................2

2.1.2. Ưu điểm của ESP8226............................................................................4

2.1.3. Ứng dụng................................................................................................4

2.1.4. Phân loại.................................................................................................4

2.2. Giao tiếp Arduino với ESP8266.......................................................................8

2.2.1. Giới thiệu chung về Arduino..................................................................8

2.2.2. Giao tiếp ESP8266 chuẩn UART.........................................................12

2.2.3. Giao tiếp ESP8266 chuẩn I2C..............................................................13

2.2.4. Giao tiếp ESP8266 chuẩn SPI..............................................................16

Chương 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU...................................21

3.1. Đối tượng và thiết bị nghiên cứu....................................................................21

3.1.1. Đối tượng nghiên cứu................................................................................21

3.1.2 Thiết bị nghiên cứu.....................................................................................21

3.2.Phương pháp nghiên cứu....................................................................................21

3.3.Phương tiện thực hiện........................................................................................21


3.3.1.Thiết bị phần cứng......................................................................................21

3.3.2.Thiết bị phần mềm......................................................................................21

3.4 Phương pháp thực hiện......................................................................................21

Chương 4: KẾT QUẢ VÀ THẢO LUẬN...................................................................23

4.1.Mô hình hiển thị nhiệt độ và độ ẩm trên Web....................................................23

4.1.1 Cài đặt thư viện DHT11..............................................................................23

4.1.2.Nạp chương trình điều khiển vào ESP8266................................................24

4.1.3.Kết quả........................................................................................................24

4.2.Mô hình trạm dự báo thời tiết sử dụng ESP8266...............................................28

4.2.1.Mở bản đồ thời tiết......................................................................................28

4.2.2 Nạp chương trình điều khiển vào ESP8266................................................29

4.2.3 Kết quả........................................................................................................30

4.3.Nhận xét.............................................................................................................30

Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..................................................31

5.1.Kết luận..............................................................................................................31

5.2.HƯỚNG PHÁT TRIỂN.....................................................................................31

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

DANH MỤC BẢNG


Bảng 2.1 Bảng so sánh các thông số..............................................................................6
Bảng 2.2 Bảng thồng số kĩ thuật Arduino Uno............................................................11
DANH MỤC HÌNH ẢNH
Hình 2.1 Module ESP-01...............................................................................................2
Hình 2.2 Sơ đồ chân ESP-01.........................................................................................3
Hình 2.3 a. ESP-01 b. ESP-02 c. ESP-03....................................................................4
Hình 2.4 a. ESP-04 b. ESP-05 c. ESP-06....................................................................5
Hình 2.5 a. ESP-07 b. ESP-08 c. ESP-09....................................................................5
Hình 2.6 a. ESP-10 b. ESP-11 c. ESP-12....................................................................5
Hình 2.7 ESP-12E..........................................................................................................5
Hình 2.8 Sơ đồ kết nối Arduino Uno với ESP8266.....................................................12
Hình 2.9 Sơ đồ kết nối Arduino với ESP8266.............................................................14
Hình 2.10 Kết quả khi thành công...............................................................................16
Hình 2.11 Sơ đồ chân SPI ESP8266............................................................................17
Hình 2.12 Sơ đồ kết nối Arduino Uno với ESP8266 chuẩn SPI..................................18

Hình 4.1 NodeMCU ESP8266 24


Hình 4.2 Cảm biến đo nhiệt độ, độ ẩm DHT11...........................................................25
Hình 4.3 Sơ đồ kết nối ESP8266 với DHT11..............................................................25
Hình 4.4 Mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ web.................................26
Hình 4.5 Sơ đồ mạch điện thực tế của mô hình trạm dự báo thời tiết..........................30

9
10
CHƯƠNG 1. MỞ ĐẦU

Chương 1: MỞ ĐẦU
1.1. Đặt vấn đề
Với sự phát triển không ngừng nghỉ của khoa học kĩ thuật ngày nay, đã góp phần
nâng cao chất lượng cuộc sống con người trong mọi mặt kể về sinh hoạt lẫn trong sản
xuất. Xu hướng tự động hóa và mục tiêu tăng năng suất lao động ngày cao, đã làm cho
sự ra đời của nhiều thiết bị máy móc và mạch điện tử tiên tiến. Nó đã làm tăng năng
suất lao động và giảm sức lao động con người một cách đáng kể. Chính vì lẽ đó mà
ứng dụng mang tính tự động được sử dụng ngày một rộng rãi hơn. Và vi điều khiển
cũng đã đóng góp một phần không nhỏ. Do đó mà các bộ phận vi điều khiển ngày
càng được cải tiến và sử dụng phổ biến hơn. Nó đã đem lại rất nhiều sự tiện ích cho
con người trong mọi mặt đời sống.
Từ đó, em quyết định thực hiện đề tài “ Mô hình lập trình điều khiển từ xa với
Esp8266 và Arduino”, với việc thực hiên hai mô hình là hiển thị nhiệt độ, độ ẩm lên
máy chủ và trạm dự báo thời tiết.
1.2. Nội dung nghiên cứu
NỘI DUNG 1:Tìm hiểu và làm quen với module wifi ESP8266
NỘI DUNG 2: Thực hiện giao tiếp module wifi ESP8266 và Arduino
NỘI DUNG 3: Thực hiện mô hình hiển thị nhiệt độ, độ ẩm lên trang chủ web
NỘI DUNG 4: Thực hiện mô hình trạm dự báo thời tiết sử dụng ESP8266
NỘI DUNG 5 : Chạy thử nghiệm mô hình và rút ra kết luận
NỘI DUNG 6: Viết báo cáo
1.3. Ý nghĩa của đề tài
Đề tài là mô hình thu nhỏ, nhưng có thể ứng dụng rộng rãi trong các môi trường
như nhà xưởng, nhà ở hay nhà kính…, trong sản xuất và sinh hoạt hằng ngày và giúp
ta biết được thời tiết một cách dễ dàng.

1
CHƯƠNG 2. TỔNG QUAN

Chương 2: TỔNG QUAN


2.1. Làm quen với module ESP8266
2.1.1. Giới thiệu về module ESP8226
Với sự tiến bộ nhanh chóng trong công nghệ IoT đòi hỏi nhiều thiết bị kết nối với
Internet hơn. Để thiết kế các thiết bị như vậy, chúng ta thường dung vi điều khiển và
module mạng (Ethernet hoặc Wifi). ESP8266 là một module Wifi giá rẻ và đã có
module trên chip, vì vậy nó không cần module Wifi bên ngoài. Chính điều đó đã khiến
ESP8266 trở thành một thiết bị vi điều khiển phổ biến.
ESP8266, hay gọi đầy đủ là ESP8266EX là một vi mạch Wifi giá rẻ có hỗ trợ bộ
giao thức TCP/IP và có thể tích hợp vào thành phần của vi điều khiển, được sản xuất
bởi hãng Espressif Systems ở Thượng Hải, Trung Quốc.
Chip ESP8226 lần đầu tiên được các nhà sản xuất phương Tây chú ý vào tháng 8
năm 2014 với module ESP-01, do nhà sản xuất bên thứ ba là Ai-Thinker sản xuất.
Module này cho phép các vi điều khiển kết nối với mạng Wi-Fi và thực hiện các kết
nối TCP/IP đơn giản bằng cách sử dụng các lệnh kiểu Hayes (tập lệnh AT). Tuy nhiên,
ban đầu hầu như không có tài liệu tiếng Anh nào về chip và các tập lệnh của nó.  Vì
mức giá rất thấp với rất ít thành phần bên ngoài khác trên module, các module
ESP8266 đã thu hút nhiều hacker khám phá nó và các phần mềm trên đó, cũng như
việc dịch thuật các tài liệu tiếng Trung Quốc của chip.

Hình 2.1 Module ESP-01

2
CHƯƠNG 2. TỔNG QUAN

Thông số kỹ thuật
 CPU: ESP8266EX
 Wifi: 2.4GHz, 802.11 b/g/n
 Hỗ trợ bảo mật WPA/WPA2
 Tích hợp giao thức TCP/IP
 Tốc độ truyền Serial (Baurate): 115200 (Max)
 Nguồn áp vào: 3.3V
 Điện áp ra I/O: Tối đa 3.6V
 Bộ nhớ Flash: 1MB (8Mbit)
 Chế độ hoạt động: AP, STA và (AP + STA)
 Kích thước: 24.75mm x 14.5mm (0.974" x 0.571")
Sơ đồ chân ESP-01
Sơ đồ chân của một module ESP-01 phổ biến là:
 VCC, Điện áp (+3,3V có thể xử lý lên tới 3.6V)
 GND, mặt đất (0V)
 RX, nhận dữ liệu bit X
 TX, truyền dữ liệu bit X
 CH_PD, sập nguồn
 RST, thiết lập lại
 GPIO0, đầu vào/ đầu ra đa năng số 0
 GPIO2, đầu vào/ đầu ra đa năng số 2

Hình 2.2 Sơ đồ chân ESP-01

3
CHƯƠNG 2. TỔNG QUAN

2.1.2. Ưu điểm của ESP8226


 Có đầy đủ các chân I/O (digital/analog/pwm/timer) giúp thực hiện khá nhiều
dự án và tích hợp nhiều thiết bị.
 10 chân GPIO từ D0 – D10, có chức năng PWM, IIC, giao tiếp SPI, 1-Wire và
ADC trên chân A0
 Kết nối mạng WIFI (có thể là sử dụng như điểm truy cập và/hoặc trạm máy
chủ lưu trữ một, máy chủ web), kết nối internet để lấy hoặc tải lên dữ liệu.
 Tích hợp tốt với các giao thức mạng như HTTP, MQTT (hiện đang free khá
nhiều).
 Chi phí phù hợp cho các dự án Internet of Things (IoT).
2.1.3. Ứng dụng
 Tạo một máy chủ web
 Tạo yêu cầu HTTP
 Điều khiển các ngĩ ra
 Gửi email
 Đọc các ngõ vào và các sự kiện ngắt
 Đăng các dòng Tweet…
2.1.4. Phân loại
ESP8266 được sản xuất và phát triển dưới nhiều phiên bản khác nhau nhằm đáp
ứng nhu cầu của việc phát triển ứng dụng

a b c
Hình 2.3 a. ESP-01 b. ESP-02 c. ESP-03

4
CHƯƠNG 2. TỔNG QUAN

a b c
Hình 2.4 a. ESP-04 b. ESP-05 c. ESP-06

a b c
Hình 2.5 a. ESP-07 b. ESP-08 c. ESP-09

a b c
Hình 2.6 a. ESP-10 b. ESP-11 c. ESP-12

Hình 2.7 ESP-12E

5
CHƯƠNG 2. TỔNG QUAN

Bảng 2.1 Bảng so sánh các thông số


Tên Chân Pitch Hệ số Đèn Ăng- ten Bảo vệ Kích Ghi chú
hoạt hình LED thước
động dáng
ESP-01 6 0,1inch 2x4DIL Có PCB Không 14,3 x 24,8 512KB
trace Flash và
PCB xanh từ
một nhà sản
xuất chung.
1MB Flash,
Al-Cloud và
PCB đen từ
Al- Thinker

ESP- 6 0,1inch 2x4DIL Có PCB Không 14,4 x 24,7 1MB Flash


01S trace
ESP- 16 1,6mm 2x9 edge Không PCB Có 18,0 x 18,0 Sử dụng
01M connector trace ESP8285
( 1MB Flash
tích hợp)
ESP-02 6 0,1inch 2x4 Không Socket Không 14,2x14,2
castellated U.FL
ESP-03 10 2mm 2x7 Không Ceramic Không 17,3 x 12,1
castellated
ESP-04 10 2mm 2x4 Không Không có Không 14,7 x 12,1
castellated
ESP-05 3 0,1 inch 1 x 5 SIL Không Socket Không 14,2 x 14,2
U.FL

6
CHƯƠNG 2. TỔNG QUAN

ESP-06 11 Khác 4 x 3 dice Không Không có Có 14,2 x 14,7 Không được


nhau FCC chấp
thuận
ESP-07 14 2mm 2x8 Có Ceramic+ Có 20,0 x16.0 Không được
Pinhole Socket FCC chấp
U.FL thuận
ESP- 14 2mm 2x8 Không Socket Có 17,0 x 16,0 Được FCC
07S Pinhole UFL và CE chấp
thuận
ESP-08 10 2mm 2x7 Không Không có Có 17,0 x 16,0 Không được
castellated FCC chấp
nhận
ESP-09 10 Khác 4 x 3 dice Không Không có Không 10,0 x 10,0
nhau
ESP-10 3 2mm 1x5 Không Không có Không 14,2 x 10,0
castellated
ESP-11 6 1,27mm 1x8 Không Ceramic Không 17,3 x 12,1
pinhole 1
ESP-12 142 2mm 2x8 Có PCB Có 24,0 x 16,0 Được FCC
castellated trace và CE chấp
thuận
ESP- 20 2mm 2x8 Có PCB Có 24,0 x 16,0 Flash 4MB
12E castellated trace
ESP- 20 2mm 2x8 Có PCB Có 24,0 x 16,0 Được FCC
12F castellated trace và CE chấp
thuận. Cải
thiện hoạt
động ăng-ten

7
CHƯƠNG 2. TỔNG QUAN

Trong bảng ở trên:


 Chân hoạt động: bao gồm các chân GPIO và ADC mà các thiết bị bên ngoài
có thể được gắn vào MCU ESP8266.
 Pitch: là khoảng trống giữa các chân trên module ESP8266, điều quan trọng để
biết liệu thiết bị có được sử dụng trên breadboard hay không.
 Hệ số hình dáng: mô tả cách đóng gói module, ví dụ như là "2 × 9 DIL", có
nghĩa là hai hàng 9 chân được sắp xếp theo kiểu "Dual In Line", giống như các
chân của IC DIP.
 LED: cho biết trên board có LED không. Nhiều module ESP-xx bao gồm một
đèn LED nhỏ trên board mạch có thể được lập trình để nhấp nháy từ đó có thể
biết hoạt động của module
 Ăng-ten: có một số tùy chọn bảng ăng-ten cho các phiên bản ESP-xx bao gồm
ăng-ten theo dõi, ăng-ten gốm trên bảng mạch và đầu nối bên ngoiaf cho phép
gắn Wifi bên ngoài
 Vì giao tiếp Wi-Fi tạo ra rất nhiều RFI (Radio Frequency Interference, nhiễu
tần số vô tuyến), do đó các cơ quan chính phủ như FCC muốn các thiết bị điện
tử được che chắn (shielded) để làm giảm thiểu sự gây nhiễu với các thiết bị
khác. Một số module ESP-xx được đặt trong một hộp kim loại có đóng dấu
phê duyệt FCC trên đó. Thị trường thế giới thứ nhất và thứ hai có thể sẽ yêu
cầu FCC phê duyệt và che chắn các thiết bị Wi-Fi.
2.2. Giao tiếp Arduino với ESP8266
2.2.1. Giới thiệu chung về Arduino
Arduino là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng
điện tử tương tác với nhau hoặc với môi trường được thuận lợi hơn.
Arduino giống như một máy tính nhỏ để người dùng có thể lập trình và thực hiện
các dự án điện tử mà không cần phải có các công cụ chuyên biệt để phục vụ việc nạp
code.
Arduino bao gồm:
 Phần mềm: được gọi là sketches, được tạo ra trên môi trường máy tính có tích
hợp phát triển (IDE). IDE được phép viết, chỉnh sửa và chuyển đổi code sao

8
CHƯƠNG 2. TỔNG QUAN

cho phần cứng có thể hiểu. IDE dùng để biền dịch và nạp vào Arduino ( quá
trình này được gọi là UPLOAD)
 Phần cứng: được gọi là các boad Arduino, nơi thực hiện các chương trình lập
trình. Các boad này có thể điều khiển và đáp trả các tín hiệu điện, vì vậy các
thành phần được ghép trực tiếp vào nó nhằm để tương tác với thế giới thực để
cảm nhận và truyền thông. Ví dụ các cảm biến bao gồm các thiết bị chuyển
mạch, cảm biến siêu âm, gia tốc. Các thiết bị truyền động bao gồm đèn, motor
và các thiết bị hiển thị.
Arduino có những thế mạnh so với các nền tảng vi điều khiển khác là:
 Chạy trên đa nền tảng: việc lập trình Arduino có thể thực hiện trên các hệ điều
hành khác nhau như: Windows, Mas Os, Linux trên Desktop, Android trên
điện thoại di động.
 Ngôn ngữ lập trình đơn giản, dễ hiểu.
 Mã nguồn 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 và tích hợp vào các nền tảng khác
nhau.
 Mở rộng phần cứng: Arduino được thiết kế và mở rộng theo dạng modul nên
việc mở rộng phần cứng cũng dễ dàng hơn.
 Đơn giản và nhanh: Rất dễ dàng lắp ráp, lập trình và sử dụng thiết bị.
 Dễ dàng chia sẻ: Mọi người dễ dàng chia sẻ mã nguồn với nhau mà cần lo lắng
về ngôn ngữ hay hệ điều hành mà mình đang sử dụng.
 Cấu trúc chung
Arduino Uno là một trong những board mạch Arduino phổ biến và dễ sử dụng nhất
hiện nay. Arduino Uno đã phát triển đến thế hệ thứ 3, gọi là Arduino Uno R3.
 ATmega328 Microcontroller: là vi điều khiển thuộc họ megaAVR, do hãng
Atmel sản xuất.
 ICSP pin: viết tắt của In Circuit Serial Programming. Đó là chân lập trình nối
tiếp cho phép người lập trình sử dụng một vài phương thức có sẵn trong
firmware của Arduino.

9
CHƯƠNG 2. TỔNG QUAN

 Power LED Indicator:  báo nguồn của Arduino. Đèn sáng thì có nguồn, đèn tắt
thì mất nguồn.
 Digital I/O pins : là những chân có giá trị nhị phân: HIGH (1) hoặc LOW (0).
Có các chân từ D0 đến D13. Một số chân có thể xuất xung PWM là ~D3, ~
D5, ~ D6, ~ D9, ~ D10, ~ D11.
 TX and RX LED’s:  báo có luồng dữ liệu truyền (Transmit – TX) và nhận
(Receive – RX) của Arduino qua cổng nối tiếp (Serial) với các thiết bị khác.
 AREF (Analog Reference) pin:  là chân cấp điện áp tham chiếu từ bên ngoài
cho Arduino.
 Reset button: để reset lại board mạch Arduino.
 USB: cho phép kết nối với máy tính, thường dùng nạp mã code từ máy tính
sang board mạch Arduino.
 Crystal Oscillator: là thạch anh, có tần số 16MHz.
 Voltage Regulator: là mạch ổn áp chuyển đổi nguồn vào thành 5V cấp cho
Arduino.
 GND: là chân ground, có hiệu điện thế 0V.
 Vin: là nguồn đầu vào của board mạch Arduino.
 Analog Pins: là các chân xử lý tín hiệu Analog khi kết nối với các thiết bị
khác. Có các chân được đánh số từ A0 đến A5.
 Power Button: kết nối với nguồn cấp cho Arduino.

10
CHƯƠNG 2. TỔNG QUAN

Bảng 2.2 Bảng thồng số kĩ thuật Arduino Uno

Vi điều khiển ATmega328 kiến trúc RISC với 8 bit

Điện áp hoạt động 5V DC

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

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 chân (6 chân có thể xuất xung PWM)

Số chân Analog 6 chân

Dòng trên mỗi chân I/O 20 mA

Dòng ra tối đa (3.3V) 50 mA

32 KB tích hợp trong ATmega328 với 0.5KB dùng cho


Bộ nhớ Flash
bootloader

SRAM 2 KB tích hợp trong ATmega328

EEPROM 1 KB tích hợp trong ATmega328

2.2.2. Giao tiếp ESP8266 chuẩn UART


Có 2 cách để giao tiếp UART giữa ESP8266/NodeMCU:
 1 là giao tiếp bằng cách code trên cả Uno/Mega và ESP8266/NodeMCU
 2 là chỉ code trên Uno/Mega, trên ESP8266/NodeMCU flash thẳng firmware
AT Command

11
CHƯƠNG 2. TỔNG QUAN

 Sơ đồ kết nối

Hình 2.8 Sơ đồ kết nối Arduino Uno với ESP8266


Chương trình
 Code NodeMCU
Gửi data ‘123’ qua Uno/Mega, ở đây ta cần có thư viện SoftwareSerial và gán nó
với 2 chân RX và TX. Sau đó cấu hình với tốc độ baud là 9600.
#include<SoftwareSerial.h> //Included SoftwareSerial Library
//Started SoftwareSerial at RX and TX pin of ESP8266/NodeMCU
SoftwareSerial s(3, 1);

void setup() {
//Serial S Begin at 9600 Baud
s.begin(9600);
}

void loop() {
//Write '123' to Serial
s.write(123);
delay(1000);
}
 Code Arduino Uno/Mega
Chương trình sau nhận thông tin, đầu tiên là tạo ra biến để nhận data, sau đó là
setup baud 9600 để nhận data này.
int data; //Initialized variable to store recieved data

12
CHƯƠNG 2. TỔNG QUAN

void setup() {
//Serial Begin at 9600 Baud
Serial3.begin(9600);
}

void loop() {
data = Serial.read(); //Read the serial data and store it
delay(1000);
}
Kết quả: Quan sát trên serial port sẽ thấy data ‘123’ được gửi qua Uno/Mega
2.2.3. Giao tiếp ESP8266 chuẩn I2C
Khái niệm: I2C (Inter-Integrated Circuit) là giao thức kết nối giao diện bus nối tiếp.
Nó cũng được gọi là TWI vì nó chỉ sử dụng hai dây để giao tiếp. Hai chân này là SDA
(đường data) và SCL (đường clock).
I2C là giao thức truyền thông dựa trên sự thừa nhận, tức là phát tín hiệu kiểm tra
xác nhận từ bên nhận sau khi truyền dữ liệu để biết liệu dữ liệu có được nhận thành
công hay không.
Hai chế độ làm việc của I2C:
 Master mode
 Slave mode
Dây SDA (đường dữ liệu) được sử dụng để trao đổi dữ liệu giữa thiết bị master và
thiết bị slave. SCL (đường xung nhịp đồng hồ) được sử dụng cho đồng hồ đồng bộ ở
giữa thiết bị master và slave.
Thiết bị master bắt đầu giao tiếp với một thiết bị slave. Thiết bị master yêu cầu địa
chỉ thiết slave để bắt đầu giao tiếp với thiết bị slave. Thiết bị Slave phản hồi cho thiết
bị master khi thiết bị master được giải quyết.
Master Device: NodeMCU
Slave Device: Arduino Uno
Slave Device Address: 8

Sơ đồ kết nối:

13
CHƯƠNG 2. TỔNG QUAN

Hình 2.9 Sơ đồ kết nối Arduino với ESP8266

Chương trình
Code NodeMCU
#include <Wire.h>

void setup() {
Serial.begin(9600); /* begin serial for debug */
Wire.begin(D1, D2); /* join i2c bus with SDA=D1 and SCL=D2 of
NodeMCU */
}

void loop() {
Wire.beginTransmission(8); /* begin with device address 8 */
Wire.write("Hello Slave"); /* sends hello slave string */
Wire.endTransmission(); /* stop transmitting */
Wire.requestFrom(8, 13); /* request & read data of size 13 from
slave */
while(Wire.available()){
char c = Wire.read();
Serial.print(c);

14
CHƯƠNG 2. TỔNG QUAN

}
Serial.println();
delay(1000);
}
Code Uno/Mega
#include <Wire.h>

void setup() {
Wire.begin(8); /* join i2c bus with address 8 */
Wire.onReceive(receiveEvent); /* register receive event */
Wire.onRequest(requestEvent); /* register request event */
Serial.begin(9600); /* start serial for debug */
}

void loop() {
delay(100);
}

// function that executes whenever data is received from master


void receiveEvent(int howMany) {
while (0 < Wire.available()) {
char c = Wire.read(); /* receive byte as a character */
Serial.print(c); /* print the character */
}
Serial.println(); /* to newline */
}

// function that executes whenever data is requested from master


void requestEvent() {
Wire.write("Hello Master"); /*send string on request */
}
 Kết quả

15
CHƯƠNG 2. TỔNG QUAN

Hình 2.10 Kết quả khi thành công

2.2.4. Giao tiếp ESP8266 chuẩn SPI


Khái niệm : SPI  (Serial Peripheral Interface) là chuẩn giao tiếp dạng bus được đưa
ra bởi Motorola Corp.
SPI dùng 4 chân kết nối, nên ta thường gọi nó là kết nối dạng 4 dây.
SPI là full duplex master-slave communication protocol. Có nghĩa là chỉ một master
và một slave có thể kết nối nhau thông qua bus interface trong cùng một thời điểm.
SPI cho phép device có thể làm việc mở 2 mode cơ bản là  SPI Master Mode và SPI
Slave Mode.
Master Device sẽ phản hồi thông tin thiết lập kết nối. Master Device tạo ra Serial
Clock để đồng bộ data truyền nhận. Master Device còn có thể quản lý nhiều slave
devices trên bus bằng việc lựa chọn từng cái.
ESP8266 có chân SPI (SD1, CMD, SD0, CLK) dùng cho Quad-SPI communication
với flash memory trên ESP-12E, vì thế ta sẽ không thể sử dụng những chân này được,
ta sẽ dùng các chân thay thế là GPIO14-GPIO17, có thể xem hình dưới đây.

16
CHƯƠNG 2. TỔNG QUAN

Hình 2.11 Sơ đồ chân SPI ESP8266


 MISO (Master In Slave Out): Master nhận data và slave truyền data qua pin
này.
 MOSI (Master Out Slave In): Master truyền data và slave nhận data qua pin
này.
 SCLK (Serial Clock): Master tạo clock cho kết nối, slave dùng clock này. Chỉ
duy nhất master có thể thiết lập được serial clock.
 CS (Chip Select): Master có thể lựa chọn slave device thông qua pin này để bắt
đầu kết nối với nó.

17
CHƯƠNG 2. TỔNG QUAN

 Sơ đồ kết nối

Hình 2.12 Sơ đồ kết nối Arduino Uno với ESP8266 chuẩn SPI
 Chương trình
Viết chương trình giao tiếp SPI cho ESP8266/NodeMCU và Uno/Mega, ở đây
NodeMCU là master device và Uno/Mega là slave device.
NodeMCU sẽ gửi lời chào với chuỗi “Hello Slave” với ‘\n’ ở cuối chuỗi .
Uno/Mega Slave device nhận chuỗi này và in nó ra serial.

Code cho NodeMCU


#include<SPI.h>

char buff[]="Hello Slave\n";

void setup() {
Serial.begin(9600); /* begin serial with 9600 baud */

18
CHƯƠNG 2. TỔNG QUAN

SPI.begin(); /* begin SPI */


}
void loop() {
for(inti=0; i<sizeof buff; i++) /* transfer buff data per second
*/
SPI.transfer(buff[i]);
delay(1000);
}
Code cho Uno/Mega
#include <SPI.h>

char buff [100];


volatile byte index;
volatile bool receivedone; /* use reception complete flag */

void setup (void)


{
Serial.begin (9600);
SPCR |= bit(SPE); /* Enable SPI */
pinMode(MISO, OUTPUT); /* Make MISO pin as OUTPUT */
index = 0;
receivedone = false;
SPI.attachInterrupt(); /* Attach SPI interrupt */
}

void loop (void)


{
if (receivedone) /* Check and print received buffer if
any */
{
buff[index] = 0;
Serial.println(buff);
index = 0;
receivedone = false;
}
}

19
CHƯƠNG 2. TỔNG QUAN

// SPI interrupt routine


ISR (SPI_STC_vect)
{
uint8_t oldsrg = SREG;
cli();
char c = SPDR;
if (index <sizeof buff)
{
buff [index++] = c;
if (c == '\n'){ /* Check for newline character as end of msg
*/
receivedone = true;
}
}
SREG = oldsrg;
}
Kết quả: Kiểm tra trên terminal của Uno sẽ có thông tin “Hello Slave”

20
CHƯƠNG 3. NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Chương 3: NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU


3.1.Đối tượng và thiết bị nghiên cứu
3.1.1. Đối tượng nghiên cứu
Tiến hành nghiên cứu cấu tạo và nguyên lý hoạt động của việc “ Mô hình lập trình
điều khiển từ xa với Esp8266 và Arduino”
3.1.2 Thiết bị nghiên cứu
Module ESP8266
Arduino
Các phần mềm hỗ trợ
Các linh kiện sử dụng
3.2.Phương pháp nghiên cứu
Tìm hiều về “ Mô hình lập trình điều khiển từ xa với Esp8266 và Arduino” sao cho
phù hợp với nguyên lí hoạt động của mình.
3.3.Phương tiện thực hiện
Đối với phạm vi đề tài này, phương tiện thực hiện sẽ chia làm hai phần:
3.3.1.Thiết bị phần cứng
NodeMCU ESP8266
DHT11
Cáp USB
Dây cắm Breadboad
3.3.2.Thiết bị phần mềm
Arduino IDE
3.4 Phương pháp thực hiện
Tiến hành thực hiện đề tài theo các bước sau:
Bước 1: Tìm hiểu những kiến thưc cơ bản về module ESP8266, phần mềm và phần
cứng Arduino.
Bước 2: Cài đặt phần mềm và các thư viện cần thiết của Arduino
Bước 3: Thực hiện các thao tác cơ bản với Arduino và module ESP8266
Bước 4: Thực hiện mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ Web

21
CHƯƠNG 3. NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Bước 5: Thực hiện trạm dự báo thời tiết sử dụng wifi ESP8266
Bước 6: Viết chương trình cho cả hai mô hình
Bước 7: Chạy thử nghiệm
Bước 8: Kiểm tra và đánh giá kết quá

22
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Chương 4: KẾT QUẢ VÀ THẢO LUẬN


4.1.Mô hình hiển thị nhiệt độ và độ ẩm trên Web
4.1.1 Cài đặt thư viện DHT11
Để giao tiếp với cảm biến DHT, chúng ta cần cài đặt thư viện “DHT.h” của
Adafruit. Trong Arduino IDE, để cài đặt thư viện “DHT.h”, chọn Tools->Manage
Libraries…Màn hình Library Manager xuất hiện.

Sau đó, tìm kiếm thư viện “dht” rồi cài đặt

23
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Tiếp đến chọn cài đặt tất cả thư viện

4.1.2.Nạp chương trình điều khiển vào ESP8266


Để sử dụng Arduino nạp chương trình điều khiển cho ESP8266, chúng ta cần cài
đặt add-on hỗ trợ chức năng này vào Arduino.
Sau khi đã cài đặt add-on xong, trong trình đơn của Arduino IDE, bạn nhấp chọn
Tool > Boad: “Arduino Uno” > Generlc ESP8266 module
4.1.3.Kết quả
Các linh kiện cần sử dụng:
- NodeMCU ESP8266

Hình 4.1 NodeMCU ESP8266

24
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

- Cảm biến đo nhiệt độ, độ ẩm DHT11

Hình 4.2 Cảm biến đo nhiệt độ, độ ẩm DHT11

- Điện trở 4,7 kΩ


- Các dây nối
- Testboad
Sơ đồ kết nối

Hình 4.3 Sơ đồ kết nối ESP8266 với DHT11

25
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Sơ đồ mạch điện thực tế

Hình 4.4 Mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ web
Truy cập server web
Sau khi nạp chương trình, bạn hãy mở serial monitor với tốc độ baud là 115200. Và
nhấn nút RESET trên NodeMCU. Nếu mọi thứ đều ổn thì bạn sẽ thấy địa chỉ IP động
thu được từ bộ định tuyến của bạn.

26
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Tiếp theo, bạn hãy copy địa chỉ IP được hiển thị trên serial monitor và dán vào trình
duyệt web. ESP8266 NodeMCU sẽ cung cấp một trang web hiển thị nhiệt độ và độ ẩm
tương đối như hình bên dưới.

Như vậy, chúng ta có thể dễ dàng theo dõi nhiệt độ ở cả 2 thang đo ( độ C và độ F)


và độ ẩm trong không khí.
4.2.Mô hình trạm dự báo thời tiết sử dụng ESP8266
4.2.1.Mở bản đồ thời tiết
Do trạm dự báo thời tiết này dựa trên Open Weather Map AIP, vì thế ta cần đăng
nhập vào nền tảng này đê nhận một AIP để có thể kết nối mạch điện và viết chương
trình
Các bước thực hiện như sau:
Bước 1: Mở trình duyệt web và truy cập địa chỉ
https://openweathermap.org/.
Nếu như bạn vào trang web và nhập tên thành phố mình đang sống thì sẽ hiện ra các
thông tin về thời tiết

27
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Bước 2: Đăng ký tài khoản tại mục Sign up


Bước 3: Đăng nhập vào tài khoản
Bước 4: Vào thẻ API Keys, sử dụng Key default hoặc tạo key mới thông qua Create
Key, lưu Key này lại để sử dụng trong chương trình

Khóa AIP được dùnng để nhận các thông tin thời tiết từ trang web trên. Để nhận
thông tin thời tiết trong một vùng mà bạn đã chọn, nhập URL sau đây, trong đó vùng

28
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

nằm trong dấu ngoặc nhọn { } được thay bằng giá trị ứng với vị trí địa lý của bạn và
khóa AIP:
https://api.openweathermap.org/data/2.5/forecast?q={ thanh pho },{ma so quoc
gia }&APPID={khoa AIP}&mode=json&units=metric&cnt=2
Bạn thay thế nội dung {thanh pho} bằng tên thành phố mà mình muốn có dữ liệu
nhiệt độ, {ma so quoc gia} là mã quốc gia mà mình đang sống, và {khoa AIP} là giá
trị khóa AIP mà mình đã có được ở phần trước.
Sau đó sao chép URL đã có đầy đủ các thông số và dán vào trình duyệt web, bạn sẽ
thấy hiển thị về dự báo thời tiết tại vị trí mà mình muốn xem.
Cần lưu khóa AIP cẩn thận để ta còn sử dụng trong mục viết chương trình điều khiển.
4.2.2 Nạp chương trình điều khiển vào ESP8266
Để sử dụng Arduino nạp chương trình điều khiển cho ESP8266, chúng ta cần cài
đặt add-on hỗ trợ chức năng này vào Arduino.
Sau khi đã cài đặt add-on xong, trong trình đơn của Arduino IDE, bạn nhấp chọn
Tool và chọn “NodeMCU ESP8266”
4.2.3 Kết quả
Các linh kiện cần sử dụng:
- NodeMCU ESP8266
- 4 đèn led ( vàng, đỏ, xanh lá, xanh dương )
- 4 điện trở loại 330 Ω
- Testboard
- Các dây nối
Quy ước hiển thị thời gian
LED xanh dương: mưa
LED xanh lá: nắng
LED vàng: mưa đá
LED đỏ: tuyết
Sơ đồ mạch điện thực tế

29
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN

Hình 4.5 Sơ đồ mạch điện thực tế của mô hình trạm dự báo thời tiết
4.3.Nhận xét
Mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ Web cho ta biết được nhiệt độ và
độ ẩm trongng phòng thí nghiệm, nhà ở….
Mô hình trạm dự báo thời tiết cho phép ta xem được thời tiết từ mạch điện nhỏ gọn
và các đèn LED báo hiệu.

30
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


5.1.Kết luận
Sau khi thực hiện đề tài “ Mô hình lập trình điều khiển từ xa với Esp8266 và
Arduino” với hai mô hình:
- Mô hình hiển thị nhiệt độ và độ ẩm trên máy chủ Web đã được hoàn thiện về
mạch điện và chương trình. Có thể hiển thị được nhiệt độ và độ ẩm lên máy chủ Web
- Mô hình trạm dự báo thời tiết sử dụng ESP8266 đã hoàn thiện về mạch và
chương trình. Mô hình có thể hoạt động và cung thông tin về thời tiết thông qua các
đèn LED dự báo.
Ưu điểm
Mô hình hiển thị nhiệt độ và độ ẩm lên máy chủ Web dù là mô hình nhỏ gọn, nhưng
có thể ứng dụng rộng rãi trong cả sinh hoạt và sản xuất. nó giúp ta có thể đo các thông
số nhiệt độ và độ ẩm trong nhà ở, phòng thí nghiệm hay nhà máy….
Mô hình trạm báo thời tiết sử dụng ESP8266 là một mô hình giúp ta có thể nhận
được các thông tin về thời tiết thông qua các đèn LED báo hiệu mà không cần phải
nhìn vào điện thoại hay máy tính.
5.2.HƯỚNG PHÁT TRIỂN
Mô hình hiển thị nhiệt độ và độ ẩm hiển thị lên Web

31
TÀI LIỆU THAM KHẢO
Sách tham khảo: Lập trình điều khiển xa với ESP8266 - ESP32 và Arduin ( Ứng
dụng Arduino trong giáo dục Stem )
Trang web tham khảo:
[1]: https://hocarm.org/tram-khi-tuong-du-bao-thoi-tiet-voi-esp8266/
[2]: https://vi.wikipedia.org/wiki/ESP8266
[3]:https://quantrimang.com/arduino-la-gi-va-ung-dung-cua-no-trong-cuoc-song-
145388

You might also like