Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp và xu hướng tự động hóa tòa nhà (Smart Building / Smart Home) đã đặt ra yêu cầu cấp thiết về việc kết nối và điều khiển thiết bị điện tử từ xa qua môi trường mạng mở. Theo các thống kê công nghiệp viễn thông, mạng cục bộ (LAN) dựa trên tiêu chuẩn quốc tế IEEE 802.3 (Ethernet) chiếm tới hơn 85% thị phần kết nối tại các văn phòng, xí nghiệp và nhà máy nhờ độ tin cậy cao, khả năng mở rộng không giới hạn và tính kinh tế.

Trước đây, các hệ thống điều khiển ngoại vi tầm xa chủ yếu phụ thuộc vào sóng vô tuyến tần số thấp (RF 315MHz / 433MHz) hoặc bức xạ hồng ngoại (Infrared - IR). Tuy nhiên, các giải pháp này tồn tại hàng loạt hạn chế cốt tử (pain points):

  • Phạm vi truyền dẫn bị giới hạn: Hồng ngoại yêu cầu tầm nhìn thẳng (Line-of-Sight) dưới 10m; sóng vô tuyến RF dễ bị can nhiễu điện từ trường và suy hao nghiêm trọng khi xuyên qua vật cản kiến trúc bê tông cốt thép.
  • Băng thông hẹp và bảo mật yếu: Không hỗ trợ xác thực mã hóa gói tin, dễ bị nghe lén hoặc chèn xung phá sóng.
  • Thiếu khả năng hội nhập mạng diện rộng: Không thể điều khiển trực tiếp qua giao thức Internet (WAN/Internet) nếu không có các bộ chuyển đổi Gateway đắt đỏ và phức tạp.

Đề tài "Giám sát và Điều khiển thiết bị qua mạng Ethernet" của sinh viên Nguyễn Hữu Chiến (ngành Kỹ thuật Điện tử - Viễn thông, Đại học Tôn Đức Thắng; GVHD: Thầy Nguyễn Văn Dũng) được nghiên cứu nhằm giải quyết triệt để bài toán này.

Mục tiêu của dự án:

  1. Thiết kế phần cứng tối ưu: Tích hợp vi điều khiển hiệu năng cao Microchip PIC18F4620 với IC điều khiển mạng Ethernet độc lập ENC28J60 qua chuẩn giao tiếp nối tiếp đồng bộ 4 dây SPI (Serial Peripheral Interface).
  2. Hiện thực hóa bộ ngăn xếp giao thức rút gọn (Embedded TCP/IP Stack): Xây dựng cơ chế xử lý các tầng giao thức ARP, IP, ICMP, TCP và HTTP chạy trực tiếp trong vùng tài nguyên bộ nhớ giới hạn của vi điều khiển 8-bit.
  3. Triển khai Web Server nhúng: Cho phép truy cập giao diện điều khiển, giám sát trạng thái đóng/ngắt thiết bị (đèn chiếu sáng, máy bơm nước, rơ-le công suất) theo thời gian thực (Real-time) trên mọi trình duyệt web chuẩn.
  4. Giải pháp định tuyến toàn cầu qua ADSL Dynamic IP: Ứng dụng dịch vụ Dynamic DNS (DynDNS) và NAT Port Forwarding để giải quyết triệt để bài toán địa chỉ IP WAN động từ các nhà cung cấp dịch vụ Internet (ISP).

Kết quả kỳ vọng:

  • Thời gian phản hồi lệnh điều khiển trong mạng nội bộ (LAN): $< 15\text{ ms}$.
  • Thời gian phản hồi điều khiển qua Internet (WAN): $< 250\text{ ms}$.
  • Tỷ lệ thực thi lệnh chính xác và toàn vẹn gói tin: $99.9%$.
  • Tối ưu hóa bộ nhớ: Toàn bộ firmware và Web Server chiếm $< 50\text{ KB}$ Flash và $< 3\text{ KB}$ SRAM.

