47
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO ĐỒ ÁN Môn học: Điện tử 2 Đề tài: ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER GVHD : Ths.Nguyễn Thanh Bình HVTH :Lê Văn Hùng MSSV :12141552 Tp.Hồ Chí Minh, ngày 10 tháng 12 năm 2015

Điều Khiển Thiết Bị Qua Webserver

Embed Size (px)

DESCRIPTION

webserver

Citation preview

Page 1: Điều Khiển Thiết Bị Qua Webserver

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO ĐỒ ÁN

Môn học: Điện tử 2

Đề tài: ĐIỀU KHIỂN THIẾT BỊ QUA

WEBSERVER

GVHD : Ths.Nguyễn Thanh Bình

HVTH :Lê Văn Hùng

MSSV :12141552

Tp.Hồ Chí Minh, ngày 10 tháng 12 năm 2015

Page 2: Điều Khiển Thiết Bị Qua Webserver

MỤC LỤC

Lời Cảm ơn ........................................................................................................................ 4

Lời mở đầu ........................................................................................................................ 5

Mục tiêu đề tài ................................................................................................................ 6

Nhiệm vụ của đề tài ........................................................................................................ 6

CHƯƠNG 1: GIỚI THIỆU .................................................................................................... 7

1.1 Đặt vấn đề .................................................................................................................... 7

1.2 Ý nghĩa của đề tài ......................................................................................................... 8

1.3 Giới hạn đề tài nghiên cứu ............................................................................................. 9

1.4 Mục tiêu nghiên cứu ...................................................................................................... 9

1.5 Kết quả nghiên cứu của đề tài ........................................................................................ 9

1.6 SƠ ĐỒ TỔNG QUAN CỦA HỆ THỐNG ..................................................................... 10

CHƯƠNG 2: ETHERNET VÀ HỌ GIAO THỨC TCP/IP ..................................................... 12

2.1 Tổng quan về Ethernet ................................................................................................ 12

2.1.1 Cấu trúc khung tin Ethernet ................................................................................. 12

2.1.2 Cấu trúc địa chỉ Ethernet ...................................................................................... 12

2.1.3 Các loại khung Ethernet ........................................................................................ 13

2.1.4 Truy nhập bus sử dụng phương pháp CSMA/CD ................................................... 13

2.2 Họ giao thức TCP/IP ................................................................................................... 14

2.2.1 Tầng Ứng Dụng (Application Layer) ..................................................................... 15

2.2.2 Tầng Giao Vận (Transport Layer) ......................................................................... 17

2.2.3 Tầng Internet (Internet Layer) .............................................................................. 21

2.2.4 Lớp giao tiếp mạng ............................................................................................... 26

2.3 Microchip TCP/IP Stack ............................................................................................ 26

2.3.1 Cấu trúc của Microchip TCP/IP Stack ................................................................... 26

2.3.2 Hoạt động của TCP/IP Stack ................................................................................. 27

CHƯƠNG 3:GIỚI THIỆU KIT STM32F4 DISCOVERY ...................................................... 29

3.1 Tổng quan về STM32F4 .............................................................................................. 29

3.2 Sơ đồ nguyên lý ........................................................................................................... 31

CHƯƠNG 4:MODULE ETHERNET ................................................................................... 33

4.1 Tổng quan về module ethernet ..................................................................................... 33

4.2 Sơ đồ nguyên lý ........................................................................................................... 34

4.3 Cách kết nối với STM32F4 .......................................................................................... 35

CHƯƠNG 5: THIẾT KẾ VÀ THI CÔNG WEBSERVER ...................................................... 36

5.1 Phân tích yêu cầu điều khiển .................................................................................. 36

5.2 Lưu đồ giải thuật ..................................................................................................... 38

Page 3: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

3

5.3 thiết kế giao điện điều khiển ................................................................................... 39

5.3.1 Thiết kế giao diện web ........................................................................................... 39

5.3.2 Điều khiển trên Web ............................................................................................. 40

5.3.3 Phương pháp truyền dữ liệu .................................................................................. 41

5.4 Cách đọc ADC ............................................................................................................ 42

5.5 Cách điều chế độ rộng xung PWM ............................................................................... 43

5.6 Cách bật tắt thiết bị .................................................................................................... 44

Chương 6: KẾT LUẬN ........................................................................................................ 45

6.1 Kết luận ...................................................................................................................... 45

6.2 Hướng phát triển đề tài ............................................................................................... 46

TÀI LIỆU THAM KHẢO ...................................................................................................... 47

Page 4: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

4

Lời Cảm ơn

Em xin được gửi lời cảm ơn chân thành đến quý Thầy cô trong khoa Điện –

Điện Tử, nhất là quý Thầy cô thuộc bộ môn Điện Tử Công Nghiệp đã giảng dạy

và truyền đạt kiến thức chuyên ngành cho người thực hiện đồ án trong thời gian

vừa qua.

Đặc biệt em xin gửi lời cảm ơn sâu sắc tới Thầy Nguyễn Thanh Bình vì sự

tận tình hướng dẫn cũng như đã tạo những điều kiện thuận lợi nhất cho em để co

thê thực hiện và hoàn thành tốt đề tài này.

Em cung không quên cảm ơn các bạn trong lớp đã trao đổi, góp ý để em hoàn

thành đề tài này một cách tốt đẹp và đúng thời gian.

Mặc dù đã có nhiều cố gắng và nỗ lực thực hiện, nhưng do kiến thức cũng

như khả năng bản thân còn nhiều hạn chế nên trong quá trình thực hiện đề tài

không thể tránh khỏi những sai phạm, thiếu sót… Rất mong nhận được sự góp ý,

chỉ dẫn từ nơi quý thầy cô và các bạn sinh viên.

Page 5: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

5

Lời mở đầu

Trong thời đại công nghiệp hoá hiện đại hoá như hiện nay. Việc phát minh

và chế tạo ra các thiết bị thông minh có khả năng điều khiểu từ xa đang và sẽ rất

được quan tâm và rất hữu ích cho cuộc sống hằng ngày.

Vì mục tiêu công nghệ hiện đại hoá ngày càng phát triển, tôi đã quyết định

làm một đồ án về điều khiển thiết bị qua WEBSERVER. Khi dự án hoàn thành

chúng ta có thể điều khiểu các thiết điện trong nhà thông qua mạng internet, tương

tác băng tay qua nút nhấn; hiển thị trang thai hoạt động của các thiết bị trên

Web…. Dù chúng ta ở bất cứ nơi nào có mạng internet đều có thể điều khiển

được các thiết bị đã kết nối với module điều khiển ethernet.

Khi dự án thành công và được áp dụng rộng rãi thì sẽ rất hữu ích cho đời

sống hằng ngày. Giúp cho đất nước ngày càng phát triển.

Giáo Viên Hướng Dẫn Người Thực Hiện

Ths. Nguyễn Thanh Bình Lê Văn Hùng 12141553

Page 6: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

6

