Ethernet là kiểu mạng cục bộ (LAN) được sử dụng rộng rãi nhất hiện nay, ứng dụng của nó có mặt ở rất nhiều lĩnh vực của đời sống và trong công nghiệp. Khóa luận tốt nghiệp với đề tài “Module Ethernet trên vi điều khiển PIC18F67J60 và ứng dụng trong đo lường, điều khiển (Phần mềm trên MPLAB)” đã sử dụng phần mềm MPLAB và thư viện TCPIP Stack của hãng Microchip để lập trình điều khiển LED, LCD và đo lường thông qua mạng truyền thông Ethernet. Khóa luận bao gồm những nội dung chính cơ bản như sau: Chương 1. Tổng quan về Ethernet trình bày về lý thuyết Ethernet gồm các vấn đề về cấu trúc khung tin Ethernet, phương pháp truy nhập bus (CSMACD), các loại mạng Ethernet và chuẩn Ethernet IEEE 802.3. Chương 2. Họ giao thức TCPIP trình bày kiến thức về họ giao thức TCPIP bao gồm 5 tầng: tầng ứng dụng (Application Layer), tầng giao vận (Transport Layer), tầng liên mạng (Internet Layer), tầng giao tiếp mạng (Network Interface Layer). Trình bày các kiến thức về gói tin IP, TCP, UDP. Chương 3. Phần cứng trình bày các kiến thức về vi điều khiển PIC18F67J60 bao gồm các đặc trưng chung và đặc trưng Ethernet của PIC18F67J60, bộ biến đổi AD, module Ethernet. Các kiến thức về sensor đo nhiệt độ LM35 cũng được trình bày trong chương này. Tiếp theo là phần nguyên lý của mạch demo và phần mạch in. Cuối cùng là hình ảnh mạch demo thực tế sử dụng trong khóa luận. Chương 4. Trình biên dịch MPLAB C18 và web server giới thiệu về trình biên dịch MPLAB C18 và các nội dung liên quan đến việc thiết kế web giao diện như là DHTML, Javascript, CSS, kỹ thuật AJAX. Chương 5. TCPIP Stack chương này trình bày về nhiệm vụ chính của khóa luận đó là sử dụng thư viện TCPIP Stack của Microchip trên phần mềm MPLAB C18 để lập trình cho mạch demo thực hiện đo lường và điều khiển thông qua mạng truyền thông Ethernet. Kết luận. Trình bày các kết quả đã đạt được của khóa luận và đánh giá các kết quả đó. Đồng thời, định hướng một số hướng phát triển của đề tài.
EBOOKBKMT.COM MỞ ĐẦU Ethernet kiểu mạng cục (LAN) sử dụng rộng rãi nay, ứng dụng có mặt nhiều lĩnh vực đời sống cơng nghiệp Khóa luận tốt nghiệp với đề tài “Module Ethernet vi điều khiển PIC18F67J60 ứng dụng đo lường, điều khiển (Phần mềm MPLAB)” sử dụng phần mềm MPLAB thư viện TCP/IP Stack hãng Microchip để lập trình điều khiển LED, LCD đo lường thông qua mạng truyền thơng Ethernet Khóa luận bao gồm nội dung sau: Chương Tổng quan Ethernet trình bày lý thuyết Ethernet gồm vấn đề cấu trúc khung tin Ethernet, phương pháp truy nhập bus (CSMA/CD), loại mạng Ethernet chuẩn Ethernet IEEE 802.3 Chương Họ giao thức TCP/IP trình bày kiến thức họ giao thức TCP/IP bao gồm tầng: tầng ứng dụng (Application Layer), tầng giao vận (Transport Layer), tầng liên mạng (Internet Layer), tầng giao tiếp mạng (Network Interface Layer) Trình bày kiến thức gói tin IP, TCP, UDP Chương Phần cứng trình bày kiến thức vi điều khiển PIC18F67J60 bao gồm đặc trưng chung đặc trưng Ethernet PIC18F67J60, biến đổi A/D, module Ethernet Các kiến thức sensor đo nhiệt độ LM35 trình bày chương Tiếp theo phần nguyên lý mạch demo phần mạch in Cuối hình ảnh mạch demo thực tế sử dụng khóa luận Chương Trình biên dịch MPLAB C18 web server giới thiệu trình biên dịch MPLAB C18 nội dung liên quan đến việc thiết kế web giao diện DHTML, Javascript, CSS, kỹ thuật AJAX Chương TCP/IP Stack chương trình bày nhiệm vụ khóa luận sử dụng thư viện TCP/IP Stack Microchip phần mềm MPLAB C18 để lập trình cho mạch demo thực đo lường điều khiển thơng qua mạng truyền thơng Ethernet Kết luận Trình bày kết đạt khóa luận đánh giá kết Đồng thời, định hướng số hướng phát triển đề tài EBOOKBKMT.COM CHƯƠNG TỔNG QUAN VỀ ETHERNET Ethernet kiểu mạng cục (LAN) sử dụng rộng rãi Hiện thời công nghệ Ethernet thường sử dụng công nghệ sử dụng cáp đôi xoắn 10Mbps Ethernet phát minh trung tâm nghiên cứu Xerox Palo Alto vào năm 1970 tiến sĩ Robert M Metcalfe Nó thiết kế với mục đích phục vụ nghiên cứu “ hệ thống công sở tương lai”, bao gồm trạm cá nhân giới, trạm Xerox Alto Trạm Ethernet chạy với tốc độ xấp xỉ 3Mbps Chuẩn Ethernet 10Mbps xuất năm 1980 phối hợp phát triển hãng : DEC, Intel Xerox Chuẩn có tên DIX Ethernet ( lấy tên theo chữ đầu tên hãng) Uỷ ban 802.3 IEEE lấy DIX Ethernet làm tảng để phát triển Năm 1985, chuẩn 802.3 đời với tên IEEE 802.3 Carrier Sense Multiple Access with Collition Detection (CSMA/CD) Mặc dù không sử dụng tên Ethernet hầu hết người hiểu chuẩn cơng nghệ Ethernet Ngày chuẩn IEEE 802.3 chuẩn thức Ethernet IEEE phát triển chuẩn Ethernet nhiều công nghệ truyền dẫn khác có nhiều loại mạng Ethernet Đặc biệt, với phiên 100 Mbit/s (Fast Ethernet, IEEE 802.3u), Ethernet ngày đóng vai trò quan trọng hệ thống công nghiệp Bên cạnh việc sử dụng cáp đồng trục, đôi dây xoắn cáp quang, gần Ethernet không dây (Wireless LAN, IEEE 802.11) thu hút quan tâm lớn 1.1 Cấu trúc khung tin Ethernet Các chuẩn Ethernet hoạt động tầng Data Link mơ hình lớp OSI đơn vị liệu mà trạm trao đổi với khung (frame) Cấu trúc khung Ethernet sau: Bảng 1: Cấu trúc khung MAC theo IEEE 802.3/ Ethernet Mở đầu SFD 555…5H (D5H) byte Địa đích byte Địa nguồn Độ dài kiểu gói Dữ liệu PAD 2/6 byte 2/6 byte byte 46-1500 byte FCS byte EBOOKBKMT.COM - Preamble (mở đầu): trường đánh dấu xuất khung bit, ln mang giá trị 10101010 Từ nhóm bit này, phía nhận tạo xung đồng hồ 10 Mhz - SFD (start frame delimiter): trường thực xác định bắt đầu khung Nó ln mang giá trị 10101011 - Các trường Destination Source: mang địa vật lý trạm nhận gửi khung, xác định khung gửi từ đâu gửi tới đâu - LEN: giá trị trường nói lên độ lớn phần liệu mà khung mang theo - FCS mang CRC (cyclic redundancy checksum): phía gửi tính tốn trường trước truyền khung Phía nhận tính tốn lại CRC theo cách tương tự Nếu hai kết trùng nhau, khung xem nhận đúng, ngược lại khung coi lỗi bị loại bỏ 1.2 Cấu trúc địa Ethernet Mỗi giao tiếp mạng Ethernet định danh 48 bit địa (6 octet) Đây địa ấn định sản xuất thiết bị, gọi địa MAC (Media Access Control Address ) Địa MAC biểu diễn chữ số hexa ( hệ số 16 ) Ví dụ:00:60:97:8F:4F:86 00-60-97-8F-4F-86 Khn dạng địa MAC chia làm phần: - octet đầu xác định hãng sản xuất, chịu quản lý tổ chức IEEE - octet sau nhà sản xuất ấn định Kết hợp ta lẽ có địa MAC cho giao tiếp mạng Ethernet Địa MAC sử dụng làm địa nguồn địa đích khung Ethernet 1.3 Các loại khung Ethernet 1.3.1 Các khung unicast Giả sử trạm cần truyền khung tới trạm Khung Ethernet trạm tạo có địa chỉ: - MAC nguồn: 00-60-08-93-DB-C1 - MAC đích: 00-60-08-93-AB-12 EBOOKBKMT.COM Hình 1: Mơ hình truyền thông unicast Đây khung unicast Khung truyền tới trạm xác định Tất trạm phân đoạn mạng nhận khung nhưng: - Chỉ có trạm thấy địa MAC đích khung trùng với địa MAC giao tiếp mạng nên tiếp tục xử lý thông tin khác khung - Các trạm khác sau so sánh địa bỏ qua không tiếp tục xử lý khung 1.3.2 Các khung broadcast Các khung broadcast có địa MAC đích FF-FF-FF-FF-FF-FF Khi nhận khung này, không trùng với địa MAC giao tiếp mạng trạm phải nhận khung tiếp tục xử lý Giao thức ARP sử dụng khung broadcast để tìm địa MAC tương ứng với địa IP cho trước Một số giao thức định tuyến sử dụng khung broadcast để router trao đổi bảng định tuyến 1.3.3 Các khung multicast Trạm nguồn gửi khung tới số trạm định tất Địa MAC đích khung địa đặc biệt mà trạm nhóm chấp nhận khung gửi tới địa 1.4 Truy nhập bus Một vấn đề lớn thường gây lo ngại việc sử dụng Ethernet cấp trường phương pháp truy nhập bus ngẫu nhiên CSMA/CD ( Carrier Sense Multiple Access with Collision Avoidance ) ảnh hưởng tới hiệu suất tính thời gian EBOOKBKMT.COM thực hệ thống Ở đây, yếu tố định tới hiệu suất hệ thống thuật tốn tính thời gian truy nhập lại cho trạm trường hợp xảy xung đột Hình 2: Minh họa phương pháp CSMA/CD Nguyên tắc làm việc phương pháp CSMA/CD: Theo phương pháp CSMA/CD, trạm có quyền truy nhập bus mà khơng cần kiểm sốt Phương pháp tiến hành sau: - Mỗi trạm phải tự nghe đường dẫn (carrier sense), đường dẫn rỗi (không có tín hiệu ) phát - Do việc lan truyền tín hiệu cần thời gian đó, nên có khả hai trạm phát tín hiệu lên đường dẫn Chính vậy, phát trạm phải nghe đường dẫn để so sánh tín hiệu phát với tín hiệu nhận xem có xảy xung đột hay khơng (collision detection) - Trong trường hợp xảy xung đột, trạm phải hủy bỏ điện mình, chờ thời gian ngẫu nhiên thử gửi lại Một tình xảy xung đột tiêu biểu cách khắc phục minh họa hình Trạm A C nghe đường dẫn Đường dẫn rỗi nên A gửi trước Trong tín hiệu từ trạm A gửi chưa kịp tới nên trạm C không hay biết EBOOKBKMT.COM gửi, gây xung đột điểm gần C A C nhận tín hiệu phản hồi, so sánh với tín hiệu gửi phát xung đột Cả hai trạm phải hủy bỏ điện gửi cách không phát tiếp, trạm muốn nhận không nhận cờ hiệu kết thúc điện coi điện không hợp lệ A C gửi tín hiệu “ jam” đặc biệt để báo cho trạm cần nhận biết Sau trạm chờ thời gian chờ ngẫu nhiên, trước thử phát lại Thời gian chờ ngẫu nhiên nhiên phải tính theo thuật tốn để cho thời gian chờ ngắn cách hợp lí khơng giống trạm chờ Thông thường thời gian chờ bội số hai lần thời gian lan truyền tín hiệu Ts Ưu điểm CSMA/CD tính chất đơn giản, linh hoạt Khác với phương pháp tiền định, việc ghép thêm hay bỏ trạm mạng không ảnh hưởng tới hoạt động hệ thống Chính vậy, phương pháp áp dụng rộng rãi mạng Ethernet Nhược điểm CSMA/CD tính chất bất định thời gian phản ứng Các trạm bình đẳng nên q trình chờ trạm lặp lặp lại, không xác định tương đối xác thời gian Hiệu suất sử dụng đường truyền thấp Rõ ràng, khơng kết hợp thêm với kỹ thuật khác phương pháp khơng thích hợp với cấp thấp, đòi hỏi trao đổi liệu định kỳ, thời gian thực 1.5 Các loại mạng Ethernet IEEE phát triển chuẩn Ethernet nhiều cơng nghệ truyền dẫn khác có nhiều loại mạng Ethernet Mỗi loại mạng mô tả dựa theo ba yếu tố: tốc độ, phương thức tín hiệu sử dụng đặc tính đường truyền vật lý 1.5.1 Các hệ thống Ethernet 10Mb/s - 10Base5 Đây tiêu chuẩn Ethernet đầu tiên, dựa cáp đồng trục loại dày Tốc độ đạt 10 Mb/s, sử dụng băng tần sở, chiều dài cáp tối đa cho phân đoạn mạng 500m - 10Base2 Có tên khác “thin Ethernet” , dựa hệ thống cáp đồng trục mỏng với tốc độ 10 Mb/s, chiều dài cáp tối đa phân đoạn 185 m (IEEE làm tròn thành 200m) - 10BaseT Chữ T viết tắt “twisted”: cáp xoắn cặp 10BaseT hoạt động tốc độ 10 Mb/s dựa hệ thống cáp xoắn cặp Cat trở lên EBOOKBKMT.COM - 10BaseF F viết tắt Fiber Optic ( sợi quang) Đây chuẩn Ethernet dùng cho sợi quang hoạt động tốc độ 10 Mb/s , đời năm 1993 1.5.2 Các hệ thống Ethernet 100 Mb/s – Ethernet cao tốc ( Fast Ethernet ) - 100BaseT Chuẩn Ethernet hoạt động với tốc độ 100 Mb/s cắp xoắn cặp lẫn cáp sợi quang - 100BaseX Chữ X nói lên đặc tính mã hóa đường truyền hệ thống (sử dụng phương pháp mã hoá 4B/5B chuẩn FDDI) Bao gồm chuẩn 100BaseFX 100BaseTX: 100BaseFX Tốc độ 100Mb/s, sử dụng cáp sợi quang đa mode 100BaseTX Tốc độ 100Mb/s, sử dụng cắp xoắn cặp 100BaseT2 100BaseT4 Các chuẩn sử dụng cặp cặp cáp xoắn cặp Cat trở lên nhiên hai chuẩn sử dụng 1.5.3 Các hệ thống Giga Ethernet - 1000BaseX Chữ X nói lên đặc tính mã hố đường truyền ( chuẩn dựa kiểu mã hoá 8B/10B dùng hệ thống kết nối tốc độ cao Fibre Channel phát triển ANSI) Chuẩn 1000BaseX gồm loại: 1000Base-SX: tốc độ 1000 Mb/s, sử dụng sợi quang với sóng ngắn 1000Base-LX: tốc độ 1000 Mb/s, sử dụng sợi quang với sóng dài 1000Base-CX: tốc độ 1000 Mb/s, sử dụng cáp đồng - 1000BaseT Hoạt động tốc độ Giga bit, băng tần sở cáp xoắn cặp Cat trở lên Sử dụng kiểu mã hoá đường truyền riêng để đạt tốc độ cao loại cáp 1.6 Chuẩn IEEE 802 IEEE 802 họ chuẩn IEEE dành cho mạng LAN mạng MAN (metropolitan area network) Cụ thể hơn, chuẩn IEEE 802 giới hạn cho mạng mang gói tin có kích thước đa dạng (Khác với mạng này, liệu mạng cell-based truyền theo đơn vị nhỏ có kích thước gọi cell Các mạng Isochronous, nơi liệu truyền theo dòng liên tục octet, nhóm octet, khoảng thời gian đặn, nằm phạm vi chuẩn này) EBOOKBKMT.COM Các dịch vụ giao thức đặc tả IEEE 802 ánh xạ tới hai tầng thấp (tầng liên kết liệu tầng vật lý mô hình tầng OSI Thực tế, IEEE 802 chia tầng liên kết liệu OSI thành hai tầng LLC (điều khiển liên kết lôgic) MAC (điều khiển truy nhập mơi trường truyền), tầng liệt kê sau: - Tầng liên kết liệu - Tầng LLC - Tầng MAC - Tầng vật lý Họ chuẩn IEEE 802 bảo trì Ban Tiêu chuẩn LAN/MAN IEEE 802 (IEEE 802 LAN/MAN Standards Committee (LMSC)) Các chuẩn dùng rộng rãi dành cho họ Ethernet, Token Ring, mạng LAN không dây, mạng LAN dùng bridge bridge ảo (Bridging and Virtual Bridged LANs) Chuẩn dành cho họ Ethernet chuẩn IEEE 802.3 EBOOKBKMT.COM CHƯƠNG HỌ GIAO THỨC TCP/IP 2.1 Họ giao thức TCP/IP TCP/IP viết tắt Transmission Control Protocol / Internet Protocol (Giao thức Điều Khiển Truyền Thông /Giao thức Internet) TCP/IP không gồm giao thức mà thực tế tập hợp nhiều giao thức TCP/IP sử dụng mơ hình truyền thơng tầng hay gọi mơ hình DoD (Mơ hình Bộ Quốc Phòng Mỹ) Các tầng mơ hình là: - Tầng Ứng Dụng (Application Layer) - Tầng Giao Vận (Transport Layer) - Tầng Liên Mạng (Internet Layer) - Tầng Giao Tiếp Mạng (Network Interface Layer) Hình 3: Cấu trúc họ giao thức TCP/IP 2.1.1 Tầng Ứng Dụng (Application Layer) Gồm nhiều giao thức cung cấp cho ứng dụng người dùng Được sử dụng để định dạng trao đổi thông tin người dùng số giao thức thông dụng tầng là: - DHCP (Dynamic Host Configuration Protocol): Giao thức cấu hình trạm động - DNS (Domain Name System): Hệ thống tên miền EBOOKBKMT.COM - SNMP (Simple Network Management Protocol): Giao thức quản lý mạng đơn giản - FTP (File Transfer Protocol): Giao thức truyền tập tin - TFTP (Trivial File Transfer Protocol): Giao truyền tập tin bình thường - SMTP (Simple Mail Transfer Protocol): Giao thức gửi thư đơn giản - TELNET: chương trình mơ thiết bị đầu cuối cho phép người dùng login vào máy chủ từ máy tính mạng Tầng ứng dụng trao đổi liệu với lớp (lớp vận chuyển) qua cổng Việc dùng cổng số cho phép giao thức lớp vận chuyển biết loại nội dung chứa bên gói liệu Những cổng đánh số ứng dụng chuẩn thường dùng cổng Ví dụ: giao thức FTP dùng cổng 20 cho liệu cổng 21 cho điều khiển, giao thức SMTP dùng cổng 25… 2.1.2 Tầng Giao Vận (Transport Layer) Có trách nhiệm thiết lập phiên truyền thơng máy tính quy định cách truyền liệu giao thức tầng gồm: - UDP (User Datagram Protocol): Còn gọi Giao Thức Gói Người Dùng UDP cung cấp kênh truyền thông phi kết nối nên khơng đảm bảo truyền liệu cách tin cậy Các ứng dụng dùng UDP thường truyền gói có kích thước nhỏ, độ tin cậy liệu phụ thuộc vào ứng dụng - TCP (Transmission Control Protocol): Ngược lại với UDP, TCP cung cấp kênh truyền thông hướng kết nối đảm bảo truyền liệu cách tin cậy TCP thường truyền gói tin có kích thước lớn u cầu phía nhận xác nhận gói tin nhận 2.1.3 Tầng Internet (Internet Layer) Nằm bên tầng truy nhập mạng Tầng có chức gán địa chỉ, đóng gói định tuyến (Route) liệu giao thức quan trọng tầng gồm: - IP (Internet Protocol): Có chức gán địa cho liệu trước truyền định tuyến chúng tới đích - ARP (Address Resolution Protocol): Có chức biên dịch địa IP máy đích thành địa MAC 10 EBOOKBKMT.COM LED4_IO = (*ptr == '1'); ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led3"); if(ptr) LED3_IO = (*ptr == '1'); ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led2"); if(ptr) LED2_IO = (*ptr == '1'); ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led1"); if(ptr) LED1_IO = (*ptr == '1'); } return HTTP_IO_DONE; } Đầu tiên, hàm MPFSGetFilename gọi để kiểm tra trang forms.htm truy cập Hàm MPFSGetFilename đọc tên file truy cập lưu vào biến filename Sau ta sử dụng memcmppgm2ram(filename, "forms.htm", 9) để so sánh xem biến filename có giá trị "forms.htm" hay khơng Nếu giống hàm trả lại giá trị Hàm HTTPGetROMArg tìm kiếm mảng curHTTP.data để tìm giá trị đối số đưa sau thực phương pháp GET, cụ thể đoạn code led1, led2, led3, led4 Hàm trả lại trỏ, trỏ đến giá trị đối số mảng curHTTP.data Sau gán giá trị thích hợp cho led tương ứng 5.5.2 Viết LCD - Gõ đường link trình duyệt http:/192.168.1.2/forms.htm - Viết chuỗi kí tự vào trống bấm nút Save - Kiểm tra hình LCD board xem có hiển thị chuỗi mà ta yêu cầu hay khơng 51 EBOOKBKMT.COM Code file forms.htm: Hình 29: Code phần LCD file forms.htm 5.5.2.1 HTTPExecutePost Hàm HTTPExecutePost thực số nhiệm vụ: - Đầu tiên, lấy tên trang web truy cập lưu biến curHTTP.file gán cho biến filename cách sử dụng hàm MPFSGetFilename - Kiểm tra trang web truy cập forms.htm thực hàm HTTPPostLCD() - Thực hàm HTTPPostLCD Code: HTTP_IO_RESULT HTTPExecutePost(void) { // Resolve which function to use and pass along BYTE filename[20]; // Load the file name // Make sure BYTE filename[] above is large enough for your longest name MPFSGetFilename(curHTTP.file, filename, sizeof(filename)); #if defined(USE_LCD) if(!memcmppgm2ram(filename, "forms.htm", 9)) return HTTPPostLCD(); #endif return HTTP_IO_DONE; } 52 EBOOKBKMT.COM 5.5.2.2 Hàm HTTPPostLCD - Xác định thông số LCD sử dụng để cập nhật dòng văn lên hình LCD mạch - Hàm có trạng thái Đầu tiên đọc tên từ chuỗi liệu trả lại từ phương pháp POST Nếu tên khơng tìm thấy tiếp tục hỏi nhiều liệu Hay nói cách khác, tên mong đợi đọc giá trị liên quan ghi lên hình LCD Nếu tên không mong đợi, giá trị liên quan loại bỏ thông số tên đọc - Trong trường hợp, chuỗi mong đợi khơng tìm thấy hàm trả lại HTTP_IO_NEED_DATA khơng liệu Trong trường hợp này, HTTP2 server bắt lỗi và phát Internal Server Error đến trình duyệt - Các giá trị trả lại: HTTP_IO_DONE : Nếu tham số tìm thấy lưu HTTP_IO_WAITING : Hàm bị dừng lại tiếp tục sau HTTP_IO_NEED_DATA : Dữ liệu mà hàm cần chưa có Code: static HTTP_IO_RESULT HTTPPostLCD(void) { BYTE* cDest; #define SM_POST_LCD_READ_NAME (0u) #define SM_POST_LCD_READ_VALUE (1u) switch(curHTTP.smPost) { // Find the name case SM_POST_LCD_READ_NAME: // Read a name if(HTTPReadPostName(curHTTP.data, HTTP_MAX_DATA_LEN) == HTTP_READ_INCOMPLETE) 53 EBOOKBKMT.COM return HTTP_IO_NEED_DATA; curHTTP.smPost = SM_POST_LCD_READ_VALUE; // No break continue reading value // Found the value, so store the LCD and return case SM_POST_LCD_READ_VALUE: // If value is expected, read it to data buffer, // otherwise ignore it (by reading to NULL) if(!strcmppgm2ram((char*)curHTTP.data, (ROM char*)"lcd")) cDest = curHTTP.data; else cDest = NULL; // Read a value string if(HTTPReadPostValue(cDest,HTTP_MAX_DATA_LEN)== HTTP_READ_INCOMPLETE) return HTTP_IO_NEED_DATA; // If this was an unexpected value, look for a new name if(!cDest) { curHTTP.smPost = SM_POST_LCD_READ_NAME; break; } // Copy up to 32 characters to the LCD if(strlen((char*)cDest) < 32u) { memset(LCDText, ' ', 32); strcpy((char*)LCDText, (char*)cDest); 54 EBOOKBKMT.COM } else { memcpy(LCDText, (void *)cDest, 32); } LCDUpdate(); // This is the only expected value, so callback is done strcpypgm2ram((char*)curHTTP.data, "/forms.htm"); curHTTP.httpStatus = HTTP_REDIRECT; return HTTP_IO_DONE; } // Default assumes that we're returning for state machine convenience // Function will be called again later return HTTP_IO_WAITING; } #endif Hàm HTTPReadPostName: - Cú pháp: HTTP_READ_STATUS HTTPReadPostName ( BYTE* cData, WORD wLen ); cData: để lưu trữ tên đọc wLen: độ dài biến cData - Giá trị trả lại: HTTP_READ_OK : Tên đọc thành cơng HTTP_READ_TRUNCTATED : Tồn tên khơng phù hợp đệm, giá trị bị cắt ngắn liệu bị 55 EBOOKBKMT.COM HTTP_READ_INCOMPLETE : Tên chưa lưu vào đệm, hàm gọi lại sau Đọc tên từ chuỗi URL mã hóa Hàm gọi từ hàm callback HTTPExecutePost, làm cho việc phân tích liệu gửi đến cách dễ dàng Hàm ngăn chặn việc tràn đệm cách buộc người lập trình xác định rõ cần byte Hàm đọc gặp kí tự “=” ( kí tự “=” để đánh kết thúc tham số tên) Hàm HTTPReadPostValue: - Cú pháp: HTTP_READ_STATUS HTTPReadPostValue( BYTE* cData, WORD wLen ); cData: để lưu trữ giá trị đọc wLen: độ dài biến cData - Giá trị trả lại: HTTP_READ_OK : Giá trị đọc thành công HTTP_READ_TRUNCTATED : Tồn giá trị khơng phù hợp đệm, giá trị bị cắt ngắn liệu bị HTTP_READ_INCOMPLETE : Toàn giá trị chưa lưu vào đệm, hàm gọi lại sau Đọc giá trị từ chuỗi URL mã hóa Hàm gọi từ hàm callback HTTPExecutePost, làm cho việc phân tích liệu gửi đến cách dễ dàng Hàm ngăn chặn việc tràn đệm cách buộc người lập trình xác định rõ cần byte Hàm đọc gặp kí tự “&” ( kí tự “&” để đánh kết thúc tham số giá trị) 56 EBOOKBKMT.COM 5.5.3 Đo nhiệt độ - Gõ đường link trình duyệt http:/192.168.1.2/ dynvars.htm - Theo dõi nhiệt độ đo Hình 30: Hiển thị giá trị nhiệt độ web Để đo giá trị nhiệt độ em sử dụng IC LM35 để biến thông số nhiệt độ thành điện áp đưa vào biến đổi A/D 10 bit (AN4) Giá trị điện áp biến đổi thành giá trị số tương ứng Giá trị số tính tốn theo cơng thức chuẩn để trở thành giá trị nhiệt độ thực tế Tham số nhiệt độ biến động nên sử dụng hàm gọi lại HTTPPrint_pot để thực việc hiển thị tham số nhiệt độ 5.5.3.1 Hàm HTTPPrint_pot void HTTPPrint_pot(void) { BYTE AN0String[8]; WORD ADval; 57 EBOOKBKMT.COM #if defined( 18CXX) // Wait until A/D conversion is done ADCON0bits.GO = 1; //A/D conversion status bit while(ADCON0bits.GO); // Convert 10-bit value into ASCII string ADval = (WORD)ADRES; ADval *= (WORD)330; ADval /= (WORD)1024; uitoa(ADval, AN0String); #else ADval = (WORD)ADC1BUF0; //ADval *= (WORD)10; //ADval /= (WORD)102; uitoa(ADval, (BYTE*)AN0String); #endif TCPPutString(sktHTTP, AN0String); } Trong ADCON0bits.GO=1 tức biến đổi A/D hoạt động ta gán giá trị biến đổi ghi chứa kết ADRES cho biến Adval Sau áp dụng công thức chuyển đổi từ giá trị số sau phép biến đổi A/D thành giá trị nhiệt độ sau: Adval= ((Adval*3.3)/1024)*100 ( giá trị 3.3 giá trị V REF) Tiếp theo ép kiểu biến Adval thành kiểu byte lưu vào biến AN0String Cuối sử dụng hàm TCPPutString để lưu giá trị biến AN0String vào socket TCP 58 EBOOKBKMT.COM 5.5.3.2 Code file dynvars.htm Hình 31: Code file dynvars.htm Do tham số nhiệt độ biến động thay đổi theo thời gian phải sử dụng câu lệnh javascript để cập nhật giá trị nhiệt độ theo thời gian Đó sử dụng hàm setTimeout để cập nhật biến nhiệt độ 59 EBOOKBKMT.COM KẾT LUẬN Việc thiết kế Module Ethernet vi điều khiển PIC18F67J60 nhằm ứng dụng đo lường điều khiển có ý nghĩa lớn, ứng dụng nhiều lĩnh vực đời sống xã hội công nghiệp Ngoài ra, module Ethernet vi điều khiển PIC18F67J60 phục vụ tốt cho việc học tập nghiên cứu sinh viên Việc xây dựng module liên quan đến nhiều mảng kiến thức, từ kiến thức lý thuyết kiến thức thực tiễn Những kết thực - Tìm hiểu ngun lý chung chuẩn truyền thông Ethernet IEEE 802.3 quy định, tìm hiểu kiến thức họ giao thức TCP/IP - Kết nối thành cơng mạch mạch demo với máy tính thơng qua chuẩn truyền thơng Ethernet - Lập trình cho mạch demo phần mềm MPLAB C18, sử dụng thư viện TCP/IP Stack hãng Microchip để thực điều khiển ứng dụng bật tắt đèn LED, viết lên LCD chuỗi kí tự đo tham số nhiệt độ qua web giao diện - Lập trình web giao diện để đo lường, điều khiển mạch demo máy tính Đánh giá kết đạt - Điều khiển xác đèn LED viết xác chuỗi kí tự mà ta mong muốn lên LCD, kết đo nhiệt độ xác với sai số nằm phạm vi cho phép Mạch hoạt động ổn định - Tuy nhiên, số mặt hạn chế đề tài thực kết nối trực tiếp mạch demo với máy tính thơng qua chuẩn truyền thơng Ethernet mà chưa thực kết nối mạch với switch - Với kết bước đầu kết nối thành cơng mạch demo với máy tính thơng qua chuẩn truyền thông Ethernet thực đo lường điều khiển số ứng dụng khẳng định khả phát triển đề tài 60 EBOOKBKMT.COM Hướng phát triển đề tài: Trong thời gian tới, em tiếp tục nghiên cứu phát triển đề tài theo số hướng sau đây: - Kết nối mạch với switch - Thực ứng dụng điều khiển đo lường phức tạp để phục vụ cho sống điều khiển nhà thông minh qua internet phục vụ công nghiệp, thay chuẩn truyền thông cũ RS485, RS232… 61 EBOOKBKMT.COM MỤC LỤC MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ ETHERNET 1.1 Cấu trúc khung tin Ethernet 1.2 Cấu trúc địa Ethernet 1.3 Các loại khung Ethernet 1.3.1 Các khung unicast .3 1.3.2 Các khung broadcast 1.3.3 Các khung multicast 1.4 Truy nhập bus 1.5 Các loại mạng Ethernet .6 1.5.1 Các hệ thống Ethernet 10Mb/s 1.5.2 Các hệ thống Ethernet 100 Mb/s – Ethernet cao tốc ( Fast Ethernet ) 1.5.3 Các hệ thống Giga Ethernet .7 1.6 Chuẩn IEEE 802 .7 CHƯƠNG HỌ GIAO THỨC TCP/IP 2.1 Họ giao thức TCP/IP 2.1.1 Tầng Ứng Dụng (Application Layer) 2.1.2 Tầng Giao Vận (Transport Layer) 10 2.1.3 Tầng Internet (Internet Layer) 10 2.1.4 Lớp giao tiếp mạng 11 2.2 Cấu trúc gói tin IP,TCP,UDP 11 2.2.1 Cấu trúc địa IP 11 2.2.2 Cấu trúc gói tin IP 12 2.2.3 Cấu trúc gói tin TCP .14 2.2.4 Cấu trúc gói tin UDP .15 62 EBOOKBKMT.COM CHƯƠNG PHẦN CỨNG 16 3.1 Vi điều khiển PIC 18F67J60 16 3.1.1 Các đặc trưng PIC 18F67J60 16 3.1.2 Module A/D 10 bit 17 3.1.3 Module Ethernet 20 3.2 Cảm biến nhiệt độ LM35 21 3.3 Mạch nguyên lý 22 3.3.1 Khối mạch nguồn 22 3.3.2 Khối mạch RJ45 23 3.3.3 Khối mạch LCD .24 3.3.4 Khối mạch vi điều khiển PIC18F67J60 25 3.4 Mạch in 26 3.5 Mạch thực tế 27 CHƯƠNG TRÌNH BIÊN DỊCH MPLAB C18 VÀ WEB SERVER 28 4.1 MPLAB C18 28 4.1.1 Giới thiệu 28 4.1.2 Các đặc trưng trình dịch MPLAB C18: 28 4.1.3 Quá trình tạo file HEX .28 4.2 Web động 29 4.3 CSS 30 4.3.1 Ưu điểm CSS .31 4.3.2 Các đặc tính CSS 31 4.3.3 CSS có tính kế thừa tính kết hợp 33 4.4 Kỹ thuật AJAX .34 4.4.1 Ưu điểm 36 4.4.2 Nhược điểm 36 63 EBOOKBKMT.COM CHƯƠNG TCP/IP STACK 37 5.1 Cấu trúc TCP/IP Stack .37 5.2 Hoạt động TCP/IP Stack 38 5.2.1 Các file cần thiết .38 5.2.2 Cấu trúc APP_CONFIG 39 5.2.3 Main file 39 5.3 Các module Stack APIs .40 5.3.1 Announce 40 5.3.2 HTTP2 server 41 5.4 Cấu hình cho Stack 45 5.4.1 Cấu hình cho phần cứng 45 5.4.2 Địa .46 5.5 Demo module 47 5.5.1 Điều khiển led sáng tắt 48 5.5.2 Viết LCD .51 5.5.3 Đo nhiệt độ 57 KẾT LUẬN 60 64 EBOOKBKMT.COM 65 ... cho vi c kiểm tra lỗi phần header phần liệu CHƯƠNG PHẦN CỨNG 15 EBOOKBKMT.COM 3.1 Vi điều khiển PIC 18F67J60 3.1.1 Các đặc trưng PIC 18F67J60 Vi điều khiển PIC18F67J60 vi điều khiển thuộc dòng vi. .. PCFG3:PCFG0 – bit điều khiển vi c cấu hình cho chân A/D Hình 6: Các bit điều khiển cấu hình cho chân A/D Chú thích: (1): AN12-AN15 có vi điều khiển 80 100 chân (2): AN5 có vi điều khiển 100 chân... Ethernet Vi điều khiển PIC18F67J60 tích hợp sẵn module điều khiển Ethernet Đây giải pháp kết nối hoàn chỉnh, bao gồm module Media Access Control (MAC) Physical Layer transceiver (PHY) Module Ethernet