Arduino Mạng Ethernet
Hướng dẫn này sẽ chỉ cho bạn cách kết nối Arduino với Internet hoặc mạng cục bộ của bạn bằng mô-đun Ethernet W5500. Chúng ta sẽ đề cập đến các chi tiết sau:
- Kết nối Arduino với mô-đun Ethernet W5500
- Lập trình Arduino cho các yêu cầu HTTP qua Ethernet
- Thiết lập một máy chủ web đơn giản trên Arduino bằng Ethernet

Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | W5500 Ethernet Module | ||
| 1 | × | Ethernet Cable | ||
| 1 | × | dây jumper | ||
| 1 | × | breadboard | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về mô-đun Ethernet W5500
Mô-đun Ethernet W5500 có hai loại kết nối:
- Giao diện RJ45: Sử dụng để kết nối với một bộ định tuyến (router) hoặc bộ chuyển mạch (switch) bằng cáp Ethernet.
- Giao diện SPI: Sử dụng để kết nối với một mạch Arduino. Nó có 10 chân:
- Chân NC: Không kết nối chân này.
- Chân INT: Không kết nối chân này.
- Chân RST: Đây là chân reset, kết nối nó với chân EN của Arduino.
- Chân GND: Kết nối chân này với chân GND của Arduino.
- Chân 5V: Không kết nối chân này.
- Chân 3.3V: Kết nối chân này với chân 3.3V trên Arduino.
- Chân MISO: Kết nối chân này với chân MISO SPI của Arduino.
- Chân MOSI: Kết nối chân này với chân MOSI SPI của Arduino.
- Chân SCS: Kết nối chân này với chân CS SPI của Arduino.
- Chân SCLK: Kết nối chân này với chân SCK SPI của Arduino.

image source: diyables.io
Sơ đồ đấu nối giữa Arduino và mô-đun Ethernet W5500

This image is created using Fritzing. Click to enlarge image
image source: diyables.io
Mã Arduino cho mô-đun Ethernet - Gửi yêu cầu HTTP qua Ethernet
Đoạn mã này hoạt động như một máy khách web bằng cách gửi các yêu cầu HTTP đến máy chủ web đặt tại http://example.com/.
/*
* Mã Arduino này được phát triển bởi newbiely.vn
* Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc.
* Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập:
* https://newbiely.vn/tutorials/arduino/arduino-ethernet
*/
#include <SPI.h>
#include <Ethernet.h>
// replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "GET"; // or POST
char HOST_NAME[] = "example.com";
String PATH_NAME = "/";
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Arduino - Ethernet Tutorial");
// initialize the Ethernet shield using DHCP:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address");
// check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware)
Serial.println("Ethernet shield was not found");
// check for Ethernet cable
if (Ethernet.linkStatus() == LinkOFF)
Serial.println("Ethernet cable is not connected.");
while (true)
;
}
// connect to web server on port 80:
if (client.connect(HOST_NAME, HTTP_PORT)) {
// if connected:
Serial.println("Connected to server");
// make a HTTP request:
// send HTTP header
client.println(HTTP_METHOD + " " + PATH_NAME + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Connection: close");
client.println(); // end HTTP header
while (client.connected()) {
if (client.available()) {
// read an incoming byte from the server and print it to serial monitor:
char c = client.read();
Serial.print(c);
}
}
// the server's disconnected, stop the client:
client.stop();
Serial.println();
Serial.println("disconnected");
} else { // if not connected:
Serial.println("connection failed");
}
}
void loop() {
}
Hướng dẫn từng bước
- Nếu bạn mới làm quen với Arduino, hãy bắt đầu bằng cách thiết lập môi trường trên Arduino IDE bằng cách làm theo hướng dẫn Arduino - Cài đặt phần mềm.
- Kết nối mô-đun Ethernet với Arduino theo sơ đồ kết nối được cung cấp.
- Kết nối Arduino với máy tính của bạn bằng cáp USB.
- Kết nối mô-đun Ethernet với bộ định tuyến hoặc switch của bạn bằng cáp Ethernet.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch Arduino phù hợp, ví dụ như Arduino Dev Module, và chọn cổng COM.
- Nhấp vào biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
- Tìm kiếm “Ethernet”, sau đó tìm thư viện Ethernet do Various phát hành.
- Nhấp vào nút Cài đặt để cài đặt thư viện Ethernet.

- Mở Serial Monitor trên Arduino IDE.
- Sao chép mã được cung cấp và dán vào Arduino IDE.
- Nhấp nút Upload trong Arduino IDE để tải mã lên ESP25.
- Để xem đầu ra, hãy mở Serial Monitor; nó sẽ hiển thị kết quả như được hiển thị.
COM6
Arduino - Ethernet Tutorial
Connected to server
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 208425
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Fri, 12 Jul 2024 07:08:42 GMT
Etag: "3147526947"
Expires: Fri, 19 Jul 2024 07:08:42 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECAcc (lac/55B8)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256
Connection: close
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
disconnected
Autoscroll
Clear output
9600 baud
Newline
※ Lưu ý:
Nếu một thiết bị khác trên cùng một mạng có cùng địa chỉ MAC, nó có thể không hoạt động.
Mã Arduino cho Mô-đun Ethernet - Máy chủ Web
Mã dưới đây biến Arduino thành một máy chủ web. Máy chủ này gửi một trang web đơn giản đến các trình duyệt web.
/*
* Mã Arduino này được phát triển bởi newbiely.vn
* Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc.
* Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập:
* https://newbiely.vn/tutorials/arduino/arduino-ethernet
*/
#include <SPI.h>
#include <Ethernet.h>
// replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(80);
void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Arduino - Ethernet Tutorial");
// initialize the Ethernet shield using DHCP:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address");
// check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware)
Serial.println("Ethernet shield was not found");
// check for Ethernet cable
if (Ethernet.linkStatus() == LinkOFF)
Serial.println("Ethernet cable is not connected.");
while (true)
;
}
server.begin();
Serial.print("Arduino - Web Server IP Address: ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an HTTP request ends with a blank line
bool currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the HTTP request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard HTTP response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<body>");
client.println("<h1>Arduino - Web Server with Ethernet</h1>");
client.println("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
} else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}
Hướng dẫn từng bước
- Sao chép mã ở trên và dán vào Arduino IDE.
- Nhấp vào nút Tải lên trong Arduino IDE để tải mã lên Arduino.
- Xem kết quả trên Trình theo dõi Serial, nó sẽ hiển thị như sau:
COM6
Arduino - Ethernet Tutorial
Arduino - Web Server IP Address: 192.168.0.2
Autoscroll
Clear output
9600 baud
Newline
- Sao chép địa chỉ IP ở trên và dán vào thanh địa chỉ của trình duyệt web của bạn. Bạn sẽ thấy một trang web đơn giản mà Arduino đang hiển thị.