Phạm vi và giới hạn:

  • Băng thông vật lý: Chuẩn 10Base-T (10 Mbps) Half-Duplex theo đặc tả IEEE 802.3.
  • Xử lý đồng thời: Tối ưu cho mô hình đơn phiên kết nối TCP (Single-client HTTP session) nhằm đảm bảo an toàn bộ đệm 8 KB SRAM của chip ENC28J60.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí kỹ thuật Điều khiển Hồng ngoại (IR) Sóng vô tuyến RF (433MHz) Vi điều khiển 8051 + RTL8019AS Hệ thống PIC18F4620 + ENC28J60
Khoảng cách truyền $< 10\text{ m}$ (Line-of-sight) $30 - 100\text{ m}$ (Tùy vật cản) Toàn cầu (qua LAN/Internet) Toàn cầu (qua LAN/Internet)
Giao diện vi điều khiển 1 GPIO (thu/phát) 1-2 GPIO Bus song song 8/16-bit ($> 20$ chân) Chuẩn SPI 4 dây (SDI, SDO, SCK, CS)
Độ phức tạp mạch in (PCB) Rất thấp Thấp Rất cao, dễ nhiễu bus song song Gọn nhẹ, đường mạch đơn giản
Tốc độ truyền dữ liệu Vài Kbps Max 100 Kbps 10 Mbps (ISA Bus) 10 Mbps (10Base-T Ethernet)
Khả năng cập nhật trạng thái 1 chiều (Unidirectional) 1 chiều / 2 chiều hạn chế 2 chiều (Bidirectional) 2 chiều thời gian thực qua Web UI

Phân tích yêu cầu hệ thống theo mô hình MoSCoW:

  • Must Have: Đóng/cắt rơ-le qua Web; tự động phản hồi ICMP (Ping); phân giải địa chỉ MAC/IP bằng ARP; duy trì kết nối TCP ổn định.
  • Should Have: Tích hợp giao diện HTML trực quan; tự động lọc khung tin lỗi phần cứng qua CRC/FCS 32-bit; hỗ trợ cập nhật động IP qua DynDNS.
  • Could Have: Đèn LED chỉ thị trạng thái mạng (Link/Activity LEDA, LEDB); cơ chế xác thực cơ bản Basic Authentication.
  • Won't Have (Giai đoạn này): Mã hóa HTTPS/TLS (do hạn chế phần cứng 8-bit); giao diện WebSocket đa luồng.

Thiết kế hệ thống

Kiến trúc ngăn xếp giao thức (Embedded TCP/IP Stack)

Hệ thống thu nhỏ kiến trúc 7 tầng OSI thành mô hình 4 tầng tương thích chuẩn TCP/IP:

  • Tầng ứng dụng (Application Layer): HTTP Server daemon phân tích các phương thức GET / POST, phản hồi trang HTML tĩnh và mã trạng thái HTTP/1.0 200 OK.
  • Tầng giao vận (Transport Layer): Xử lý giao thức TCP định hướng kết nối (bắt tay 3 bước SYN, SYN-ACK, ACK; quản lý chuỗi Sequence Number, Acknowledgment Number và cơ chế đóng gói phân đoạn TCP Segment) và UDP phi kết nối.
  • Tầng mạng (Internet Layer): Đóng gói IP Datagram 32-bit, xử lý phân mảnh (Fragment Offset, Flags), định tuyến và giao thức điều khiển ICMP (Internet Control Message Protocol).
  • Tầng liên mạng & vật lý (Network Interface & PHY Layer): Chip ENC28J60 chịu trách nhiệm đóng/mở khung tin Ethernet Frame (Preamble 7 bytes 0xAA, SFD 1 byte 0xAB, MAC Đích/Nguồn 6 bytes, LEN 2 bytes, Data 46-1500 bytes và FCS/CRC 4 bytes), vận hành thuật toán truy cập đường truyền CSMA/CD với khe thời gian slotTime = 51.2 µs và khoảng trống liên khung IFG = 9.6 µs.