Mục tiêu đề tài Thực hiện giao tiếp mạng giữa phần cứng mạch điện tử với máy tính qua

mạng Ethernet.

Điều khiển hoạt động của các thiết bị (trong đề tài là 4 đền LED tượng

trưng cho 4 thiết bị), dưới sự điều khiển và giám sát của con người.

Đọc ADC

Nhiệm vụ của đề tài

Để có thể đạt được mục tiêu đề ra, người thực hiện đề tài đã đưa ra những

nhiệm vụ cần phải thực hiện:

Nghiên cứu kit STM32F4 và trình biên dịch Keil ARM

Lý thuyết mạng Ethernet và cách thức truyền nhận dữ liệu

Nghiên cứ chuẩn giao tiếp SPI và ứng dụng thực tế trên module Ethernet

DP83848

Tìm hiểu ngôn ngữ html để lập trình giao diện web

Xây dựng thuật toán và viết code cho ứng dụng dựa theo mục tiêu đã đề ra.

Page 7: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

7

CHƯƠNG 1: GIỚI THIỆU

1.1 Đặt vấn đề Ngày nay cùng với sự phát triển mạnh mẽ của các ngành khoa học kỹ thuật,

công nghệ kỹ thuật điện tử mà trong đó là kỹ thuật tự động điều khiển đóng vai

trò quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp, cung

cấp thông tin ... Do đó là một sinh viên chuyên ngành Điện tử công nghiệp chúng

ta phải biết nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự

phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật

điện tử nói riêng. Bên cạnh đó còn là sự thúc đẩy sự phát triển của nền kinh tế

nước nhà.

Như chúng ta cũng đã biết, gần như các thiết bị tự động trong nhà máy,

trong đời sống của các gia đình ngày nay đều hoạt động độc lập với nhau, mỗi

thiết bị có một quy trình sử dụng khác nhau tuỳ thuộc vào sự thiết lập, cài đặt của

người sử dụng. Chúng chưa có một sự liên kết nào với nhau về mặt dữ liệu. Nhưng

đối với hệ thống điều khiển thiết bị từ xa thông qua mạng Ethernet thì lại khác. Ở

đây, các thiết bị điều khiển tự động được kết nối với nhau thành một hệ thống

hoàn chỉnh qua một một thiết bị trung tâm và có thể giao tiếp với nhau về mặt dữ

liệu.

Điển hình của một hệ thống điều khiển thiết bị trong nhà từ xa thông qua

mạng Ethernet gồm có các thiết bị đơn giản như bóng đèn, quạt máy, lò sưởi đến

các thiết bị tinh vi, phức tạp như tivi, máy giặt, hệ thống báo động … Nó hoạt

động như một ngôi nhà thông minh. Nghĩa là tất cả các thiết bị này có thể giao

tiếp với nhau về mặt dữ liệu thông qua một đầu não trung tâm. Đầu não trung tâm

ở đây có thể là một máy vi tính hoàn chỉnh hoặc có thể là một bộ xử lí đã được

lập trình sẵn tất cả các chương trình điều khiển. Các thiết bị trong ngôi nhà này

có thể được điều khiển từ xa thông qua mạng Ethernet.

Page 8: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

8

Từ những yêu cầu thực tế, những đòi hỏi ngày càng cao của cuộc sống,

cộng với sự hợp tác, phát triển mạnh mẽ của mạng di động nên em đã chọn đề tài

" Điều khiển thiết bị qua WebServer" để đáp ứng được nhu cầu ngày càng cao

của con người và góp phần vào sự tiến bộ, văn minh, hiện đại của nước nhà.

Với đề tài trên em tiến hành thực hiện việc điều khiển từ xa theo hướng

sau: Điều khiển thiết bị qua Ethernet với giao thức TCP/IP. Người dùng

đăng nhập vào Website và thực hiện điều khiển thiết bị qua giao diện

Web.

1.2 Ý nghĩa của đề tài

Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, các thiết bị điện tử ra

đời ngày càng nhiều về chủng loại cũng như tính năng sử dụng. Bên cạnh đó nhu

cầu sử dụng các thiết bị một cách tự động ngày càng cao, con người ngày càng

muốn có nhiều thiết bị giải trí cũng như các thiết bị sinh hoạt với kỹ thuật và công

nghệ ngày càng cao. Có thể ở Việt nam chưa phát triển mạnh mẽ trong lĩnh này

nhưng hiện nay ở trên thế giới, nhất là các quốc gia thuộc Châu âu hay Mỹ thì mô

hình ngôi nhà tự động được điều khiển từ xa đã phát triển rất mạnh mẽ.

Từ những nhu cầu thực tế đó, em muốn đưa một phần những kỹ thuật hiện

đại của thế giới áp dụng vào điều kiện thực tế trong nước để có thể tạo ra một hệ

thống điều khiển thiết bị trong nhà từ xa thông qua mạng Ethernet nhằm đáp ứng

nhu cầu ngày càng cao của con người. Đề tài lấy cơ sở là mạng Ethernet để điều

khiển thiết bị. Việc sử dụng mạng Ethernet để điều khiển thiết bị có thuận lợi là

tiết kiệm chi phí, mang tính cạnh tranh và cơ động cao. Ngoài ra, sản phẩm của

đề tài này có tính mở, có thể áp dụng cho nhiều đối tượng khác nhau trong dân

dụng cũng như trong công nghiệp.

Page 9: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

9

1.3 Giới hạn đề tài nghiên cứu

Để thực thi một hệ thống điều khiển thiết bị từ xa thông qua mạng Ethernet

áp dụng cho một ngôi nhà hoàn chỉnh như nói trên là rất phức tạp và rất tốn kém.

Để đáp ứng việc điều khiển toàn bộ các thiết bị này đòi hỏi phải có một lượng

thời gian, kiến thức nhất định. Bên cạnh đó còn là vấn đề tài chính. Với lượng

thời gian và kiến thức có hạn, trong đề tài nàyem thực hiện chỉ thực thi một phần

của hệ thống hoàn chỉnh đó. Đó là điều khiển đóng mở đèn, đọc ADC và điều

khiển thiết bị bằng xung PWM.

Với những gì đã trình bày trên, em đã tiến hành nghiên cứu, khảo sát và

thực hiện và dự kiến đạt được các mục tiêu đặt ra như sau:

- Thiết lập một Website và thực hiện điều khiển các thiết bị qua giao diện

Web, sau khi thực hiện lệnh điều khiển trạng thái của thiết bị on/off được

thể hiện ngay trên giao diện Web.

1.4 Mục tiêu nghiên cứu

- Đồ án được nghiên cứu và thực hiện với mục đích áp dụng những kiến thức

đã được học trong nhà trường để thiết kế, tạo ra một hệ thống điều khiển

tự động từ xa qua mạng Ethernet.

- Nghiên cứu và tạo một giao diện Websever để thực hiện điều khiển qua

mạng Ethernet với chuẩn giao tiếp TCP/IP.

