ĐỒ ÁN TỐT NGHIỆP ĐIỆN tử CẢI TIẾN ĐIỀU KHIỂN THIẾT BỊ QUA INTERNET
LỜI NÓI ĐẦU
Hiện nay đất nước ta đang chuyển mình theo sự phát triển chung của thế giới và khu vực Châu Á bằng nền sản xuất đa dạng và đầy tiềm năng. Nền sản xuất này không chỉ đòi hỏi một số lượng lao động khổng lồ mà còn yêu cầu về trình độ, chất lượng tay nghề, kỹ thuật lao động và thiết bị sản xuất. Trên đà phát triển đó, vấn đề tự động hoá trong quá trình sản xuất, nghiên cứu trở thành một nhu cầu cần thiết. Thoạt đầu vấn đề tự động hoá được thực hiện riêng lẻ từ cơ khí hoá đến các mạch điện tử. Ngày nay, với sự xuất hiện cuả các Chip vi xử lý và máy tính cùng với việc sử dụng rộng rãi của nó đã đẩy vấn đề tự động hoá lên một bước cao hơn và thời lượng nhanh hơn …
Trong đó, việc ứng dụng Máy Vi Tính vào kỹ thuật điều khiển đã đem lại những kết quả đầy tính ưu việc. Các thiết bị, hệ thống đo lường và điều khiển ghép nối với Máy Vi Tính có độ chính xác cao, thời gian thu thập số liệu ngắn. Ngoài ra, máy tính còn có phần giao diện lên màn hình rất tiện lợi cho người sử dụng.
Việc dùng máy tính để điều khiển và thông tin liên lạc với nhau thì vấn đề truyền dữ liệu rất quan trọng. Hiện nay chúng ta có thể dùng máy tính để liên lạc với nhau thông qua hệ thống mạng như: mạng cục bộ (LAN) hay mạng toàn cầu Internet. Do đó, trong phạm vi hiểu biết cuả mình, chúng em đã tìm hiểu và thực hiện đề tài: “Điều khiển thiết bị từ xa thông qua Internet”.
MỤC LỤC
CHƯƠNG DẪN NHẬP. 2
1.1. Đặt vấn đề. 2
1.2. Tầm quan trọng của đề tài 2
1.3. Giới hạn của đề tài 2
1.4. Mục đích của đề tài 2
1.5. Đối tượng nghiên cứu. 3
1.6. Danh mục từ viết tắt. 3
CHƯƠNG II : 4
TỔNG QUAN VẾ MANG INTERNET. 4
2.1. Giới thiệu. 4
2.2. Hoạt động của mạng internet. 5
2.3. Kết nối internet. 6
2.4. Giao thức TCP/IP. 6
2.5. Công nghệ Ethernet. 8
CHƯƠNG III : 10
GIỚI THIỆU BỘ THƯ VIỆN TCP/IP STACK CỦA MICROCHIP. 10
3.1 Sơ lược về TCP/IP Stack của Microchip. 10
3.2 Các lớp chức năng trong TCP/IP Stack. 12
3.3 Sử dụng TCP/IP stack. 16
3.3.1. HTTP2 Server. 17
3.3.2. Web pages. 18
3.3.3. Tiện ích MPFS2. 19
3.3.4. Giao diện web. 22
3.4 FTP Server. 25
CHƯƠNG IV: 26
THI CÔNG MẠCH.. 26
4.1. Giới thiệu linh kiện trong mạch. 26
4.1.1. ENC28J60. 26
4.1.2. RJ45. 37
4.1.3. EEPROM 25LC 256. 39
4.1.4. IC đệm 74HC245. 43
4.1.5. PIC 18F4620. 44
4.2. Giới thiệu chuẩn giao tiếp SPI 50
4.2.1. Khái quát. 50
4.2.2. Truyền dữ liệu. 53
4.2.3. Các chế độ hoạt động. 55
4.3. Sơ đồ khối board điều khiển. 56
4.4. Sơ đồ nguyên lí 58
4.5. Lưu đồ giải thuật và chương trình. 64
4.5.1. Lưu đồ giải thuật. 64
4.5.2. Chương trình. 65
4.6. Kết quả đạt được. 75
4.6.1. Mô hình diều khiển qua mạng LAN.. 75
4.6.2. Mô hình diều khiển qua mạng Internet. 76
KẾT LUẬN.. 81
5.1. Các vấn đề đã ngiên cứu và làm được. 81
5.2. Tự đánh giá. 81
5.3. Hướng phát triển đề tài 82
PHỤ LỤC – PHỤ ĐÍNH.. 82
CHƯƠNG DẪN NHẬP
- Đặt vấn đề
- Ngày nay, khi công nghiệp ngày càng phát triển thì nhu cầu điều khiển được đặt lên hàng đầu. Xuất phát từ nhu cầu đó điện tử tự động hoá ra đời và nó đã được xếp trong nhóm 5 ngành khoa học công nghệ hàng đầu vì những ứng dụng rộng rãi của nó. Song song với sự ra đời của điện tử tự động hoá là sự ra đời và cải tiến không ngừng của máy tính. Từ những chiếc máy tính đời đầu chỉ thực hiện những phép tính đơn giản ngày nay máy tính có tốc độ xử lý rất cao, nó có thể xử lý hàng tỉ phép tính phức tạp trong vòng một giây. Để khai thác được những ưu điểm đó điện tử tự động hoá đã có sự bắt tay với máy vi tính. Nhờ có máy vi tính mà chúng ta có thể làm được nhiều công việc mà không phải tốn nhiều công sức. Xuất phát từ thực tế đó, bằng những kiến thức đã được học và sự giúp đở của thầy cô, em đã quyết định tìm hiểu về đề tài “điều khiển thiết bị qua Internet”.
- Tầm quan trọng của đề tài
- Đây là một đề tài nghiên cứu mang tính thực tiễn trong việc vận dụng các kiến thức đã được học dưới mái trường Cao Đẳng vào trong thực tế.
- Về mặt khoa học, đề tài sẽ giúp cho nhóm sinh viên thực hiện hiểu rõ thêm về Truyền dữ liệu điều khiển và cách điều khiển mạch điện thông qua Internet.
- Về mặt thực tiễn, đề tài này có thể áp dụng vào thực tế để điều khiển một số thiết bị trong nhà như đèn điện, quạt máy..v..v
- Giới hạn của đề tài
Do thời gian thực hiện đề tài có hạn và kiến thức còn hạn chế nên nhóm sinh viên thực hiện đã đưa ra những giới hạn sau:
- Điều khiển cùng lúc tối đa 4 thiết bị.
- Mạch phải hoạt động tốt không bị nhiễu trên đường truyền Internet.
- Mạch phải chạy ổn định trong quá trình làm việc.
- Mục đích của đề tài
- Tìm hiểu vi điều khiển PIC18F4620
- Tìm hiểu phương pháp lập trình C18 cho PIC
- Tìm hiểu IC giao tiếp Ethetnet ENC28J60.
- Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài này chính là:
- Cách thức giao tiếp giữa mạch đo và máy tính.
- Cách thức giao tiếp giữa mạch đo và mạch điều khiển.
- Cách lập trình cho vi điều khiển để cho dữ liệu có thể thu, phát liên tục mà không bị ngắt quãng.
- Cách cân chỉnh mạch đo, đảm bảo độ chính xác của mạch đo.
- Tìm hiểu IC giao tiếp Ethetnet ENC28J60.
- Tìm hiểu vi điều khiển PIC 18F4620
- Danh mục từ viết tắt
- AJAX (Asynchronous JavaScript And XML )
- ARP ( Address Resolution Protocol)
- CGI ( Common Gateway Interface )
- CSS ( Cascading Style Sheets )
- DHCP ( Dynamic Host Configuration Protocol )
- DNS ( Domain Name Service )
- DNS ( Domain Name System )
- FTP ( File Transfer Protocol )
- HTML ( Hyper Text Markup Language )
- HTTP ( Hyper text Transfer Protocol )
- ICMP ( Internet Control Message Protocol )
- IEEE ( Institute of Electrical and Electronics Engineer )
- IP ( Internet Protocol )
- LLC ( Logical Link Control )
- LAN ( Local Area Network )
- MAC ( Media Access Control )
- MPFS ( Microchip File System Store )
- SNMP ( Simple Network Management Protocol )
- TCP ( Transmission Control Protocol )
- UDP ( User Datagram Protocol )
CHƯƠNG II :
TỔNG QUAN VẾ MẠNG INTERNET
- Giới thiệu
Internet là một hệ thống thông tin toàn cầu có thể được truy nhập công cộng gồm các mạng máy tính được liên kết với nhau. Hệ thống này truyền thông tin theo kiểu nối chuyển gói dữ liệu (packet switching) dựa trên một giao thức liên mạng đã được chuẩn hóa (giao thức IP). Hệ thống này bao gồm hàng ngàn mạng máy tính nhỏ hơn của các doanh nghiệp, của các viện nghiên cứu và các trường đại học, của người dùng cá nhân, và các chính phủ trên toàn cầu. Chúng cung cấp một khối lượng thông tin và dịch vụ khổng lồ trên internet.
Mạng Internet mang lại rất nhiều tiện ích hữu dụng cho người sử dụng, một trong các tiện ích phổ thông của Internet là hệ thống thư điện tử (email), trò chuyện trực tuyến (chat), máy truy tìm dữ liệu (search engine), các dịch vụ thương mãi và chuyển ngân, và các dịch vụ về y tế giáo dục như là chữa bệnh từ xa hoặc tổ chức các lớp học ảo.
Nguồn thông tin khổng lồ kèm theo các dịch vụ tương ứng chính là hệ thống các trang Web liên kết với nhau và các tài liệu khác trong WWW (World Wide Web). Trái với một số cách sử dụng thường ngày, Internet và WWW không đồng nghĩa. Internet là một tập hợp các mạng máy tính kết nối với nhau bằng dây đồng, cáp quang, v.v..; còn WWW, hay Web, là một tập hợp các tài liệu liên kết với nhau bằng các siêu liên kết (hyperlink) và các địa chỉ URL, và nó có thể được truy nhập bằng cách sử dụng Internet.
-
Hoạt động của mạng internet
- Các giao thức ( Protocol )
Các giao thức là tập các luật mà các máy tính phải tuân theo khi giao tiếp trên Internet.
- Tranmission Control Protocol (TCP): thiết lập kết nối giữa hai máy tính để truyền tải dữ liệu, chia dữ liệu thành những gói nhỏ và đảm bảo việc truyền nhận dữ liệu. TCP là giao thức hướng kết nối (connection-oriented protocol).
- User Datagram Protocol (UDP): thiết lập kết nối nhanh nhưng không chắc chắn giữa các máy tính để truyền tải dữ liệu, cung cấp ít dịch vụ để khắc phục lỗi.
- Internet Protocol (IP): điều chỉnh đường đi của những gói dữ liệu đường truyền nhận trên Internet. TCP là giao thức phi kết nối (connectionless protocol).
- HTTP: cho phép trao đổi thông tin trên Internet.
- FTP: cho phép truyền nhận file trên Internet.
- SMTP: cho phép gửi thư điện tử trên Internet.
- POP3: cho phép nhận thư điện tử trên Internet.
TCP/IP được dùng làm giao thức chuẩn khi giao tiếp trên Internet vì nó độc lập với nền của hệ thống (platform independent) và không có tổ chức nào có quyền sở hữu giao thức này.
- Địa chỉ IP ( IP Adress )
Internet là một mạng kết nối rộng lớn giữa các máy tính. Để xác định một máy tính trên mạng này, người ta dùng một con số gọi là địa chỉ IP. Địa chỉ IP gồm một tập 4 số nhỏ hơn 255 và được ngăn cách bởi các dấu ‘.’. Ví dụ: 41.212.196.197
- Mô hình khách – chủ ( Client – Server Model )
Internet dựa trên mô hình khách – chủ (client – server), trong đó dữ liệu được trao đổi thông qua các trang web. Trong mô hình client – server, mỗi máy tính được xác định bởi một địa chỉ Internet protocol (IP) và cả máy tính client, server cùng chấp nhận một giao thức chung để để giao tiếp với nhau. Trong mô hình khách - chủ, máy khách (client computer) yêu cầu thông tin từ một máy chủ (server). Máy chủ chấp nhận yêu cầu và gửi thông tin về cho máy khách. Việc trao đổi thông tin này được diễn ra thông qua những trang web.
- Hệ thống tên miền ( DNS – Domain Name System )
Mỗi máy tính trên mạng Internet được xác định bằng địa chỉ IP, nhưng con số này rất khó nhớ. Để khắc phục nhược điểm này, người ta dùng hệ thống tên miền để đặt tên cho máy tính. Ví dụ: tên miền www.yahoo.com ứng với địa chỉ IP 216.109.127.28. request web page Miền (domain) ứng với một tập các máy tính trên Internet. Phần mở rộng của tên miền (domain name extension) được dùng để xác định quốc gia hay tổ chức.
- Kết nối internet
Để kết nối với Internet cần có một số yêu cầu về phần cứng và phần mềm sau:
- Phần cứng: máy tính, kết nối thông qua đường dây điện thoại hoặc kết nối cáp, modem.
- Phần mềm: kết nối internet, hệ điều hành, giao thức TCP/IP, trình duyệt web.
Các yêu cầu thiết yếu khi kết nối với Internet: kết nối với Internet thông qua một nhà cung cấp Internet (Internet Service Provider), modem, trình duyệt và địa chỉ URL.
- Giao thức TCP/IP
TCP/IP là bộ giao thức cho phép kết nối các hệ thống mạng không đồng nhất với nhau. TCP/IP là viết tắt của Transmission Control Protocol (Giao thức Điều Khiển Truyền thông)/Internet Protocol (Giao thức Internet), ngày nay TCP/IP được sử dụng rộng rãi trong các mạng cục bộ cũng như trên mạng Internet toàn cầu. TCP/IP không chỉ gồm 2 giao thức mà thực tế nó là tập hợp của nhiều giao thức. Chúng ta gọi đó là 1 hệ giao thức hay bộ giao thức (Suite Of Protocols).
TCP/IP được xem là giản lược của mô hình tham chiếu OSI với bốn tầng, trong mô hình này là (theo thứ tự từ trên xuống):
+ Tầng ứng dụng (Application Layer)
+ Tầng giao vận (Transport Layer)
+Tầng mạng (Internet Layer)
+ Tầng liên mạng (Network Interface Layer)
Hình 2.1 : Mô hình TCP IP
- Tầng liên mạng (Network Interface Layer): Tầng Liên Mạng có trách nhiệm đưa dữ liệu tới và nhận dữ liệu từ phương tiện truyền dẫn. Tầng này bao gồm các thiết bị giao tiếp mạng (Card Mạng và Cáp Mạng) và chương trình cung cấp các thông tin cần thiết để có thể hoạt động, truy nhập đường truyền vật lý qua thiết bị giao tiếp mạng đó.
- Tầng mạng (Internet Layer): Nằm trên tầng liên mạng. Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu. Bốn giao thức quan trọng nhất trong tầng này gồm:
- IP (Internet Protocol): Có chức năng gán địa chỉ cho dữ liệu trước khi truyền và định tuyến chúng tới đích.
- ARP (Address Resolution Protocol): Có chức năng biên dịch địa chỉ IP của máy đích thành địa chỉ MAC (Media Access Control).
- ICMP (Internet Control Message Protocol): Có chức năng thông báo lỗi trong trường hợp truyền dữ liệu bị hỏng.
- IGMP (Internet Group Management Protocol): Có chức năng điều khiển truyền đa hướng (Multicast).
- Tầng giao vận (Transport Layer): Có trách nhiệm thiết lập phiên truyền thông giữa các máy tính và quy định cách truyền dữ liệu 2 giao thức chính trong tầng này gồm có hai giao thức chính: TCP (Transmission Control Protocol) và UDP (User Datagram Protocol). TCP cung cấp các kênh truyền thông hướng kết nối và đảm bảo truyền dữ liệu một cách tin cậy, nó cung cấp một luồng dữ liệu tin cậy giữa hai trạm, nó sử dụng các cơ chế như chia nhỏ các gói tin của tầng trên thành các gói tin có kích thước thích hợp cho tầng mạng bên dưới, báo nhận gói tin, đặt hạn chế thời gian time-out để đảm bảo bên nhận biết được các gói tin đã gửi đi. TCP thường truyền các gói tin có kích thước lớn và yêu cầu phía nhận xác nhận về các gói tin đã nhận. Do tầng này đảm bảo tính tin cậy, tầng trên sẽ không cần quan tâm đến nữa. UDP cung cấp một dịch vụ đơn giản hơn cho tầng ứng dụng. UDP cung cấp kênh truyền thông phi kết nối, nó chỉ gửi các gói dữ liệu từ trạm này tới trạm kia mà không đảm bảo các gói tin đến được tới đích. Các ứng dụng dùng UDP thường chỉ truyền những gói có kích thước nhỏ, độ tin cậy dữ liệu phụ thuộc vào từng ứng dụng. Các cơ chế đảm bảo độ tin cậy cần được thực hiện bởi tầng trên.
- Tầng ứng dụng (Application Layer): Tầng ứng dụng là tầng trên cùng của mô hình TCP/IP bao gồm các tiến trình và các ứng dụng cung cấp cho người sử dụng để truy cập mạng. Một số giao thức thông dụng trong tầng này 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
- SNMP (Simpe 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 thức truyền tập tin bình thường.
- SMTP (Simple Mail Transfer Protocol): Giao thức truyền thư đơn giản.
- Công nghệ Ethernet
Chuẩn Ethernet 10Mbps đầu tiên được xuất bản năm 1980 bởi sự phối hợp phát triển của 3 hãng : DEC, Intel và Xerox. Chuẩn này có tên DIX Ethernet (lấy tên theo 3 chữ cái đầu của tên các hãng). Uỷ ban 802.3 của IEEE đã lấy DIX Ethernet làm nền tảng để phát triển. Năm 1985, chuẩn 802.3 đầu tiên đã ra đời với tên IEEE 802.3 Carrier Sense Multiple Access with Collition Detection (CSMA/CD) Access Method vesus Physical Layer Specification. Mặc dù không sử dụng tên Ethernet nhưng hầu hết mọi người đều hiểu đó là chuẩn của công nghệ Ethernet. Ngày nay chuẩn IEEE 802.3 là chuẩn chính thức của Ethernet. IEEE đã phát triển chuẩn Ethernet trên nhiều công nghệ truyền dẫn khác nhau vì thế có nhiều loại mạng Ethernet. Các chuẩn Ethernet đều hoạt động ở tầng Data Link trong mô hình 7 lớp OSI vì thế đơn vị dữ liệu mà các trạm trao đổi với nhau là các khung (frame). Cấu trúc khung Ethernet như sau:
Hình 2.2. Cấu trúc khung tin Ethernet
Các trường quan trọng trong phần đầu sẽ được mô tả dưới đây:
• preamble: trường này đánh dấu sự xuất hiện của khung bit, nó luôn mang giá trị 10101010. Từ nhóm bit này, phía nhận có thể tạo ra xung đồng hồ 10 Mhz.
• SFD (start frame delimiter): trường này mới thực sự xác định sự bắt đầu của một khung. Nó luôn mang giá trị 10101011.
• Các trường Destination và Source: mang địa chỉ vật lý của các trạm nhận và gửi khung, xác định khung được gửi từ đâu và sẽ được gửi tới đâu.
• LEN: giá trị của trường nói lên độ lớn của phần dữ liệu mà khung mang theo.
• FCS mang CRC (cyclic redundancy checksum): phía gửi sẽ tính toán trường này trước khi truyền khung. Phía nhận tính toán lại CRC này theo cách tương tự. Nếu hai kết quả trùng nhau, khung được xem là nhận đúng, ngược lại khung coi như là lỗi và bị loại bỏ.
CHƯƠNG III :
GIỚI THIỆU BỘ THƯ VIỆN TCP/IP STACK CỦA MICROCHIP
- .Sơ lược về TCP/IP Stack của Microchip
Bộ thư viện TCP/IP Stack của Microchip cung cấp một nền tảng cho các ứng dụng Ethernet do xử lý hầu hết các yêu cầu tương tác giữa tầng vật lý và tầng ứng dụng. Nó bao gồm các ứng dụng phổ biến của tầng ứng dụng bao gồm HTTP2 phục vụ cho các trang web, SMTP để gửi email, SNMP cung cấp tình trạng kiểm soát, Telnet, Serial Internet …Ngoài ra, bộ thư viện TCP/IP Stack này có dung lượng tương đối nhẹ và hiệu suất triển khai cao.
Bộ thư viện TCP/IP Stack của Microchip tối ưu hóa cho tất cả các PIC18, PIC24, dsPIC và PIC32. Các ngăn xếp được chia thành nhiều lớp, mỗi lớp truy cập các dịch vụ từ một lớp khác trực tiếp dưới nó. Bộ thư viện TCP/Ip này bao gồm các tính năng sau :
- Hỗ trợ giao thức ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP, TFTP
- Socket hỗ trợ cho TCP và UDP
- Secure Socket Layer
- NetBIOS
- DNS – Domain Name System
- Ethernet Device Discovery
- Hỗ trợ cho MPLAB C18, C30, C32
Bộ thư viện TCP/IP Stack được viết bằng ngôn ngữ C. Bộ thư viện để lại nhiều không gian cho người dùng điều chỉnh phù hợp với mục đích sử dụng. Giống như mô hình tham chiếu TCP/IP, TCP/IP Stack cũng được chia làm nhiều lớp. Mỗi lớp có một chức năng riêng, trong khi các dịch vụ và các giao diện lập trình ứng dụng được định nghĩa thông qua các tiêu đề bao gồm các tập tin. Không giống như mô hình TCP/IP, các lớp trong TCP/IP Stack truy nhập trực tiếp vào một hoặc nhiều lớp dưới mà không phụ thuộc vào lớp dưới nó. Một bổ sung lớn của TCP/IP Stack là thực hiện bổ sung 2 module mới “ StackTask” và “ARPTask”. StackTask quản lý hoạt động của Stack và tất cả các module của nó trong khi ARPTask quản lý các dịch vụ của các địa chỉ nghị quyết Protocol. Dưới đây là các lớp mà Microchip TCP/IP Stack đã xây dựng và vị trí tương ứng của các lớp này trong mô hình giao thức TCP/IP.
Hình 3.1 : Mô hình các lớp được xây dựng trong TCP IP Stack
TCP/IP Stack là bộ chương trình viết bằng ngôn ngữ C . Để bật tắt hoặc thiết lập một tham số nào đó người sử dụng chỉ cần thay đổi một hoặc nhiều tham số trong định nghĩa. Các định nghĩa được liệt kê như sau :
Định nghĩa |
Giá trị |
Sử dụng |
Chức năng |
CLOCK_FREQ |
oscillator frequency (Hz) |
Tick.c |
Xác định tần số dao động hệ thống |
TICKS_PER_SECONDS |
10-255 |
Tick.c |
Thời gian tính toán giữa hai lần |
TICK_PRESCALE_VALUE |
2,4,8,16,32,64, 128,256 |
Tick.c |
Xác định giá trị đánh dấu vào truy cập |
MPFS_USE_PGRM |
N/A |
MPFS.c |
Sử dụng bộ nhớ chương trình để lưu trữ MPFS |
MPFS_USE_EEPROM |
N/A |
MPFS.c |
Sử dụng eeprom để lưu trữ MPFS |
MPFS_RESERVE_BLOCK |
0-255 |
MPFS.c |
Số byte MPFS được lưu trữ |
EEPROM_CONTROL |
External Data EEPROM Control Code |
MPFS.c |
Địa chỉ lưu vào EEPROM |
STACK_USE_ICMP |
N/A |
StackTsk.c |
Yêu cầu sử dụng ICMP |
STACK_USE_SLIP |
N/A |
SLIP.c |
Yêu cầu sử dụng SLIP |
STACK_USE_IP_GLEANING |
N/A |
StackTsk.c |
Yêu cầu sử dụng IP |
STACK_USE_DHCP |
N/A |
DHCP.c, StackTsk.c |
Yêu cầu sử dụng DHCP |
STACK_USE_FTP_SERVER |
N/A |
FTP.c |
Yêu cầu sử dụng FTP |
STACK_USE_TCP |
N/A |
TCP.c |
Yêu cầu sử dụng TCP |
STACK_USE_UDP |
N/A |
UDP.c,StackTsk.c |
Yêu cầu sử dụng UDP |
STACK_USE_CLIENT_MODE |
N/A |
ARP.c, TCP.c |
Kích hoạt client mode |
TCP_NO_WAIT_FOR_ACK |
|
TCP.c |
TCP sẽ đợi ACK trước khi truyền |
MY_DEFAULT_IP_ADDR_BYTE |
0-255 |
User Application |
Xác định giá trị mặc định IP,MAC,gateway và subnet mask |
MY_DEFAULT_MASK_BYTE |
|||
MY_DEFAULT_GATE_BYTE |
|||
MY_DEFAULT_MAC_BYTE |
|||
MY_IP_BYTE |
0-255 |
User Application |
IP,MAC,gateway và subbnet mask lưu bởi ứng dụng |
MY_MASK_BYTE |
|||
MY_GATE_BYTE |
|||
MY_MAC_BYTE |
Hình 3.2 : Các giá trị cấu hình Stack
Trong gói thư viện TCPIP Stack, các module chức năng được thiết kế dựa hoàn toàn trên nguyên lý hoạt động của các lớp tương ứng.
-
Các lớp chức năng trong TCP/IP Stack
- Media Access control player ( MAC )
Nhiệm vụ của lớp MAC là quản lý bộ đệm FIFO(First In First Out) cho NIC- Network Interface Controller và quản lý bộ đệm truyền nhận. Nó có thể yêu cầu 1 tập tin nào đó được truyền lại, người sử dụng có thể xác định kích thước của bộ đệm nhờ vào file “MAC.c”.
- Serial Line Internet Protocol ( SLIP )
Lớp SLIP sử dụng cáp nối tiếp như các giao tiếp phương tiện truyền thông thay vì cáp ethernet. SLIP không đòi hỏi phải có NIC, do đó cung cấp rất đơn giản và kết nối không tốn kém IP. SLIP thường là kết nối một-một, nơi máy chủ kết nối máy khách. Các SLIP module được thiết kế để hoạt động với 1 máy tính trên Windows. Các API được cung cấp bởi module SLIP cũng được sử dụng giống như MAC.
- Address Resolution Protocol
Lớp ARP của TCP/IP Stack được thực hiện bởi 2 module : ARP và ARPTask trong đó ARP được cung cấp bởi các tập tin “ARP.c” và ARPTask được cung cấp bởi tập tin “ARPTask.c” cung cấp hoàn toàn dịch vụ ARP. ARP Task cung cấp như 1 bộ máy tập hợp đáp ứng yêu cầu ARP từ xa. Nó cũng duy trì 1 bộ nhớ cache 1 cấp để lưu trữ ARP trả lời và đưa 1 mức độ cao hơn phù hợp với các cuộc gọi. ARPTask là 1 cơ chế không thực hiện thử lại do đó, các lớp trên phải phát hiện ra điều kiện thời gian và trả lời phù hợp.
- Internet Protocol ( IP )
Lớp IP của TCP/IP Stack được thực hiện bởi module “IP.c”. Các phần đầu tập tin “IP.h” xác định các dịch vụ được cung cấp bởi gói này. Trong kiến trúc này, lớp IP là thụ động nó không đáp ứng các gói dữ liệu IP. Thay vào đó, lớp cao cấp sử dụng IP nguyên thủy lấy các gói tin IP, giải mã nó và xử lý nó một cách thích hợp. Đặc điểm kỹ thuật của IP này là yêu cầu các máy chủ địa phương tạo ra 1 gói tin nhận dạng duy nhất cho mỗi gói tin truyền qua nó, nhận diện này cho phép máy chủ từ xa xác định các gói tin trùng lặp và loại bỏ chúng.
- Internet Control Message Protocol ( IMCP )
Lớp ICMP được thực hiện bởi tập tin “ICMP.c”. Các tập tin tiều đề “ICMP.h” định nghĩa các dịch vụ được truy cập bởi lớp này.Trong kiến trúc này lớp ICMP là 1 lớp thụ động, nó không đáp ứng với các gói dữ liệu ICMP. Thay vào đó, lớp cao cấp sử dụng ICMP nguyên thủy và tìm nạp ICMP gói tin, giải thích nó và xử lý cho thích hợp.
Thông thường, ICMP được sử dụng để gửi và nhận lỗi hoặc dò tin nhắn. Trong TCP/IP Stack, ICMP thực hiện nguyên thủy có thể được sử dụng để tạo ra bất kỳ thông điệp ICMP. Trong những ứng dụng, ICMP là hữu ích cho các mục đích thăm dò. Khi được kích hoạt, ICMP có thể đáp ứng với các gói tin ping do đó cho phép các máy chủ ở xa kiểm tra trạng thái của các máy địa phương. Các vi mạch lớp ICMP chỉ đáp ứng dữ liệu ping đến 32byte, gói tin lớp hơn sẽ bị bỏ qua.
- Transmission Control Protocol ( TCP )
Lớp TCP của TCP/IP Stack được thực hiện bởi tập tin “TCP.c”. Các phần đầu tập tin “TCP.h” xác định các dịch vụ được cung cấp bởi lớp này. TCp.h cung cấp dịch vụ socket TCP và giấu tất cả TCP gói xử lý từ người gọi. Lớp này cho phép 2-253 TCP socket, số lượng giới hạn bởi bộ nhớ và trình biên dịch sử dụng. Với nhiều hơn 1 socket các ứng dụng có thể duy trì đồng thời nhiều kết nối TCP và có thể có nhiều hơn 1 ứng dụng được sử dụng lớp này. Cở sở này rất hữu ích khi HTTP server được sử dụng. Mỗi socket chiếm khoảng 36 byte. Không giống như các giao thức khác, tất cả các socket trong TCP/IP Stack chia sẻ một hoặc nhiều hơn một bộ đệm truyền. Cách tiếp cận này làm giảm tổng thể dung lượng RAM nhưng lại có 1 vài vấn đề khác như 1 vài socket không nhận đủ bộ đệm truyền và không báo thời gian sử dụng các socket. Trong hoàn cảnh này, các máy chủ và máy địa phương không thể liên lạc với nhau. Để tránh điều này, người dùng phải đảm bảo rằng có đủ bộ đệm truyền cho tất cả các socket. Về việc nhận dữ liệu, chỉ có 1 bộ đệm được nhận. Nếu socket nhận được dữ liệu của nó, chủ sở hữu của socket đó phải tìm nạp và loại bỏ bộ đệm nhận trong 1 khoảng thời gian ngắn để các socket khác có thể nhận dữ liệu của họ. Để giảm dung lượng RAM, lớp TCp sử dụng bộ đệm trong MACNIC làm lưu trữ và thực hiện các tính toán checksum MAC trong bộ đệm riêng của mình.
- User Datagram Protocol ( UDP )
Lớp UDP của TCP/IP Stack được thực hiện bởi các tập tin “UDP.c”. Các phần đầu tập tin “UDP.h” xác định các dịch vụ được cung cấp bởi lớp này. Trong kiến trúc của TCP/IP Stack, UDP là 1 lớp đa hoạt động. Nó có thể tìm UDP các gói dữ liệu và thông báo cho UDP socket tương ứng của dữ liệu đến hoặc truyền tải dữ liệu. “UDP.h” cung cấp dịch vụ socket UDP và giấu tất cả xử lý gói tin UDP từ người gọi. Lớp này cho phép đến 254 UDP socket. Với hơn 1 socket, các ứng dụng cấp cao hơn có thể duy trì đồng thời đa kết nối UDP. Mỗi socket chiếm khoảng 19 byte và tăng thời gian xử lý tổng thể UDP. Tất cả các socket UDP chia sẻ 1 hoặc nhiều hơn 1 bộ đệm truyền. Người dùng phải đảm bảo đủ bộ đệm truyền cho tất cả các socket.
- Dynamic Host Configuration Protocol ( DHCP )
Lớp DHCP của TCP / IP Stack được thực hiện bởi các tập tin "dhcp.c". Các phần đầu tập tin"dhcp.h" định nghĩa các dịch vụ được cung cấp bởi lớp này .DHCP là một lớp đang hoạt động mà chương trình phát sóng DHCP yêu cầu, tự động nhận được và giải mã DHCP phản ứng. Các tính năng chính của nó bao gồm:
- Cấu hình địa chỉ IP, địa chỉ gateway và subnet mask.
- DHCP tự động cho thuê thời gian, đổi mới và quản lý việc cho thuê.
- Hoạt động hoàn toàn tự đông mà người sử dụng không cần can thiệp.
Các module DHCP được thực hiện như một khối thống nhất có nhiệm vụ thực hiện các hoạt động tự động mà không có kiến thức về các ứng dụng chính. Các DHCP thực tế hội nhập và kiểm soát được thực hiện bởi các quản lý Stack; nó xử lý tất cả các hoạt động cần thiết của nó như một phần của tiêu chuẩn nhiệm vụ, bằng cách sử dụng API DHCP để kiểm soát các module của hành vi. Người dùng không cần biết về DHCP để sử dụng nó.
Một ứng dụng người dùng cũng có thể chọn để gọi một số các API để trực tiếp kiểm soát DHCP hoạt động, chẳng hạn như liệu DHCP được cấu hình hay không, và liệu DHCP có vĩnh viễn ngừng hoạt động. Thông thường, ứng dụng của người dùng không cần trực tiếp tương tác với DHCP .Để sử dụng module DHCP, người sử dụng phải sử dụng các tap tin sau:
- Bỏ ghi chú “STACK_USE_DHCP “trong tiêu đề tập tin "StackTsk.h".
- Có hai tập tin”dhcp.c " và "udp.c" trong dự án.
- Tăng MAX_UDP_SOCKETS lên một (ít nhất một UDP socket phải có sẵn cho DHCP điều chỉnh số lượng socket dựa trên UDP và DHCP).
- IP Gleaning for IP Address Configuration
Như là một thay thế DCHP, TCP / IP Stack cũng thực hiện một phương pháp đơn giản, được gọi là IP Gleaning, từ xa thiết lập địa chỉ IP của TCP / IP Stack. Phương pháp này không phải là một giao thức Internet chuẩn và không có tương ứng với RFC. Gleaning IP chỉ cho phép địa chỉ IP được thiết lập. Đối với cấu hình IP hoàn tất, DCHP phải được sử dụng.
Gleaning IP không cần bất kỳ phần mềm trên module. Thay vào đó, nó sử dụng module ICMP ARP. Để sử dụng nó, tập tin "icmp.c" phải được khai báo và trình biên dịch xác định STACK_USE_IP_GLEANING ghi chú bên trong tập tinh StackTsh.h
- Sử dụng TCP/IP stack
Bộ thư viện TCP/IP Stack chứ đầy đủ các module hỗ trợ như HTTP, IP, FTP, DHCP... Tùy vào mục đích sử dụng mà người lập trình có thể thay đổi cho phù hợp với dự án của mình nhưng phải có một số tập tin nhất định trong dự án. Các module và các tập tin đó được trình bày như sau :
Module |
Tập tin bắt buộc |
Mục đích |
MAC |
MAC.c Delay.c |
Media Access Layer |
SLIP |
SLIP.c |
Media Access Layer for SLIP |
ARP |
ARP.c ARPTsk.c MAC.c |
Address Resolution Protocol |
IP |
IP.c MAC.c SLIP.c |
Internet Protocol |
ICMP |
ICMP.c StackTsk.c IP.c MAC.c SLIP.c |
Internet Control Message Protocol |
TCP |
StackTsk.c TCP.c IP.c MAC.c SLIP.c |
Transmission Control Protocol |
UDP |
StackTsk.c UDP.c IP.c MAC.c SLIP.c |
User Datagram Protocol |
Stack |
StackTsk.c TCP.c IP.c ICMP.c ARP.c MAC.c |
Stack Manager |
HTTP Server |
HTTP.c TCP.c IP.c MAC.c MPFS.c XEEPROM.c |
Hyper Text Transfer Protocol Server |
DHCP Client |
DHCP.c UDP.c IP.c |
Dynamic Host Configuration Protocol |
Các trang Web mà server phục vụ có thể được lập trình bằng các mã HTML, CSS, JavaScript. Điều cần quan tâm nhất là cách viết các biến động. Biến động có thể được xem là output của ứng dụng này. Nhờ các biến động mà người dùng (client) có thể quan sát được trạng thái các đối tượng cần điều khiển. Để tạo một biến động, khi viết trang web ta đặt tên biến động vào giữa một cặp dấu ngã (~). Ví dụ để tạo một biến động có tên builddate trong code của trang web html ta viết:
<div class="examplebox code">~builddate~</div>
Biến động có thể chứa các tham số như trạng thái của đối tượng có liên quan, Server chỉ gọi một hàm duy nhất xử lý cho nhóm biến động này.
Ví dụ để quan sát trạng thái các nút bấm được đánh số từ 0 tới 3, ta viết:
<div class="examplebox code"> ~btn(3)~ ~btn(2)~~ btn(1)~~ btn(0)~</div>
Ngoài ra, khi các trang web có các thành phần không đổi như menu lựa chọn, header…, chúng ta có thể viết chúng trong một file có đuôi .inc (*.inc) và include vào trang web như cách viết biến động.
Ví dụ file header.inc chứa các thành phần không đổi ở các trang web, ở mỗi trang web ta ghi:
<div id="menu">~inc:menu.inc~</div>
- Tiện ích MPFS2
Tiện ích MPFS đóng gói các web page thành 1 định dạng để lưu trữ hiệu quả trong 1 hệ thống nhúng. Nó là 1 ứng dụng đồ họa cho PC, có thể tạo ra MPFS2 và các ảnh MPFS classic để lưu trữ trong bộ nhớ ngoài hoặc bộ nhớ chương trình nội.
Khi được sử dụng để tạo ảnh MPFS2, tiện ích này cũng chỉ ra các biến động được tìm thấy. Nó dùng thông tin này để tạo ra file HTTPPrint.h. Nó cũng lưu giữ chỉ số thông tin cùng với file trong ảnh MPFS2 giúp làm giảm tác vụ tìm kiếm từ thiết bị nhúng.
Để sử dụng EEPROM ngoài, đảm bảo rằng macro cấu hình MPFS_USE_EEPROM được định nghĩa trong file TCPIPConfig.h. Nếu đang sử dụng 25LC1024, phải định nghĩa USE_EEPROM_25LC1024 để cho phép chế độ địa chỉ 24bit. Nếu sử dụng Flash ngoài, khai báo MPFS_USE_SPI_FLASH thay vì macro EEPROM.
MPFS2.exe là phần mềm chuyển đổi một một folder chứa trang web thành các dạng file .c để nạp vào Pic hoặc file .bin để nạp vào EEPROM. Sau khi thực thi, phần mềm tạo ra một file chứa nội dung trang web, một file HTTPPrint.h chứa chỉ số các biến động mà trang web đã ghi. File này cần để xây dựng code cho server. Do đó, khi ghi thêm các biến động vào trang web, chúng ta trước tiên phải dùng công cụ MPFS2.exe để xuất ra file HTTPPrint.h thích hợp, sau đó biên dịch lại project.
- Các bước tạo một treng web
Bước 1 : lựa chọn Start With : Webpage Direcory và chọn thư mục trong đó web page được lưu trữ.
Hình 3.5: Chọn thư mục lưu web page
Bước 2 : chọn định dạng đầu ra. Nếu lưu trữ web page trong EEPROM ngoài hoặc Flash thì chọn BIN Image . Nếu bộ nhớ chương trình nội được dùng thì chọn C18/C32 Image để sử dụng với các phần 8bit và 32bit, hoặc chọn ASM30 Array cho 16bit. Để lưu trữ web page trên các thiết bị định dạng với hệ thống file FAT mà không nén chúng thành ảnh MPFS thì chọn MDD
Hình 3.6: Chọn định dạng đầu ra
Bước 3 : yêu cầu thư mục dự án MPLAB IDE. Công cụ MPFS sẽ ghi các file ảnh vào thư mục dự án và cũng sẽ cập nhật file HTTPPrint.h ở đây nếu cần. Lựa chọn chính xác thư mục để các file phù hợp được thay đổi.
Hình 3.7: Chọn thư mục chứa dự án
Bước 4 : Điều khiển thiết lập upload. Khi bộ nhớ ngoài được dùng để lưu trữ, tùy chọn để upload các ảnh mới được tạo ra tới board là có sẵn.
Check vào box bên cạnh Upload Image To để cho phép đặc điểm này. Nút Settings bên phải có thể được sử dụng để cấu hình các tên host chính xác.
Hình 3.8 : Thiết lập upload
Khi tất cả các thiết lập được chọn đúng, click nút Generate để tạo ra ảnh. Nếu được cho phép upload, nó cũng sẽ cố gắng upload file lên thiết bị.
Sau khi tao xong file.bin ta tiến hành upload trang web vừa tạo
Mở trình duyệt web và truy cập tại http://mchpboard/mpfsupload . Hình thức này sẽ cho phép các trang web được lưu trữ trên thiết bị để được cập nhật. Chọn MPFSImg2.bin file từ thư mục TCPIP App Demo như hình dưới đây.
Hình 3.9 : Tiến hành upload
Khi nút Upload được nhấp, hình ảnh MPFS được gửi đến hội đồng quản trị và lập trình trong EEPROM. Khi điều này xảy ra, hoạt động LED trên các jack cắm Ethernet sẽ nhấp nháy. Một khi các báo cáo trình duyệt tải lên đã hoàn thành, nhấp vào liên kết cung cấp trong các thông báo trạng thái để truy cập các trang web của hội đồng quản trị.
Hình 3.10 : Việc upload thành công
- Giao diện web
Mục tiêu đặt ra là xây dựng một trang web cung cấp giao diện cho người sử dụng truy cập từ xa để điều khiển và giám sát toàn bộ hoạt động của hệ thống. Các trang web được lưu trữ trong EEPROM 25LC256 với kích thước đủ nhẹ và có giao diện thân thiện với người sử dụng. Mã nguồn của trang web được xây dựng bằng DHTML(Dynamic Hyper Text Markup Language) với sự hỗ trợ của công nghệ AJAX.Bản thân DHTML ko phải là một ngôn ngữ mà là sự kết hợp giữa HTML(Hyper Text Markup Language), JavaScript, HTML DOM (Hyper Text Markup Language Document Object Model), và CSS(Cascading Style Sheet) .
Hình 3.11 : Thành phần cần thiết kế tạo một trang web
Để xây dựng được một giao diện web nhúng đơn giản với các thành phần như trên cần có hiểu biết về các ngôn ngữ xây dựng web.
a) Dynamic Hyper Text Markup Language:
Như đã nói ở trên ,bản thân DHTML ko phải là một ngôn ngữ mà là sự kết hợp của nhiều ngôn ngữ khác nhau.Chức năng chính của DHTML là miêu tả phần động và tương tác của 1 trang Web
b) Hyper Text Markup Language:
HTML không phải là 1 ngôn ngữ lập trình mà là một ngôn ngữ đánh dấu băng thẻ (markup language). HTML có hai đặc tính cơ bản là siêu văn bản và tính phổ bát.Siêu văn bản (hypertext) có nghĩa là bạn tạo ra một liên kết trong trang Web định hướng người dùng đến một nơi nào đó trên Internet ,còn tính phổ bát (universality) được thể hiện ở chỗ do hầu hết các tài liệu HTML được lưu dưới dạng tập tin ASCII hoặc Text Only nên hầu như máy tính nào cũng có thể đọc được trang Web.
Thông qua các thẻ (tag) và các phần tử của HTML ,chúng ta có thể thực hiện được rất nhiều công việc quan trong như:
- Điều khiển hình thức và nội dung của trang Web
- Xuất bản các tài liệu trực tuyến và truy xuất thông tin trực tuyến bằng cách dùng các tài liệu liên kết được chèn vào các tài liệu HTML
- Tạo các biểu mẫu trực tuyến.Những biểu mẫu này có thể được sử dụng để thu thập thông tin về người dùng ,quản lý các giao dịch…
Bản thân tài liệu HTML là một file văn bản có thành phân đuôi mở rộng là .htm hoặc .html .Tài liệu này được dịch thành mã nguồn của trang Web .
c) JavaScript:
JavaScript là một ngôn ngữ kịch bản (scripting language) của Web.Ngôn ngữ này thường được thiết kế để thêm các phần tương tác trong 1 trang HTML. Javascript là ngôn ngữ thể hiện dưới dạng script có thể gắn với các tài liệu HTML. Một số trình duyệt hỗ trợ Javascript sẽ thực hiện việc diễn dịch thay vì biên dịch khi gặp các mã Javascript.
Javascript là ngôn ngữ dựa trên đối tượng. Nó có thể đáp ứng các sự kiện ( ví dụ như :onClick, onMouseOver, onMouseOut,…). Tuy nhiên không giống C++, Javascript không hỗ trợ các lớp hay tính kế thừa. Các mã Javascript được xử lý hoàn toàn trên trình duyệt phía máy trạm.
Tất cả các mã Javascript sau khi được nhúng vào trang web đều nằm trong cặp thẻ :
<script language=”Javascript”> Mã lệnh Javascript </script>
Sau đây là ví dụ mẫu về một mã Javascript :
Hình 3.12 : ví dụ mẫu JavascriptThuộc tính SRC của thẻ <SCRIPT> cho phép bạn chỉ rõ file nguồn Javascript được sử dụng, dùng phương pháp này để nhúng trực tiếp một lệnh Javascript vào trang HTML.
Cú pháp :
Hình 3.13: Cú pháp thuộc tính SRC
Tuy nhiên Javascript cũng có những hạn chế đó là :
- Javascript không thể giao tiếp với máy chủ
- Javascript không thể tạo các hình ảnh đồ họa
- Javascript làm việc khác nhau trên các trình duyệt khác nhau
TTP2
- FTP Server
FTP server có những tín năng sau:
- Một kết nối FTP cho chúng ta biết có một người dùng dang sử dụng ứng dụng đó.
- Tự đông tương tác với tập tin hệ thống (MPFS).
- Upload tập tin cá nhân hoặc hỗ trợ.
CHƯƠNG IV:THI CÔNG MẠCH
- Giới thiệu linh kiện trong mạch
- ENC28J60
- Giới thiệu:
Hình 4.1: Sơ đồ chân
ENC28J60 là con chíp giao tiếp ethernet được điều khiển theo chuẩn SPI. Do đó, bất kì vi điều khiển nào có hỗ trợ chuẩn giao tiếp SPI cũng có thể dễ dàng giao tiếp với các ngoại vi ethernet thông qua ENC28J60. ENC28J60 được thiết kế để phù hợp với chuẩn IEEE 802.3 (chuẩn về ethernet). Để ENC28J60 hoạt động được, ta chỉ cần cấp điện áp ( 3.1V- 3.6V) và một số linh kiện thụ động.
b. Sơ đồ khối:
Hình 4.2: Sơ đồ khối
Các khối chức năng chính :
o Khối giao tiếp SPI: Để ENC28J60 giao tiếp được với vi điều khiển. Tốc độ giao tiếp tối đa là 20Mhz.
o Các thanh ghi điều khiển các chức năng của ENC28J60.
o Một bộ đệm là RAM hai chiều dung lượng 8Kbyte dùng để truyền nhận dữ liệu.
o Khối Arbiter có chức năng điều khiển quyền truy cập RAM của các khối RX, TX và DMA.
o Khối Bus Interface có nhiệm vụ dịch dữ liệu, lệnh nhận được thông qua chuẩn SPI.
o MAC (Medium Access Controller) là mạch số điều khiển việc truyền dữ liệu như khi nào truyền, tạo ra hay xác nhận các mã kiểm tra lỗi…phù hợp chuẩn IEEE 802.3.
o PHY (Physical Layer) là mạch điện giải mã và mã hóa tín hiệu điện truyền trên cáp.
Ngoài ra còn các khối: Khối dao động, khối ổn áp, khối chuyển mức điện áp để phù hợp với mức điện áp của các vi điều khiển hoạt động 5V.
C. Tên chân và chức năng:
Hình 4.3: Chức năng chân
Chân CLKOUT
ENC28J60 tạo ra một nguồn xung clock ở chân CLKOUT. Tần số của xung này có thể được chia 1,2,3 4,8 thông qua bộ prescaler bên trong ENC28J60. Thanh ghi ECOCON điều khiển tần số của xung clock. Khi ENC28J60 được cấp điện (Power-on Reset), chân CLKOUT sẽ dao động với tần số 6.25Mhz sau khi OST hết hiệu lực. Khi tắt chức năng của chân CLKOUT (ECOCON=0) , chân này ở mức thấp. Khi thay đổi tần số ra, chân CLKOUT ở mức thấp trong khoảng từ 2 đến 8 xung clock từ chân OSC1 trước khi dao động với tần số mới.
Chân LEDA và LEDB
Hai chân này được nối với 2 LED báo tín hiệu. Ta có thể chọn mức sáng của LED gắn bên ngoài là mức 0 (sink current) hay mức 1 (source current). Saukhi reset, ENC28J60 sẽ nhận biết kiểu kết nối của LED và điều khiển các LED ở trạng thái mặc định được xác định trong thanh ghi PHLCON. Trạng thái kết nối của LED nối vào chân LEDB xác định trạng thái ban đầu của bit PHCON1.PDPXMD sau khi reset.
Hình 4.4: phân cực cho LED và thiết lập lại các tùy chọn cấu hình
Nếu LED không được kết nối, bit PDPXMD không được xác định.
Ngoài ra, các bit LACFG3:LACFG0 and LBCFG3:LBCFG0 sẽ điều khiển trạng thái của các LED khi ENC28J60 hoạt động.
Khối tạo dao động:
ENC28J60 hoạt động ở tốc độ 25Mhz. Ta dùng thạch anh 25Mhz nối vào 2 chân OSC1 và OSC2. Hoặc có thể dùng nguồn dao động bên ngoài.
Oscillator Start-up Timer (OST)
Timer này hết hiệu lực sau khi đếm được 7500 xung clock từ chân OSC1 ( 300us) kể từ khi Power-on Reset hoặc wake-up từ chế độ Power-Down. Thời gian delay này dùng để “chờ” các khối chức năng trong ENC28J60 hoạt động ổn định trước khi bắt đầu giao tiếp với các ngoại vi ethernet. Khi OST hết hiệu lực, bit CLKRDY trong thanh ghi ESTAT được set.
Mức Logic
Các chân input SCK, CS, SI, RESET có thể hiểu được mức điện áp của hệ thống 5V. Nhưng để hệ thống 5V hiểu được mức điện áp từ các chân output của ENC28J60 hoạt động ở 3.3V thì ta cần dùng một mạch đệm. Thường dùng cổng NAND hoặc cổng 3 trạng thái
Hình 4.5: Sử dụng cổng NAND
Hình 4.6: Sử dụng cổng 3 trạng thái
d. Tổ chức bộ nhớ:
Bộ nhớ trong ENC28J60 thuộc loại RAM động, có ba phần:
o Các thanh ghi điều khiển
o Bộ đệm dữ liệu
o Các thanh ghi PHY
Các thanh ghi điều khiển dùng để cấu hình, điều khiển và đọc các trạng thái của ENC28J60. Các thanh ghi này có thể được đọc/ghi trực tiếp với giao tiếp SPI.
Bộ đệm là nơi chức dữ liệu truyền/nhận. Kích thước vùng nhớ này có thể thay đổi bằng phần mềm. Chỉ có thể truy cập vùng nhớ này bằng các lệnh SPI là read buffer memory và write buffer memory.
Các thanh ghi PHY được dùng cho hoạt động của khối PHY. Không thể truy xuất các thanh ghi này bằng giao tiếp SPI.
Hình 4.7: Tổ chức bộ nhớ
Các thanh ghi điều khiển
Các thanh ghi điều khiển được chia thành 4 bank, mỗi bank dài 32 byte và được đánh địa chỉ 5-bit. Bit BSEL1:BSEL0 dùng để chọn bank. Toàn bộ các thanh ghi điều khiển được liệt kê dưới đây:
Hình 4.8: Thanh ghi điều khiển
Bộ đệm ethernet
Vùng nhớ này có dung lượng 8Kbytes, chia thành hai vùng riệng biệt: vùng dữ liệu nhận và vùng dữ liệu gởi. Kích thước từng vùng được thiết lập thông qua giao tiếp SPI.
Hình 4.9: bộ đệm Ethernet
o Bộ đệm nhận
Có dạng FIFO. Cặp thanh ghi ERXSTH:ERXSTL và ERXNDH:ERXNDL xác định chiều dài của vùng nhận và vị trí của nó trong 8Kbyte bộ đệm.
o Bộ đệm gởi
Vùng nhớ còn lại trong 8Kbytes nhớ có thể được dùng làm bộ đệm gởi. Cặp thanh ghi ETXST và ETXND được dùng để xác định vị trí vùng nhớ này. Người lập trình cần thiết lập sao cho bộ đệm gởi và nhận không trùng nhau.
o Các thanh ghi PHY
Các thanh ghi này dài 16 bit. Có tất cả 32 thanh ghi, nhưng chỉ có 9 thanh ghi được dùng.
Ta không truy xuất trực tiếp các thanh ghi ghi mà phải truy xuất gián tiếp thông qua các thanh ghi điều khiển khối MAC thực hiện chức năng MIIM (Media Independent Interface Management).
e.Giao tiếp SPI với ENC28J60:
Hình 4.10: Giao tiếp SPI với vi điều khiển
ENC28J60 giao tiếp SPI với vi điều khiển ở chế độ Slave, trạng thái Idle của xung SCK ở mức thấp, dữ liệu nhận vào ở chân SI tại cạnh lên của xung SCK, dữ liệu ra ở chân SO tại cạnh xuống của xung SCK. Chân CS phải đượckéo xuống mức thấp khi giao tiếp và được đưa lên mức cao khi giao tiếp hoàn tất.
............................................................................................
Sau khi cài đặt cơ chế NAT cho modem,để truy nhập tới Webserver nhúng thông qua Internet chúng ta dùng địa chỉ IP Public ( để truy nhập vào Webserver), cơ chế NAT trên modem sẽ tự động chuyển yêu cầu truy cập web tới IP của web server.Tuy nhiên vì địa chỉ IP Public mà ISP(Internet Service Provider) cung cấp là IP động, mỗi ngày sau khi tắt modem khi mở lại modem sẽ có địa chỉ IP mới. Như vậy sẽ rất phiền nàn mỗi khi muốn truy nhập vào Webserver nhúng.Chúng ta có 2 hướng giải quyết:
- Thuê địa chỉ IP tĩnh ( tốn kém chi phí).
KẾT LUẬN
- Các vấn đề đã ngiên cứu và làm được
- Nghiên cứu vi điều khiển Pic 18F4620,eeprom25lc256.
- Tìm hiểu Bộ thư viện TCP/IP Stack của Microchip.
- Nghiên cứu module Ethernet sư dụng chíp ENC28J60 của Microchip.
- Lập trình điều khiển vi điều khiển Pic 18F4620 bằng ngôn ngữ CCS.
- Xây dựng thành công một hệ thống điều khiển giám sát đơn giản trên nền web nhúng
- Tự đánh giá
Khi mạng không tốt, rất khó điều khiển hệ thống. Khi mạng bị đứt, hệ thống mất điều khiển. Hệ thống này thích hợp với mạng LAN có đường truyền ổn định. Khả năng bảo mật kém. Vì ai cũng có thể cập và điều khiển hệ thống dễ dàng nếu biết địa chỉ IP của mạch. Cấu hình của mạch yếu. PIC18 thuộc dòng 8bit, tốc độ tối đa là 40Mhz. ENC28J60 chạy với tốc độ tối đa là 10Mbps. Do đó, server chạy chậm, không thể phục vụ cùng lúc nhiều người.
- Hướng phát triển đề tài
Rõ ràng điều khiển thiết bị qua mạng là một đề tài có khá nhiều hướng phát triển. Việc dừng lại ở điều khiển và giám sát ON/OFF chỉ là bước khởi đầu cho những phát triển lớn hơn như: Ngôi nhà thông minh, …
Tuy nhiên, với cụ thể đồ án này thì có khá nhiều giới hạn. Với việc sử dụng giao thức TCP/IP để truyền thông tin qua mạng thì ta cần một khoảng thời gian khá dài để đóng gói và lưu thông trên mạng. Nếu mạng có nhiều người tham gia thì có thể nghẽn mạng và gói tin phải qua khá nhiều bộ định tuyến mới tới đích. Do đó, nếu thiết bị đòi hỏi thòi gian đáp ứng nhanh thì đề tài này không đáp ứng được trong môi trường Internet. Tuy nhiên, nếu điều khiển ON/OFF thì có thể chấp nhận được.
PHỤ LỤC – PHỤ ĐÍNH
Một số kết quả bằng hình ảnh