Bảng thông số phần cứng và công nghệ:

  • Vi điều khiển chính: Microchip PIC18F4620 (Kiến trúc RISC tối ưu cho C, Flash 64 KB, SRAM 3968 Bytes, EEPROM 1024 Bytes, 5 cổng xuất nhập PORTA-E gồm 36 I/O, bộ dao động ngoại 10 MHz nhân tần PLL x4 đạt tốc độ thực thi 40 MHz / 10 MIPS).
  • Bộ điều khiển Ethernet: Microchip ENC28J60 (Đóng gói SPDIP/SOIC 28 chân, tích hợp 10Base-T PHY, bộ đệm SRAM kênh đôi 8 Kbytes, hỗ trợ chế độ SPI Mode 0,0 và Mode 1,1 với xung nhịp SPI tối đa 20 MHz).
  • Cổng kết nối mạng: Jack RJ45 tích hợp biến áp cách ly (Pulse Transformer) lọc nhiễu đường truyền vi sai TX+/TX-, RX+/RX-.
  • Môi trường lập trình: MPLAB IDE v8.92 kết hợp trình biên dịch MPLAB C18 Compiler.

Phương pháp luận phát triển (Methodology)

Quy trình phát triển áp dụng mô hình chữ V (V-Model) trong kỹ nghệ nhúng:

  1. Thiết kế sơ đồ nguyên lý & Layout PCB: Tách biệt đường tín hiệu số SPI tần số cao và đường tín hiệu tương tự vi sai Ethernet nhằm giảm thiểu xuyên âm (Crosstalk).
  2. Xây dựng tầng HAL (Hardware Abstraction Layer): Lập trình cấu hình trực tiếp các thanh ghi chức năng đặc biệt SFR của PIC18 (SSPCON1, SSPSTAT, TRISC).
  3. Hiện thực hóa Driver ENC28J60: Ghi/đọc các thanh ghi điều khiển MAC/PHY (ECON1, ERXST, ERXND, ERXRDPT, EIR).
  4. Tích hợp Protocol Stack & HTTP Server: Xử lý gói tin dạng vòng lặp tuần tự (Non-blocking Polling Engine).

Đánh giá và giảm thiểu rủi ro kỹ thuật:

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Tràn bộ nhớ SRAM vi điều khiển (3968B) Nghiêm trọng Tối ưu hóa Buffer: Không lưu toàn bộ trang web vào RAM; phát trực tiếp các chuỗi HTML tĩnh từ bộ nhớ Flash ROM (const far rom char[]).
Tràn bộ đệm nhận của ENC28J60 (8KB Buffer) Cao Lập trình cấu hình con trỏ phần cứng FIFO (ERXST đến ERXND) và cập nhật liên tục con trỏ đọc ERXRDPT để giải phóng ô nhớ ngay sau khi xử lý.
Xung đột điện áp logic (PIC 5V vs. ENC28J60 3.3V) Trung bình Cấp nguồn riêng qua IC hạ áp LM1117-3.3V; các chân đầu vào của ENC28J60 đều chịu được điện áp 5V (5V-tolerant inputs).

Implementation và kết quả

Chi tiết giải thuật và lập trình hệ thống

Hệ thống cấu hình module MSSP (Master Synchronous Serial Port) của PIC18F4620 hoạt động ở chế độ SPI Master Mode với tốc độ xung nhịp $F_{OSC}/4 = 10\text{ MHz}$.

// Cấu hình hướng chân SPI trên vi điều khiển PIC18F4620
TRISCbits.TRISC3 = 0; // SCK xuất xung clock đồng bộ
TRISCbits.TRISC5 = 0; // SDO (MOSI) xuất dữ liệu sang ENC28J60
TRISCbits.TRISC4 = 1; // SDI (MISO) nhận dữ liệu từ ENC28J60
TRISAbits.TRISA5 = 0; // Chân CS (Slave Select) tích cực mức thấp

// Khởi tạo thanh ghi MSSP cho chế độ SPI Master Mode
SSPSTAT = 0x00;       // SMP = 0 (Lấy mẫu giữa chu kỳ bit), CKE = 0
SSPCON1 = 0x20;       // SSPEN = 1 (Bật module SPI), CKP = 0, Mode: Fosc/4 (10MHz)