- Nghiên cứu và sử dụng kit STM32F407VG của ST giao tiếp với module

Ethernet DP83848.

1.5 Kết quả nghiên cứu của đề tài

Với những mục tiêu và kế hoạch đã đề ra, cùng với sự nỗ lực nghiên cứu,

em đã đạt được những kết quả nhất định sau:

Thiết kế thành công mạch điều khiển giao tiếp qua mạng Ethernet với các

tính năng:

Page 10: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

10

+ Giao tiếp thành công với mạng Ethernet qua chuẩn truyền thông TCP/IP,

thực hiện quan sát trạng thái và ra lệnh điều khiển thiết bị qua giao diện

Webserver.

Ngoài ra, mạch điều khiển được thiết kế sẵn sàng cho việc tích hợp thêm các

ngoại vi trong tương lai.

1.6 SƠ ĐỒ TỔNG QUAN CỦA HỆ THỐNG

Sơ đồ tổng quan của hệ thống:

Hình 1.1 Sơ đồ tổng quan hệ thống

Dù đang ở rất xa ngôi nhà, người sử dụng có thể dùng máy tính được kết

nối với mạng Internet hoặc các thiết bị như điện thoại, máy tính bảng có hỗ trợ

Internet để gửi tín hiệu tới bộ điều khiển tác động lên các thiết bị điện trong gia

đình. Điều này rất thuật tiện khi bạn thường xuyên phải ra khỏi nhà và muốn cập

nhật trạng thái và điều khiển hoạt động của các thiết bị điện trong ngôi nhà.

Page 11: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

11

Sơ đồ khối:

Hình 1.2 Sơ đồ khối của bộ điều khiển

Chức năng từng khối:

Khối giao tiếp ETHERNET:

Gồm DP83848 được kết nối với kit STM32F407VG truyền nhận tín hiệu

qua giao thức SPI. Khối này có nhiệm vụ nhận lệnh điều khiển qua Webserver

với giao thức TCP/IP. Vi điều khiển nhận lệnh, thực thi xong và gửi trả lại kết

quả.

Khối xử lý trung tâm

Khối trung tâm trong việc xử lý và điều khiển. Vi điều khiển nhận tín hiệu

từ khối giao tiếp Ethernet và cảm biến, sau đó đưa ra tín hiệu điều khiển đồng

thời hồi tiếp về hiển thị lên Web.

Tạo nguồn với hai mức điện áp 5V cấp cho vi điều khiển và 3V3 cấp cho

DP83848.

Khối xử lý trung

tâm Khối

ETHERNET

Khối giao diện

điều khiển

Khối điều khiển

Page 12: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

12

CHƯƠNG 2: ETHERNET

VÀ HỌ GIAO THỨC TCP/IP

2.1 Tổng quan về Ethernet

2.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 2.1: Cấu trúc khung MAC theo IEEE 802.3/ Ethernet

Mở đầu

555…5H

SFD

(D5H)

Địa chỉ

đích

Địa chỉ

nguồn

Độ dài

kiểu

gói

Dữ liệu PAD FCS

7 byte 1 byte 2/6 byte 2/6 byte 2 byte 46-1500 byte 4 byte

- 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ỏ.

2.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

Page 13: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

13

(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.

2.1.3 Các loại khung Ethernet

2.1.3.1 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.

2.1.3.2 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ý.

2.1.3.3 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.

2.1.4 Truy nhập bus sử dụng phương pháp CSMA/CD

Page 14: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

14

Hình 2.1: 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.

2.2 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).Các tầng trong mô

hình này là:

Page 15: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

15

- 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 2.2: Cấu trúc họ giao thức TCP/IP

2.2.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 và hệ thống. Một số giao thức

thông dụng trong tầng này là: HTTP, FTP, SMTP,…Trong phạm vi đồ án, chúng

ta sử dụng giao thức HTTP mà cụ thể là xây dựng một Webserver nhúng vào hệ

thống.

HTTP là giao thức truyền tải siêu văn bản (HyperText Transfer Protocol).

HTTP xác định cách các thông điệp được định dạng và truyền tải ra sao và hoạt

động của Webserver và các trình duyệt Web.Trong mô hình của HTTP,

Webserver đồng thời cũng là TCPServer, mở sẵn port mặc định dành cho dịch vụ

HTTP là TCP80 (ở chế độ listen), sẵn sàng đợi yêu cầu kết nối từ các client. Các

client sẽ khởi tạo kết nối TCP thông qua port này, sau khi Webserver chấp nhận

Page 16: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

16

kết nối, client sẽ gửi một bản tin HTTP (HTTP message) gọi là HTTP request tới

server trên kết nối TCP vừa thiết lập. Server sẽ trả lời lại bằng một bản tin HTTP

khác là HTTP response. Bản tin này sẽ chứa nội dung trang Web yêu cầu (được

viết bằng ngôn ngữ HTML). Như vậy giao thức HTTP sẽ dựa cơ bản trên các bản

tin HTTP, gồm 2 loại là HTTP request và HTTP response.

Giả sử ta truy nhập vào địa chỉ IP của webserver là 192.168.1.41 qua trình duyệt:

Lúc đó, máy tính của chúng ta sẽ gửi đi một bản tin request của giao thức

HTTP là HTTP Get thông qua giao thức TCP (với cổng TCP được qui định

cho giao thức HTTP là 80) đến địa chỉ webserver trên.

Webserver, ở đây chính là vi điều khiển của chúng ta nhận được bản tin

này (khi đã đi qua hết các lớp giao thức ethernet, IP, TCP rồi mới đến

HTTP). Tại đây vi điều khiển sẽ đọc và phân tích bản tin HTTP request

này để biết máy tính đang yêu cầu tải nội dung trang web nào.

Sau đó vi điều khiển sẽ lấy nội dung trang web này (được soạn thảo theo

ngôn ngữ HTML) chứa trên trên ROM, nó cũng có thể thêm vào trang web

đó một số thông tin (ví dụ đọc giá trị từ các sensor cảm biến nhiệt độ và

đưa vào trong trang web), và gửi toàn bộ nội dung trang web thông qua

giao thức TCP trở lại cho máy tính. Nếu nội dung trang web lớn nó có thể

được gửi đi trên rất nhiều gói tin, vì mỗi gói tin chỉ chứa tối đa 1460 byte

dữ liệu.

Máy tính nhận nội dung trang web và trình duyệt sẽ hiển thị lên cho chúng

ta thấy. Để điều khiển thiết bị kết tới hệ thống từ xa qua web, trên trang

web ta có thể thiết kế một nút nhấn chẳng hạn. Khi ta nhấn nút này trên

trình duyệt, máy tính sẽ gửi đi một bản tin HTTP nữa là HTTP Get. Vi điều

khiển sẽ nhận bản tin HTTP post này, phân tích dữ liệu chứa trong đó để

có đáp ứng tương ứng (bật tắt bóng đèn) sau đó nó sẽ gửi trả lại lần nữa nội

