Professional Documents
Culture Documents
Nguyenduykhanh
Nguyenduykhanh
- 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:
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
Tác giả
TÓM TẮT.....................................................................................................................ii
Chương 1: MỞ ĐẦU....................................................................................................1
4.1.3.Kết quả........................................................................................................24
4.3.Nhận xét.............................................................................................................30
5.1.Kết luận..............................................................................................................31
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
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
3
CHƯƠNG 2. TỔNG QUAN
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
5
CHƯƠNG 2. TỔNG QUAN
6
CHƯƠNG 2. TỔNG QUAN
7
CHƯƠNG 2. TỔNG QUAN
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
11
CHƯƠNG 2. TỔNG QUAN
Sơ đồ kết nối
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
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);
}
15
CHƯƠNG 2. TỔNG QUAN
16
CHƯƠNG 2. TỔNG QUAN
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.
void setup() {
Serial.begin(9600); /* begin serial with 9600 baud */
18
CHƯƠNG 2. TỔNG QUAN
19
CHƯƠNG 2. TỔNG QUAN
20
CHƯƠNG 3. NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
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
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
24
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN
25
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN
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.
27
CHƯƠNG 4. KẾT QUẢ VÀ THẢO LUẬN
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
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