Quá trình đọc/ghi thanh ghi nội bộ trên ENC28J60 thông qua chuỗi lệnh SPI chuẩn được thực hiện theo cấu trúc hàm truyền đệm:

// Hàm truyền nhận 1 byte qua chuẩn giao tiếp SPI
unsigned char SPI_Write(unsigned char data) {
    SSPBUF = data;              // Ghi dữ liệu vào thanh ghi đệm phát
    while(!SSPSTATbits.BF);     // Chờ cờ Buffer Full (quá trình truyền kết thúc)
    return SSPBUF;              // Trả về byte dữ liệu thu được trong thanh ghi đệm
}

// Hàm gửi gói tin Ethernet qua ENC28J60
void ENC28J60_PacketSend(unsigned int len, unsigned char* packet) {
    // 1. Kiểm tra trạng thái bộ phát
    while(ENC28J60_ReadOp(ENC28J60_READ_CTRL_REG, ECON1) & ECON1_TXRTS);
    
    // 2. Thiết lập con trỏ bắt đầu bộ đệm phát (ETXST = 0x1800)
    ENC28J60_WriteReg16(ETXSTL, TXSTART_INIT);
    ENC28J60_WriteReg16(EWRPTL, TXSTART_INIT);
    
    // 3. Ghi bit điều khiển phần cứng cho khung Ethernet
    ENC28J60_WriteOp(ENC28J60_WRITE_BUF_MEM, 0, 0x00);
    
    // 4. Nạp mảng dữ liệu gói tin vào bộ đệm SRAM qua SPI
    ENC28J60_WriteBuffer(len, packet);
    
    // 5. Cấu hình con trỏ kết thúc ETXND và kích hoạt phát (ECON1.TXRTS = 1)
    ENC28J60_WriteReg16(ETXNDL, (TXSTART_INIT + len));
    ENC28J60_WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_TXRTS);
}

Đánh giá và kiểm thử hệ thống

Ma trận kết quả đo kiểm thực nghiệm:

Kịch bản kiểm thử Công cụ đo kiểm Số mẫu thực hiện Tỷ lệ thành công Kết quả / Độ trễ trung bình
Phân giải địa chỉ mạng qua ARP Wireshark v3.4 1,000 requests $100%$ $< 1.2\text{ ms}$
Kiểm tra độ ổn định ICMP Ping (32-1400 bytes) Command Prompt / Ping Utility 10,000 pings liên tục $99.98%$ ($2$ timeouts do nhiễu vật lý) $1.8\text{ ms}$ (LAN), $38.4\text{ ms}$ (WAN qua ADSL)
Đóng/ngắt rơ-le liên tục qua Web HTTP GET Custom Python Test Script 500 chu kỳ $100%$ $12.4\text{ ms}$ / chu kỳ chuyển mạch
Thử nghiệm chịu tải liên tục (Burn-in Test) Web Stress Tool 72 giờ không nghỉ $100%$ Không xảy ra hiện tượng treo vi điều khiển

Thống kê tối ưu hóa tài nguyên phần cứng:

  • Flash ROM Utilization: $48.5\text{ KB} / 64\text{ KB}$ (Chiếm $75.78%$).
  • SRAM Data Memory: $3,120\text{ Bytes} / 3,968\text{ Bytes}$ (Chiếm $78.63%$).
  • ENC28J60 SRAM Split: Vùng nhận Rx Buffer $6\text{ KB}$ (0x0000 - 0x17FF), Vùng phát Tx Buffer $2\text{ KB}$ (0x1800 - 0x1FFF).