dung trang web đã cập nhật những thay đổi vừa rồi.Trình duyệt sẽ cập nhật

nội dung này lên và ta sẽ thấy được tác động của thao tác điều khiển.

Page 17: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

17

2.2.2 Tầng Giao Vận (Transport Layer)

Nhiệm vụ của tầng là 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. Hai giao thức chính trong tầng này gồm UDP (User

Datagram Protocol) và TCP (Transmission Control Protocol). Do 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 một cách

tin cậy nên trong phạm vi đồ án chúng ta sử dụng thức TCP.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.

Cấu trúc gói TCP:

Hình 2.3: Cấu trúc gói TCP

Chú thích:

- Số port đích và số port nguồn: để phân biệt các tiến trình ứng dụng đang xảy

ra trong máy tính

Page 18: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

18

- Các số sequence và Acknowledgement: số sequence để phân biệt các segment

khác nhau trong một dòng dữ liệu, các số Acknowledgement dùng trong cơ chế

xác nhận

- Vùng Data offset: chiều dài của Header tính theo đơn vị 32 bit

Một số cờ (flags):

.URG (Urgent): thiết lập 1 khi có dữ liệu quan trọng cần truyền ngay.

.ACK: cho biết có số xác nhận nằm trong vùng Acknowledgement

. PSH (Push): được thiết lập trong trường hợp dữ liệu nên được giao tức

thời

.RST (Reset): chỉ thị một lỗi sai và hủy bỏ phiên làm việc

. SYN (Synchronize): trong các bản tin khởi tạo khi thiết lập một kết nối

truyền dữ liệu

. FIN (Finish): dùng đóng 1 phiên làm việc

- Vùng Window: chỉ ra số lượng không gian bộ đệm khả dụng để nhận dữ liệu

- Vùng Checksum: vùng kiểm tra sai cho cả segment

- Vùng Urgent Pointer: chỉ ra chiều dài của dữ liệu urgent

- Vùng Options: xác định kích thước cực đại của 1 segment

Cụ thể hơn, vai trò của TCP trong chồng giao thức TCP gồm 3 chức năng

chính: điều khiển luồng, kiểm soát lỗi và báo nhận.

- Điều khiển luồng: điều phối tốc độ và kích thước luồng dữ liệu để đảm bảo

phía nhận đủ khả năng nhận và xử lý luồng dữ liệu.

- Kiểm soát lỗi: đảm bảo các gói tin đến đúng và đủ.

- Báo nhận: khi nhận được dữ liệu và không có lỗi, phía nhận phải báo lại với

phía gửi biết.

Để thực hiện được các chức năng đó, một quá trình truyền dữ liệu qua giao

thức TCP (mà ta gọi là phiên truyền thông – session) gồm có 3 giai đoạn: Thiết

lập kết nối, truyền dữ liệu và giải phóng kết nối.

Page 19: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

19

Để có thể giám sát chặt chẽ trạng thái và mọi sự kiện xảy ra trong một kết

nối TCP, trạng thái của một kết nối TCP được chuyển đổi tuân theo một lưu đồ

trạng thái như sau:

Hình 2.4: Lưu đồ trạng thái kết nối TCP

Giải thích:

- TCP là giao thức hướng kết nối, dạng client – server. Tức là trong một phiên

truyền thông thì sẽ có một phía đóng vai trò client, phía còn lại, lúc nào cũng ở

trạng thái chờ đợi các client thiết lập kết nối tới chính là server.

- Ví dụ khi ta truy cập web, thì máy tính của ta là client, máy chủ chứa trang web

chính là server – vi điều khiển, lúc nào cũng ở trạng thái đợi các máy tính client

kết nối đến (và phải có khả năng thiết lập đồng thời nhiều kết nối, vì có thể có

nhiều client kết nối tới cùng lúc).

Page 20: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

20

- Trong lưu đồ trên, áp dụng cho cả client và server. Cả client và server đều bắt

đầu bằng trạng thái “Close”. Client sẽ thiết lập kết nối theo con đường Active

Open (nó chủ động thiết lập kết nối). Server sẽ thiết lập kết nối theo con đường

Passive Open (thụ động, vì nó đợi client bắt đầu mà)

Quá trình chuyển trạng thái:

- Cả hai bắt đầu bằng trạng thái close, không có kết nối nào tồn tại.

- Khi Server mở một port TCP để đợi client thiết lập kết nối, nó chuyển sang trạng

thái “Listen”.

- Khi client gửi đi bản tin SYN, nó chuyển sang trạng thái “SYN sent”.

- Lúc này khi server nhận được bản tin SYN từ client và gửi đáp lại 1 bản tin

SYN, nó chuyển sang trạng thái “SYN Received”.

- Lúc này client gửi lại bản tin xác nhận ACK (bước 3 trong ví dụ), nó chuyển

sang trạng thái thiết lập kết nối “Established”.

- Server nhận được bản tin ACK trên của client, nó cũng chuyển sang trạng thái

“Established”.

- Sau đó hai bên tiến hành truyền dữ liệu, trạng thái cả hai đều là “Established”.

- Một trong hai phía truyền xong dữ liệu, đến đây thì vai trò hai bên là như nhau,

ta giả sử client truyền xong dữ liệu trước, nó sẽ gửi bản tin FIN, và chuyển sang

trạng thái “FIN wait 1”.

- Phía server nhận được bản tin này, gửi xác nhận ACK, và chuyển sang trạng

thái “Close wait”.

- Khi client nhận được xác nhận từ server (nhận được bản tin ACK trên) thì nó

chuyển sang trạng thái “FIN wait 2”.

- Đến lúc này server vẫn có thể tiếp tục gửi dữ liệu và client vẫn tiếp tục nhận (vì

chỉ có client báo là gửi xong dữ liệu).

- Đến khi nào server cũng gửi hết dữ liệu, nó sẽ gửi đi bản tin FIN, cho biết nó

cũng đã gửi xong dữ liệu và chuyển sang trạng thái “LAST ACK”.

- Khi client nhận được bản tin FIN trên từ server, nó gửi xác nhận (ACK) và

Page 21: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

21

chuyển sang trạng thái “Time wait”, sau đó chờ 1 khoảng thời gian Timeout và

đóng kết nối, quay lại trạng thái “Close”.

- Khi server nhận được nó cũng chuyển từ “Last ACK” sang “Close” (không cần

đợi Timeout)

2.2.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.

- 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) .

Page 22: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

22

- Cấu trúc của gói IP:

Hình 2.5: Cấu trúc gói tin IP

Ý nghĩa:

- Version (có chiều dài 4 bit): cho biết phiên bản của giao thức, đối với

trường hợp của chúng ta, giao thức là IP version 4, trường này sẽ luôn có

giá trị là 4 (0100).

- Header Length (4 bit): cho biết chiều dài của header IP, tính theo đơn vị 4

byte (32 bit).

- TOS (8 bit): Type of Service.

- Total Length (16 bit): 16 bit tổng chiều dài của gói IP gồm cả phần header.

