You are on page 1of 5

1.

Trình bày hiểu biết về ESP8266 NodeMCU


- Có 2 loại:
+ ESP8266 Node MCU: Đây là một bộ kit wifi SOC ESP8266 tích hợp sẵn vi xử
lý, ta có thể lập trình trực tiếp trên thiết bị này mà không cần bộ vi xử lý nào khác
bên ngoài 
+ESP8266 transmit - receiver: là loại ESP chỉ hỗ trợ việc thu phát Wifi, bổ trợ
cho hệ thống IOT (cụ thể là bổ sung khả năng kết nối mạng cho các module khác,
ví dụ như Arduino).
2. Phương thức trao đổi dữ liệu giữa ESP8266 và Arduino
2.1 UART
- Cách 1: Sử dụng chân RX và TX có sẵn trên Arduino để nạp code sau khi
nạp code xong thì mới kết nối 2 chân đó với ESP8266. Với phương pháp này
bạn phải thêm một khoảng thời gian delay ở hàm setup() để đảm bảo là sau
khi kết nối ESP8266 với Arduino, thì ESP8266 vẫn nhận được đầy đủ các tập
lệnh AT từ Arduino. Tuy nhiên, bạn không thể debug qua cổng Serial do
cổng này đang đóng vai trò kết nối với ESP8266.

- Cách 2: Sử dụng SoftwareSerial để giả lập thêm 1 cổng Serial nữa để gửi
tập lệnh AT cho ESP8266. Thư viện SoftwareSerial đã được trang bị sẵn
trong Arduino IDE. 

2.2 I2C: sử dụng bộ thư viện <Wire.h>


+ Hai chế độ làm việc của I2C: Master mode và 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.

2.3 SPI: sử dụng bộ thư viện #include<SPI.h>


+ ESP8266 có chân SPI : SD1(MOSI), CMD(CS), SD0(MISO),
CLK(SCLK),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 4 chân thay
thế là GPIO14->GPIO17
 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ó.

3. Trình bày về cơ chế kết nối giữa ESP8266 và Arduino


Có 3 chuẩn kết nối UART, I2C, SPI
3.1. Giao tiếp UART

- Chân Tx (truyền) của một chip kết nối trực tiếp với chân Rx (nhận) của chip
kia và ngược lại. UART là một giao thức một master, một slave, trong đó
một thiết bị được thiết lập để giao tiếp với duy nhất một thiết bị khác.

- Dữ liệu truyền đến và đi từ UART song song với thiết bị điều khiển.

- Khi gửi trên chân Tx, UART đầu tiên sẽ dịch thông tin song song này thành
nối tiếp và truyền đến thiết bị nhận

- UART thứ hai nhận dữ liệu này trên chân Rx của nó và biến đổi nó trở lại
thành song song để giao tiếp với thiết bị điều khiển của nó

3.2 Giao tiếp I2C

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

3.3 Giao tiếp SPI (Serial Peripheral Interface)


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

4. Cơ chế lập trình trao đổi dữ liệu giữa ESP8266 với Server
- HTTP - Hypertext Transfer Protocol (giao thức truyền dẫn siêu văn bản) với dữ
liệu có thể là dạng text, file, ảnh, hoặc video.

- HTTP được thiết kế để trao đổi dữ liệu giữa Client và Server trên nền TCP/IP, nó
vận hành theo cơ chế yêu cầu/trả lời, stateless - không lưu trữ trạng thái.Máy tính
cá nhân làm Server, Esp8266 làm Client. Client sẽ kết nối tới Server, gởi dữ liệu
đến server bao gồm các thông tin header. Server nhận được thông tin và căn cứ
trên đó gởi phản hồi lại cho Client. Đồng thời đóng kết nối.

- Trong giao thức HTTP, việc thiết lập kết nối chỉ có thể xuất phát từ phía client.Khi
client gửi yêu cầu, cùng với URL và payload ( dữ liệu muốn lấy ) tới server.
Server lắng nghe mọi yêu cầu từ phía client và trả lời các yêu cầu ấy. Khi trả lời
xong kết nối được chấm dứt

- 2 phương thức thường được sử dụng nhất của HTTP:


+ GET là phương thức yêu cầu dữ liệu đơn giản và thường sử dụng nhất của
HTTP. Phương thức GET yêu cầu server chỉ trả về dữ liệu bằng việc cung
cấp các thông tin truy vấn trên URL, thông thường Server căn cứ vào thông
tin truy vấn đó trả về dữ liệu mà không thay đổi nó. path và query trong URL
chứa thông tin truy vấn.
+ POST tương tự như GET, nhưng POST có thể gởi dữ liệu về Server.
( dài quá thì viết là có 2 phương thức là get, post là đc)
II . Câu 3

Mô tả hệ thống tưới tiêu tự động:

SOCKET
SERVER

internet internet

Trình duyệt web


ESP8266
(máy tính, điện thoại)

Serial

ARDUINO

Cảm biến Relay

Máy bơm
Mô hình hệ thống tưới tiêu:

 Socket Server nằm ở tầng cao nhất gọi là tầng Server.


 ESP8266 và Trình duyệt Web nằm ở tầng thứ 2 gọi là tầng Client
 Arduino ở tầng thử 3 gọi là Application.

Mô tả nguyên lí hoạt động của hệ thống tưới tiêu:


- Arduino: 
+ Thu nhận tín hiệu từ các cảm biến và gửi sang esp8266 node MCU, theo chuẩn
giao tiếp i2c.
+ Cảm biến độ ẩm : Đo tín hiệu độ ẩm, tính toán thành phần tram và gửi sang
esp8266
+ Nhận tín hiệu điều khiển chế độ tưới từ esp8266, sau đó điều khiển relay theo
chế độ

- ESP8266 Node MCU


+ Là 1 client nhận tín hiệu cảm biến từ arduino gửi sang và đồng thời gửi lên
server. Khi gửi dữ liệu độ ẩm lên server theo giao thức http thì đồng thời lưu dữ
liệu vào CSDL.
+ Nhận tín hiệu điều khiển từ các client khác (điện thoại, máy tính) và sau đó gửi
dữ liệu điều khiển về Arduino

- Server NODEJS
+ Server build trên máy tính cá nhân, dùng để xử lý dữ liệu từ client gửi lên, và
gửi dữ liệu điều khiển bật - tắt - tự động cho esp8266 MCU.

You might also like