Đổi mới và đóng góp kỹ thuật

  1. Tối ưu hóa kiến trúc vi điều khiển 8-bit cho ngăn xếp Internet: Thay vì sử dụng các dòng chip ARM 32-bit đắt tiền hoặc module WiFi công suất tiêu thụ lớn, đồ án chứng minh vi điều khiển 8-bit giá rẻ PIC18F4620 kết hợp chip Ethernet ngoại vi hoàn toàn có thể chạy mượt mà một ngăn xếp TCP/IP rút gọn và Web Server động.
  2. Tiết kiệm tối đa chân giao tiếp GPIO: So với các giải pháp dùng chip Ethernet bus song song truyền thống (như RTL8019AS tiêu tốn 16-24 chân dữ liệu và địa chỉ), việc ứng dụng chuẩn SPI 4 dây trên ENC28J60 giúp giảm $83.3%$ số chân vi điều khiển, dành trọn vẹn các PORTA, PORTB, PORTD cho nhiệm vụ điều khiển tải ngoại vi.
  3. Cơ chế cập nhật IP động không cần IP tĩnh (Static IP): Tích hợp giải pháp Dynamic DNS (DynDNS) giúp triển khai thiết bị trên hạ tầng mạng gia đình thông thường mà không phát sinh chi phí thuê IP tĩnh hàng tháng từ nhà mạng viễn thông.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tiễn:

  • Tự động hóa tòa nhà (Building Automation): Quản lý tập trung hệ thống chiếu sáng, điều hòa không khí và bơm cấp thoát nước cho các tòa nhà văn phòng thông qua mạng LAN nội bộ.
  • Quan trắc môi trường và công nghiệp: Đặt các trạm vi điều khiển tại các vị trí nguy hiểm, độc hại mà con người khó tiếp cận; truyền dữ liệu cảm biến và nhận lệnh điều khiển máy móc qua đường cáp Ethernet chống nhiễu công nghiệp.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis):

  • Chi phí phần cứng (BOM - Bill of Materials):
    • Vi điều khiển PIC18F4620: ~3.5 USD
    • Chip điều khiển mạng ENC28J60: ~2.8 USD
    • Cổng RJ45 MagJack, thạch anh 25MHz & linh kiện thụ động: ~2.5 USD
    • Module 4-Relay cách ly quang (Optocoupler): ~3.0 USD
    • Tổng chi phí phần cứng: $< 12.0\text{ USD}$ (Rẻ hơn $88%$ so với việc trang bị PLC hoặc Gateway công nghiệp chuyên dụng có giá từ $100 - 300\text{ USD}$).
  • Thời gian hoàn vốn (ROI): Ước tính dưới 3 tháng triển khai thực tế nhờ tiết kiệm chi phí nhân công vận hành và giảm thiểu điện năng tiêu thụ lãng phí.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật:

  • Tốc độ truyền dữ liệu: Băng thông giới hạn ở mức 10 Mbps (10Base-T) Half-Duplex, không phù hợp cho việc truyền tải các luồng dữ liệu lớn như hình ảnh camera giám sát.
  • Bảo mật: Chưa hỗ trợ giao thức bảo mật SSL/TLS do năng lực tính toán mã hóa bất đối xứng vượt quá dung lượng Flash/RAM của vi điều khiển 8-bit.
  • Khả năng đa nhiệm: Chưa hỗ trợ kết nối đồng thời nhiều Client cùng lúc (Multi-threading).

Hướng phát triển:

  • Nâng cấp vi điều khiển lên dòng PIC32 (32-bit RISC MIPS) hoặc ARM Cortex-M4 để tích hợp giao thức bảo mật HTTPS (mbedTLS), giao thức MQTT truyền dữ liệu IoT lên Cloud (AWS IoT Core / Google Cloud IoT).
  • Tích hợp công nghệ cấp nguồn qua dây mạng PoE (Power over Ethernet - chuẩn IEEE 802.3af) nhằm loại bỏ hoàn toàn adapter cấp nguồn rời, tăng tính cơ động khi lắp đặt.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Điện tử - Viễn thông, Tự động hóa: Cung cấp tài liệu mẫu mực về kiến trúc giao tiếp phần cứng SPI, cách cấu hình thanh ghi SFR và hiện thực hóa mô hình TCP/IP rút gọn trên hệ thống nhúng.
  • Kỹ sư phát triển phần cứng (Hardware Engineers): Nắm bắt giải pháp thiết kế mạch in (Schematic/Layout) giao tiếp mạng Ethernet sử dụng ít chân GPIO nhất.
  • Doanh nghiệp & Cơ sở sản xuất: Giải pháp khả thi, độ bền cao để nội địa hóa các thiết bị điều khiển từ xa với chi phí linh kiện chỉ bằng $1/10$ các thiết bị nhập khẩu.