- Identification (16 bit): dùng nhận diện các phân đoạn của gói IP.

- Flags:

. Bit đầu tiênkhông sử dụng.

. Bit 2: DF (Don’t Fragment) = 1 có nghĩa là không phân đoạn gói này.

. Bit 3: MF (More Fragment) = 0 => đây là phân đoạn cuối cùng.

- Fragmented offset (13 bit): độ dời (đơn vị 8 byte) tính từ điểm bắt đầu của

Header tới điểm bắt đầu của phân đoạn

Page 23: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

23

- TTL (Time to Live) (8 bit): thời gian tồn tại trên mạng hoặc số chặng trên

mạng mà gói đi qua trước khi bị hủy bỏ.

- Protocol (8 bit): nhận diện Protocol trên lớp IP.

- Header checksum (16 bit): sửa sai cho phần Header.

- Các vùng địa chỉ nguồn, địa chỉ đích: địa chỉ IP 32 bit.

- Option: các tùy chọn dùng cho việc kiểm tra: Loose source routing, Strict

source routing, Record route và Timestamp.

- Padding: Gồm các số zero được thêm vào sao cho chiều dài của vùng

Header là bội số của 32 bit.

Cách thức mà dữ liệu được gửi qua giao thức IP được tiến hành như sau:

- Khi nhận được một segment dữ liệu (từ giao thức lớp trên là TCP) cần gửi

đến đích nào đó, địa chỉ đích này phải được xác định bằng địa chỉ IP (tức

là địa chỉ mạng hay địa chỉ luận lý). Lớp giao thức IP sẽ gắn thêm vào đầu

segment dữ liệu một header IP để tạo thành gói IP hoàn chỉnh. Trong

header IP này có chứa 2 thông tin quan trọng, đó là địa chỉ host gửi (source

IP address) và địa chỉ host nhận (destination IP address). Địa chỉ source

đương nhiên là địa chỉ của bản thân nó, còn địa chỉ đích phải được cung

cấp cho lớp IP khi muốn gửi dữ liệu qua giao thức này.

- Gói tin IP này sau đó được chuyển đến lớp giao thức ethernet để thêm phần

header ethernet vào và gửi đi.

Nhưng giao thức ethernet lại gửi các khung dữ liệu đi dựa vào một loại địa

chỉ khác là địa chỉ MAC (hay còn gọi là địa chỉ vật lý). Tại sao lại cần đến 2 địa

chỉ như vậy? Lý do là địa chỉ vật lý chỉ có giá trị trong phạm vi mạng LAN, nó

sẽ không thể giúp xác định vị trí host ở bên ngoài phạm vi mạng LAN. Khi gửi

dữ liệu ra ngoài mạng LAN, các router sẽ chuyển dữ liệu đi dựa và địa chỉ IP.

Như vậy trong phần địa chỉ MAC nguồn và địa chỉ MAC đích trong header của

khung ethernet, ta sẽ điền các địa chỉ nào? Đối với địa chỉ MAC nguồn, đương

nhiên ta sẽ điền địa chỉ MAC của chính DP83848 đã được xác lập. Nhưng còn

địa chỉ MAC đích, sẽ có 2 trường hợp xảy ra:

Page 24: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

24

- Nếu host đích nằm trong cùng 1 mạng LAN với chúng ta, ta sẽ điền địa chỉ

MAC đích là địa chỉ tương ứng của host đích. Frame dữ liệu sẽ được gửi

thẳng đến đích.

- Nếu host đích nằm bên ngoài mạng LAN, rõ ràng ta không thể gửi dữ liệu

trực tiếp đến host đích mà phải thông qua gateway, khi đó địa chỉ MAC

đích phải là địa chỉ gateway.

Vẫn còn một vấn đề nữa mà ta phải giải quyết. Đó là trong cả hai trường

hợp trên, dù là cần gửi cho gateway hay thẳng đến host đích, thì đến đây, ta mới

chỉ biết địa chỉ IP của host đích (hay của gateway) mà không biết địa chỉ MAC

tương ứng. Vậy nảy sinh một vấn đề là làm sao biết được địa chỉ MAC của một

host khi biết địa chỉ IP?

Đến đây, chính là phát sinh vai trò của giao thức phân giải địa chỉ (APR –

Address Resolution Protocol). Vai trò của giao thức này là tìm ra địa chỉ MAC

khi biết địa chỉ IP của 1 host.

Cấu trúc gói ARP:

Hình 2.6: Cấu trúc gói tin ARP

Ý nghĩa:

Hardware type (2 bytes): cho biết loại địa chỉ phần cứng, đối với địa chỉ

MAC của giao thức ethernet thì giá trị này được qui định là "0x0001".

Page 25: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

25

Protocol type (2 bytes): cho biết loại địa chỉ giao thức lớp trên, đối với địa

chỉ IP, giá trị này được qui định là “0x0800”.

HLEN (1 byte): cho biết chiều dài của địa chỉ vật lý (địa chỉ MAC).

PLEN (1 byte): cho biết chiều dài của địa chỉ giao thức (địa chỉ IP).

Operation (2 bytes): cho biết hoạt động đang thực hiện trong gói tin này

(request hay reply).

Sender H/W (hardware address, 6 bytes): địa chỉ vật lý của phía gửi.

Sender IP (4 bytes): địa chỉ IP của phía gửi.

Target H/W (6 bytes): địa chỉ vật lý của phía nhận, nếu chưa biết thì sẽ là

chứa toàn 0.

Target IP (4 bytes): địa chỉ IP của phía nhận.

Cách thức mà dữ liệu được gửi qua giao thức ARP được tiến hành như sau:

- Khi giao thức IP đưa xuống yêu cầu tìm chỉ MAC của host có IP là a.b.c.d

thì nó phải trả lời ngay địa chỉ MAC của địa chỉ trên dạng

XX:XX:XX:XX:XX:XX.

- Cách thức ARP lấy thông tin giải quyết vấn đề trên là: giao thức ARP duy

trì một bảng gọi là ARP cache gồm hai cột, một cột ghi địa chỉ IP, một cột

ghi địa chỉ MAC tương ứng với địa chỉ IP đó. Mỗi khi được hỏi bởi giao

thức IP, nó sẽ tra bảng này để tìm câu trả lời. Khi được hỏi về một địa chỉ

IP a.b.c.d nào đó mà không có sẵn trong bảng ARP cache, nó sẽ lập tức tìm

trong mạng LAN phần tử có địa chỉ IP là a.b.c.d bằng cách gửi yêu cầu tới

các phần tử trong mạng LAN. Các phần tử này đều nhận được yêu cầu và

phần tử nào có IP a.b.c.d sẽ trả lời lại địa chỉ MAC của nó là

XX:XX:XX:XX:XX:XX. Vậy giao thức ARP sẽ lập tức thêm cặp địa chỉ

IP a.b.c.d và địa chỉ MAC XX:XX:XX:XX:XX:XX vào trong bảng ARP

cache và trả lời lại cho giao thức IP.

