Arduino Mạch Ethernet Shield
Sử dụng Arduino Ethernet Shield là một trong những cách dễ nhất để kết nối Arduino với Internet. Bạn có thể xem các lựa chọn khác để kết nối Arduino với Internet thông qua Ethernet tại Arduino - Mạng Ethernet
Trong bài hướng dẫn này, chúng ta sẽ học:
- Kiến thức mạng cơ bản dành cho người mới bắt đầu
- Cách sử dụng Arduino Ethernet Shield
- Mẫu mã Arduino cho Arduino Ethernet Shield khi dùng địa chỉ IP động (qua DHCP)
- Mẫu mã Arduino cho Arduino Ethernet Shield khi dùng địa chỉ IP tĩnh

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 | × | Arduino Ethernet Shield | ||
| 1 | × | Ethernet Cable | ||
| 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) |
Kiến thức mạng cơ bản cho người mới bắt đầu
Phần này cung cấp kiến thức cơ bản cho những người mới bắt đầu, những người chưa biết gì về mạng máy tính.
Khi một thiết bị kết nối với Internet (qua Ethernet hoặc WiFi), nó PHẢI kết nối với một bộ định tuyến hoặc một điểm truy cập. Bộ định tuyến và điểm truy cập là các thiết bị đảm nhận vai trò là cổng vào Internet. Tất cả dữ liệu giữa một thiết bị và Internet đều được truyền qua bộ định tuyến hoặc điểm truy cập.
Khi một thiết bị kết nối với Internet, nó phải:
- Có địa chỉ MAC
- Có địa chỉ IP
- Biết mặt nạ mạng con của mạng
- Biết địa chỉ IP của gateway (địa chỉ IP của bộ định tuyến hoặc điểm truy cập)
- Biết địa chỉ IP của máy chủ DNS (trong trường hợp kết nối với một tên miền)
Thiết bị sẽ không hoạt động nếu bất cứ điều gì trong số những điều sau đây:
- Có một hoặc nhiều thiết bị khác trong cùng một mạng sử dụng cùng một địa chỉ MAC của thiết bị (gọi là địa chỉ MAC bị xung đột)
- Có một hoặc nhiều thiết bị khác trong cùng một mạng sử dụng cùng một địa chỉ IP của thiết bị (gọi là địa chỉ IP bị xung đột)
Bài hướng dẫn này không làm bạn quá tải với kiến thức về mạng. Do đó, bài hướng dẫn này không giải thích những khái niệm này. Nó nằm ngoài phạm vi của bài hướng dẫn này. Thay vào đó, bài hướng dẫn cho thấy cách sử dụng chúng.
Địa chỉ MAC thường được tích hợp sẵn trên các thiết bị. Chúng ta không cần quan tâm đến nó. Tuy nhiên, Arduino Ethernet Shield lại không có địa chỉ MAC tích hợp sẵn. Địa chỉ MAC được in trên một nhãn dán dính lên shield. Chúng ta cần lấy địa chỉ MAC đó và thiết lập địa chỉ MAC cho Arduino Shield trong mã Arduino.
Có hai phương pháp để gán địa chỉ IP, mặt nạ mạng con, địa chỉ IP của gateway và địa chỉ IP của máy chủ DNS cho một thiết bị (bao gồm Arduino):
- Sử dụng địa chỉ IP tĩnh:
- Cần quản lý địa chỉ IP, mặt nạ mạng con, địa chỉ IP của gateway và địa chỉ IP của máy chủ DNS
- Cần cài đặt thủ công địa chỉ IP, mặt nạ mạng con, địa chỉ IP của gateway và máy chủ DNS (đối với Arduino Ethernet Shield, thiết lập thông tin này bằng mã Arduino)
- Nó sẽ KHÔNG hoạt động nếu:
- Thiết lập một địa chỉ IP đang được sử dụng bởi các thiết bị khác trên cùng một mạng LAN → xung đột IP
- Thiết lập mặt nạ mạng con, địa chỉ IP của gateway và máy chủ DNS sai
- Thiết bị tự động nhận địa chỉ IP, mặt nạ mạng con, địa chỉ IP của gateway và máy chủ DNS từ bộ định tuyến hoặc điểm truy cập bằng DHCP. Chúng ta không cần quản lý địa chỉ IP, mặt nạ mạng con, địa chỉ IP của gateway và máy chủ DNS. Bộ định tuyến/điểm truy cập sẽ thực hiện công việc này cho chúng ta.
Khi bạn kết nối điện thoại thông minh với mạng WiFi ở nhà, phương pháp thứ hai được sử dụng.
Khi sử dụng Arduino, phương pháp đầu tiên khó đối với người mới bắt đầu. Phương pháp thứ hai dễ và được khuyến nghị cho những người mới bắt đầu không biết gì về mạng.
Cách sử dụng Arduino Ethernet Shield
Arduino giao tiếp với Ethernet Shield thông qua giao diện SPI. Dưới đây là cách sử dụng Arduino Ethernet Shield.
- Lắp Ethernet Shield lên Arduino Uno hoặc Mega
- Kết nối PC với Arduino Uno/Mega bằng cáp USB
- Kết nối Ethernet Shield với router hoặc điểm truy cập bằng cáp Ethernet
- Mở Arduino IDE và viết mã
- Tải mã lên Arduino Uno/Mega
Nó hoàn toàn đơn giản.
Mẫu mã Arduino cho Ethernet Shield của Arduino khi sử dụng địa chỉ IP động
Điều kiện tiên quyết
- Chúng ta cần biết địa chỉ MAC của Ethernet Shield (lấy từ nhãn dán do nhà sản xuất cung cấp)
Cách lập trình từng bước
- Bao gồm thư viện
- Khai báo địa chỉ MAC
- Khai báo các đối tượng khác tùy thuộc vào ứng dụng của bạn.
- Khởi động Ethernet Shield
- (Tùy chọn) In ra địa chỉ IP của Arduino, mặt nạ mạng con, địa chỉ IP của gateway và địa chỉ IP của máy chủ DNS.
Xin lưu ý rằng Arduino không thể nhận được địa chỉ IP trong các trường hợp sau:
- Router hoặc Điểm truy cập không hỗ trợ DHCP
- Cáp Ethernet được cắm không đúng cách hoặc bị hỏng
Để phát hiện những vấn đề này, chúng ta có thể chỉnh sửa Ethernet.begin(mac); thành:
※ Lưu ý:
Nếu bạn không thay đổi địa chỉ MAC, nó có thể vẫn hoạt động. Tuy nhiên, nó có thể không hoạt động nếu nó trùng với địa chỉ MAC của một thiết bị khác trong cùng mạng LAN. Trong trường hợp mất nhãn dán địa chỉ MAC, chỉ cần sử dụng địa chỉ MAC ở trên để thử nghiệm.
Mã khung đầy đủ khi sử dụng địa chỉ IP động
Tải mã ở trên lên Arduino. Nếu thành công, Serial Monitor sẽ hiển thị như sau:
Nếu Serial Monitor KHÔNG hiển thị như ở trên, hãy kiểm tra cáp Ethernet của bạn. Nếu nó vẫn KHÔNG hoạt động, hãy chuyển sang phần tiếp theo để thử sử dụng địa chỉ IP tĩnh.
Mẫu mã Arduino cho Ethernet Shield của Arduino khi sử dụng địa chỉ IP tĩnh
Điều kiện tiên quyết
- Bạn cần lấy địa chỉ MAC (lấy từ nhãn)
- Bạn cần lấy một địa chỉ IP chưa được sử dụng (xem cách lấy địa chỉ IP chưa được sử dụng)
- Bạn cần lấy mặt nạ mạng con của mạng bạn (xem cách lấy mặt nạ mạng con)
- Bạn cần lấy địa chỉ IP của gateway (xem cách lấy địa chỉ IP của gateway)
- Bạn cần lấy địa chỉ IP của máy chủ DNS (xem cách lấy địa chỉ IP của máy chủ DNS)
Cách lập trình từng bước
- Bao gồm thư viện
- Khai báo địa chỉ MAC
- Khai báo một địa chỉ IP chưa được sử dụng, mặt nạ mạng con, địa chỉ IP của gateway, và địa chỉ IP của máy chủ DNS
- Khai báo các đối tượng khác tùy thuộc vào ứng dụng của bạn.
- Khởi động Ethernet Shield
- Tùy chọn: kiểm tra trạng thái liên kết mạng
※ Lưu ý:
Nếu bạn KHÔNG thay đổi địa chỉ MAC, nó vẫn có thể hoạt động. Tuy nhiên, nó có thể KHÔNG hoạt động nếu trùng với địa chỉ MAC của thiết bị khác trong cùng mạng LAN. Trong trường hợp bị mất tem dán địa chỉ MAC, chỉ cần dùng địa chỉ MAC ở trên để thử nghiệm.
Mã khung hoàn chỉnh khi sử dụng địa chỉ IP tĩnh
Tải đoạn mã ở trên lên Arduino. Nếu thành công, Serial Monitor sẽ hiển thị như sau:
Nếu Serial Monitor không hiển thị như ở trên:
- Kiểm tra cáp Ethernet của bạn
- đảm bảo rằng địa chỉ IP thuộc về mạng của bạn
- đảm bảo địa chỉ IP không trùng với bất kỳ thiết bị nào khác trên cùng một mạng
- đảm bảo mặt nạ mạng con, địa chỉ IP của gateway và địa chỉ IP của máy chủ DNS được thiết lập đúng
Kiến thức bổ sung về mạng máy tính cho người mới bắt đầu
Trong trường hợp sử dụng IP tĩnh, bạn cần có một địa chỉ IP chưa được sử dụng, mặt nạ mạng, địa chỉ IP của cổng mặc định và địa chỉ IP của máy chủ DNS. Phần dưới đây sẽ trình bày cách lấy chúng.
Nếu Arduino và máy tính của bạn kết nối với cùng một mạng.
- Mở Command Prompt trên máy tính của bạn
- Nhập lệnh sau vào Command Prompt:
- Từ phía trên, bạn có thể lấy mặt nạ mạng con và địa chỉ IP của gateway
- Bạn có thể thấy địa chỉ IP của máy tính từ đầu ra ở trên. Chúng ta sẽ cố gắng tìm một địa chỉ IP chưa được sử dụng dựa trên địa chỉ IP của máy tính.
- Tăng hoặc giảm từng bước một, bắt đầu từ địa chỉ IP của máy tính.
- Gửi lệnh ping tới địa chỉ IP đó trên Dòng lệnh. Lặp lại hai bước này cho đến khi IP đó không thể liên lạc được. Nếu địa chỉ không thể liên lạc được, đó là một địa chỉ IP chưa được sử dụng và chúng ta có thể dùng nó cho Arduino. Ví dụ:
- Đối với địa chỉ IP của máy chủ DNS, chúng ta có thể đơn giản sử dụng 8.8.8.8
※ Lưu ý:
Trong một số trường hợp, ngay cả khi địa chỉ IP không thể truy cập được, nó có thể đang được một thiết bị khác sử dụng. Tuy nhiên, trường hợp này thường không xảy ra trong mạng gia đình của bạn.
Bây giờ bạn có thể sử dụng các shield này để kết nối Arduino với Internet. Xem ví dụ khác ở phần See Also.
WARNING
Hướng dẫn này đang được phát triển.