Câu hỏi thường gặp

1. Cần những yêu cầu kỹ thuật phần cứng nào để tự xây dựng và nạp chương trình cho mạch?

Hệ thống yêu cầu nguồn cấp ổn định $5\text{V DC}$ cho PIC18F4620 và $3.3\text{V DC}$ (dòng tối thiểu $250\text{ mA}$) cho ENC28J60. Mạch nạp chuẩn Microchip PICkit 2, PICkit 3 hoặc ICD2 kết nối qua giao tiếp nạp ICSP (chân PGC, PGD, VPP, VDD, VSS) trên cổng PORTB.

2. Giới hạn mở rộng thiết bị ngoại vi của hệ thống là bao nhiêu?

Với vi điều khiển PIC18F4620, hệ thống còn trống hơn 20 chân I/O trên PORTA, PORTB, PORTD. Người dùng có thể mở rộng điều khiển trực tiếp lên đến 16-20 kênh rơ-le hoặc kết hợp IC giải mã mở rộng bus $I^2C$ (như PCF8574) để điều khiển hàng trăm thiết bị ngoại vi cùng lúc.

3. Làm thế nào để điều khiển hệ thống khi mạng ADSL liên tục thay đổi IP WAN?

Modem ADSL được cấu hình tài khoản dịch vụ Dynamic DNS (như No-IP hoặc DynDNS.org) và mở cổng (Port Forwarding / NAT) trỏ cổng 80 (HTTP) về địa chỉ IP nội bộ của PIC18F4620. Mỗi khi ISP cấp IP WAN mới, modem tự động cập nhật tên miền, cho phép người dùng luôn truy cập hệ thống qua URL cố định (ví dụ: http://myhome.dyndns.org).

4. Hệ thống có khả năng tự khôi phục khi bị treo mạng không?

Có. Firmware kích hoạt bộ định thời giám sát phần cứng Watchdog Timer (WDT) của PIC18F4620 với chu kỳ khả trình. Nếu vòng lặp phân tích gói tin mạng bị kẹt do lỗi tràn bộ đệm quá thời gian quy định, WDT sẽ tự động kích hoạt quá trình System Reset để khởi động lại hệ thống trong vài mili-giây.

5. Chi phí sản xuất hàng loạt và khả năng cạnh tranh thương mại ra sao?

Khi sản xuất với số lượng từ 1,000 bo mạch, tổng giá thành sản xuất (gồm PCB 2 lớp, linh kiện dán SMD và vỏ hộp tiêu chuẩn gắn thanh ray DIN Rail) ước tính khoảng $8.5\text{ USD/bộ}$, mang lại lợi thế cạnh tranh vượt trội về giá trên thị trường điều khiển tự động hóa.


Kết luận

Đề tài tốt nghiệp "Giám sát và Điều khiển thiết bị qua mạng Ethernet" của sinh viên Nguyễn Hữu Chiến đã giải quyết thành công bài toán tích hợp mạng viễn thông hiện đại vào hệ thống điều khiển nhúng chuyên dụng. Bằng việc kết hợp sáng tạo giữa vi điều khiển Microchip PIC18F4620 và bộ điều khiển Ethernet ENC28J60, đề tài đã chứng minh tính khả thi tuyệt đối của việc xây dựng một Web Server nhúng hoàn chỉnh, đáp ứng tiêu chuẩn công nghiệp IEEE 802.3 với chi phí tối ưu. Đây là nền tảng vững chắc để tiếp tục mở rộng sang các hệ sinh thái Internet vạn vật (IoT) và giải pháp đô thị thông minh trong tương lai.