Về cơ bản đã thiết kế được phần cứng để giao tiếp với máy tính thông qua giao diện Ethernet.
Có thể mở rộng để giao tiếp giữa máy tính với nhiều vi điều khiển, sử dụng Hub.
Đã có thể sử dụng được cả giao thức TCP và UDP để truyền nhận dữ liệu. Hiển thị nhiệt độ tương đối chính xác.
4.1 Phần cứng
4.1.1 Các thành phần của mạch
Mạch giao tiếp Ethernet sử dụng các thành phần:
PIC16F877A.
ENC28J60.
RJ45 tích hợp biến áp.
74LS08 nhằm mục đích chuyển mức điện áp từ 3.3V sang 5V để ghép nối ENC28J60 với vi điều khiển.
LCD hiển thị nhiệt độ và dữ liệu gửi xuống từ máy tính.
Cảm biến nhiệt độ môi trường LM35.
4.1.2 Sơ đồ mạch nguyên lý, mạch inSơ đồ mạch nguyên lý Sơ đồ mạch nguyên lý
Trình bày trong bản A3 đính kèm
Hình 27: Sơ đồ mạch in
4.2 Phần mềm
Với vi điều khiển để thực hiện giao tiếp Ethernet, thư viện của MikroC đã tích hợp sẵn các hàm, thủ tục, làm đơn giản việc lập trình. Một số hàm cơ bản:
1.Spi_Ethernet_Init: Khởi tạo cho ENC28J60. ENC28J60 được khởi tạo như sau: Vùng đệm nhận bắt đầu từ địa chỉ 0x0000 và kết thúc tại 0x19AD
Vùng đệm gửi là vùng còn lại, từ 0x19AE đến 0x1FFF Con trỏ đọc viết RAM đặt ở chế độ tự động tăng giảm khi độ dài lớn nhất của gói tin là 1518
CLKOUT bị vô hiệu hoá
LedA hiển thị trạng thái, ledB hiển thị hoạt động
void Spi_Ethernet_Init(unsigned char *resetPort, unsigned char resetBit,
unsigned char *CSportPtr, unsigned char CSbit, unsigned char *mac, unsigned char *ip, unsigned char fullDuplex);
resetPort: Địa chỉ cổng có chân reset. resetBit: chân reset.
CSport: Điạ chỉ cổng có chân chip select. CSbit: chân chip select.
mac: địa chỉ MAC, phải đặt trong RAM
ip: điạ chỉ IP, phải đặt trong RAM.
fullDuplex: 0 hoặc là 1 ứng với chế độ bán song công hay là song công.
2.Spi_Ethernet_doPacket: Hàm nhận bức điện và xử lý, các yêu cầu ARP và ICMP sẽ được tự động đáp lại, các gói tin UDP, TCP sẽ được xử lý trong Spi_Ethernet_UserUDP, Spi_Ethernet_UserTCP.
unsinged char Spi_Ethernet_doPacket();
Giá trị trả về: 0-không có gói tin hoặc xử lý gói tin thành công.
1-quá trình nhận bức điện có lỗi hoặc vùng đệm nhận lỗi 2-nhận bức điện sai địa chỉ ip
3-nhận bức điện không phải phiên bản Ipv4
4-kiểu của bức điện không được định nghĩa trong thư viện
3.Spi_Ethernet_putByte: Hàm lưu một byte vào địa chỉ hiện tại xác định bởi EWRPT.
v: giá trị cần ghi
4.Spi_Ethernet_getByte: hàm đọc 1 byte trong RAM có địa chỉ xác định bởi ERDPT
unsigned char Spi_Ethernet_getByte();
5.Spi_Ethernet_UserTCP: Hàm xử lý gói tin TCP. Hàm này được gọi bởi hàm Spi_Ethernet_doPacket để xử lý gói tin TCP.
unsigned int Spi_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int
remotePort, unsigned int destPort, unsigned int reqLength); Giá trị trả về của hàm: là số byte gửi trở lại
remotePort , remoteHost: cổng và số ip của nơi gửi destPort: số cổng đích
reqLength: độ dài của dữ liệu gửi
6.Spi_Ethernet_UserUDP: Hàm xử lý gói tin UDP. Hàm này được gọi bởi hàm Spi_Ethernet_doPacket để xử lý gói tin UDP.
unsigned int Spi_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int
remotePort, unsigned int destPort, unsigned int reqLength); Giá trị trả về của hàm: là số byte gửi trở lại
remotePort , remoteHost: cổng và số ip của nơi gửi destPort: số cổng đích
reqLength: độ dài của dữ liệu gửi Ngoài ra còn một số hàm khác như: