Tải bản đầy đủ (.docx) (14 trang)

Tim hiểu về embedded web server tren vi diều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (540.66 KB, 14 trang )

Tìm hiểu về Embedded Web server trên Vi Điều
Khiển
THỨ SÁU, 22 THÁNG 4 2011 07:46 QUẢN TRỊ VIÊN CƠ BẢN VỀ MCU

6 likes
0 dislikes

Chúng ta đã từng biết đến các web server trên các máy tính server lớn, bởi vì nó tương đối quen thuộc trong kỷ
nguyên web hiện nay. Tuy nhiên,việc thực hiện một web server ngay trên hệ thống nhúng chỉ mới phát triển gần
đây. Bởi vì việc thực hiện một server vốn chỉ có thể cài đặt trên các máy tính trước đây lên một hệ thống nhúng
không hề đơn giản, nhất là hệ thống vi điều khiển.
Cùng với sự phát triển của các hệ thống nhúng, vi xử lý. Các ứng dụng trên internet cũng đã dần dần được tích hợp
vào các hệ thống nhúng, hay ngay cả các hệ vi xử lý. Và một webserver nhúng điển hình nhất chúng ta hay gặp đó
là các router kết nối ADSL gần như đã có mặt trong mỗi nhà đình.
Chúng ta hãy tưởng tượng, một thiết bị bé bằng bàn tay (hoặc nhỏ hơn) có khả năng kết nối với internet và đưa tất
cả mọi thứ mà bạn muốn lên mạng internet, và từ đó cho phép bạn kiểm soát, điều khiển , đo đạc, quản lý... từ bất
cứ đâu, từ bất cứ thiết bị nào, miễn là bạn có một kết nối internet, nó mở ra cho chúng ta một khái niệm mới về
điều khiển, về quản lý và kể cả về cuộc sống, đó là cuộc sống bốn chiều (4D life). Trong cuộc sống đó, tất cả
chúng ta sẽ sống trong môi trường thực, nhưng việc thu thập thông tin, việc tương tác giữa chúng ta lại thông qua
một chiều khác, thế giới internet. Nó không giống với thế giới trước đây ta vẫn biết, đó là mọi thông tin ta có đều từ
cuộc sống, mọi công việc ta làm đều là các thao tác trực tiếp, công việc quản lý đều phải thực hiện trực tiếp...
Quay trở lại với web server nhúng, đó là một thiết bị dựa trên hệ thống nhúng, hay hệ vi xử lý mà có thể giao tiếp
được với internet ở cấp độ vật lý (kết nối với đường dây mạng hay wifi hay GPRS hay 3G ...) và đồng thời phải hỗ trợ
được các giao thức mạng (internet protocol hay TCP/IP Protocol) cho phép chúng ta truy cập web, gởi mail,...
Các hệ thống như vậy thường sử dụng một Chip hỗ trợ bộ điều khiển ethernet/internet tích hợp với thư viện TCP/IP
viết bằng C đi kèm, cho phép chúng ta tích hợp vào các hệ thống lớn hơn.
Một số Kit phát triển nhúng giao tiếp với Internet/LAN của Titans technology (www.titans.com.vn) hỗ trợ TCP/IP :


Pegasus X Dev Kit


EP1 Dev Kit

EP2 Dev Kit

EC10 Ethernet Controller

Các thư viện TCP/IP phải tuân thủ theo các tiêu chuẩn nghiêm ngặt quy định bởi cộng đồng phát triển hạ tầng mạng
internet. Tuy nhiên, việc của chúng ta chỉ là tìm hiểu và sử dụng chúng như thế nào, chứ không cần quan tâm đến
mã nguồn của chúng.
Hình sau mô tả vài thiết bị web server nhúng và một ứng dụng mô tả khả năng của chúng

Bộ giao thức TCP/IP


Bộ giao thức TCP/IP cho phép tất cả các hệ thống ở mọi kích thước, chạy mọi loại hệ điều hành khác nhau, hoặc
chẳng chạy hệ điều hành nào cả, có thể giao tiếp với nhau thông qua một mạng kết nối chung. Dạng cơ bản nhất
được gọi là worldwide Internet, một mạng diện rộng Wide Area Network (WAN) của hàng triệu máy tính.

Phân lớp của Bộ giao thức TCP/IP
Bộ giao thức TCP/IP bao gồm nhiều giao thức ở các lớp khác nhau (layers). Lý do người ta phải phân lớp giao thức vì
nó cho phép thực hiện hiệu quả nhiệm vụ của từng lớp, với các mức độ phức tạp tăng dần theo đòi hỏi của các ứng
dụng. Ví dụ như lớp mạng cho phép chúng ta thực hiện hiệu quả việc phân phối dữ liệu tới các địa chỉ mọng muốn
trong một mạng một cách hiệu quả và chính xác. Nó giống như việc chúng ta phân cấp công việc theo từng cấp độ
khác nhau, ví dụ người phát thư (lớp mạng) sẽ chỉ có công việc là phân phát thư đến đúng địa chỉ đã ghi mà
không cần biết nội dung của chúng là gì . Còn chúng ta (cấp ứng dụng) sẽ là người tạo ra nội dung của bức thư
và đóng gói chúng theo đúng tiêu chuẩn (protocol) của bưu điện ( tức là người đưa thư). Các phương tiện vận
chuyển (máy bay, xe, tàu...) sẽ đóng vai trò như những lớp vật lý để vận chuyển thư của chúng ta tới đích, ở phía
nhận, chúng ta cũng có quá trịnh tương tự, nhưng ngược lại.
Chú ý, ở mỗi lớp, chúng ta đều cần có một giao thức để hai lớp tương đương ở hai bên có thể hiểu nhau, ví dụ cả
người gởi thư và người đọc thư phải sử dụng cùng một ngôn ngữ, hoặc cả hai bưu điện phát và nhận phải sử dụng

cùng một giáo thức phân phát thư tín để tránh làm mất mát thông tin.
Mặt khác, giữa hai lớp gần nhau (tiếp xúc với nhau) phải có một giao diện trao đổi interface để hai lớp gần nhau có
thể hiểu nhau, ví dụ giữa người gởi thư và người thu/phát thư phải sử dụng cùng một cách thức để không làm mất
mát thông tin.
Mô hình TCP/IP thông thường bao gồm 4 lớp như hình sau :

Lớp ứng dụng (Application Layer)
Lớp ứng dụng điều khiển các ứng dụng chung chung bao gồm :


Telnet for remote login



Browser support for displaying web pages



File transfer applications



E-mail applications



...
Ba lớp còn lại hoàn toàn không biết gì về ứng dụng mà chúng đang phục vụ, chúng chỉ đơn thuần hỗ trợ việc thông
tin liên lạc giữa hai chương trình ứng dụng


Lớp vận chuyển (Transport Layer)
Lớp vận chuyển bao gồm hai lớp UDP và TCP ứng vói hai kiểu truyền dữ liệu là tin cậy và không tin cậy.


Lớp TCP cho phép truyền dữ liệu tin cậy giữa hai hosts, nó phải hõ trợ các cách thức kiểm soát dữ liệu, điều khiển
luồng, kiểm soát lỗi , mất gói... và vì dữ liệu truyền đi được đảm bảo bởi lớp này, nên các lớp úng dụng không cần
phải quan tâm đến việc kết nối, lỗi , mất dữ liệu...
Và vì vậy lớp TCP là tương đối phức tạp, vì nó phải đảm bao dữ liệu thông suốt giữa hai ứng dụng trong môi trường
mạng rất phức tạp và không ổn định.
Lớp UDP thì đơn giản hơn, chúng chỉ có nhiệm vụ gởi gói tới nơi nhận mà không quan tâm đến việc chúng có tới nơi
hay không, mặc dù mạng internet sẽ cố gắng hết sức đưa chúng tới nơi cần đến.
Chúng ta có thể xem như TCP giống như việc chuyển phát nhanh bảo đảm và UDP là chuyển phát nhanh không bảo
đảm

Lớp mạng (Network Layer)
Lớp mạng thường được gọi là lớp internet (hay lớp IP - Internet Protocol). Nó điều khiển việc di chuyển các gói trong
mạng, định tuyến các gói tin ... , giao thức IP và ICMP (Internet Control Message Protocol) sẽ cung cấp lớp mạng
trong bộ giao thức TCP/IP Protocol Suite.

Lớp liên kết dữ liệu (Data-link Layer)
Lớp liên kết dữ liệu, hay còn gọi là lớp giao tiếp mạng ( Network Interface Layer ) là lớp chịu trách nhiệm giao tiếp
với các card giao tiếp mạng (network interface card) hay các bộ điều khiển kết nối mạng (network controller).
Chúng điều khiển trực tiếp phần cứng để chuyển dữ liệu ra các môi trường truyền vật lý như cáp mạng, wifi,3G...
Hình sau giới thiệu một ví dụ về hai host trong một mạng LAN (Local Area Network ) như Ethernet trao đổi dữ liệu sử
dụng giao thức HTTP (một giao thức ở lớp ứng dụng).


Chúng ta chú ý rằng, trong mạng internet, mô hình trao đổi dữ liệu giữa hai ứng dụng thường gặp là môi trường
client-server , nghĩa là một server sẽ lưu trữ dữ liệu và cung cấp một số dịch vụ cho phía client, và các client sẽ truy
xuất để lấy dữ liệu về ứng dụng của mình, hoặc cập nhật dữ liệu lên server.

Thông dụng nhất là ứng dụng web, một web server (nằm trên máy chủ server hay các thiết bị web server nhúng) sẽ
cung cấp các dịch vụ về web, trong trường hợp này, là cho phép các client truy xuất các trang web đặt trên web
server. Trong khi đó các client (ví dụ web browser) sẽ truy xuất các web server theo giao thức http trên nền giao
thức TCP. Mỗi lớp sẽ có một hoặc vài giao thức để liên lạc với cùng lớp đó phía bên kia. Thông thường chỉ có lớp ứng
dụng là được thiết kế bởi người dùng, còn lại ba lớp kia thường được thực hiện bởi các thư viện, hay driver trong
nhân của hệ điều hành.

Địa chỉ IP (IP address)
Thực chất TCP/IP chỉ là một giao thức mạng, nó giúp chúng ta giải quyết vấn đề truyền thông tin trong một môi
trường mạng giúp cho hai ứng dụng có thể nối chuyện với nhau trong một môi trường trong suốt, như thể là chúng
đang nối trực tiếp với nhau vậy.
Và vì vậy, vấn đề định địa chỉ trong một mạng là một trong những vấn đề cực kỳ quan trọng (nhất là trong các
mạng lớn).
nếu các thiết bị được kết nối trực tiếp với nhau thông qua giao tiếp vật lý, chúng sẽ được định địa chỉ bởi các đại chỉ
MAC (địa chỉ thực của phần cứng) hay còn gọi là địa chỉ ở lớp vật lý. Nếu các thiết bị được kết nối với nhau ở cấp độ
lớp mạng, chúng phải được định địa chỉ bởi một địa chỉ khác, đó là địa chỉ mạng (địa chỉ IP). Về mặt lý thuyết, mỗi
thiết bị giao tiếp với internet phải có một địa chỉ internet cố định và duy nhất . Và điều đó cho phép các ứng dụng
trong mạng LAN có thể triển khai trên mạng internet mà không cần bất cứ thay đổi gì. Tuy nhiên, vì địa chỉ IP chỉ có
32-bit, trong khi số lượng các thiết bị giao tiếp với internet có thể lên tới con số hàng tỷ tỷ. Do đó đã nảy sinh ra
nhiều vấn đề rắc rối, để giải quyết vấn đề đấy, người ta chia địa chỉ IP ra thành các lớp khác nhau, và sử dụng các
kỹ thuật như NAT port... cho phép nhiều máy tính cùng sử dụng một địa chỉ IP mà không làm ảnh hưởng đến sự trao
đổi dữ liệu, cũng như không cần phải thay đổi giao thức TCP/IP (ví dụ như mở rộng thành IPv6) .
Hình sau chỉ ra cấu trúc và phân lớp của đại chỉ IP :

Các địa chỉ internet được quản lý bởi tố chức Internet Network Information Center (NIC)
Hình sau chỉ ra tầm của các lớp địa chỉ IP.


Địa chỉ IP có thể phân ra làm ba loại :



Unicast : địa chỉ trỏ tới một host duy nhất



Broadcast : địa chỉ này gởi tới tất cả các host trong mạng nội bộ



Multicast : đại chỉ này trỏ tới một nhóm các host.

Số hiệu cổng (Port number)
Với các hệ đa nhiệm, nhiều chương trình có thể cùng chạy các ứng dụng mạng khác nhau, do đó bộ giao thức TCP/IP
phải có khả năng hỗ trợ nhiều ứng dụng cùng lúc. Và số hiệu cổng dùng để xác định ứng dụng nào đang tạo ra dữ
liệu, và ứng dụng nào sẽ nhận dữ liệu. Số hiệu cổng là một số 16bit nằm trong header của gói tin TCP hoặc UDP, và
dùng để xác nhận ứng dụng nào đang gởi dữ liệu vàứng dụng nào sẽ nhận dữ liệu. Vì vậy trong phần header của gói
tin của UDP và TCP sẽ có số hiệu cổng nguồn (source port number) và số hiệu cổng đích (destination port number).
Một số các ứng dụng nổi tiếng (như http server hay web server telnet server ... đều có số hiệu cổng riêng để tránh
trùng lặp với các ứng dụng khác). Hầu hết các c63ng < 1024 đều đã có các ứng dụng riêng, và việc quy định chúng
được quản lý bởi tổ chức IANA (the Internet Assigned Numbers Authority). Và chúng ta phải tuân theo nếu muốn
giao tiếp với cả thế giới. Dĩ nhiên ta hoàn toàn có thể tự quy định các cổng này và sử dụng chúng trong bất kỳ mục
đích nào và ứng dụng nào, nếu muốn, miễn là chỉ trong mạng nội bộ của chúng ta, tuy nhiên điều đó là không nên,
vì chúng ta cũng còn khá nhiều cổng khác chưa được đang ký và có thể sử dụng.
Thông thường, client không quan tâm nhiều đến số hiệu cổng mà nó sử dụng, nó chỉ cần biết là port đó chưa có ai
dùng là được, bởi vì client chỉ dùng port khi người dùng chạy chương trình client, sau khi chạy xong, nó sẽ trả lại
cổng đó cho hệ thống, trong khi đó, các server phải hoạt động liên tục để chờ các yêu cầu từ client, do đó chúng
cần các cổng có số hiệu cố định và được biết đến bởi tất cả các client, cũng giống như là địa chỉ của cơ quan công
an thì phải rõ ràng và không được thay đổi để bất kỳ người dân khi cần có thể tới địa chỉ đấy, trong khi người dân thì
không cần phải có địa chỉ cố định.
Việc phân biệt giữa đại chỉ IP và số hiệu cổng cũng gần giống như địa chỉ khách sạn trong một thành phố và địa chỉ

phòng trong khách sạn đấy vậy.
Sự kết hợp giữa địa chỉ IP và một số hiệu cổng thường được gọi là socket.

Đóng gói dữ liệu (Encapsulation)
Khi dữ liệu được ứng dụng gởi thông qua TCP, dữ liệu sẽ được gởi qua từng lớp của bộ giao thức TCP/IP tới khi chúng
thành các chuỗi bit truyền đi trogn mạng, mỗi lớp sẽ chịu trách nhiệm một công việc riêng như định tuyến, chia
thành nhiều gói nhỏ, kiểm soát luồng, kiểm soát lỗi,... Và vì vậy, chúng phải thêm thông tin vào các gói tin, gọi là
các header và trailers ở đầu và đuôi của dữ liệu. Nó cũng giống như việc ta gởi thư, ta chỉ việc soạn nội dung bức
thư, thư ký của chúng ta :) sẽ bỏ vô phong bì, và dán tem lại, ghi thêm các thông tin cần thiết như địa chỉ người gởi,
người nhận... và bỏ vào thùng thư. Nhân viên đưa thư sẽ bỏ thư vào một gói lớn hơn, thêm các thông tin theo tiêu
chuẩn của bưu điện... cũng dễ hiểu phải không nhỉ.


Chỉ có một điều chúng ta cần nhớ là header của lớp này và dữ liệu của lớp trên nó, cũng đều được đối xử như là dữ
liệu của lớp dưới nó.
hình sau chỉ ra quá trình này một cách cụ thể :

Một vài thuật ngữ cần phải giải thích:
• TCP segment: là một đơn vị dữ liệu của lớp TCP gởi xuống cho lớp IP.
• IP datagram: Là đon vị dữ liệu mà lớp IP sẽ gởi vào mạng.
• Frame: là chuỗi byte mà thực sự truyền trong môi trường vật lý ethernet.
Ngoài các dữ liệu mà ứng dụng gởi đi cho nhau, bộ giao thức TCP/IP cũng tự động gởi đi các gói tin để xác định tình
trạng mạng, quản lý các thông tin mạng... ví dụ như các gói tin ARP/RARP...
Đối với mỗi header của các lớp, ví dụ IP header, chúng sẽ chèn vào các thông tin để giải quyết các vấn đề mà lớp
đó phải chịu trách nhiệm. Việc quy định các thông tin (hay còn gọi là các field) trong các header tạo nên cái gọi là
giao thức của lớp đó. Nghĩa là giao thức của một lớp nào đó đơn giản chỉ là việc duy định định nghĩa các trường
(fields) trong header mà chúng thêm vào dữ liệu . Tuy nhiên việc định nghĩa đấy không hề đơn giản :), nhưng công
việc của chúng ta chỉ là học chúng và thực hiện cho phù hợp với các quy định đó.
Tiếp theo chúng ta hãy cùng nghiên cứu qua các header của các lớp như lớp IP, lớp UDP, lớp TCP. Sau đó sẽ phân
tích toàn bộ quá trình hoạt động của một web server (hay http server) dựa trên những kiến thức mà ta đã trình bày

ở đây.

IP : Internet Protocol (Giao thức Internet)


Lớp IP là nền tảng của tất cả các dịch vụ internet, nó đảm bảo việc truyền thông tin giữa các node trong mạng, các
giao thúc cao hơn như TCP và UDP chỉ là những giao thức cần thiết để hình thành các lớp ứng dụng. Hiện nay hầu
hết tất cả các dịch vụ ngoài internet như thoại, video, television... đều đã dần chuyển sang mạng IP (VoIP,
IPTV,...).Do vậy, tìm hiểu về IP là mang tính bắt buộc và có nhiều ý nghĩa cho những nghiên cứu sau này.
Các giao thức TCP, UDP và ICMP đều truyền dữ liệu dựa trên mạng IP dưới dạng các gói tin IP (datagram). Mạng IP
cung cấp một dịch vụ phân phối gói dữ liệu phi kết nối (connectionless) , và không tin cậy theo cơ chế Best Effort
(Cố gắng tối đa). Không tin cậy ở đây mang hàm ý là không có gì bảo đảm rằng gói tin IP sẽ đến đúng nơi cần đến.
Khi có lỗi sảy ra, giao thức IP chỉ có một thuật toán điều khiển lỗi khá đơn giản là : hủy dữ liệu vàco61 gắng gởi một
gói tin ICMP ngược trở về nguồn để thông báo về lỗi đã xảy ra. Nhưng trớ trêu là cũng chẳng có gì đảm bảo là gởi tin
ICMP này sẽ đến được nơi cần đến.
Như vậy các dịch vụ yêu cầu mức độ tin cậy cao sẽ phải được thực hiện ở các lớp cao hơn. Nó giống như việc đảm
bảo dữ liệu không mất mát trong một môi trường không ổn định bằng cách áp dụng các kỹ thuật ở lớp cao hơn như
thiết lập kết nối, gởi lại gói, sửa lỗi,....
Còn thuật ngữ phi kết nối có nhắc đến ở trên có nghĩa rằng giao thức IP không thiết lập bất cứ một con đường vận
chuyển dữ liệu nào cố định, nó đơn thuẩn đẩy gói dữ liệu ra khỏi mạng với địa chỉ đích đến, các node định tuyến sẽ
thực hiện các giải thuật để đưa chúng tới nơi cần đến, và vì các giải thuật định tuyến này là độc lập nhau , do đó
các gói tin IP có thể phân phát không theo một trật tự nào cả.
Ví dụ, ta có một gói hàng (dữ liệu) cần vận chuyển từ nam ra bắc bằng tuyến xe bus.Vì kích thước giới hạn, gói hàng
phải phân ra thành các gói hàng nhỏ hơn (gói dữ liệu IP), và mỗi gói sẽ đánh số thứ tự và ghi địa chỉ nguồn và địa
chỉ đích, mỗi gói hàng ta sẽ giao ra bến xe bus, các gói hàng sẽ được gởi theo các tuyến xe bus khác nhau tùy thời
điểm mà chúng gởi ra bến (node mạng) và tùy tình trạng giao thông (traffic network) ,... như thế mỗi gói sẽ trải qua
các hành trình khác nhau, cho tới điểm đích đến cuối cùng, dĩ nhiên trên đường đi chúng có thể bị mất mát mà
không ai phải chịu trách nhiệm nào cả, và có những lúc, gói tin gởi trước lại đến sau gói tin gởi sau, bởi vì tình trạng
mạng là không thể xác định.