Page 26: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

26

2.2.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. Giao thức được sử dụng trong phạm vi đồ án là giao

thức Ethernet. Phần cứng được sử dụng chip giao tiếp Ethernet DP83848 giao

tiếp qua chuẩn SPI ( Serial Pheripheral Interface ).

Trong chồng giao thức TCP/IP, giao thức Ethernet đóng vai trò lớp truy

nhập và truyền dẫn. Việc gửi và nhận dữ liệu ở lớp Ethernet được thực hiện dựa

vào địa chỉ vật lý hay còn gọi là địa chỉ MAC. Trong mỗi khung Ethernet đều

chứa 2 địa chỉ MAC: một địa chỉ của host gửi và một địa chỉ của host nhận. Khi

lớp Ethernet nhận được một khung dữ liệu, trước hết nó sẽ kiểm tra địa chỉ host

nhận xem có phải là địa chỉ của nó không (tức là gửi cho nó), nếu đúng nó sẽ

nhận khung này và chuyển đến lớp IP. Ngoài ra còn có 1 trường hợp nữa lớp

Ethernet sẽ nhận khung là nếu địa chỉ host nhận là địa chỉ broadcast (tức là gửi

cho tất cả mọi máy trong mạng LAN), trong trường hợp này frame sẽ được nhận

và xử lý.Ngoài việc kiểm tra địa chỉ, trong khng Ethernet còn có 1 trường chứa

mã kiểm tra lỗi giúp phát hiện những lỗi xảy ra trong quá trình truyền, các khung

bị xác định là có lỗi sẽ bị bỏ qua.

Trong mạch của chúng ta, việc kiểm tra lỗi và kiểm tra địa được thực hiện

tự động bởi IC DP83848, do đó ta không cần lập trình cho các chức năng này.

Mỗi khi nhận được một khung trên đường truyền, DP83848 sẽ kiểm tra lỗi xem

có sai sót không, tiếp đó nó sẽ đối chiếu địa chỉ host nhận với địa chỉ đã được cấu

hình cho nó (trong các thanh ghi địa chỉ MAC: MAADR0-5).

2.3 Microchip TCP/IP Stack

2.3.1 Cấu trúc của Microchip TCP/IP Stack

TCP/IP Stack là bộ thư việnvà một số công cụ phần mềm của Microchip

để hỗ trợ viết phần mềm cho hệ thống nhúng sử dụng vi điều khiển của hãng.Thư

viện đã xây dựng hầu hết các hàm giao tiếp giữa các lớp cũng như hỗ trợ xây

dựng một Webserver nhúng.

Page 27: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

27

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.

Hình 2.7: Cấu trúc của Stack

Hình 2.8: 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).

2.3.2 Hoạt động của TCP/IP Stack

Hoạt đông của TCP/IP Stack 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

Page 28: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

28

hồ chung quản lí theo Time Split. Tức là có một Timer hệ thống (Timer1), cứ mỗi

