Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

                         VIỆN ĐIỆN TỬ - VIỄN THÔNG




                   BÁO CÁO THỰC TẬ...
MỤC LỤC


MỞ ĐẦU ............................................................................................................
2.2.2. Cấu trúc gói tin IP ......................................................................................16
      ...
5.3. Các module của Stack và APIs ..........................................................................38
       5.3....
MỞ ĐẦU


     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...
CHƯƠNG 1. TỔNG QUAN VỀ ETHERNET


      Ethernet là kiểu mạng cục bộ (LAN) được sử dụng rộng rãi nhất hiện nay. Hiện
thời ...
- Preamble (mở đầu): 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 ...
Hình 1: Mô hình truyền thông unicast.
       Đây là khung unicast. Khung này được truyền tới một trạm xác định. Tất cả các...
thực của hệ thống. Ở đây, một trong những yếu tố quyết định tới hiệu suất của hệ
thống là thuật toán tính thời gian truy n...
gửi, gây ra xung đột tại một điểm gần C. A và C sẽ lần lượt nhận được tín hiệu phản
hồi, so sánh với tín hiệu gửi đi và ph...
- 10BaseF. F là viết tắt của Fiber Optic ( sợi quang). Đây là chuẩn Ethernet dùng
cho sợi quang hoạt động ở tốc độ 10 Mb/s...
Các dịch vụ và giao thức được đặc tả trong IEEE 802 ánh xạ tới hai tầng thấp
(tầng liên kết dữ liệu và tầng vật lý của mô ...
CHƯƠNG 2. HỌ GIAO THỨC TCP/IP


2.1. Họ giao thức TCP/IP
     TCP/IP là viết tắt của Transmission Control Protocol / Inter...
- SNMP (Simple Network Management Protocol): Giao thức quản lý mạng đơn
giản.
        - FTP (File Transfer Protocol): Giao...
- 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.
     - IGM...
Bảng 2: Tổ chức địa chỉ IP.


                    0 1 2 3 4             8                 16              24

   Class A  ...
- TOS(Type of Service)-1byte: cho biết dịch vụ nào mà gói tin muốn sử dụng
chẳng hạn như độ ưu tiên, thời hạn chậm trễ, nă...
- Protocol: Chỉ tầng giao thức kế tiếp sẽ nhận vùng dữ liệu ở trạm đích. TCP có
ứng với giá trị 6, UDP ứng với giá trị 17,...
 SYN: đồng bộ hoá số hiệu tuần tự

         FIND: không còn dữ liệu từ trạm nguồn
     - Window-2byte: số byte dữ liệu b...
CHƯƠNG 3. PHẦN CỨNG


3.1. Vi điều khiển PIC18F67J60
3.1.1. Các đặc trưng của PIC18F67J60
    Vi điều khiển PIC18F67J60 là...
3.1.2. Module A/D 10 bit
     Vi điều khiển PIC 18F67J60 có 11 kênh chuyển đổi A/D (analog-to-digital).
Module ADC cho phé...
 Bit 1: Nếu bit ADON=1 thì module A/D đang làm việc nếu bit này là 1
        và module A/D này không làm gì nếu bit này l...
- Thanh ghi ADCON2: cấu hình xung clock cho bộ A/D, căn chỉnh.




                         Hình 7: Thanh ghi ADCON2.

   ...
3.1.2.2. Quá trình chuyển đổi A/D:
     - Bước 1: Cấu hình cho module A/D

           Thiết lập thanh ghi ADCON1 (cấu hìn...
Hình 8: Sơ đồ khối module Ethernet.
Module Ethernet gồm 5 khối chức năng chính:
     - Khối truyền nhận PHY sẽ mã hóa và g...
Hình 10: Khối mạch nguồn
     - Mạch nguồn sử dụng IC ổn áp 7805 để tạo điện áp 5V để nuôi các khối sử dụng
điện áp 5V và ...
- Trong mạch này, sử dụng đầu cắm giao tiếp RJ45 là HR911105A của
HANRUN. HR911105A được tích hợp sẵn biến áp và có 2 led ...
Hình 14: Jack kết nối với mạch vi điều khiển, mạch dao động ngoài, chân
                                   VDDCORE/VCAP.
 ...
Hình 16: Bảng mạch chính.


           CHƯƠNG 4. TRÌNH BIÊN DỊCH CCS VÀ WEB SERVER


4.1. CCS
4.1.1. Vì sao ta sử dụng CSS...
thay thế cho ASM trong việc mô tả các lệnh lập trình cho vi điều khiển một cách ngắn
gọn và dễ hiểu hơn đã dẫn đến sự ra đ...
<head>
       <title>DHTML example</title>
       <script type="text/javascript">
           function init() {
           ...
4.3.1. Ưu điểm của CSS
     CSS có thể tách riêng phần định dạng ra khỏi nội dung một trang web, do đó nó
sẽ rất thuận tiệ...
thuộc_tính_2: giá_trị_của_thuộc_tính_2;
      ...
     thuộc_tính_n: giá_trị_của_thuộc_tính_n;
     }
     ...
     css_se...
Body{
         Font:Arial, Verdana;
         Background:#FF6600;
         }
     Nhưng trong trường hợp muốn khai báo cho ...
Color:#D4D4D4;
      }
     Thay cho việc định nghĩa riêng biệt cho từng cái:
      h1{
      Font-family: Tahoma,arial;
 ...
Hình 23: Cấu trúc của Stack.




   Hình 24: So sánh cấu trúc TCP/IP tham khảo và cấu trúc Stack của Microchip.
      Ngoà...
xét tác vụ nào được chạy theo kiểu chia sẻ thời gian (vì không có mức ưu tiên cho tác
vụ). Sau đó cho phép tác vụ đó chiếm...
báo cho cấu trúc này và khởi tạo những giá trị mặc định của nó được định nghĩa trong
file TCPIPConfig.h.
5.2.3. Main file
...
Microchip TCP/IP Stack bao gồm rất nhiều module. Để sử dụng được bất kì một
module nào ta phải nắm rõ mục đích của nó và A...
Hình 25: Sơ đồ khối
Web pages
     Bao gồm tất cả file HTML và ảnh kèm theo, CSS Stylesheets, các file JavaScript
cần thiế...
Hình 26: Phần mềm MPFS2
File CustomHTTPApp.c
     Thực hiện các ứng dụng của web. Nó mô tả đầu ra cho các biến động ( thôn...
trình MPFS2 để tạo ra các trang web, nó sẽ tự động định nghĩa những biến này trong
file HTTPPrint.h. Ví dụ: sử dụng biến đ...
 HTTP2 server không thực hiện bất kỳ sự phân tích trước các dữ liệu này.
             Tất cả dữ liệu POST nằm trong bộ đệ...
{
               // Compare to "/treasure" folder. Don't use strcmp here, because
               // cFile has additional p...
5.4.1.2. Bộ nhớ ngoài
     Bộ nhớ ngoài dùng để lưu trữ Web nhúng, Web ở đây định dạng http và http2.
Bộ nhớ dùng để lưu t...
5.4.2.2. Địa chỉ IP
     Địa chỉ IP dùng để định địa chỉ cho các nút mạng trên mạng giao thức Internet.
Chúng ta cần cấu h...
- E-mail ( SMTP) Demo: Sử dụng e-mail client để gửi đi 1 tin nhắn khi 1 sự kiện
xảy ra.
    - Generic TCP Client: Xây dựng...
Hình 27: Điều khiển LED
     Để thực hiện được việc này ta sử dụng phương pháp GET:
     - Phương pháp Get gán dữ liệu vào...
Code trong file forms.htm




                                 Hình 28: Code trong file forms.htm
     - Giả sử ta kick và...
// Seek out each of the four LED strings, and if it exists set the LED
states
              ptr = HTTPGetROMArg(curHTTP.da...
Việc thiết kế Module Ethernet trên vi điều khiển PIC18F67J60 nhằm ứng dụng
đo lường và điều khiển có ý nghĩa rất lớn, có t...
52
Prochain SlideShare
Chargement dans…5
×

sur

Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 1 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 2 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 3 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 4 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 5 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 6 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 7 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 8 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 9 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 10 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 11 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 12 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 13 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 14 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 15 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 16 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 17 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 18 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 19 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 20 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 21 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 22 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 23 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 24 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 25 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 26 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 27 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 28 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 29 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 30 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 31 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 32 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 33 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 34 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 35 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 36 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 37 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 38 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 39 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 40 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 41 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 42 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 43 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 44 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 45 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 46 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 47 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 48 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 49 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 50 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 51 Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG  ĐO LƯỜNG – ĐIỀU KHIỂN Slide 52
Prochain SlideShare
Điều khiển thiết bị qua Internet
Suivant

42 j’aime

Partager

Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG ĐO LƯỜNG – ĐIỀU KHIỂN

Livres associés

Gratuit avec un essai de 30 jours de Scribd

Tout voir

Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG ĐO LƯỜNG – ĐIỀU KHIỂN

  1. 1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài: MODULE ETHERNET TRÊN VI ĐIỀU KHIỂN PIC18F67J60 VÀ ỨNG DỤNG TRONG ĐO LƯỜNG – ĐIỀU KHIỂN Sinh viên thực hiện: NGUYỄN VĂN CHIỀN Lớp ĐT1 Giảng viên hướng dẫn: PGS.TS. NGUYỄN TIẾN DŨNG Hà Nội, 4-2013 1
  2. 2. MỤC LỤC MỞ ĐẦU .........................................................................................................................5 CHƯƠNG 1. TỔNG QUAN VỀ ETHERNET ...............................................................6 1.1. Cấu trúc khung tin Ethernet .................................................................................6 1.2. Cấu trúc địa chỉ Ethernet ......................................................................................7 1.3. Các loại khung Ethernet .......................................................................................7 1.3.1. Các khung unicast .........................................................................................7 1.3.2. Các khung broadcast ....................................................................................8 1.3.3. Các khung multicast ....................................................................................8 1.4. Truy nhập bus .......................................................................................................8 1.5. Các loại mạng Ethernet ......................................................................................10 1.5.1. Các hệ thống Ethernet 10Mb/s ...................................................................10 1.5.2. Các hệ thống Ethernet 100 Mb/s – Ethernet cao tốc ( Fast Ethernet ) ......11 1.5.3. Các hệ thống Giga Ethernet ......................................................................11 1.6. Chuẩn IEEE 802 .................................................................................................11 CHƯƠNG 2. HỌ GIAO THỨC TCP/IP ......................................................................13 2.1. Họ giao thức TCP/IP ..........................................................................................13 2.1.1. Tầng Ứng Dụng (Application Layer) ........................................................13 2.1.2. Tầng Giao Vận (Transport Layer) .............................................................14 2.1.3. Tầng Internet (Internet Layer) ....................................................................14 2.1.4. Lớp giao tiếp mạng .....................................................................................15 2.2. Cấu trúc gói tin IP,TCP,UDP .............................................................................15 2.2.1. Cấu trúc địa chỉ IP......................................................................................15 2
  3. 3. 2.2.2. Cấu trúc gói tin IP ......................................................................................16 2.2.3. Cấu trúc gói tin TCP ...................................................................................18 2.2.4. Cấu trúc gói tin UDP .................................................................................19 CHƯƠNG 3. PHẦN CỨNG .........................................................................................20 3.1. Vi điều khiển PIC 18F67J60 ..............................................................................20 3.1.1. Các đặc trưng của PIC 18F67J60 ..............................................................20 3.1.2. Module A/D 10 bit.......................................................................................21 3.1.3. Module Ethernet .........................................................................................24 3.2. Mạch nguyên lý ..................................................................................................25 3.2.1. Khối mạch nguồn ........................................................................................25 3.2.2. Khối mạch RJ45 ..........................................................................................26 3.2.3. Khối mạch vi điều khiển PIC18F67J60 ......................................................27 3.3. Mạch in...............................................................................................................28 CHƯƠNG 4. TRÌNH BIÊN DỊCH CCS VÀ WEB SERVER ......................................29 4.1. CCS ....................................................................................................................29 4.1.1. Giới thiệu ....................................................................................................29 4.1.2. Giới thiệu về CCS .......................................................................................30 4.2. Web động ...........................................................................................................30 4.3. CSS .....................................................................................................................31 4.3.1. Ưu điểm của CSS ........................................................................................32 4.3.2. Các đặc tính cơ bản của CSS......................................................................32 CHƯƠNG 5. TCP/IP STACK .......................................................................................35 5.1. Cấu trúc của TCP/IP Stack .................................................................................35 5.2. Hoạt động của TCP/IP Stack..............................................................................36 5.2.1. Các file cần thiết .........................................................................................37 5.2.2. Cấu trúc APP_CONFIG .............................................................................37 5.2.3. Main file ......................................................................................................38 3
  4. 4. 5.3. Các module của Stack và APIs ..........................................................................38 5.3.1. Announce ....................................................................................................39 5.3.2. HTTP2 server ..............................................................................................39 5.4. Cấu hình cho Stack.............................................................................................44 5.4.1. Cấu hình cho phần cứng .............................................................................44 5.4.2. Địa chỉ.........................................................................................................45 5.5. Demo module .....................................................................................................46 5.5.1. Điều khiển led sáng tắt ...............................................................................47 KẾT LUẬN ..................................................................................................................50 4
  5. 5. MỞ ĐẦU 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. Thực tập 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)” đã sử dụng phần mềm CSS và thư viện TCP/IP Stack của hãng Microchip để lập trình điều khiển LED thông qua mạng truyền thông Ethernet. Báo cáo 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 (CSMA/CD), các loại mạng Ethernet và chuẩn Ethernet IEEE 802.3. Chương 2. Họ giao thức TCP/IP trình bày kiến thức về họ giao thức TCP/IP 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 A/D, 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 CCS và web server giới thiệu về trình biên dịch CCS và các nội dung liên quan đến việc thiết kế web giao diện như là DHTML, Javascript, CSS Chương 5. TCP/IP 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 TCP/IP Stack của Microchip trên phần mềm CCS để lập trình cho mạch demo thực đ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. 5
  6. 6. CHƯƠNG 1. TỔNG QUAN VỀ ETHERNET Ethernet là kiểu mạng cục bộ (LAN) được sử dụng rộng rãi nhất hiện nay. Hiện thời công nghệ Ethernet thường được sử dụng nhất là công nghệ sử dụng cáp đôi xoắn 10Mbps. Ethernet đã được phát minh ra tại trung tâm nghiên cứu Xerox Palo Alto vào những năm 1970 bởi tiến sĩ Robert M. Metcalfe . Nó đã được thiết kế với mục đích phục vụ nghiên cứu trong “ hệ thống công sở trong tương lai”, bao gồm trạm cá nhân đầu tiên trên thế giới, trạm Xerox Alto. Trạm Ethernet đầu tiên chạy với tốc độ xấp xỉ 3Mbps. 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). 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 biệt, với phiên bản 100 Mbit/s (Fast Ethernet, IEEE 802.3u), Ethernet ngày càng đóng một vai trò quan trọng trong các 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 và cáp quang, gần đây Ethernet không dây (Wireless LAN, IEEE 802.11) cũng đang thu hút được sự quan tâm lớn. 1.1. Cấu trúc khung tin 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: Bảng 1: Cấu trúc khung MAC theo IEEE 802.3/ Ethernet. Mở đầu SFD Địa chỉ Địa chỉ Độ dài Dữ liệu PAD FCS 555…5H (D5H) đích nguồn kiểu gói 7 byte 1 byte 2/6 byte 2/6 byte 2 byte 46-1500 byte 4 byte 6
  7. 7. - Preamble (mở đầu): 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 1 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ỏ. 1.2. Cấu trúc địa chỉ Ethernet Mỗi giao tiếp mạng Ethernet được định danh duy nhất bởi 48 bit địa chỉ (6 octet). Đây là địa chỉ được ấn định khi sản xuất thiết bị, gọi là địa chỉ MAC (Media Access Control Address ). Địa chỉ MAC được biểu diễn bởi các chữ số hexa ( hệ cơ số 16 ). Ví dụ:00:60:97:8F:4F:86 hoặc 00-60-97-8F-4F-86. Khuôn dạng địa chỉ MAC được chia làm 2 phần: - 3 octet đầu xác định hãng sản xuất, chịu sự quản lý của tổ chức IEEE. - 3 octet sau do nhà sản xuất ấn định. Kết hợp ta lẽ có một địa chỉ MAC duy nhất cho một giao tiếp mạng Ethernet. Địa chỉ MAC được sử dụng làm địa chỉ nguồn và địa chỉ đích trong khung Ethernet. 1.3. Các loại khung Ethernet 1.3.1. Các khung unicast Giả sử trạm 1 cần truyền khung tới trạm 2. Khung Ethernet do trạm 1 tạo ra có địa chỉ: - MAC nguồn: 00-60-08-93-DB-C1 - MAC đích: 00-60-08-93-AB-12 7
  8. 8. Hình 1: Mô hình truyền thông unicast. Đây là khung unicast. Khung này được truyền tới một trạm xác định. Tất cả các trạm trong phân đoạn mạng trên sẽ đều nhận được khung này nhưng: - Chỉ có trạm 2 thấy địa chỉ MAC đích của khung trùng với địa chỉ MAC của giao tiếp mạng của mình nên tiếp tục xử lý các thông tin khác trong khung. - Các trạm khác sau khi so sánh địa chỉ sẽ bỏ qua không tiếp tục xử lý khung nữa. 1.3.2. Các khung broadcast Các khung broadcast có địa chỉ MAC đích là FF-FF-FF-FF-FF-FF. Khi nhận được các khung này, mặc dù không trùng với địa chỉ MAC của giao tiếp mạng của mình nhưng các trạm đều phải nhận khung và tiếp tục xử lý. Giao thức ARP sử dụng các khung broadcast này để tìm địa chỉ MAC tương ứng với một địa chỉ IP cho trước. Một số giao thức định tuyến cũng sử dụng các khung broadcast để các router trao đổi bảng định tuyến. 1.3.3. Các khung multicast Trạm nguồn gửi khung tới một số trạm nhất định chứ không phải là tất cả. Địa chỉ MAC đích của khung là địa chỉ đặc biệt mà chỉ các trạm trong cùng nhóm mới chấp nhận các khung gửi tới địa chỉ này. 1.4. Truy nhập bus Một vấn đề lớn thường gây lo ngại trong việc sử dụng Ethernet ở cấp trường là phương pháp truy nhập bus ngẫu nhiên CSMA/CD ( Carrier Sense Multiple Access with Collision Avoidance ) và sự ảnh hưởng tới hiệu suất cũng như tính năng thời gian 8
  9. 9. thực của hệ thống. Ở đây, một trong những yếu tố quyết định tới hiệu suất của hệ thống là thuật toán tính thời gian truy nhập lại cho các trạm trong trường hợp xảy ra 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, mỗi trạm đều có quyền truy nhập bus mà không cần một sự kiểm soát nào. Phương pháp được tiến hành như sau: - Mỗi trạm đều phải tự nghe đường dẫn (carrier sense), nếu đường dẫn rỗi (không có tín hiệu ) thì mới được phát. - Do việc lan truyền tín hiệu cần một thời gian nào đó, nên vẫn có khả năng hai trạm cùng phát tín hiệu lên đường dẫn. Chính vì vậy, trong khi phát thì mỗi trạm vẫn phải nghe đường dẫn để so sánh tín hiệu phát đi với tín hiệu nhận được xem có xảy ra xung đột hay không (collision detection). - Trong trường hợp xảy ra xung đột, mỗi trạm đều phải hủy bỏ bức điện của mình, chờ một thời gian ngẫu nhiên và thử gửi lại. Một tình huống xảy ra xung đột tiêu biểu và cách khắc phục được minh họa trên hình... Trạm A và C cùng nghe đường dẫn. Đường dẫn rỗi nên A có thể gửi trước. Trong khi tín hiệu từ trạm A gửi đi chưa kịp tới nên trạm C không hay biết và cũng 9
  10. 10. gửi, gây ra xung đột tại một điểm gần C. A và C sẽ lần lượt nhận được tín hiệu phản hồi, so sánh với tín hiệu gửi đi và phát hiện xung đột. Cả hai trạm sẽ cùng phải hủy bỏ bức điện đã gửi đi bằng cách không phát tiếp, các trạm muốn nhận sẽ không nhận được cờ hiệu kết thúc bức điện và sẽ coi như bức điện không hợp lệ. A và C cũng có thể gửi đi một tín hiệu “ jam” đặc biệt để báo cho các trạm cần nhận biết. Sau đó mỗi trạm sẽ chờ một thời gian chờ ngẫu nhiên, trước khi thử phát lại. Thời gian chờ ngẫu nhiên ở đây tuy nhiên phải được tính theo một thuật toán nào đó để sao cho thời gian chờ ngắn một cách hợp lí và không giống nhau giữa các trạm cùng chờ. Thông thường thời gian chờ này là bội số của hai lần thời gian lan truyền tín hiệu Ts. Ưu điểm của CSMA/CD là tính chất đơn giản, linh hoạt. Khác với các phương pháp tiền định, việc ghép thêm hay bỏ đi một trạm trong mạng không ảnh hưởng gì tới hoạt động của hệ thống. Chính vì vậy, phương pháp này được áp dụng rộng rãi trong mạng Ethernet. Nhược điểm của CSMA/CD là tính chất bất định của thời gian phản ứng. Các trạm đều bình đẳng như nhau nên quá trình chờ ở một trạm có thể lặp đi lặp lại, không xác định được tương đối chính xác thời gian. Hiệu suất sử dụng đường truyền vì thế cũng thấp. Rõ ràng, nếu như không kết hợp thêm với các kỹ thuật khác thì phương pháp này không thích hợp với các cấp thấp, đòi hỏi trao đổi dữ 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 trên nhiều công nghệ truyền dẫn khác nhau vì thế có nhiều loại mạng Ethernet. Mỗi loại mạng được mô tả dựa theo ba yếu tố: tốc độ, phương thức tín hiệu sử dụng và đặc tính đường truyền vật lý. 1.5.1. Các hệ thống Ethernet 10Mb/s - 10Base5. Đây là tiêu chuẩn Ethernet đầu tiên, dựa trên cáp đồng trục loại dày. Tốc độ đạt được 10 Mb/s, sử dụng băng tần cơ sở, chiều dài cáp tối đa cho 1 phân đoạn mạng là 500m. - 10Base2. Có tên khác là “thin Ethernet” , dựa trên 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 của phân đoạn là 185 m (IEEE làm tròn thành 200m). - 10BaseT. Chữ T là viết tắt của “twisted”: cáp xoắn cặp. 10BaseT hoạt động tốc độ 10 Mb/s dựa trên hệ thống cáp xoắn cặp Cat 3 trở lên. 10
  11. 11. - 10BaseF. F là viết tắt của Fiber Optic ( sợi quang). Đây là chuẩn Ethernet dùng cho sợi quang hoạt động ở tốc độ 10 Mb/s , ra đờ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 trên cả 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 của hệ thống này (sử dụng phương pháp mã hoá 4B/5B của chuẩn FDDI). Bao gồm 2 chuẩn 100BaseFX và 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 và 100BaseT4. Các chuẩn này sử dụng 2 cặp và 4 cặp cáp xoắn cặp Cat 3 trở lên tuy nhiên hiện nay hai chuẩn này ít được sử dụng. 1.5.3. Các hệ thống Giga Ethernet - 1000BaseX. Chữ X nói lên đặc tính mã hoá đường truyền ( chuẩn này dựa trên kiểu mã hoá 8B/10B dùng trong hệ thống kết nối tốc độ cao Fibre Channel được phát triển bởi ANSI). Chuẩn 1000BaseX gồm 3 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 cơ sở trên cáp xoắn cặp Cat 5 trở lên. Sử dụng kiểu mã hoá đường truyền riêng để đạt được tốc độ cao trên loại cáp này. 1.6. Chuẩn IEEE 802 IEEE 802 là họ các chuẩn IEEE dành cho các mạng LAN và mạng MAN (metropolitan area network). Cụ thể hơn, các chuẩn IEEE 802 được giới hạn cho các mạng mang các gói tin có kích thước đa dạng. (Khác với các mạng này, dữ liệu trong các mạng cell-based được truyền theo các đơn vị nhỏ có cùng kích thước được gọi là cell. Các mạng Isochronous, nơi dữ liệu được truyền theo một dòng liên tục các octet, hoặc nhóm các octet, tại các khoảng thời gian đều đặn, cũng nằm ngoài phạm vi của chuẩn này). 11
  12. 12. Các dịch vụ và giao thức được đặc tả trong IEEE 802 ánh xạ tới hai tầng thấp (tầng liên kết dữ liệu và tầng vật lý của mô hình 7 tầng OSI. Thực tế, IEEE 802 chia tầng liên kết dữ liệu OSI thành hai tầng con LLC (điều khiển liên kết lôgic) và MAC (điều khiển truy nhập môi trường truyền), do đó các tầng này có thể được liệt kê như sau: - Tầng liên kết dữ liệu - Tầng con LLC - Tầng con MAC - Tầng vật lý Họ chuẩn IEEE 802 được bảo trì bởi Ban Tiêu chuẩn LAN/MAN IEEE 802 (IEEE 802 LAN/MAN Standards Committee (LMSC)). Các chuẩn được dùng rộng rãi nhất là dành cho họ Ethernet, Token Ring, mạng LAN không dây, các mạng LAN dùng bridge và bridge ảo (Bridging and Virtual Bridged LANs). Chuẩn dành cho họ Ethernet là chuẩn IEEE 802.3. 12
  13. 13. CHƯƠNG 2. HỌ GIAO THỨC TCP/IP 2.1. Họ giao thức TCP/IP TCP/IP là viết tắt của Transmission Control Protocol / Internet Protocol (Giao thức Điều Khiển Truyền Thông /Giao thức Internet). 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. TCP/IP sử dụng mô hình truyền thông 4 tầng hay còn gọi là mô hình DoD (Mô hình của Bộ Quốc Phòng Mỹ). Các tầng trong mô hình này 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 các ứng dụng người dùng. Được sử dụng để định dạng và trao đổi thông tin người dùng. 1 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. 13
  14. 14. - 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: là chương trình mô phỏng thiết bị đầu cuối cho phép người dùng login vào một máy chủ từ một máy tính nào đó trên mạng. Tầng ứng dụng trao đổi dữ liệu với lớp dưới (lớp vận chuyển) qua cổng. Việc dùng cổng bằng số cho phép giao thức của lớp vận chuyển biết loại nội dung nào chứa bên trong gói dữ liệu. Những cổng được đánh bằng số và những ứng dụng chuẩn thường dùng cùng cổng. Ví dụ: giao thức FTP dùng cổng 20 cho dữ liệu và 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 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: - UDP (User Datagram Protocol): Còn gọi là Giao Thức Gói Người Dùng. UDP cung cấp các kênh truyền thông phi kết nối nên nó không đảm bảo truyền dữ liệu 1 cách tin cậy. 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. - TCP (Transmission Control Protocol): Ngược lại với UDP, 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 1 cách tin cậy. 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. 2.1.3. Tầng Internet (Internet Layer) Nằm bên trên tầng truy nhập 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. 4 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. 14
  15. 15. - 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) . 2.1.4. Lớp giao tiếp mạng Tầng giao tiếp mạng liên quan tới việc trao đổi dữ liệu giữa hai trạm thiết bị trong cùng một mạng. Các chức năng bao gồm việc kiểm soát truy nhập môi trường truyền dẫn, kiểm soát lỗi và lưu thông dữ liệu. Datagram được tạo từ lớp Internet sẽ được gửi xuống tới lớp truy nhập mạng nếu truyền dữ liệu, hoặc tầng giao tiếp mạng sẽ lấy dữ liệu từ mạng và gửi nó tới lớp Internet nếu chúng ta nhận dữ liệu. Như đã đề cập ở phần trên, Ethernet là giao thức cấp dưới có ba lớp LLC ( Logic Link Control ), MAC ( Media Access Control ) và lớp vật lí Physical. 2.2. Cấu trúc gói tin IP,TCP,UDP 2.2.1. Cấu trúc địa chỉ IP Mạng Internet dùng hệ thống địa chỉ IP (32 bit) để "định vị" các máy tính liên kết với nó. Có hai cách đánh địa chỉ phụ thuộc vào cách liên kết của từng máy tính cụ thể. Nếu các máy tính được kết nối trực tiếp với mạng Internet thì NIC (Network Information Centre) sẽ cấp cho các máy tính đó một địa chỉ IP (IP Address). Nếu các máy tính không kết nối trực tiếp với mạng Internet mà thông qua một mạng cục bộ thì người quản trị mạng sẽ cấp cho các máy tính đó một địa chỉ IP (tuy nhiên cũng dưới sự cho phép của NIC). Hệ thống địa chỉ này được thiết kế mềm dẻo qua một sự phân lớp, có 5 lớp địa chỉ IP là : A, B, C, D, E. Sự khác nhau cơ bản giữa các lớp địa chỉ này là ở khả năng tổ chức các cấu trúc con của nó. 15
  16. 16. Bảng 2: Tổ chức địa chỉ IP. 0 1 2 3 4 8 16 24 Class A 0 Netid Hostid Class B 1 0 Netid Hostid Class C 1 1 0 Netid Hostid Class D 1 1 1 0 Multicast address Class E 1 1 1 1 0 Reverved for future use - Địa chỉ lớp A: Lớp A sử dụng byte đầu tiên của 4 byte để đánh địa chỉ mạng. Như hình trên, nó được nhận ra bởi bit đầu tiên trong byte đầu tiên của địa chỉ có giá trị 0. 3 bytes còn lại được sử dụng để đánh địa chỉ máy trong mạng. Có 126 địa chỉ lớp A (được đánh địa chỉ trong byte thứ nhất) với số máy tính trong mạng là 2563 - 2 = 16.777.214 máy cho mỗi một địa chỉ lớp A (sử dụng 3 bytes để đánh địa chỉ máy). - Địa chỉ lớp B: Một địa chỉ lớp B được nhận ra bởi 2 bit đầu tiên của byte thứ nhất mang giá trị 10. Lớp B sử dụng 2 byte đầu tiên của 4 byte để đánh địa chỉ mạng và 2 byte cuối đánh địa chỉ máy trong mạng. Có 64*256 - 2 = 16.128 địa chỉ mạng lớp B với 65.534 máy cho mỗi một địa chỉ lớp B. - Địa chỉ lớp C: Một địa chỉ lớp C được nhận ra với 3 bit đầu mang giá trị 110. Mạng lớp C sử dụng 3 byte đầu để đánh địa chỉ mạng và 1 byte cuối đánh địa chỉ máy tính có trong mạng. Có 2.097.152 -2 địa chỉ lớp C, mỗi địa chỉ lớp C có 254 máy. - Địa chỉ lớp D: Dùng để gửi các IP datagram tới một nhóm các host trên một mạng. - Địa chỉ lớp E: Dùng để dự phòng và dùng trong tương lai. 2.2.2. Cấu trúc gói tin IP - Ver-4 bít: chỉ version hiện hành của ip đang được dùng, nếu trường này khác với phiên bản IP của thiết bị nhận, thiết bị nhận sẽ loại bỏ các gói tin này. - IHL(IP Header Length)-4bít: chỉ độ dài phần header của gói tin, tính theo từ 32 bít. 16
  17. 17. - TOS(Type of Service)-1byte: cho biết dịch vụ nào mà gói tin muốn sử dụng chẳng hạn như độ ưu tiên, thời hạn chậm trễ, năng suất truyền và độ tin cậy. Cụ thể như sau:  3 bít đầu (Precedence) chỉ quyền ưu tiên gửi gói tin, từ gói tin bình thường là 0 đến gói tin kiểm soát mạng là 7.  1 bít tiếp theo (Delay) chỉ độ trễ yêu cầu, 0 ứng với gói tin có độ trễ bình thường, 1 ứng với gói tin có độ trễ thấp.  1 bít tiếp theo (Throughput) chỉ thông lượng yêu cầu sử dụng để truyền gói tin với lựa chọn truyền trên đường thông suất thấp hay trên đường thông suất cao, 0 ứng với thông lượng bình thường, 1 ứng với thông lượng cao.  1 bít tiếp theo (Reliability) chỉ độ tin cậy yêu cầu, 0 ứng với độ tin cậy bình thường, 1 ứng với độ tin cậy cao. - Total Length-2byte:chỉ độ dài toàn bộ gói tin tính cả phần header, tính theo đơn vị byte. - Indentification-16 bít: cùng với các tham số khác như Source Address, Destination Address dùng để định danh duy nhất một gói tin trong thời gian nó tồn tại trên mạng. - Flags: Các gói tin khi truyền trên đường đi có thể bị phân thành nhiều gói tin nhỏ. Trường Flags dùng để điều khiển phân đoạn và lắp ghép gói tin. Cụ thể như sau:  Bít 0: chưa sử dụng, luôn lấy giá trị 0  Bít 1: 0 ứng với gói tin bị phân mảnh, 1 ứng với gói tin không bị phân mảnh.  Bít 2: 0 ứng với gói tin thuộc phân đoạn cuối cùng của gói tin gốc, 1 ứng với gói tin không phải là phân đoạn cuối cùng của gói tin gốc. - Fragment Offset-13bít: chỉ vị trí của phân đoạn trong gói tin gốc, tính theo đơn vị 8 byte. - Time To Live-1byte: quy định thời gian tồn tại tính bằng giây của gói tin trong mạng. Thời gian này được đặt bởi trạm gửi và giảm đi (thường quy ước là 1) khi gói tin đi qua mỗi router của liên mạng. Một giá trị tối thiểu phải đủ lớn để mạng hoạt động tốt. 17
  18. 18. - Protocol: Chỉ tầng giao thức kế tiếp sẽ nhận vùng dữ liệu ở trạm đích. TCP có ứng với giá trị 6, UDP ứng với giá trị 17, 1 ứng với ICMP. - Header Checksum-2byte: Dùng để phát hiện lỗi header của gói tin xảy ra trong quá trình truyền của nó. - Source IP Address-4byte: Địa chỉ IP của nơi truyền gói tin. - Destination IP Address-4byte: Địa chỉ IP của nơi nhận gói tin. - IP Option-độ dài thay đổi: Khai báo các lựa chọn do người sử dụng yêu cầu, ví dụ như: mức độ bảo mật, đường mà gói tin được gửi đi, timestamp ở mỗi router. - Padding-độ dài thay đổi: Dùng để đảm bảo phần header luôn kết thúc ở một mốc 32 bít. - Data: chứa thông tin lớp trên ,chiều dài thay đổi đến 64Kb. 2.2.3. Cấu trúc gói tin TCP Đơn vị dữ liệu trong TCP được gọi là Segment với cấu trúc như sau: - Source Port-2 byte: số hiệu cổng TCP của trạm nguồn. - Destination Port-2byte: số hiệu cổng TCP của trạm đích. - Sequence number: số hiệu của byte đầu tiên của segment, nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte đầu tiên được gửi có số thứ tự này cộng thêm 1. Nếu không có cờ SYN thì đây là số thứ tự của byte đầu tiên. - Acknowledgment Number-2byte: nếu cờ ACK bật thì giá trị của trường chính là số thứ tự gói tin tiếp theo mà bên nhận cần. Báo là nhận tốt các segment mà trạm đích đã gửi cho trạm nguồn. - Data offset-4bit: độ dài của phần header tính theo đơn vị từ 32 bit. Tham số này chỉ ra vị trí bắt đầu của nguồn dữ liệu. - Reserved-6 bít. - Flags: các bít điều khiển  URG: Vùng con trỏ khẩn (Urgent pointer) có hiệu lực  ACK: Vùng báo nhận ACK number có hiệu lực  PSH: Chức năng PUSH  RST: khởi động lại liên kết 18
  19. 19.  SYN: đồng bộ hoá số hiệu tuần tự  FIND: không còn dữ liệu từ trạm nguồn - Window-2byte: số byte dữ liệu bắt đầu từ byte được chỉ ra trong ACK number mà trạm nguồn đã sẵn sàng để nhận. - Checksum: checksum cho cả phần header lẫn dữ liệu. - Urgent Pointer-2byte: nếu cờ URG bật thì giá trị trường này chính là số từ 16 bit mà số thứ tự gói tin (sequence number) cần dịch trái. - Option-2byte: vùng tuỳ chọn, khai báo các option của TCP trong đó có độ dài tối đa của vùng TCP data trong một segment. - Padding: phần chèn thêm vào header để đảm bảo phần header luôn kết thúc ở một mốc 32 bít - TCP data: chứa dữ liệu của tầng trên có độ dài tối đa ngầm định là 536byte. Giá trị này có thể khai báo trong trường Option. 2.2.4. Cấu trúc gói tin UDP Vùng header của UDP có 64 bít với 4 trường : - Source Port-2byte: xác định cổng của người gửi thông tin và có ý nghĩa nếu muốn nhận thông tin phản hồi từ người nhận. Nếu không thì đặt nó bằng 0. - Destination Port-2byte: xác định cổng nhận thông tin và trường này là cần thiết. - Length-2byte: là chiều dài của toàn bộ gói tin(phần header và phần dữ liệu). Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ có header. - Checksum-2byte: dùng cho việc kiểm tra lỗi của phần header và phần dữ liệu. 19
  20. 20. CHƯƠNG 3. PHẦN CỨNG 3.1. Vi điều khiển PIC18F67J60 3.1.1. Các đặc trưng của PIC18F67J60 Vi điều khiển PIC18F67J60 là một vi điều khiển thuộc dòng vi điều khiển PIC19F97J60, do đó nó có các đặc trưng chung của họ vi điều khiển này. 3.1.1.1. Các đặc trưng chung: - Sử dụng thạch anh 25MHz cho ứng dụng Ethernet. - Bộ nhớ chương trình 128Kbyte ( 65532 lệnh). - Bộ nhớ dữ liệu 3808 byte. - Có 39 chân I/O thuộc các port A,B,C,D,E,F,G. - Có 5 bộ Timer:  Timer0 : vận hành như là 1 bộ định thời 8 bit hoặc 16 bit, 1 bộ đếm.  Timer1 : vận hành như là 1 bộ định thời 8 bit, 1 bộ đếm.  Timer2 : vận hành như là 1 bộ định thời 8 bit, 1 bộ đếm.  Timer3 : vận hành như là 1 bộ định thời 16 bít, 1 bộ đếm.  Timer4 : vận hành như là 1 bộ định thời 8 bít, 1 bộ đếm. - Có 2 module Capture/Compare/PWM. - Có 3 module EnhancedCapture/Compare/PWM. - Các giao tiếp nối tiếp MSSP (Master Synchronous Serial Port) và Enhanced USART (Universal asynchronous receiver/transmitter). - Có 11 kênh chuyển đổi A/D 10 bit. 3.1.1.2. Đặc trưng Ethernet: - Sử dụng chuẩn IEEE 802.3. - Tích hợp MAC và 10Base-T PHY. - 8 kbyte bộ nhớ đệm SRAM để lưu trữ các gói tin truyền/nhận. - Có 2 led để chỉ trạng thái hoạt động. 20
  21. 21. 3.1.2. Module A/D 10 bit Vi điều khiển PIC 18F67J60 có 11 kênh chuyển đổi A/D (analog-to-digital). Module ADC cho phép chuyển đổi một tín hiệu tương tự đầu vào thành một giá trị số 10 bit tương ứng ở đầu ra. 3.1.2.1. Module A/D có 5 thanh ghi:  Thanh ghi ADRESH (A/D Result High Register).  Thanh ghi ADRESL (A/D Result Low Register).  Thanh ghi ADCON0 (A/D Control Register 0).  Thanh ghi ADCON0 (A/D Control Register 1).  Thanh ghi ADCON0 (A/D Control Register 2). - Thanh ghi ADCON0: điều khiển hoạt động của module A/D Hình 4: Thanh ghi ADCON0. Ta chỉ cần quan tâm đến các bit 5-0  Bit 5-2: chọn kênh A/D: 0000 = Kênh 0 (AN0) 0001 = Kênh 1 (AN1) 0010 = Kênh 2 (AN2) 0011 = Kênh 3 (AN3) 0100 = Kênh 4 (AN4) 0110 = Kênh 6 (AN6) 0111 = Kênh 7 (AN7) 1000 = Kênh 8 (AN8) 1001 = Kênh 9 (AN9) 1010 = Kênh 10 (AN10) 1011 = Kênh 11 (AN11) 21
  22. 22.  Bit 1: Nếu bit ADON=1 thì module A/D đang làm việc nếu bit này là 1 và module A/D này không làm gì nếu bit này là 0.  Bit 0: ADON=1 : cho phép module A/D hoạt động. ADON=0 : không cho phép module A/D hoạt động. - Thanh ghi ADCON1: cấu hình cho các chân A/D Hình 5: Thanh ghi ADCON1.  Bit 5: VCFG0 = 1 nghĩa là đặt chân AN2 là VREF- VCFG0 = 0 nghĩa là đặt VREF- = AVSS  Bit 4: VCFG0 = 1 nghĩa là đặt chân AN3 là VREF+ VCFG0 = 0 nghĩa là đặt VREF+ = AVDD  Bit 3-0: PCFG3:PCFG0 – các bit này điều khiển việc cấu hình cho các chân A/D. Hình 6: Các bit điều khiển cấu hình cho các chân của bộ A/D. Chú thích: (1): AN12-AN15 chỉ có trên các vi điều khiển 80 và 100 chân. (2): AN5 chỉ có trên vi điều khiển 100 chân. A = Analog input D= Digital I/O 22
  23. 23. - Thanh ghi ADCON2: cấu hình xung clock cho bộ A/D, căn chỉnh. Hình 7: Thanh ghi ADCON2.  Bit 7: ADFM – bit chọn định dạng cho kết quả.  Bit 5-3: ACQT2: ACQT0 các bit chọn Acquisition Time. 111 = 20 TAD 110 = 16 TAD 101 = 12 TAD 100 = 8 TAD 011 = 6 TAD 010 = 4 TAD 001 = 2 TAD 000 = 0 TAD  Bit 2-0: các bit chọn xung clock cho quá trình chuyển đổi. 111 = FRC (xung clock của bộ dao động RC) 110 = FOSC/64 101 = FOSC/16 100 = FOSC/4 011 = FRC (xung clock của bộ dao động RC) 010 = FOSC/32 001 = FOSC/8 000 = FOSC/2 23
  24. 24. 3.1.2.2. Quá trình chuyển đổi A/D: - Bước 1: Cấu hình cho module A/D  Thiết lập thanh ghi ADCON1 (cấu hình chân analog, VREF, Digital I/O).  Thiết lập thanh ghi ADCON0 (cho phép bộ A/D hoạt động, chọn kênh A/D đầu vào).  Thiết lập thanh ghi ADCON2 (chọn xung clock cho bộ A/D, acquisition time). - Bước 2: Cấu hình ngắt A/D (nếu sử dụng)  Xóa bit ADIF.  Set bit ADIE.  Set bit GIE. - Bước 3: Chờ acquisition time được yêu cầu (nếu được yêu cầu). - Bước 4: Bắt đầu chuyển đổi, set bit ADCON0<1>. - Bước 5: Chờ quá trình chuyển đổi A/D hoàn thành bằng việc chờ cho đến khi bit ADCON0<1> bị xóa hoặc chờ ngắt A/D. - Bước 6: Đọc kết quả các thanh ghi (ADRESH:ADRESL), xóa bit ADIF nếu được yêu cầu. - Bước 7: Để thực hiện quá trình chuyển đổi tiếp theo, quay lại bước 1 hoặc bước 2. 3.1.3. Module Ethernet Vi điều khiển PIC18F67J60 được tích hợp sẵn module điều khiển Ethernet. Đây là một giải pháp kết nối hoàn chỉnh, bao gồm cả module Media Access Control (MAC) và Physical Layer transceiver (PHY). Module Ethernet đáp ứng tất cả các chuẩn IEEE 802.3 cho kết nối 10-BaseT cáp đôi xoắn. Có 2 LED output để báo liên kết và trạng thái hoạt động của mạng. 24
  25. 25. Hình 8: Sơ đồ khối module Ethernet. Module Ethernet gồm 5 khối chức năng chính: - Khối truyền nhận PHY sẽ mã hóa và giải mã dữ liệu gửi hoặc nhận ở đầu RJ45. - Khối MAC phù hợp với chuẩn IEEE 802.3 cung cấp MIIP (Media Independent Interface Management) để điều khiển PHY. - Một bộ đệm RAM 8Kbyte để lưu trữ các gói tin truyền nhận. - Một khối phân xử để điều khiển sự truy cập vào bộ đệm RAM khi được DMA, khối truyền nhận yêu cầu. - Thanh ghi giao tiếp có chức năng thông dịch những dòng lệnh và tín hiệu trạng thái nội giữa module Ethernet và các thanh ghi đặc biệt của vi điều khiển SFRS. 3.2. Mạch nguyên lý 3.2.1. Khối mạch nguồn 25
  26. 26. Hình 10: Khối mạch nguồn - Mạch nguồn sử dụng IC ổn áp 7805 để tạo điện áp 5V để nuôi các khối sử dụng điện áp 5V và đưa tới đầu vào của IC ổn áp LM117. Tại đầu ra của LM117 là điện áp 3.3V dùng để cấp nguồn cho vi điều khiển và các khối khác trong mạch sử dụng điện áp 3.3V. - Tại đầu vào của IC 7805, dòng điện DC được cho qua một diode D3 trước khi tới đầu vào của 7805 để bảo đảm cho dòng điện qua 7805 theo 1 chiều cố định. Các tụ C15, C17, C13, C16, C19, C18 có tác dụng lọc nhiễu. 3.2.2. Khối mạch RJ45 Hình 11: Khối mạch RJ45. 26
  27. 27. - Trong mạch này, sử dụng đầu cắm giao tiếp RJ45 là HR911105A của HANRUN. HR911105A được tích hợp sẵn biến áp và có 2 led để thông báo trạng thái kết nối của mạch. Hình 12: Sơ đồ khối của HR911105A.. 3.2.3. Khối mạch vi điều khiển PIC18F67J60 27
  28. 28. Hình 14: Jack kết nối với mạch vi điều khiển, mạch dao động ngoài, chân VDDCORE/VCAP. - Chân VDDCORE/VCAP của vi điều khiển được nối với tụ phân cực C14 xuống đất. - Bộ dao động ngoài sử dụng thạch anh 25MHz. Hình 15: Mạch lọc, mạch reset, chân nạp cho vi điều khiển. - Các tụ C2, C3, C4, C5, C6, C7, C9 có tác dụng lọc nhiễu. 3.3 Mạch in 28
  29. 29. Hình 16: Bảng mạch chính. CHƯƠNG 4. TRÌNH BIÊN DỊCH CCS VÀ WEB SERVER 4.1. CCS 4.1.1. Vì sao ta sử dụng CSS Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu việc lập trình cho vi điều khiển là việc làm việc với các con số 0 và 1. Sau này khi kiến trúc vi điều khiển ngày càng phức tạp, số lượng thanh ghi lệnh nhiều lên, việc lập trình với các con số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assembly. Sau này khi ngôn ngữ C ra đời, nhu cầu dung ngôn ngữ C để 29
  30. 30. thay thế cho ASM trong việc mô tả các lệnh lập trình cho vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của nhiều chương trình soạn thảo và biên dịch C cho vi điều khiển: Keli C, HT-PIC, MikoC, CCS… Tôi chọn CCS để lập trình cho PIC vì CCS là một công cụ lập trình C mạnh cho vi điều khiển PIC. 4.1.2. Giới thiệu về CCS: - CCS là trình biên dịch lập trình ngôn ngữ C cho vi điều khiển PIC của hang Microchip. Chương trình là sự tích hợp của 3 trình biên dịch riêng biệt cho 3 dòng PIC khác nhau đó là: o PCB cho dòng PIC 12-bit opcodes o PCB cho dòng PIC 14-bit opcodes o PCB cho dòng 16 và 18-bit - Tất cả 3 trình biên dịch này được tích hợp lại trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS. Phiên bản đươc sử dụng trong tài liệu này là PCWH Compiler Ver 4.104. - Giống nhiều trình biên dịch C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình điều khiển sẽ được thực hiện nhanh chóng và hiệu quả cao thông qua việc sử dụng ngôn ngữ nạp trình cấp cao – ngôn ngữ C. 4.2. Web động Web động hay DHTML ( Dynamic HTML) có thể được định nghĩa như là một phần mềm được sử dụng cho việc mô tả sự kết hợp giữa ngôn ngữ đánh dấu siêu văn bản HTML, các stylesheet và ngôn ngữ script làm cho tài liệu trở nên sinh động. DHTML cho phép người lập trình dễ dàng thêm các hiệu ứng cho các trang web. Ví dụ như làm động các hình ảnh và text trên trang web. Cấu trúc của một DHTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> 30
  31. 31. <head> <title>DHTML example</title> <script type="text/javascript"> function init() { myObj = document.getElementById("navigation"); // .... more code } window.onload=init; </script> </head> <body> <div id="navigation"></div> <pre> Often the code is stored in an external file; this is done by linking the file that contains the JavaScript. This is helpful when several pages use the same script: </pre> <script type="text/javascript" src="myjavascript.js"></script> </body> </html> 4.3. CSS CSS là chữ viết tắt của cụm từ tiếng Anh “Cascading Style Sheet”, là kiểu thiết kế sử dụng nhiều lớp định dạng chồng lên nhau. CSS được tổ chức World Wide Web (W3C) giới thiệu vào năm 1996. Cách đơn giản nhất để hiểu CSS là coi nó như một phần mở rộng của HTML để giúp đơn giản hóa và cải tiến việc thiết kế cho các trang web. Một tiện ích của CSS là định nghĩa các Style (kiểu dáng, định dạng, v.v..) một lần và các trình duyệt có thể áp dụng các Style này nhiều lần trong một văn bản. 31
  32. 32. 4.3.1. Ưu điểm của CSS CSS có thể tách riêng phần định dạng ra khỏi nội dung một trang web, do đó nó sẽ rất thuận tiện khi thay đổi giao diện của một trang web. CSS là một sợi chỉ xuyên suốt trong quá trình thiết kế một website bởi vì nó cho phép nhà thiết kế kiểm soát toàn bộ giao diện, kiểu cách và sự sắp đặt của nhiều trang hay nhiều đối tượng trong một lần định nghĩa. Để thay đổi tổng thể hay nhiều đối tượng có cùng style, chỉ cần thay đổi style đó và lập tức tất cả các thành phần áp dụng Style đó sẽ thay đổi theo. Nó giúp tiết kiệm công sức rất nhiều. Do định nghĩa các style có thể được tách riêng ra khỏi nội dung của trang web, chúng được các trình duyệt tải một lần và sử dụng cho nhiều lần, do đó nó giúp các trang web nhẹ hơn và chạy nhanh hơn. 4.3.2. Các đặc tính cơ bản của CSS CSS quy định cách hiển thị của các thẻ HTML bằng cách quy định các thuộc tính của các thẻ đó (font chữ, màu sắc). Để cho thuận tiện có thể đặt toàn bộ các thuộc tính của thẻ vào trong một file riêng có phần mở rộng là “.css”, thường người ta hay đặt tên nó là stylesheet.css. CSS phá vỡ giới hạn trong thiết kế Web, bởi chỉ cần một file CSS có thể cho phép quản lí định dạng và layout trên nhiều trang khác nhau. Các nhà phát triển Web có thể định nghĩa sẵn thuộc tính của một số thẻ HTML nào đó và sau đó nó có thể dùng lại trên nhiều trang khác. Có thể khai báo CSS bằng nhiều cách khác nhau. Có thể đặt đoạn CSS phía trong thẻ <Head>…</Head>, hoặc ghi nó ra một file riêng với phần mở rộng “.css”, ngoài ra bạn còn có thể đặt chúng trong từng thẻ HTML riêng biệt. 4.3.2.1. Cú pháp cơ bản của CSS: css_selector_1 { thuộc_tính_1: giá_trị_của_thuộc_tính_1; thuộc_tính_2: giá_trị_của_thuộc_tính_2; ... thuộc_tính_n: giá_trị_của_thuộc_tính_n; } css_selector_2 { thuộc_tính_1: giá_trị_của_thuộc_tính_1; 32
  33. 33. thuộc_tính_2: giá_trị_của_thuộc_tính_2; ... thuộc_tính_n: giá_trị_của_thuộc_tính_n; } ... css_selector_n { thuộc_tính_1: giá_trị_của_thuộc_tính_1; thuộc_tính_2: giá_trị_của_thuộc_tính_2; ... thuộc_tính_n: giá_trị_của_thuộc_tính_n; } 4.3.2.2. Ví dụ minh họa về mã CSS: body { background: #ffffff; /* trang Web sẽ có nền màu trắng */ font-family: Verdana; /* font chữ mặc định là Verdana */ color: #ff0000; /* màu chữ mặc định là màu đỏ */ } 4.3.2.3. Thứ tự xếp lớp: Tùy vào từng cách đặt khác nhau mà mức độ ưu tiên cho các style cũng khác nhau. Mức độ ưu tiên này tuân theo thứ tự sau: - Style nội tuyến – Style đặt trong từng thẻ HTML riêng biệt. - Stylet bên trong – Style đặt bên trong cặp thẻ <Head> … </Head>. - Style bên ngoài – Style đặt trong các file riêng có đuôi “.css”. - Style theo mặc định của trình duyệt. 4.3.3. CSS có tính kế thừa và tính kết hợp 4.3.3.1. Tính kế thừa: Giả sử rằng ở đầu file styleshet.css khai báo cho Body có các thuộc tính sau: 33
  34. 34. Body{ Font:Arial, Verdana; Background:#FF6600; } Nhưng trong trường hợp muốn khai báo cho các đối tượng nhỏ hơn nằm trong đó như Sidebar: #sidebar{ With:300px; Padding:10px; Font:Tahoma,Verdana; } Sau đoạn khai báo này thì Sidebar sẽ có thuộc tính: #sidebar{ background:#FF6600; with:300px; padding: 10px; font: Tohoma, Verdana; } Như vậy, Sidebar đã kế thừa thuộc tính background của Body, và trong đó thuộc tính font là Tahoma đã đè lên thuộc tính font Arial ở lần khai báo trước. 4.3.3.2. Tính kết hợp: Có thể định nghĩa nhiều CSS cùng một thuộc tính thay vì phải định nghĩa riêng lẻ từng cái một. Ví dụ: h1, h2,h3,h4{ Font-family: Tahoma,arial; 34
  35. 35. Color:#D4D4D4; } Thay cho việc định nghĩa riêng biệt cho từng cái: h1{ Font-family: Tahoma,arial; Color: #D4D4D4; } h2{ Font-family: Tahoma,arial; Color:#D4D4D4; } …………………………… h4{ Font-family: Tahoma,arial; Color:#D4D4D4; } CHƯƠNG 5. TCP/IP STACK 5.1. Cấu trúc của TCP/IP Stack TCP/IP Stack là ứng dụng của Microchip để tạo một Webserver nhúng, hoặc các giao thức giao tiếp Enthernet hiện hành. Bao gồm các giao thức truyền dữ liệu TCP, UDP. Và hỗ trợ các module khác như: IP, ICMP, DHCP, ARP và DNS. TCP/IP cũng có các Module sử dụng cho lớp ứng dụng như: HTTP cho Web, SMTP cho gửi và nhận Email, SNMP cho giao thức trạng thái và điều khiển. Telnet cho điều khiển từ xa, TFTP. 35
  36. 36. Hình 23: Cấu trúc của Stack. Hình 24: So sánh cấu trúc TCP/IP tham khảo và cấu trúc Stack của Microchip. Ngoài những module chính giống như cấu trúc TCP/IP tham khảo thì Microchip đưa thêm vào Stack 2 module mới đó là StackTask và ARPTask. StackTask quản lý sự vận hành và tất cả các module của Stack. Trong khi đó, ARPTask quản lý các dịch vụ của lớp ARP ( Address Resolution Protocol). 5.2. Hoạt động của TCP/IP Stack TCP/IP Stack hoạt động gần giống cấu trúc của hệ điều hành thời gian thực, tức là các nhiệm vụ sẽ được chia thành các tác vụ ( ở đây là TCP, UDP, Ping,…). Tất cả hoạt động của TCP/IP sẽ được một đồng hồ chung quản lí theo Time Split. Tức là có một Timer hệ thống (Timer1), cứ 1 khoảng thời gian ngắn sẽ ngắt (gọi là 1 TICK), khi bị ngắt, hệ thống sẽ treo lại, ngữ cảnh của tất cả các tác vụ được bộ lập lịch lôi ra, xem 36
  37. 37. xét tác vụ nào được chạy theo kiểu chia sẻ thời gian (vì không có mức ưu tiên cho tác vụ). Sau đó cho phép tác vụ đó chiếm quyền thực thi của CPU. Đến TICK tiếp theo, hệ thống lại treo lại, và lại lôi ngữ cảnh ra, cứ tiếp tục như vậy mãi. Với cơ chế hoạt động này, vi điều khiển được coi như một lúc có thể vừa thực hiện TCP, vừa thực hiện UDP, Ping,…vừa có thể là Server và Client cùng một lúc. Vì vậy, PIC nếu được thiết lập ở chế độ TCP Server/Client sẽ hoạt động đồng thời cả 2 hoạt động này. Server lắng nghe kết nối từ Client nào đó trên mạng. Còn Client thì gửi lệnh mở cổng kết nối tới một Server nào đó cũng ở trên mạng, mà ta có thể xác lập được. Vì vậy, hoạt động của các tác vụ là độc lập với nhau, không chịu ảnh hưởng lẫn nhau. 5.2.1. Các file cần thiết - Main file: Lập trình trên file này. - ARP.c và ARP.h: Các file này được sử dụng bởi Stack để xác định địa chỉ MAC kết hợp với địa chỉ IP. - Delay.c và Delay.h: Những file này dùng để tạo độ trễ (delay) cho các hàm trong Stack. - Physical layer files: Những file này dùng để cho phép một lớp vật lý cụ thể. - Helpers.c và Helpers.h: Các file này sẽ giải thích các hàm sử dụng trong Stack. - IP.c và IP.h: Các file này cung cấp các chức năng của lớp IP cho Stack. - StackTsk.c và StackTsk.h –Các file này chứa code để khởi tạo Stack và thực hiện các hàm callback để cho Stack chạy. - Tick.c và Tick.h: Các file này tạo ra một bộ đếm thời gian để thực hiện một số chức năng thời gian trong Stack. - HardwareProfile.h: Thiết lập cấu hình cho phần cứng. - TCPIPConfig.h: Thiết lập cấu hình cho phần mềm. - MAC.h: Cung cấp các macro và cấu trúc liên quan đến phần cứng của lớp MAC. - TCPIP.h: Là file đính kèm trong Stack. Main file phải đính kèm file này. 5.2.2. Cấu trúc APP_CONFIG Hầu hết các biến của ứng dụng liên quan của Stack được lưu trữ trong cấu trúc APP_CONFIG. Chúng bao gồm địa chỉ, cờ, chuỗi tên NBNS/SSID. Ta sẽ phải khai 37
  38. 38. báo cho cấu trúc này và khởi tạo những giá trị mặc định của nó được định nghĩa trong file TCPIPConfig.h. 5.2.3. Main file 5.2.3.1. Khởi tạo Đầu tiên, cần khởi tạo phần cứng như oscillators, LEDs, LCDs, PPS pins… Sau đó, ta sẽ gọi các hàm khởi tạo từ thư viện. Đầu tiên là hàm TickInt(), nó khởi tạo tick timer để quản lý việc định thời của Stack. Sau đó là các hàm khởi tạo được thêm vào theo yêu cầu khởi tạo mà phần cứng yêu cầu. ví dụ như MPFSInt() để khởi tạo một cổng SPI (Serial Peripheral Interface Bus) để kết nối với thiết bị lưu trữ bộ nhớ để lưu trang web. Khi phần cứng được khởi tạo, ta có thể cấu hình cho Stack. Hầu hết các biết của ứng dụng liên quan của Stack được lưu trong cấu trúc AppConfig. Lúc này ta có thể khởi tạo cấu trúc AppConfig theo những giá trị ta chọn. Kết thúc khởi tạo Stack bằng việc gọi hàm StackInt(). Hàm này sẽ tự động khởi tạo các hàm cho firmware của các giao thức nếu chúng được định nghĩa trong file TCPIPConfig.h (ví dụ: TCPInit() cho TCP protocol, HTTPInt() cho HTTP hoặc HTTP2…). 5.2.3.2 Vòng lặp chính (main loop) Khi chương trình được khởi tạo, ta sẽ tạo một vòng lặp vô hạn để thực hiện các nhiệm vụ của ứng dụng. Trong vòng lặp có hai hàm phải được gọi thường xuyên là StackTask() và StackApplications. Hàm StackTask sẽ được gọi ở bất kỳ thời điểm nào khi Stack yêu cầu và sẽ điều khiển sự truyền nhận các gói dữ liệu. Hàm StackApplications sẽ gọi những module ứng dụng được gọi. Ví dụ nếu sử dụng HTTP2 server, StackApplications sẽ tự động gọi hàm HTTPServer để thực hiện bất kỳ nhiệm vụ nào của HTTP đang được đợi. Trong vòng lặp chính, ta có thể hỏi vòng cho bất kỳ sự thay đổi I/O nào và gọi bất kỳ một nhiệm vụ đặc biệt của ứng dụng mà bạn thực hiện. Để tránh tràn bộ đệm trong phần cứng hoặc vi phạm sự định thời của giao thức, ta sẽ thực hiện các nhiệm vụ trong hàm callback với các trigger định thời cơ sở. Ta sẽ phải gọi hàm StackTask mỗi khi gọi hàm StackApplications. 5.3. Các module của Stack và APIs 38
  39. 39. Microchip TCP/IP Stack bao gồm rất nhiều module. Để sử dụng được bất kì một module nào ta phải nắm rõ mục đích của nó và APIs. 5.3.1. Announce Module này làm cho việc phát hiện ra thiết bị trở nên dễ dàng bằng việc truyền một tin nhắn UDP trên cổng 30303 bất kỳ khi nào địa chỉ IP thay đổi. Cổng được sử dụng bởi module Announce có thể được thay đổi được bằng cách sửa ở marco trong file Announce.c #define ANNOUNCE_PORT 30303 Giao thức Announce được thiết kế để sử dụng cho phần mềm Ethernet Device Discoverer và MCHPDetect trên máy tính. Module Announce bao gồm 2 hàm: - AnnounceIP: AnnounceIP mở 1 socket UDP và truyền 1 gói tin đến cổng 30303. Nếu máy tính nằm trong cùng 1 subnet và tiện ích đang tìm kiếm 1 gói tin trên cổng UDP thì nó sẽ nhận gói tin này. Module này có nhiệm vụ thông báo việc thay đổi IP của mạch. Tin nhắn được hiển thị bằng phần mềm MCHPDetect.exe. Cú pháp: void AnnounceIP(); - DiscoveryTask: Hàm này được sử dụng liên tục để lắng nghe tin nhắn trên cổng Announe. Các tin nhắn có thể gửi bằng cách sử dụng công cụ Microchip Device Discoverer. Cú pháp: void DiscoveryTask(); Các hàm trên chỉ nên được truy cập bởi chính Stack. Ứng dụng không nên gọi các hàm trên và thay đổi các biến. 5.3.2. HTTP2 server Module HTTP2 web server và file MPFS2 liên quan của nó cho phép mạch hoạt động như một webserver. Nó tạo ra một phương pháp đơn giản để hiển thị thông tin trạng thái và điều khiển các ứng dụng bằng cách sử dụng một trình duyệt web thông thường. Ba thành phần chính phục vụ cho module HTTP2 web server là: web pages, phần mềm MPFS2.exe và hai file nguồn CustomHTTPApp.c và HTTPPrint.h. 39
  40. 40. Hình 25: Sơ đồ khối Web pages Bao gồm tất cả file HTML và ảnh kèm theo, CSS Stylesheets, các file JavaScript cần thiết để hiển thị một trang web. Phần mềm MPFS2 - Phần mềm này được cung cấp bởi Microchip, các trang web được gói lại thành một định dạng và lưu trữ trong bộ nhớ chương trình flash nội hoặc bộ nhớ ngoài. Chương trình này sẽ tìm các biến động trong các trang web và tự động cập nhật các biến này trong file HTTPPrint.h. - Nếu bộ nhớ ngoài được sử dụng, phần mềm MPFS2 sẽ tạo ra một file BIN và có thể tải trực tiếp lên mạch. Còn nếu dữ liệu được lưu trong bộ nhớ chương trình flash thì phần mềm MPFS2 sẽ tạo ra một file đuôi .c và được chèn vào project. - Khi các biến động được thêm vào hoặc bỏ đi, phần mềm MPFS2 sẽ cập nhật cho file HTTPPrint.h. Sau đó ta phải dịch lại project để đảm bảo các biến mới đã được thêm vào project. 40
  41. 41. Hình 26: Phần mềm MPFS2 File CustomHTTPApp.c Thực hiện các ứng dụng của web. Nó mô tả đầu ra cho các biến động ( thông qua hàm callbacks HTTPPrint_varname), phân tích dữ liệu được gửi thông qua trang web forms.htm ( sử dụng 2 hàm HTTPExecuteGet và HTTPExecutePost) và xác nhận thông tin truy cập ( bằng hàm HTTPAuthenticate). File HTTPPrint.h File này được tạo tự động bởi phần mềm MPFS2. Nó định nghĩa tất cả các biến động và tạo ra một mối liên hệ giữa các biến trong trang web và hàm callbacks HTTPPrint_varname liên quan trong file CustomHTTPApp.c. Module HTTP2 web server bao gồm các tính năng sau: 5.3.2.1. HTTP2 Dynamic Variables Một trong những tính năng cơ bản nhất là cập nhật cái thông tin trạng thái của mạch đến người sử dụng thông qua giao diện web. Các lệnh trong mã HTML sẽ thông báo cho server thực hiện các hàm callbacks tại thời điểm đó. Để tạo ra một biến động, chỉ cần đặt tên của biến bên trong một cặp ký tự (~) trong mã nguồn các trang web HTML (ví dụ: ~ myVariable ~). Khi ta chạy chương 41
  42. 42. trình MPFS2 để tạo ra các trang web, nó sẽ tự động định nghĩa những biến này trong file HTTPPrint.h. Ví dụ: sử dụng biến động builddate, mã HTML là: <div class="examplebox code">~builddate~</div> Hàm callback liên quan trong file CustomHTTPApp.c sẽ in giá trị lên trang web: void HTTPPrint_builddate(void) { TCPPutROMString(sktHTTP,(ROM void*)__DATE__); } 5.3.2.2. HTTP2 Form Processing Nhiều ứng dụng cần lấy dữ liệu từ người sử dụng. Một phương pháp thông thường sử dụng web forms.htm. web forms sử dụng 2 phương pháp GET và POST và HTTP2 web server hỗ trợ cả 2 phương pháp này. - Phương pháp GET  Phương pháp GET sẽ gán dữ liệu vào cuối URL. Dữ liệu này sẽ đứng sau dấu chấm hỏi (?) ở trên thanh địa chỉ của trình duyệt. (Ví dụ: http://mchpboard/form.htm?led1=0&led2=1&led3=0). Dữ liệu được gửi bằng phương pháp GET sẽ tự động được giải mã và được lưu trong biến mảng curHTTP.data. Vì dữ liệu này được lưu trong bộ nhớ, cho nên nó được giới hạn bởi kích thước của biến mảng curHTTP.data, mặc định là 100 bytes.  Hàm callback HTTPExecuteGet sẽ xử lý dữ liệu này và thực hiện một số nhiệm vụ cần thiết. Hai hàm HTTPGetArg và HTTPGetROMArg giúp dễ dàng lấy dữ liệu cho quá trình xử lý. - Phương pháp POST  Phương pháp POST truyền dữ liệu sau khi các header yêu cầu đã được gửi. Dữ liệu không được hiển thị trong thanh địa chỉ của trình duyệt như phương pháp GET mà chỉ được nhìn thấy bởi một công cụ bắt gói tin. Mặc dù vậy, phương pháp này sử dụng cùng cách mã hóa URL giống phương pháp GET. 42
  43. 43.  HTTP2 server không thực hiện bất kỳ sự phân tích trước các dữ liệu này. Tất cả dữ liệu POST nằm trong bộ đệm TCP, vì vậy các ứng dụng sẽ truy cập trực tiếp vào bộ đệm TCP để lấy và giải mã nó. Các hàm HTTPReadPostName và HTTPReadPostValue sẽ thực hiện công việc này. 5.3.2.3. HTTP2 Authentication Các giao thức HTTP cung cấp một phương pháp cho các máy chủ yêu cầu một tên người dùng và mật khẩu của khách hàng trước khi cấp quyền truy cập đến trang đó. Chức năng xác thực này được hỗ trợ bởi hai hàm callback. Thứ nhất, là hàm HTTPNeedsAuth, xác định xem trang web hiện tại có yêu cầu sự xác thực hay không. Thứ hai, là hàm HTTPVerifyAuth, so sánh tên người dùng và mật khẩu với một danh sách được chấp nhận, nếu đúng sẽ cho phép truy cập, nếu sai sẽ bị từ chối truy cập. - Yêu cầu xác thực  Đầu tiên, hàm HTTPNeedsAuth sẽ được gọi để xác định xem trang có yêu cầu password hay không. Hàm này sẽ trả về giá trị để hướng dẫn HTTP server phải thực hiện như thế nào. Hàm trả về giá trị 0x80 hoặc cao hơn để cho phép truy cập vô điều kiện và trả về giá trị 0x79 hoặc thấp hơn để yêu cầu nhập lại tên người sử dụng và password. Giá trị trả lại được lưu trong curHTTP.isAuthorized để nó có thể được truy cập bởi các hàm callback trong lần tiếp theo.  Ví dụ sau đây là trường hợp đơn giản, trong đó tất cả các tập tin yêu cầu một mật khẩu để truy cập: BYTE HTTPNeedsAuth(BYTE* cFile) { return 0x00; }  Trong một số trường hợp, chỉ có một số tập tin sẽ cần phải được bảo vệ. Ví dụ thứ hai đòi hỏi một mật khẩu cho bất kỳ tập tin nằm trong thư mục /treasure: BYTE HTTPNeedsAuth(BYTE* cFile) 43
  44. 44. { // Compare to "/treasure" folder. Don't use strcmp here, because // cFile has additional path info such as "/treasure/gold.htm" if(!memcmppgm2ram((void*)cFile, (ROM void*)"treasure", 5)) return 0x00; return 0x80; } - Thông tin xác thực: Hàm HTTPCheckAuth xác định xem tên và password mà người dùng cung cấp có hợp lệ để truy cập hay không. Giá trị trả lại được lưu trong curHTTP.isAuthorized để nó có thể được truy cập bởi các hàm callback trong lần tiếp theo. 5.4. Cấu hình cho Stack 5.4.1. Cấu hình cho phần cứng Hầu như việc cấu hình phần cứng được thực hiện bằng cách thêm dấu // vào trước các dòng lệnh để làm mất tác dụng của những dòng lệnh hoặc bỏ // đi để Mplab thực hiện các dòng lệnh đó, định nghĩa một loạt các macro ở phần đầu của file HardwareProfile.h. Trong hầu hết các trường hợp, các macro dùng để khởi tạo các mạch demo phải giống như các macro dùng để định nghĩa vi điều khiển sử dụng trong mạch. Trong file HardwareProfile.h mặc định đã bao gồm các project cho một số mạch có sẵn của Microchip, được giới hạn bằng các câu lệnh tiền xử lý. Ví dụ với Explorer 16 sẽ bắt đầu bằng macro "#elif defined (EXPLORER_16)" và tiếp tục cho đến những câu lệnh tiền xử lý cho một mạch demo khác. 5.4.1.1. Tần số Nhiều hoạt động của TCP/IP phụ thuộc vào thời gian. Để thiết lập giá trị xung clock ta thay thế giá trị của xung clock trong macro trong file HardwareProfile.h: #define GetSystemClock() xxxxxxxxxxxxxxx Ngoài ra còn 2 macro thiết lập xung clock khác:  GetInstructionClock () và GetPeripheralClock () cung cấp tần số lệnh và tần số cho thiết bị ngoại vi của vi điều khiển. 44
  45. 45. 5.4.1.2. Bộ nhớ ngoài Bộ nhớ ngoài dùng để lưu trữ Web nhúng, Web ở đây định dạng http và http2. Bộ nhớ dùng để lưu trữ có thể có 3 loại: SD/MMD (Memory Card), EEPROM, Flash Serial. Nếu muốn dùng Web nhúng, ta có thể lưu trữ vào bộ nhớ nội. Lúc ấy, cần tạo một file bộ nhớ của Web định dạng MPFS. Để tạo ra file định dạng MPFS thì Microchip đã đưa ra công cụ MPFS2 trong folder /Utilities để chuyển toàn bộ dữ liệu Web thành một file duy nhất. Web phải được đưa vào một folder, đối với trình dịch C18 thì file được xuất ra là MPFSImg2.c. Để sử dụng Web nhúng trong bộ nhớ nội, trong file TCPIPconfig.h bỏ thiết lập dùng bộ nhớ ngoài, và #include MPFSImg2.c trong chương trình maindemo.c. Đặt lại tên mặc định của Web server là index.htm trong file TCPIPConfig.h. Bỏ lưu trữ trong EEPROM và Flash memory: //#define MPFS_USE_EEPROM //#define MPFS_USE_SPI_FLASH 5.4.2. Địa chỉ 5.4.2.1. Địa chỉ MAC 6 byte địa chỉ MAC cung cấp địa chỉ cho lớp giao thức Media Access Control của TCP/IP Stack. Địa chỉ MAC là địa chỉ cố định gắn liền với phần cứng. Địa chỉ MAC được định nghĩa trong file TCPIPConfig.h. Có 6 macro được định nghĩa trong file này để thiết lập địa chỉ MAC: #define MY_DEFAULT_MAC_BYTE1 (0x00) #define MY_DEFAULT_MAC_BYTE2 (0x04) #define MY_DEFAULT_MAC_BYTE3 (0xA3) #define MY_DEFAULT_MAC_BYTE4 (0x00) #define MY_DEFAULT_MAC_BYTE5 (0x00) #define MY_DEFAULT_MAC_BYTE6 (0x00) Tuy nhiên, vi điều khiển PIC 18F67J60 đã được tích hợp sẵn địa chỉ MAC cho nên ta không cần phải quan tâm đến việc thiết lập địa chỉ này. 45
  46. 46. 5.4.2.2. Địa chỉ IP Địa chỉ IP dùng để định địa chỉ cho các nút mạng trên mạng giao thức Internet. Chúng ta cần cấu hình cho mạch một địa chỉ IP. Địa chỉ subnet là một mặt nạ bit xác định phạm vi của mạng. Nếu địa chỉ IP của bạn là 192.168.5.100, và bạn chỉ định subnet mask là 255.255.255.0, Stack sẽ cho rằng địa chỉ trong phạm vi 192.168.5.x là trên cùng một subnet mà ta đang có, và các gói tin sẽ được gửi đến bất kỳ một địa chỉ trong mạng này mà không được gửi đến nơi khác. Gateway mặc định là địa chỉ IP của nút mạng mà nó sẽ gửi gói tin đến nếu như không được định hướng đến địa chỉ IP mà ta mong muốn. Ví dụ, nếu địa chỉ IP ta đặt nằm trong mạng con 192.268.5.x, và nếu nó muốn gửi một gói tin đến địa chỉ IP 198.175.253.160 mà không biết chính xác phải gửi đến địa chỉ đó như thế nào, nó sẽ gửi đến gateway mặc định. Có ba phương pháp để thiết lập địa chỉ IP: - DHCP: Các module DHCP client sẽ cho phép ứng dụng tự động lấy địa chỉ IP từ máy chủ DHCP trên cùng một mạng. Việc làm này sẽ thiết lập lại địa chỉ IP, subnet mask, địa chỉ gateway, và các thông số cấu hình một số khác trong cấu trúc AppConfig. Để sử dụng DHCP ta phải nạp ba file DHCP.c; DHCPs.c ; DHCP.h và khai báo " #define STACK_USE_DHCP_CLIENT" trong TCPIPConfig.h. - AutoIP: Module này cho phép ứng dụng chọn một địa chỉ IP và tự xác nhận địa chỉ đó. Để sử dụng AutoIP ta phải nạp hai file AutoIP.c and AutoIP.h và khai báo "#define STACK_USE_AUTO_IP" trong TCPIPConfig.h. - Địa chỉ IP tĩnh: Việc sử dụng địa chỉ IP tĩnh chỉ hoạt động nếu server được cấu hình để hỗ trợ địa chỉ đó. Nếu sử dụng DHCP và AutoIP đồng thời thì module AutoIP sẽ phát một địa chỉ trong subnet 169.254.x.x sau đó sẽ cấp một địa chỉ khác trong cùng subnet đến DHCP client được kết nối với board. 5.5. Demo module Demo module chứa một số các ứng dụng thông thường: - Web page demo: Xây dựng 1 chương trình HTTP sử dụng HTTP2 server và điều khiển 1 số đặc trưng (hiện thị nhiệt độ, điều khiển led, viết ra LCD) thông qua giao diện web. 46
  47. 47. - E-mail ( SMTP) Demo: Sử dụng e-mail client để gửi đi 1 tin nhắn khi 1 sự kiện xảy ra. - Generic TCP Client: Xây dựng 1 ứng dụng TCP Client thông qua HTTP Client example. - Generic TCP Server: Xây dựng ứng dụng TCP Server. - Ping (ICMP) demo: Xây dựng Ping Client. Trong nội dung đồ án này em xin trình bày về web page demo, cụ thể là điều khiển led sáng tắt, viết ra LCD, hiện thị thông số nhiệt độ thông qua giao diện web. Module HTTP web server và file đi kèm MPFS2 làm cho board như là một web server. Nó cho phép dễ dàng hiển thị thông tin lên LCD hoặc điều khiển sử dụng trình duyệt web. 5.5.1. Điều khiển led sáng tắt - Gõ đường link trên trình duyệt http:/192.168.1.2/forms.htm. - Chọn On/Off trong ô lựa chọn để đặt trạng thái cho từng led rồi ấn nút save để lưu trạng thái cho các led. - Quan sát sự thay đổi của các led trên mạch. 47
  48. 48. Hình 27: Điều khiển LED Để thực hiện được việc này ta sử dụng phương pháp GET: - Phương pháp Get gán dữ liệu vào phần cuối của URL. Dữ liệu được gán sau dấu “?” trên thanh địa chỉ. Dữ liệu được gửi qua phương pháp GET tự động được giải mã và lưu trong biến curHTTP.data (curHTTP là biến cấu trúc để lưu trạng thái hiện tại của kết nối HTTP, một số biến trong cấu trúc curHTTP như curHTTP.byteCount, curHTTP. isAuthorized, biến mảng curHTTP.data…), biến curHTTP.data được giới hạn 100bytes. Khi biến curHTTP.data đầy thì dữ liệu sẽ được lưu vào trong bộ nhớ. 48
  49. 49. Code trong file forms.htm Hình 28: Code trong file forms.htm - Giả sử ta kick vào led 1 và 3. Một chuỗi sau sẽ được gửi đến server: GET /leds.htm?led1=1&led3=1 HTTP/1.1 - HTTP2 web server sẽ phân tích yêu cầu này và lưu dưới dạng một chuỗi trong biến curHTTP.data : "led1010led30100" - Web server sẽ gọi hàm HTTPExecuteGet để xử lý đầu vào này. Mục đích của nó là phân tích những dữ liệu nhận được từ các tham số URL. Code: HTTP_IO_RESULT HTTPExecuteGet(void) { BYTE *ptr; BYTE filename[20]; // Load the file name // Make sure BYTE filename[] above is large enough for your longest name MPFSGetFilename(curHTTP.file, filename, 20); // If its the forms.htm page if(!memcmppgm2ram(filename, "forms.htm", 9)) { 49
  50. 50. // Seek out each of the four LED strings, and if it exists set the LED states ptr = HTTPGetROMArg(curHTTP.data, (ROM BYTE *)"led4"); if(ptr) 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 sẽ được gọi để kiểm tra trang forms.htm được truy cập. Hàm MPFSGetFilename sẽ đọc tên file truy cập hiện tại và lưu vào trong biến filename. Sau đó ta sử dụng memcmppgm2ram(filename, "forms.htm", 9) để so sánh xem biến filename có giá trị là "forms.htm" hay không. Nếu giống nhau thì hàm sẽ trả lại giá trị 0. Hàm HTTPGetROMArg sẽ tìm kiếm trong mảng curHTTP.data để tìm giá trị của đối số được đưa ra sau khi thực hiện phương pháp GET, cụ thể trong đoạn code này là các led1, led2, led3, led4. Hàm này sẽ trả lại một con trỏ, trỏ đến giá trị của đối số trong mảng curHTTP.data. Sau đó sẽ gán giá trị thích hợp cho led tương ứng. KẾT LUẬN 50
  51. 51. Việc thiết kế Module Ethernet trên vi điều khiển PIC18F67J60 nhằm ứng dụng đo lường và điều khiển có ý nghĩa rất lớn, có thể ứng dụng trong nhiều lĩnh vực của đời sống xã hội và trong công nghiệp. Ngoài ra, module Ethernet trên vi điều khiển PIC18F67J60 cũng phục vụ tốt cho việc học tập và nghiên cứu của sinh viên. Việc xây dựng module này liên quan đến nhiều mảng kiến thức, từ những kiến thức lý thuyết cho đến những kiến thức thực tiễn. Những kết quả chính thực hiện được - Tìm hiểu nguyên lý chung chuẩn truyền thông Ethernet do IEEE 802.3 quy định, tìm hiểu kiến thức về 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 bằng phần mềm CCS, sử dụng thư viện TCP/IP Stack của hãng Microchip để thực hiện điều khiển các ứng dụng cơ bản như bật tắt đèn LED. Lập trình web giao diện để đo lường, điều khiển của mạch demo trên máy tính. Đánh giá những kết quả đã đạt được - Điều khiển chính xác các đèn LED. Mạch hoạt động ổn định. - Tuy nhiên, một số mặt hạn chế đó là đề tài mới chỉ là thực hiện kết nối trực tiếp giữa mạch demo với máy tính thông qua chuẩn truyền thông Ethernet mà chưa thực hiện được kết nối mạch với switch. - Với kết quả bước đầu là 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 và thực hiện đo lường và điều khiển một số ứng dụng cơ bản đã khẳng định khả năng phát triển của đề tài. Hướng phát triển tiếp theo của đề tài: Trong thời gian tới, em sẽ tiếp tục nghiên cứu phát triển đề tài theo một số hướng sau đây: - Kết nối mạch với switch. - Thực hiện các ứng dụng điều khiển và đo lường phức tạp hơn để phục vụ cho cuộc sống như điều khiển nhà thông minh qua internet và phục vụ trong công nghiệp, thay thế các chuẩn truyền thông cũ như RS485, RS232… - Viết phần mềm điều khiển bằng Microsoft Visual Studio 2010. 51
  52. 52. 52
  • TrungTran333

    Jul. 26, 2020
  • ThanhPhan81

    Nov. 1, 2019
  • bentran75457081

    Nov. 26, 2018
  • holinh7

    May. 24, 2018
  • HuyenHoang45

    Mar. 29, 2018
  • tanloithai7

    Dec. 9, 2017
  • hoangloi1996

    Nov. 28, 2017
  • hoangloi5

    Nov. 28, 2017
  • minhtripro9x

    Nov. 21, 2017
  • CnhNguynVit

    Oct. 2, 2017
  • QuangVinhNgo

    May. 27, 2017
  • UahUvEel

    Jul. 18, 2016
  • HieuVoQuoc

    Apr. 5, 2016
  • nghiepdt2

    Nov. 25, 2015
  • huy1983

    Nov. 2, 2015
  • thaonguyentrong5

    Oct. 29, 2015
  • namtrinh67

    Aug. 17, 2015
  • thanhduypham1

    Jul. 29, 2015
  • viethung094

    Mar. 30, 2015
  • wikenx

    Mar. 19, 2015

Vues

Nombre de vues

10 645

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

46

Actions

Téléchargements

0

Partages

0

Commentaires

0

Mentions J'aime

42

×