IP Header
Hình sau đây chỉ ra đ5inh dạng của một gói tin IP. Kích thước của phần IP header chèn thêm vào gói dữ liệu là 20
bytes, trừ khi có thêm các option.
bit có trọng số cao nhất là bit đánh số 0 ở bên trái, bit có trọng số thấp nhất là bit thứ 31 bên tay phải.lần lượt 4
byte của giá trị 32-bit sẽ được truyền ra mạng theo thứ tự : bits 0 - 7, sau đó bits 8 - 15 và tiếp tục. Đây gọi là trật
tự byte kiểu Big-Endian (ta còn có kiểu Little-Endian theo thứ tự ngược lại).
các trường trong IP headerđược mô tả như sau :


Version : Phiên bản hiện tại của IP là 4, vì vậy IP thường được gọi là IPv4.
Header Length là tổng số lượng 32-bit words (4 bytes / 1 word) trong phần header, tính cả phần Options. Thường
giới hạn không quá 60 bytes (max : 15*4=60).
Type-of-service (TOS) Là một trường 8 bit, định nghĩa chất lượng dịch vụ, bao gồm các bit như : minimize delay,
maximize throughput, maximize reliability và minimize monetary cost. Chỉ 1 trong 4 bit này có thể bật lên 1.Nếu cả
4 bits đều là 0, nó sẽ phục vụ ở mức độ bình thường. Mặc dù ta có thể set các bit này để ưu tiên các gói dữ liệu của
ta, tuy nhiên sự ưu tiên thực sự có xảy ra hay không còn phụ thuộc vào các nhà mạng cung cấp cơ sở hạ tầng mạng
internet. Vì dụ như, chúng ta thuộc diện nghèo, được ưu tiên giảm học phí, tuy nhiên trong thực tế, không phải lúc
nào ta cũng được hưởng sự ưu tiên đấy, điều đó cũng dễ hiểu, nhất là trong những môi trường mang tính công cộng
như internet, để đảm bảo được sự ưu tiên thực sự, các bạn phải có sự ký kết với phía cung cấp hạ tầng mạng kèm
thao các khoản chi phí nhất định.
Total Length Trường này thể hiện tThis is the total length of the IP datagram in bytes. Using this field and the
header length field, we know where the data portion of the IP datagram starts and its length. Since this is a 16-bit
field, the maximum size of an IP datagram is 65535 bytes.
Identification This field uniquely identifies each datagram sent by a host. It normally increments by
one each time a datagram is sent.
Time-to-live Time-to-live sets an upper limit on the number of routers through which datagram can pass. It limits
the lifetime of the datagram. It is initialized by the sender to some value (often 32 or 64) and decrements by one in
every router that handles the datagram.
When this field reaches 0, the datagram is discarded, and the sender is notified with an ICMP message. This
prevents the packet from getting caught in eternal routing loops.

Protocol Protocol is used by IP to demultiplex incoming datagrams. It identifies which protocol
gave the data for IP to send.
Header Checksum The Header checksum is calculated over the IP header only. It does not cover any data
that follows the header. ICMP, UDP and TCP all have a checksum in their own headers to cover their own header and
data.
Source IP address và the destination IP address Every IP datagram contains the source IP address and the
destination IP address.
These are 32-bit values.


The Option Field This is a variable-length list of optional information for the datagrams. The options are rarely
used and not all hosts and routers support the option.
...còn tiếp....
Hoàng Nguyễn (biên soạn)
References :
- AVR460: Embedded Web Server (www.atmel.com)
- TCP/IP Lean Web Server for Embedded Systems - 2nd Edition , Jeremy Bentham

Điều khiển thiết bị qua internet sử dụng UDP
server/client
CHỦ NHẬT, 09 THÁNG 10 2011 09:53 QUẢN TRỊ VIÊN

5 likes
0 dislikes

Như chúng ta đã biết, EP2 cho phép nhúng web server trên chip và do đó ta có thể
thực hiện các ứng dụng điều khiển dựa trên nền web (web-based application). Tuy nhiên, EP2 còn hỗ trợ cả UDP
server trên chip, nghĩa là ta có thể sử dụng một phần mềm UDP Client bất kỳ để giao tiếp với EP2theo giao thức ứng
dụng được định nghĩa bởi EP2 trên nền UDP. Bài viết này nhằm demo ứng dụng sử dụng phần mềm trên PC để giao
tiếp với EP2 (software-based application). Thiết bị sử dụng là EP2 của Titans Technology (www.titans.com.vn)