khoảng thời gian ngắn sẽ ngắt (gọi là một 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 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, STM32F407 nếu được thiết lập ở chế độ TCP Server/Client sẽ hoạt

động đồng thời cả hai 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.

Page 29: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

29

CHƯƠNG 3:GIỚI THIỆU KIT STM32F4

DISCOVERY

3.1 Tổng quan về STM32F4

Hình 3.1 Kit STM32F407VG trong thực tế

- Sử dụng vi điều khiển STM32F407VGT6 :

Dòng ARM cortex- M4 32 bit MCU

1MB Flash

192+4 KB RAM

USB OTG HS/FS

Page 30: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

30

Ethernet

3 ADCs

5 Port : A,B,C,D,E Mỗi port 16 chân

- 2 nút nhấn

- 8 LED :

LD1 (green/red): giao tiếp USB

LD2 (red): báo sử dụng điện áp 3.3V

4 LED : LD3 (orange), LD4 (green), LD5 (red), LD6 (blue)

LD7 (green), LD8 (red) : USB OTG

- Mạch nạp ST-LINK/V2

- Trong đồ án sử dụng :

4 led LD3,LD4,LD5,LD6 để mô tả hoạt động của 4 thiết bị trong

thực tế

ADC 1 kênh 10 để đọc giá trị điện áp chân C0

Và các chân kết nối module ethernet được đề cập ở chương 4 phần

kết nối giữa module ethernet với kit stm32f4

Page 31: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

31

3.2 Sơ đồ nguyên lý

Hình 3.2 sơ đồ nguyên lý các ngõ ra, ngõ vào

Page 32: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

32

Hình 3.2 Sơ đồ nguyên lý mạch nạp ST-LINK/V2

Page 33: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

33

CHƯƠNG 4:MODULE ETHERNET

4.1 Tổng quan về module ethernet

Hình 4.1 Module Ethernet

Sử dụng IC DP83848C:

Sử dụng tần số 25MHZ

Hỗ trợ 2 chế độ giao tiếp MII và RMII

Điện áp 3.3V

Tốc độ 10/100 Mb/s

Page 34: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

34

4.2 Sơ đồ nguyên lý

Hình 4.2 sơ đồ nguyên lý Module Ethernet DP83848

Page 35: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

35

4.3 Cách kết nối với STM32F4 Kết nối thê chế độ MII

ETHERNET STM32F4

Hình 4.3 sơ đồ kết nốt giữa Module Ethernet và STM32F4

MDC

MCO

MDIO

TX_CLK

TX_EN

TXD0

TXD1

TXD2

TXD3

RXD0

RXD1

RXD2

RXD3

COL

INT

RX_DV

CRS

RESET

RX_ER

RX_CLK

VCC

GND

PC1

PC9

PA2

PC3

PB11

PB12

PB13

PC2

PE2

PC4

PC5

PB0

PB1

PA3

PB14

PA7

PA0

NRST

PB10

PA1

3.3V

GND

Page 36: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

36

CHƯƠNG 5: THIẾT KẾ VÀ THI CÔNG

WEBSERVER

5.1 Phân tích yêu cầu điều khiển

Trong một gia đình thông thường ngày nay, TV, hệ thống nghe nhìn, máy

tính, đèn chiếu sáng, rèm cửa và điện thoại di động, ngày càng trở nên dễ sử dụng

và đa năng hơn, nhưng mỗi thiết bị hoạt động độc lập với các bộ điều khiển dùng

riêng. Điều này có nghĩa là có rất nhiều bộ điều khiển, nút chỉnh làm cho cuộc

sống thêm phức tạp.

Với ý nghĩa một ngôi nhà “thông minh”, các thiết bị nói trên sẽ được tích

hợp trong một hệ thống đồng nhất, cung cấp các chức năng của từng loại thiết bị

nhưng được điều khiển tập trung từ bộ điều khiển trung tâm. Như vây, các thiết

bị “thông minh” rời rạc trước đây giờ đây là các thành phần cấu thành nên một

hệ thống “thông minh”.

Phân tích các thiết bị điện cần điều khiển trong một gia đình thông thường,

ta nhận thấy các thiết bị điện trong gia đình chủ yếu là các biến logic, chỉ có 2

trạng thái tắt hoặc mở ví dụ như quạt, điều hòa, tivi, bóng đèn… Song bên cạnh

đó cũng có một số biến có dạng số nguyên, số thực như nhiệt độ phòng, mức nước

trong bể, độ mở của rèm cửa… Với những biến kiểu logic, ta chỉ cần xác định

trạng thái của thiết bị và yêu cầu điều khiển để bật hoặc mở thiết bị khi có yêu

cầu. Còn với những biển kiểu số nguyên, số thực như nhiệt độ, mức nước trong

bể… thì ta cần có cảm biến đo để xác định được giá trị của biến ở thời điểm hiện

tại. Ví dụ, muốn hệ thống tự động bật điều hòa khi nhiệt độ phòng cao thì ta cần

ta cần có một cảm biến nhiệt độ để xác định nhiệt độ phòng tại thời điểm hiện tại.

Nếu nhiệt độ phòng cao hơn một giá trị ta định trước thì hệ thống sẽ tự động điều

Page 37: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

37

khiển để bật điều hòa lên, và khi nhiệt độ hạ thấp giá trị ta định trước thì hệ thống

sẽ điều khiển để tắt điều hòa đi.

Yêu cầu điều khiển được đặt ra đối với hệ thống là người dùng có thể sử

dụng máy tính, máy tính bảng hoặc điện thoại có nối mạng để đưa ra yêu cầu điều

khiển từ xa. Bộ điều khiển nhận lệnh, xử lý rồi sau đó đưa ra tín hiệu điều khiển

thích hợp, sau khi điều khiển xong thì thông báo ngược lại cho người sử dụng

biết đã thực hiện thành công cũng như thông báo trạng thái của thiết bị hiện thời.

Nhà thông minh là một đề tài mở với rất nhiều các ứng dụng, các tiện ích

có thể áp dụng nhằm phục vụ nhu cầu ngày càng nâng cao của con người. Chính

vì vậy mà giới hạn trong đồ án môn học của em không thể giải quyết được hết

các bài toán trên thực tế. Trước mắt, em sẽ thi công một bộ điều khiển có khả

năng giao tiếp truyền thông qua mạng Ethernet từ đó người sử dụng có thể đưa ra

yêu cầu điều khiển để đóng hoặc mở một số thiết bị điện từ xa, ngoài ra bộ điều

khiển còn có khả năng đọc ADC1 kênh 10 và điểu khiển thiết bị bằng xung PWM.

Về hướng đi trong tương lai, em sẽ mở rộng và phát triển thêm nhiều module,

nâng cao khả năng giao tiếp của thiết bị hơn nữa, tăng tính tương tác với người

sử dụng cũng như tăng độ an toàn cho ngôi nhà thông minh.

Page 38: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

38

5.2 Lưu đồ giải thuật

Hình 5.1 Lưu đồ giải thuật chính

Bắt đầu

Khởi tạo

GPIO,ADC,

PWM

Cập nhật

trạng trái

thiết bị,đọc

adc

Gửi lệnh điều

khiển thiết bị

Khởi tạo

Ethernet

Kết thúc

Page 39: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

39

5.3 thiết kế giao điện điều khiển

5.3.1 Thiết kế giao diện web

Ta có dùng một số công cụ như MicrosoftOffice Publisher trong bộ

Microsoft Office hay Adobe Dreamweaver,… để tạo một webserver với giao diện

đơn giản như sau:

Hình 5.2 Giao diện trang chủ Webserver

Page 40: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

40

Hình 5.3 Giao diện điều khiển Webserver

5.3.2 Điều khiển trên Web

Công việc tiếp theo là làm cách nào để điều khiển thiết bị thông qua trình

duyệt?

Trước hết chúng ta tìm hiểu về thẻ <form> , cách đọc nó trong HTML code

và so sánh sự khác nhau giữa hai phương pháp truyền tin là phương pháp GET

và POST. Cuối cùng là đi vào một phương pháp cụ thể mà được dùng trong đồ

án này là phương pháp GET.

Web forms cho phép webserver nhận dữ liệu từ người dùng thông qua

mạng. Dữ liệu này có thể dùng để điều khiển một đầu ra hoặc một vùng nhớ của

hệ thống. Chúng ta sẽ lấy một ví dụ là vi điều khiển nhận lệnh “On/Off” từ trang

web và điều khiển trạng thái của một bóng đèn tương ứng.

Page 41: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

41

Hình 5.4 Vi điều khiển nhận lệnh từ Web và điều khiển

Giống như bất kỳ phần nào trong HTML,web forms có thể nhận ra thông

qua cặp thẻ <form></form>. Trong cặp thẻ này sẽ có các thẻ <input> với các kiểu

tương tác người dùng (nút bấm,dạng check,…)

Khi các biến này đưa tới server thì chúng được mã hóa thành một chuỗi

gồm có lệnh set hay get kèm theo tên thiết bị và giá trị.

Ví dụ : varset.cgi?name=led1&value=1

5.3.3 Phương pháp truyền dữ liệu

Có hai phương pháp được dùng để truyền dữ liệu là phương pháp GET và

phương pháp POST.Phương pháp GET đặt dữ liệu ngay sau URL (VD:

/varset.cgi?name=led1&value=1). Trong nền tảng ARM thì đây là phương pháp

Page 42: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

42

xử lý dữ liệu dễ nhất bởi nó được lưu vào vùng nhớ đồng thời. Tuy nhiên,độ dài

của tên biến,giá trị,ký tự bị giới hạn bởi kích thước của vùng đệm là 100 byte.

Trong khi đó phương pháp POST không giới hạn kích thước của dữ liệu,tuy nhiên

phương thức truyên của nó phức tạp hơn. Do phạm vi của đồ án với ít ngoại vi

nên việc sử dụng phương pháp GET được cho là tối ưu.

Dữ liệu gồm có 2 hoặc 3 thành phần tùy vào action. Đối với action là get sẽ có 2

thành phần : tên action và name. Đối với action là set cần có 3 thành phần : tên

action, name và value.

Trong đó :

tên action là : get hoặc set.

name là : led1, led2, led3, led4, pwm, adc.

value: là 0 hoặc 1 đối với led, là 0÷100 đối với pwm.

5.4 Cách đọc ADC

- Thiết lập ADC1 và DMA2 cho chân C0

* Enable ADCx, DMA and GPIO clocks *****************************/

/* ADC1 */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

/* ADC pin C0*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_Init(GPIOC, &GPIO_InitStructure);

- Chọn mode analog cho chân IO

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;

- Chọn độ phân giải ADC 12 bit

Page 43: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

43

ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;

- Chọn kích thước thanh ghi : kiểu HalfWord 16 bit

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

- Canh lề dữ liệu bên phải : do ADC 12 bit nhưng thanh ghi ADC 16 bit

nên phải canh lề.

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

- Đọc ADC1 kênh 10

ADC_RegularChannelConfig(ADC1 , ADC_Channel_10, 1 ,

ADC_SampleTime_3Cycles);

- Hiển thị giá trị ADC trên web: lấy độ phân giải * giá trị chuyển đổi

/*Gain : 3.3/4095 */

webserver_adc = (float)(0.000805860793F*(

(float)ADCDemoRegularADC_ConvertedValue[0] ));

5.5 Cách điều chế độ rộng xung PWM

- Sử dụng xung PWM để điều khiển 2 led ứng với chân D12 và D13

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);

GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_TIM4);

Tính chu kỳ xung

TIM_TimeBaseStructure.TIM_Period = 60000-1;

/* chu ky cua timer 60000*(84MHZ/28)^-1=0.02 sec */

TIM_TimeBaseStructure.TIM_Prescaler = 27; // bộ chia//

Tính độ rộng xung= giá trị % xung *độ rộng của 1%

TIM4->CCR1 = (uint32_t) ( ((real_T) ((uint32_t) webserver_pwm) )* 60000/100);

TIM4->CCR2 = (uint32_t) ( ((real_T) ((uint32_t) webserver_pwm) ) * 60000/100);

Page 44: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

44

5.6 Cách bật tắt thiết bị

- Ở đây ta bật tắt 2 led thay cho 2 thiết bị. 2 led này ứng với chân D14 và

D15. Thêm 2 chân D1 và D2 để điều khiển thiết bị bên ngoài khi cần thiết.

GPIO_InitStructure.GPIO_Pin =

GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_2|GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

GPIO_Init(GPIOD, &GPIO_InitStructure);

- Chương trình bật tắt thiết bị:

webserver.LED1 = !webserver.LED1_PreviousInput;

/* LEDToggle Output */

*LEDToggle_D15 = webserver.LED1;

/* web */

webserver_led1 = (uint32_t) webserver.LED1;

/* Update for LED*/

webserver.LED1_PreviousInput = webserver_led1;

Page 45: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

45

Chương 6: KẾT LUẬN

6.1 Kết luận

Qua thời gian nghiên cứu, thi công đồ án đã cơ bản được hoàn thành. Bằng

sự nỗ lực cố gắng của bản thân mỗi cá nhân và sự phân chia, phối hợp công việc

hợp lí, chặt chẽ, nhịp nhàng giữa mỗi thành viên của nhóm, bên cạnh đó còn là

sự hướng dẫn nhiệt tình, tận tâm của Thầy Nguyễn Thanh Bình, đồ án này đã

được hoàn thành đúng thời gian như đã định và đã đạt được yêu cầu đặt ra là thiết

kế và thi công hệ thống điều khiển thiết bị điện từ xa qua mạng Ethernet. Trong

quá trình thực hiện đề tài, em đã thu được những kết quả nhất định như sau:

- Mạch điện với các module trên mạch được thiết kế và thi công hoàn

chỉnh và đã được thử nghiệm nhiều lần và đã hoạt động ổn định trong

thực tế.

- Xây dựng được mô hình để ứng dụng điều khiển các thiết bị

Hệ thống điều khiển thiết bị điện trong nhà từ xa thông qua mạng Ethernet

được thực hiện như trong đề tài là một hệ thống với các chức năng đạt được

như sau:

1. Hệ thống của thể điều khiển được thiết bị điện từ xa thông qua mạng Ethernet

- Người dùng có thể dùng máy tính đăng nhập vào Webserver và thực thi

điều khiển thiết bị ngay trên giao điện Web.

- Trạng thái của thiết bị được cập nhật ngay trên giao diện Web.

2. Hệ thống có thể đọc ADC, điều khiển được độ rộng xung PWM để có thể điều

khiển các thiết bị 1 cách hợp lý.

Để thực hiện được các chức năng nêu trên, nhóm em đã tìm hiểu, nghiên

cứu các vấn đề có liên quan tới đề tài như : truyền thông UART, truyền thông

SPI, giao thức TCP/IP, STM32F4, Module Ethernet DP83848, mạng Ethernet, và

các vấn đề khác liên quan tới đề tài.

Page 46: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

46

Cuối cùng, theo nhận định chủ quan của nhóm em thì đồ án đã được hoàn

thành đúng thời gian cho phép và đã trình bày khá đầy đủ các mảng kiến thức liên

quan, các vấn đề liên qua tới đề tài. Song do những điều kiện khách quan, đề tài

này chỉ thực hiện một phần nhỏ đối với việc điều khiển. Đó là điều khiển 4 thiết

bị : 2 thiết bị điều khiển 2 chế độ ON-OFF, 2 thiết bị được điều khiển chung bởi

1 xung PWM với mức độ từ 0-100 và đọc ADC.

6.2 Hướng phát triển đề tài

Do thời gian thực hiện đề tài có hạn và lượng kiến thức cá nhân mỗi thành

viên của nhóm là nhất định nên đề tài thực hiện xong chỉ đáp ứng được một phần

nhỏ của một hệ thống hoàn chỉnh. Vì vậy, để đề tài này thêm phong phú hơn,

mang nhiều tính thực tế hơn nữa, có khả năng ứng dụng cao hơn thì em đề xuất

đưa thêm vào những yêu cầu như sau:

Sử dụng thêm nhiều loại cảm biến khác, chẳng hạn như cảm biến độ ẩm

không khí để đo độ ẩm không khí, hệ thống báo cháy tự động,… để ứng

dụng vào đề tài. Như thế người dùng có thể hình dung ra được toàn bộ

không gian trong ngồi nhà.

Thêm khối bàn phím, thời gian thực để người dùng có thể trực tiếp chỉnh

định lại các thông số của hệ thống sao cho phù hợp và có thể hẹn giờ để

tắt/bật thiết bị theo ý muốn.

Mở rộng điều khiển được nhiều hơn nữa các thiết bị.

Phần cứng cho mỗi module cần được tách rời nhằm dễ dàng cho việc chỉnh

sửa, thay đổi.

Hy vọng với những hướng phát triển nêu trên cùng với những ý tưởng, góp

ý khác của các thầy cô giáo, các bạn đọc sẽ phát triển hơn nữa đề tài này, khắc

phục những hạn chế, tồn tại của đề tài, làm cho đề tài trở nên phong phú hơn,

mang tính ứng dụng cao hơn vào trong thực tế cuộc sống, phục vụ cho những lợi

ích của con người trong tương lai.

Page 47: Điều Khiển Thiết Bị Qua Webserver

ĐIỀU KHIỂN THIẾT BỊ QUA WEBSERVER – LÊ VĂN HÙNG 12141553

47

TÀI LIỆU THAM KHẢO

[1] Nguyễn Đình Phú , Vi Điều Khiển PIC, Nhà Xuất Bản ĐH Quốc Gia TP.HCM

[2] Một Số Trang Web Tham Khảo:

www.codientu.org

www.st.com

icviet.vn

www.dientuvietnam.net

stm32vn.tk