với firmware 1.3. Và phần mềm UDP Client được phát triển bởi Hlab.


Ethernet Pic 2 (EP2) :
Hỗ trợ Ethernet 10Mbps
20 Digital IOs có thể sử dụng cho nhiều mục đích
3 kênh ngõ vào Analog (lấy mẫu ADC 10-bits)
Tích hợp bộ nhớ Flash ngoài 4Mbit, cho phép lưu các trang web lớn.
Giao tiếp UART (null modem) cho phép điều khiển và cấu hình thông qua cổng
console này.
Có thể upload trang web lên web server thôngqua gao thức FTP
Nguồn ổn áp xung cho phép mạch hoạt động ổn định, tiêu thụ điện năng thấp
Hỗ trợ giao thức hầu hết các giao thức TCP/IP và các giao thức con như HTTP,
FTP, UDP, TCP, ARP, ICMP…
Hỗ trợ DHCP cho phép thu địa chị IP tự động từ Modem hoặc Router.
Cho phép cấu hình các thông số như địa chỉ IP, DHCP, Gateway, password…
Có thể update firmware thông qua cổng ICSP

Ứng dụng điều khiển từ xa sử dụng giao thức UDP :
Giao thức mà ta sử dụng ở đây là UDP, dựa trên lớp IP. Giao thức ứng dụng do chúng ta tự định nghĩa, trong trường
hợp này, nó được định nghĩa bởi EP2's firmware. Mô hình sử dụng là client/server như hình sau :

Sau đó để có một ứng dụng hoàn chỉnh, ta sẽ ghép nối EP2 với module điều khiển thiết bị 220V BTA12M như hình
sau .


Sau đó, chúng ta phải phát triển 1 ứng dụng UDP Client trên môi trường PC, chúng tôi cung cấp một phần mềm UDP
client viết trên nền C# cho các bạn để test ứng dụng với EP2, và chúng tôi cũng cung cấp source code của phần
mềm UDP client viết trên nền VB6 cho các bạn tự phát triển các ứng dụng của riêng mình dựa trên giao thức ứng
dụng đã được định nghĩa sẵn.

Phần mềm UDP Client Trên PC (C# dotnet), cho phép điều khiển từ xa trên giao thức UDP.bạn có thể download tại
đây : HUDP Client 1.1.00


Phần mềm UDP Client viết bằng Visual Basic 6, có thể download tại đây : VB6 source code example


Và sau đó chúng ta có thể thực hiện một ứng dụng điều khiển thiết bị sử dụng giao thức UDP rất tiện lợi.

Giao thức ứng dụng dựa trên UDP:
EP2 sử dụng giao thức UDP, sử dụng port 30000 chung cho kênh điều khiển và kênh thông tin.EP2 hỗ trợ giao thức
discovery cho phép chúng ta dò các thiết bị tương thích hiện có trong mạng.
gUDP.UDPClient = new UdpClient();
gUDP.EP = new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30000);
byte[] Msg = Encoding.ASCII.GetBytes("Discovery : Co ai o do khong?");
gUDP.UDPClient.Send(Msg, Msg.Length, new
System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30000));
UDP client gởi thông điệp broadcast là "Discovery : Co ai o do khong ?" , nếu bất kỳ thiết bị nào hiện có trong mạng,
nó sẽ trả về một response bao gồm :


Địa chỉ IP



Tên hostname
Dựa vào đó client biết về các UDP server đang kết nối trong mạng. Các giao thức điều khiển là :




Gởi tín hiệu điều khiển thiết bị : "Hlab" + số thứ tự thiết bị : vd Hlab1 : bật/tắt thiết bị 1



Nếu nhận thành công, EP2 sẽ trả về trạng thái : "S-" + trạng thái thiết bị + " t=" + giá trị nhiệt độ



Gởi yêu cầu xem trạng thái của thiết bị : "Status"



Nếu nhận thành công, EP2 sẽ trả về trạng thái : "C-" + trạng thái thiết bị 0 + trạng thái thiết bị 0 + ... +
trạng thái thiết bị 7.



×