Dieukhienthietbi qua Internet vaf GSM

advertisement

Đề tài

Điề u khi ể n thi ế t b ị điệ n qua

Internet và GSM_EvaVer

MỤC LỤC

LỜI NÓI ĐẦU ....................................................................................................... 6

CHƯƠNG 1: DẪN NHẬP ..................................................................................... 7

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

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

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

1.4 Mục tiêu nghiên cứu của đề tài ................................................................... 10

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

1.6 Sơ đồ tổng quan của hệ thống ..................................................................... 12

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

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

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

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

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

2.1.3.1 Khung unicast ................................................................................. 16

2.1.3.2 Khung broadcast ............................................................................. 16

2.1.3.3 Khung multicast .............................................................................. 17

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

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

2.2.1 Tầng ứng dụng (Application Layer) ..................................................... 19

2.2.2 Tầng giao vận (Transport Layer) .......................................................... 20

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

2.2.4 Tầng giao tiếp mạng ............................................................................. 30

2.3 Microchip TCP/IP Stack ............................................................................. 31

1

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

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

CHƯƠNG 3: TỔNG QUAN VỀ TIN NHẮN SMS VÀ MODULE SIM900 ..... 33

3.1 Tổng quan về tin nhắn SMS ........................................................................ 33

3.2 Giới thiệu Module SIM900 ......................................................................... 33

3.2.1 Tổng quan về Module SIM900 ............................................................. 33

3.2.2 Khảo sát sơ đồ chân và chức năng từng chân ....................................... 34

CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG .......................................................... 35

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

4.2 Thiết kế phần cứng mạch chính .................................................................. 37

4.2.1 Sơ đồ nguyên lý mạch chính .................

Error! Bookmark not defined.

4.2.2 Mô tả chức năng từng khối ................... Error! Bookmark not defined.

4.2.3 Khối rơle ............................................... Error! Bookmark not defined.

4.3 Tổng quan chương trình chính .................... Error! Bookmark not defined.

4.4 Thiết kế Webserver ..................................................................................... 38

4.5 Thiết kế và thi công Module SIM900 ......... Error! Bookmark not defined.

4.5.1 Sơ đồ nguyên lý kết nối Module SIM900 ........... Error! Bookmark not defined.

4.5.2 Tập lệnh AT dùng cho Module SIM900 Error! Bookmark not defined.

4.5.2 Giải thuật nhận tin nhắn và thực thi điều khiển: .. Error! Bookmark not defined.

Chương 5: KẾT LUẬN ........................................ Error! Bookmark not defined.

5.1 Kết luận ....................................................... Error! Bookmark not defined.

5.2 Hướng phát triển đề tài ............................... Error! Bookmark not defined.

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

2

PHỤ LỤC 1: VI ĐIỀU KHIỂN PIC18F8722 ...................................................... 40

PHỤ LỤC 2: GIỚI THIỆU VỀ TRÌNH BIÊN DỊCH MPLAB C18 ................... 59

PHỤ LỤC 3 : GIAO TIẾP GIỮA PIC VÀ ETHERNET .................................... 61

PHỤ LỤC 4: THÔNG SỐ KỸ THUẬT CỦA SIM900 ...................................... 66

3

Liệt kê bảng

Bảng 2.1: Cấu trúc khung MAC theo IEEE 802.3/ Ethernet. ................. 15

Liệt kê hình

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

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

Hình 2.1: Minh họa phương pháp CSMA/CD. ....................................... 17

Hình 2.2: Cấu trúc họ giao thức TCP/IP. ................................................ 18

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

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

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

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

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

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……………………………………………………………….32

Hình 3.1: Module Sim900 ....................................................................... 33

Hình 3.2: Sơ đồ chân của Module Sim900.............................................. 34

Hình 4.1: Sơ đồ nguyên lý mạch chính ... Error! Bookmark not defined.

Hình 4.2: Sơ đồ nguyên lý khối rơle ....... Error! Bookmark not defined.

Hình 4.3: Tổng quan chương trình chính Error! Bookmark not defined.

Hình 4.4: Giao điện Webserver ............... Error! Bookmark not defined.

Hình 4.5: Từ cảm biến nhệt độ lên trình duyệt ...... Error! Bookmark not defined.

Hình 4.6: Kết quả nhiệt độ phòng trên trình duyệt . Error! Bookmark not defined.

4

Hình 4.7: Vi điều khiển nhận lệnh từ Web và điều khiển ................ Error!

Bookmark not defined.

Hình 4.8: Kết quả truyền dữ liệu ............. Error! Bookmark not defined.

Hình 4.9: Phần mềm MPFS2 ................... Error! Bookmark not defined.

Hình 4.10: Sơ đồ nguyên lý kết nối Module SIM900 .. Error! Bookmark not defined.

Hình 4.11: Giải thuật nhận tin nhắn và thực thi điều khiển ............. Error!

Bookmark not defined.

5

LỜI NÓI ĐẦU

Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Và khái niệm về ngôi nhà thông minh đã ra đời. Một ngôi nhà thông là một giải pháp điều khiển tích hợp cho các căn hộ cao cấp, tích hợp các thiết bị điện tử, nghe nhìn, truyền thông thành một hệ thống hoàn chỉnh và thống nhất.

Nhận thức được tầm thực tiễn của ngôi nhà thông minh là cơ sở để chúng em chọn đề tài đồ án tốt nghiệp “Thiết kế hệ thống điều khiển thiết bị điện trong gia đình qua Ethernet và SMS”. Trong suốt thời gian hoàn thành đồ án, chúng em đã tìm hiều về vi điều khiển, các chế độ truyền thông, cảm biến đo, cơ cấu chấp hành, cách kết nối mạng Ethernet, điều khiển qua tin nhắn SMS, đồng thời tìm hiểu về các tiêu chí của một ngôi nhà thông minh.

Dưới sự hướng dẫn, chỉ bảo nhiệt tình của thầy Vũ Vân Hà cùng với sự cố gắng nỗ lực của các thành viên trong nhóm, chúng em đã hoàn thành đồ án đúng thời hạn cho phép. Tuy nhiên do thời gian hạn chế, cũng như lượng kiến thức rất lớn nên chúng em không thể tránh khỏi nhiều thiếu xót. Vì vậy chúng em rất mong sẽ nhận được nhiều ý kiến đánh giá, góp ý của thầy cô giáo và các bạn sinh viên để chúng em có thể phát triển và hoàn thiện thêm đề tài này.

Chúng em xin chân thành cảm ơn!

Nhóm sinh viên thực hiện

1.

Nguyễn Tất Nam

2.

Đào Cửu Long

3.

Mai Trung Chính

6

CHƯƠNG 1: DẪN NHẬP

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ều khiển tự động 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ị 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 và tin nhắn SMS 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 và tin nhắn SMS 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. Bình thường, 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

7

Ethernet hoặc tin nhắn SMS của chủ nhà. Chẳng hạn như việc tắt quạt, đèn điện

… khi người chủ nhà quên chưa tắt trước khi ra khỏi nhà. Hay chỉ với một tin nhắn SMS, người chủ nhà có thể bật máy điều hòa để làm mát phòng trước khi về nhà trong một khoảng thời gian nhất định. Bên cạnh đó nó cũng gửi thông báo cho người điều khiển biết nhiệt độ trong phòng hiện tại là bao nhiêu, đồng thời phát tín hiệu cảnh báo khi nhiệt độ phòng vượt quá giới hạn cho phép. Ngoài ra, hệ thống còn mang tính bảo mật. Nghĩa là chỉ có những số điện thoại được cài đặt trước và biết đúng mật khẩu thì mới có thể điều khiển được hệ thống.

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 chúng em đã chọn đề tài " Thiết kế hệ thống điều khiển thiết bị điện trong nhà qua mạng

Ethernet và tin nhắn SMS " để đá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 nhóm đề tài đã thực hiện việc điều khiển từ xa theo ba hướng hướng chính:

 Đ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.

 Điều khiển thiết bị qua tin nhắn SMS từ những số điện thoại được cho phép. Thiết bị sẽ nhận tin nhắn SMS theo cấu trúc cho trước. Phân tích yêu cầu điều khiển và thực hiện điều khiển thiết bị.

 Đo và thông báo nhiệt độ trong phòng, phát tín hiệu cảnh báo nếu nhiệt độ trong phòng tăng cao vượt quá giới hạn cho phép.

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

8

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ế đó, nhóm 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 và tin nhắn SMS 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 và tin nhắn SMS để điều khiển thiết bị. Việc sử dụng mạng

Ethernet và tin nhắn SMS để đ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.

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

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

Ethernet và tin nhắn SMS á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ày nhóm em 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, ngoài ra còn có chức năng báo động khi nhiệt độ trong phòng tăng cao quá nhiệt độ cho phép.

Với những gì đã trình bày trên, nhóm 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:

9

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.

-

Điều khiển các thiết bị trong nhà bằng tin nhắn SMS. Sau khi thực hiện lệnh điều khiển xong, tự động gửi tin nhắn lại cho người dùng biết đã thực hiện thành công.

Gửi tin nhắn thông báo trạng thái của các thiết bị và nhiệt độ trong phòng hiện tại là bao nhiêu.

Ngoài ra, hệ thống còn có chức năng tự động phát tín hiệu cảnh bảo qua chuông và tin nhắn khi nhiệt độ trong phòng tăng cao vượt quá giới hạn cho phép.

1.4 Mục tiêu nghiên cứu của đề tài

Đồ á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 và tin nhắn SMS.

-

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.

Tìm hiều về hệ thống điện thoại di động GSM hiện nay. Nghiên cứu và sử dụng các module GSM/GPRS phổ biến hiện nay. Module nhóm thực hiện nghiên cứu và sử dụng là module SIM900 của hãng

SIMCom.

Nghiên cứu và sử dụng chip vi điều khiển PIC của Mircochip. Chip mà nhóm đã tiến hành nghiên cứu và sử dụng là chip PIC18F8722.

10

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, tìm tòi của các thành viên trong nhóm thực hiện đề tài, nhóm thực hiện đã đạ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à tin nhắn SMS với các tính năng:

-

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.

Giao tiếp thành công với module SIM900, nhận và gửi tin nhắn thành công, thực hiện điều khiển thiết bị qua tin nhắn SMS.

Cảnh báo tới người dùng và phát tín hiệu ra chuông khi nhiệt độ phòng tăng cao vượt quá giới hạn cho phép.

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.

11

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

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

Ethernet

Bộ điều khiển

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ợ tin nhắn SMS để 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à.

12

 Sơ đồ khối của bộ điều khiển:

KHỐI

NGUỒN

CẢM

BIẾN

KHỐI

HIỂN THỊ

LCD

MODULE

SIM900

KHỐI

ETHERNET

VI ĐIỀU KHIỂN

PIC18F8722

KHỐI

GIAO

TIẾP SMS

KHỐI

GIAO

TIẾP

INTERNET

KHỐI

CÔNG

SUẤT

Thiết bị 1 Thiết bị 2 Thiết bị 3 Thiết bị 4

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 SMS:

Gồm Module SIM900, có chức năng gửi nhận tin nhắn SMS cho việc điều khiển các thiết bị. Module SIM900 được kết nối với vi điều khiển PIC18F8722, có nhiệm vụ nhận SMS gửi tới vi điều khiển và gửi SMS tới người sử dụng khi có yêu cầu.

 Khối giao tiếp ETHERNET:

Gồm ENC26JC0 được kết nối với vi điều khiển PIC18F8722 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 vi điều khiển PIC18F8722

13

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 SMS, 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 hiển thị lên LCD.

 Khối cảm biến nhiệt độ

Cảm biến được sử dụng là DS18B20 có nhiệm vụ đo nhiệt độ và gửi tín hiệu tới vi điều khiển. Khi nhiệt độ đo được lớn hơn giá trị cho phép thì vi điều khiển phát tín hiệu cảnh báo.

 Khối hiển thị LCD

Gồm TEXT LCD 16x2, có nhiệm vụ hiện thị các thông tin có liên quan tới việc điều khiển, giúp cho giao diện giữa người dùng và thiết bị trực quan hơn.

 Khối công suất

Khối này bao gồm 4 BJT C1815 có nhiệm vụ khuếch đại điện áp để kích cho relay. Khối công suất với dòng thấp, đáp ứng tải tiêu tụ công suất dân dụng như bóng đèn.

Khối nguồn

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

ENC26JC0. Ngoài ra module SIM900 được cấp nguồn với điện áp 4V.

14

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ỉ Địa chỉ Độ dài Dữ liệu PAD FCS đích nguồn kiểu gói

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

15

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

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

16

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

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ì

17

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à:

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

18

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

19

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 đó.

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:

20

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

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

21

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

Để 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:

22

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

23

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

24

Đế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à 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) .

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

25

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

26

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

27

nguồn, đương nhiên ta sẽ điền địa chỉ MAC của chính ENC28J60 đã được xác lập. Nhưng còn địa chỉ MAC đích, sẽ có 2 trường hợp xảy ra:

-

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.

28

Ý 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".

 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ỉ

29

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.

2.2.4 Tầng 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 ENC28J60 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 ENC28J60, 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, ENC28J60 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).

30

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ện và 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.

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.

31

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 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, PIC 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.

Việc cấu hình cho Stack được thực hiện trong file TCPIPConfig.h của

Project.

32

CHƯƠNG 3: TỔNG QUAN VỀ TIN NHẮN SMS VÀ

MODULE SIM900

3.1 Tổng quan về tin nhắn SMS

SMS là từ viết tắt của Short Message Service. Đó là một công nghệ cho phép gửi và nhận các tín nhắn giữa các điện thoại với nhau. Dữ liệu có thể được lưu giữ bởi một tin nhắn SMS là rất giới hạn. Một tin nhắn SMS có thể chứa tối đa là 140 byte (1120 bit) dữ liệu. Vì vậy, một tin nhắn SMS chỉ có thể chứa :

+ 160 kí tự nếu như mã hóa kí tự 7 bit được sử dụng.

+ 70 kí tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng.

Tin nhắn SMS dạng text hỗ trợ nhiều ngôn ngữ khác nhau. Nó có thể hoạt động tốt với nhiều ngôn ngữ mà có hỗ trợ mã Unicode, bao gồm cả Arabic,

Trung Quốc, Nhật bản và Hàn Quốc.

3.2 Giới thiệu Module SIM900

3.2.1 Tổng quan về Module SIM900

Hình 3.1: Module Sim900

33

Sim900 là một module GSM/GPRS cực kỳ nhỏ gọn, được thiết kế cho thị trường toàn cầu. Sim900 hoạt động được ở 4 băng tần GSM 850MHz, EGSM

900MHz, DCS 1800MHz và PCS 1900MHz như là một loại thiết bị đầu cuối với một Chip xử lý đơn nhân đầy sức mạnh, tăng cường các tính năng quan trọng dựa trên nền vi xử lý ARM926EJ-S, mang lại nhiều lợi ích từ kích thước nhỏ gọn (24x24 mm), đáp ứng những yêu cầu về không gian trong các ứng dụng

M2M.

3.2.2 Khảo sát sơ đồ chân và chức năng từng chân

Hình 3.2 Sơ đồ chân của Module Sim900

34

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

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

35

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 có nối mạng, hoặc điện thoại, máy tính bảng có tính năng nhắn tin

SMS để đư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 tốt nghiệp chúng 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, chúng 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 và tin nhắn SMS, 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 nhận tín hiệu từ cảm biến nhiệt độ và thông báo cho người sử dụng biết thông tin về nhiệt độ trong phòng.

Về hướng đi trong tương lai, chúng 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.

36

4.2 Thiết kế phần cứng mạch chính

37

4.4 Thiết kế Webserver

38

TÀI LIỆU THAM KHẢO

[1] Hoàng Minh Sơn – Mạng Truyền Thông Công Nghiệp – NXB Khoa Học Và

Kỹ Thuật – 2006.

[2] Muhammad Ali Mazidi, Rolin D.McKinlay, Danny Causey – PIC

Microcontroller and Embedded Systems – Courier Kendallville, Inc – 2008

[3] Jeremy Bentham – TCP/IP Lean – CMP Book – 2002

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

 www.picvietnam.com

 www.dientuvietnam.com

 www.eprojects.ljcv.net

 www.google.com.vn

39

PHỤ LỤC 1: VI ĐIỀU KHIỂN PIC18F8722

1.

GIỚI THIỆU TỔNG QUAN VỀ PIC18F8722

1.1.

Giới thiệu về PIC18F8722

Khối xử lí trung tâm mà đóng vai trò chính là PIC 18F8722 sẽ làm nhiệm vụ chính là tiếp nhận và xử lí các dữ liệu đến và đi một cách tự động. Đề tài sử dụng PIC 18F8722 vì những ưu điểm vượt trội của nó so với các vi điều khiển khác.Về mặt tính năng và công năng thì có thề xem PIC vượt trội hơn rất nhiều so với các dòng VĐK khác với nhiều module được tích hợp sẵn như ADC 10

BIT, FLASH 128Kb, PWM 10 BIT, EEPROM 1024 BYTE, 2

COMPARATER…

Vi điều khiển này hoàn toàn đáp ứng được các yêu cầu về bộ nhớ

RAM,khả năng xử lý. Nó còn đáp ứng tốt về mặt cơ học và vật lý như độ bền, khả năng tin cậy, khả năng tiết kiệm điện. Tích hợp sẵn bộ ADC để chuyển tín hiệu từ các cảm biến đưa vào vi điều khiển.Vi điều khiển này có đầy đủ các chuẩn truyền thông như UART hay SPI để thực hiện nhiệm vụ truyền thông và giao tiếp giữa VĐK và SIM900,hay IC ENC28J60

Ngoài ra, PIC có ngôn ngữ hổ trợ cho việc lập trình ngoài ngôn ngữ

Asembly còn có ngôn ngữ C thì có thề sử dụng nhiều công cụ lập trình như CCS,

MPLAB, MirkoBasic.. Chính vì vậy chúng ta sẽ có nhiều thuận lợi trong việc dễ dàng tìm kiếm các thông tin lập trình cho các dòng PIC.

Dòng PIC 18F8722 được chọn sử dụng trong đề tài là dòng phổ thông với các tính năng cơ bản và dễ cho việc sử dụng với:

Tập lệnh để lập trình chỉ có 35 lệnh rất dễ nhớ và dễ học, có độ dài 16bit.

Mỗi lệnh đều được thực thi trong 1 chu kỳ xung clock. Tốc độ hoạt động tối đa cho phép là 40MHz.

Thông số và tính năng cơ bản của vi điều khiển PIC18F8722

 128k Flash Rom.

40

 3936 Bytes Ram.

 1024 Bytes EEPROM

 9 Port điều khiển vào ra với tín hiệu điều khiển độc lập

 2 bộ định thời 8 bit và 3 bộ định thời 16 bit

 2 bộ module CCP và 3 bộ module ECCP.

 1 bộ ADC với 16 kênh ADC 10 bit.

 2 bộ so sánh tương tự hoạt động độc lập.

 Bộ giám sát định thời Watchdog timer.

 Cổng giao tiếp song song 8 bit với các tín hiệu điều khiển.

 Chuẩn giao tiếp nối tiếp MSSP (SPI/I2C)

 Chuẩn giao tiếp nối tiếp USART (AUSART/EUSART)

 Hỗ trợ giao tiếp I2C.

 Chế độ sleep tiết kiệm năng lượng.

 Có thể hoạt động với nhiều dạng Oscillator khác nhau.

 Tần số hoạt động tối đa là 40Mhz.

 Bộ nhớ Flash với khả năng ghi xóa được 100.000 lần

 Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần

 Dữ liệu EEPROM có thể lưu trữ trên 40 năm

 Khả năng tự nạp chương trình với sự điều khiển của phần mềm.

1.2. Sơ đồ khối của PIC18F8722

41

Hình 1.1: Sơ đồ khối vi điều khiển PIC18F8722

42

2.

KHẢO SÁT CHỨC NĂNG VÀ HOẠT ĐỘNG CỦA

PIC 18F8722

2.1.

Sơ đồ chân của vi điều khiển PIC18F8722

Hình 1.2: Sơ đồ chân của vi điều khiển PIC18F8722

2.2.

Tổ chức bộ nhớ

Cấu trúc bộ nhớ của vi điều khiển PIC18F8722 bao gồm bộ nhớ chương trình (Program memory) và bộ nhớ dữ liệu (Data Memory).

2.2.1.

Bộ nhớ chương trình.

43

Bộ nhớ chương trình của Vi điều khiển PIC 18F8722 là bộ nhớ flash, dung lượng bộ nhớ 128K word (1 word = 16bit).

Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ

0000h (Reset vertor). Khi có ngắt mức yêu tiên cao xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0008h. Khi có ngắt mức yêu thấp xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0018h Bộ nhớ chương trình bao gồm bộ nhớ Stack và được địa chỉ hóa bởi bộ đếm chương trình.

Hình 1.3 Bộ nhớ chương trình PIC 18F8722

2.2.2. Bộ nhớ dữ liệu

Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank.

Đối với PIC 18F8722 bộ nhớ dữ liệu được chia ra làm 16 bank.

44

Hình 1.4: Sơ đồ tổ chức bộ nhớ dữ liệu PIC 18F8722

2.3.

Các cổng vào ra của vi điều khiển

45

Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.

Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó.

Vi điều khiển PIC18F8722 có 9 cổng xuất nhập, bao gồm PORTA,

PORTB, PORTC, PORTD, PORTE, PORTF, PORTG, PORTH, PORTJ

Trong khuôn khổ đồ án sẽ khảo sát PORTA vì đặc điểm và phương pháp điều khiển các PORT khác không có nhiều sự khác biệt. Bên cạnh đó mỗi PORT còn có thêm các chức năng riêng biệt như ngắt, ADC, bộ so sánh….

 PORTA

PORTA (RPA) bao gồm 8 I/O pin. Đây là các chân có thể xuất và nhập được. Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 92h).

Muốn xác lập chức năng của một chân trong PORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA là

TRISA, đối với PORTB là TRISB…..). Các thanh ghi SFR chính liên quan đến

PORTA bao gồm:

PORTA : giá trị logic của các chân trong PORTA.

46

TRISA : điều khiển hướng xuất nhập cho PORTA

LATA : thanh ghi điều khiển dữ liệu PORTA.

2.4.

Hoạt động định thời Timer

Vi điều khiển PIC18F8722 có đến 5 Timer là Timer0, Timer1, Timer2, Timer3 và Timer4. Trong đó có 2 Timer 8 bit và 3 Timer 16 bit.

 Bộ định thời Timer1

Bộ định thời Timer1 là một bộ định thời/bộ đếm 16 bit gồm hai thanh ghi

TMR1H ( byte cao ) và TMR1L ( byte thấp ) mà có thể đọc hoặc ghi . Cặp thanh ghi này tăng số đếm từ 0000h đến FFFFh và một tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFh xuống 0000h . Ngắt, nếu được phép có thể phát ra khi có số đếm tràn và được đặt ở bit cờ ngắt TMR1IF. Ngắt có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit cho phép ngắt TMR1IE.

Bộ định thời Timer1 có thể được cấu hình để hoạt động một trong hai chế độ sau:

 Định thời một khoảng thời gian ( Timer )

 Đếm sự kiện ( Counter )

Việc lựa chọn một trong hai chế độ được xác định bằng cách đặt hoặc xóa bit chọn clock TMR1CS. Trong chế độ định một khoảng thời gian, bộ định thời tăng số đếm lên sau mỗi chu kỳ lệnh. Trong chế độ đếm sự kiện, bộ định thời tăng sau mỗi cạnh lên của clock ngoài đặt vào. Bộ định thời 1 có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit điều khiển TMR1ON.

Hình 1.5: Thanh ghi điều khiển Timer1

47

Hình 1.6: Sơ đồ khối Timer1

Hình 1.7: Sơ đồ khối Timer1 (16-BIT READ/WRITE MODE)

Hình 1.8: Các thanh ghi liên quan đến bộ định thời Timer1

2.5.

Ngắt

48

PIC18F8722 có nhiều nguồn tạo ra hoạt động ngắt và được điều khiển bởi rất nhiều thanh ghi: RCON; INTCON; INTCON2; INTCON3; PIR1, PIR2;

PIE1, PIE2; IPR1, IPR2. Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT0 và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2. Các cờ ngắt ngoại vi được chứa trong hai thanh ghi chức năng đặc biệt : thanh ghi

PIR1 và PIR2.Các bit cho phép ngắt tương ứng được chứa trong hai thanh ghi

PIE 1 và PIE 2.

Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0008h. Lệnh

RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại.

Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.

Khi một ngắt được đáp ứng, bit GIE được xóa và cấm tất cả các ngắt khác.Cờ ngắt phải được xóa bởi phần mềm trước khi cho phép lại ngắt.Thông thường, trước khi thực hiện các chương trình phục vụ ngắt, nội dung các thanh ghi w và status nên được lưu lại để bảo đảm an toàn và được phục hồi trước khi trở lại chương trình chính.

Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các Pin của PortB (PORTB interrupt-on-change), việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.

49

Trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt. Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra.

Hình 1.9: Sơ đồ logic của tất cả các ngắt trong vi điều khiển PIC18F8722

2.6.

Truyền thông nối tiếp

EUSART (Enhanced Universal Synchronous Asynchronous Receiver

Transmitter) là một bộ truyền thông nối tiếp. Ở đây sẽ khảo sát bộ truyền thông nối tiếp trong chế độ không đồng bộ

Ở chế độ truyền này EUSART hoạt động theo chuẩn NRZ (None-Returnto-Zero), nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start, 5,6,7,8 hoặc 9 bit dữ liệu và 1 bit Stop. Bit LSB (Least Significant Bit) sẽ được truyền đi trước. Các khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với

50

tốc độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị của bit BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận phải dùng chung một định dạng dữ liệu.

Bộ EUSART bất đồng bộ bao gồm các thành phần quan trọng sau:

 Bộ phát tốc độ baud ( BRG )

 Mạch lấy mẫu

 Bộ phát bất đồng bộ.

 Bộ thu bất đồng bộ.

 Bộ phát bất đồng bộ EUSART .

Phần chính của bộ phát là thanh ghi dịch nối tiếp phát (TSR). Nó nhận dữ liệu từ thanh ghi đệm phát TXREG. Thanh ghi TXREG được nạp dữ liệu bởi phần mềm.Thanh ghi TXR sẽ không được nạp dữ liệu cho đến khi stop bit đã được phát đi trong lần nạp trước đó. ngay khi stop bit được phát.TSR được nạp giá trị mới từ thanh ghi TXREG. Mỗi khi TXREG phát dữ liệu đến TSR.TXREG rỗng và cờ TXIF được bật.Ngắt này có thể được cho phép hoặc không cho phép bằng cách đặt hoặc xóa bit TXIE ( PIE<4>). Cờ TXIF sẽ được đặt bất chấp trạng thái của bit TXIE và không thể được xóa bởi phần mềm. Nó chỉ có thể được xóa khi dữ liệu mới được nạp vào thanh ghi TXREG. Trong khi bit TXIF chỉ ra trạng thái của thanh ghi TXREG thì bit TRMT lại chỉ ra trạng thái của thanh ghi TSR.Bit này chỉ có thể đọc, được đặt khi thanh ghi TSR rỗng.

Việc phát dữ liệu được phép bằng cách cho phép bit TXEN. Việc phát dữ liệu thực sư không xảy ra cho đến khi thanh ghi TXREG được nạp dữ liệu và bộ

BRG tạo ra một clock dịch.Việc phát dữ liệu cũng có thể được bắt đầu bằng nạp thanh ghi TXREG và cho phép bit TXEN.

Để có thể phát 9 bit dữ liệu , bit TX9 được đặt và 9 bit dữ liệu được ghi đến bit TX9D.Bit thứ 9 phải được ghi trước khi ghi 8 bit dữ liệu đến TXREG.

Để thiết lập chế độ phát bất đồng bộ , các bước sau được thực hiện :

51

1.

Thiết lập tốc độ Baud cho thanh ghi SPBRGH:SPBRG , nếu tốc độ baud được yêu cầu cao , đặt bit BRGH.

2.

Set chân điều khiển RX/DT và TX/CK bằng “1”.

3.

Cho phép port nối tiếp bất đồng bộ bằng cách xóa bit SYNC và bit

SPEN.

4.

Nếu cần phát 9 bit dữ liệu , đặt bit TX9.

5.

Set bit điều khiển CKTXP nếu dữ liệu phát bị đảo ngược.

6.

Cho phép phát dữ liệu bằng cách đặt bit điều khiển TXEN, có thể ngắt bit TXIF

7.

Nếu ngắt được yêu cầu , cho phép bit TXIE. Trường hợp có sử dụng ngắt , phải bảo đảm rằng bit GIE và bit PEIE trong thanh ghi INTCON được đặt.

8.

Nếu cần phát 9 bit dữ liệu , bit thứ 9 sẽ phụ thuộc vào bit dữ liệu

TX9D

9.

Nhận 8 bit dữ liệu từ thanh ghi TXREG. Có thể bắt đầu truyền dữ liệu.

Hình 1.10: Sơ đồ khối bộ truyền dữ liệu EUSART bất đồng bộ

52

Hình 1.11: Các thanh ghi liên quan đến quá trình truyền bất đồng bộ

Bộ thu bất đồng bộ EUSART

Sơ đồ khối của bộ thu được chỉ ra ở hình vẽ Dữ liệu nhận trên chân

RC7/RX/DT và dồn vào khối khôi phục dữ liệu. Khối khôi phục dữ liệu thật ra là dịch dữ liệu tốc độ cao, hoạt động nhanh gấp 16 lần tốc độ Baud. Một khi chế độ bất đồng bộ được chọn thì việc tiếp nhận được phép bằng cách đặt Bit CREN

(RCSTA<4>).

Trung tâm của bộ nhận là thanh ghi dịch nhận RSR. Sau khi lấy mẫu Bit

Stop dữ liệu nhận trong RSR được truyền đến thanh ghi RCREG. Nếu việc truyền hoàn tất thì Bit Cờ RCIF lên 1. Ngắt thật sự cho phép hoặc không cho phép bằng cách đặt hoặc xóa Bit RCIE. Cờ RCIF chỉ là 1 Bit chỉ đọc và được xó bởi phần cứng. Nó được xóa khi thanh ghi RCREG được đọc và hoàn toàn không có dữ liệu. RCREG là 1 thanh ghi bộ đệm đôi (Bởi vì nó cho 2 Byte dữ liệu có thể truyền và nhận đồng thời đến RCREG FIFO và Byte thứ 3 bắt đầu được dịch chuyển đến thanh ghi RSR). Khi phát hiện ra Bit Stop của Byte thừ 3 này, Nếu thanh ghi RCREG vẫn còn đầy thì Bit bào lỗi trànOERR(RCSTA<1>), sẽ lên 1. Những dữ liệu trong RSR sẽ mất đi. Và thanh ghi RCREG có thể được đọc 2 lần để lấy lại 2 Byte trong FIFO. Bit báo tràn OERR phải được xóa trong phần mềm.

Để thiết lập chế độ thu bất đồng bộ, các bước sau được yêu cầu :

53

1.

Khởi tạo thanh ghi SPBRGH:SPBRG, BRGH và BRG16 bit cho việc chọn sai số tốc độ Baud.

2.

Set chân điều khiển RX/DT và TX/CK bằng “1”.

3.

Cho phép nhận qua Port nối tiếp bất đồng bộ bằng cách xóa Bit SYNC và cho Bit SPEN lên 1.

4.

Nếu ngắt xảy ra thì set Bit RCIE và Nếu sử dụng ngắt thì set bit GIE và

PEIE của thanh ghi INTCON.

5.

Nếu nhận 9-Bit dữ liệu thì set Bit RX9 .

6.

Set bit CKTXP nếu dữ liệu nhận bị đảo ngược.

7.

Cho phép nhận dữ liệu bằng cách set Bit CREN.

8.

Sau khi dữ liệu được nhận , Bit Cờ ngắt RCIF sẽ được set và cờ ngắt được kích hoạt (nếu bit RCIE được set).

9.

Đọc nội dung thanh ghi RCSTA để nhận bit dữ liệu thứ 9 và xác định các lỗi xảy trong quá trình thu dữ liệu.

10.

Nhận 8 bit dữ liệu thu được bằng cách đọc nội dung thanh ghi RCREG.

11.

Nếu xuất hiện lỗi trong quá trình nhận thì xóa lỗi bằng cách xóa BitCREN

54

Hình 1.12: Sơ đồ khối bộ nhận dữ liệu EUSART không đồng bộ

Hình 1.13: Các thanh ghi liên quan đến quá trình nhận dữ liệu không đồng bộ

2.7.

Truyền thông SPI

SPI (Serial Peripheral Interface) là một dạng giao thức truyền nối tiếp được dùng để giao tiếp giữa VĐK với các thiết bị ngoại vi (EEPROM,

SDcard…)

2.7.1.

Chế độ SPI trong vi điều khiển PIC

55

Giao tiếp SPI được hiện thực qua 4 chân của vi điều khiển:

SDI( Serial Data In ): Tín hiệu nối tiếp được đưa vào vi điều khiển

SDO( Serial Data Out): Tín hiệu nối tiếp từ vi điều khiển đi ra

CLK(Clock): xung clock tạo ra bới master

SS(Slave Select): tích cực mức thấp, dùng để chọn slave để truyền dữ liệu.

Hình 1.14: Sơ đồ khối bộ SPI

2.7.2.

Các thanh ghi điều khiển SPI

Chế độ SPI được điều khiển bằng 4 thanh ghi sau:

 MSSP Control Register 1 (SSPCON1)

56

 MSSP Status Register (SSPSTAT)

 Serial Receive/Transmit Buffer Register(SSPBUF)

MSSP Shift Register(SSPSR) – thanh ghi này không được truy xuất bởi người dùng

Hai thanh ghi SSPCON1 và SSPSTAT là hai thanh ghi điều khiển, còn thanh ghi SSPSR là thanh ghi dùng để dịch dữ liệu ra/vào vi điều khiển,

SSPBUF là thanh ghi dùng để đọc dữ liệu từ ngoài vào hoặc ghi dữ liệu để truyền ra ngoài. Ở chế độ nhận, 2 thanh SSPBUF và SSPSR là 1 bộ buffer đôi, khi dữ liệu từ ngoài truyền vào được lưu đầy đủ trong SSPSR(8 bits) thì dữ liệu này được truyền tới thanh ghi SSPBUF để người dùng lấy ra. Còn ở chế độ truyền thì khi dữ liệu được ghi vào thanh ghi SSPBUF thì cùng lúc dữ liệu đó cũng được ghi vào thanh ghi SSPSR để dịch ra ngoài.

 Thanh ghi SSPSTAT

Hình 1.15: Thanh ghi SSPSTAT

Bit 7:

SMP Sample bit

SPI Master mode

1 = dữ liệu vào sẽ được lấy ở cuối chu kỳ xung clock

0 = dữ liệu vào sẽ được lấy ở giữa chu kỳ cung clock

SPI Slave mode

SMP phải được gán bằng 0

Bit 6:

CKE SPI Clock Select bit

Bit 0:

57

BF BuFffer Full Status bit (dành cho quá trình nhận)

1 = quá trình nhận hoàn thành, SSPBUF đầy

0 = quá trình nhận đang thực hiện, SSPBUF trống

Thanh ghi SSPCON1

Hình 1.16: Thanh ghi SSPCON1

Bit 7:

WCOL Write Collision Detect bit(chỉ dùng ở chế độ truyền tín hiệu)

1 = thanh ghi SSPBUF được ghi đè dữ liệu trong khi dữ liệu cũ truyền chưa hết

0 = không có đụng độ

Bit 6:

SSPOV Receive Overflow Indicator bit(dùng ở chế độ nhân tín hiệu)

1 = có dữ liệu mới nhận về ghi đè lên thanh ghi SSPBUF trong khi dữ liệu trước đó chưa được đọc.

0 = dữ liệu không bị ghi đè

Bit 5:

SSPEN Synchronous Serial Port Enable bit

1 = bật chế độ SPI và các chân SDI, SDO, SCK, SS được cấu hình tương ứng.

0 = tắt chế độ SPI

Bit 4:

CKP Clock Polarity Select bit

1 = thiết lập trạng thái rảnh khi xung clock ở mức cao

0 = thiết lập trạng thái rảnh khi xung clock ở mức thấp

Bit 3-0:

58

SSPM3:SSPM0 Synchronous Serial Port Mode Select bit

0101 = chế độ slave, clock = chân SCK, tắt chức năng của chân SS

0100 = chế độ slave, clock = chân SCK, bật chức năng của chân SS

0011 = chế độ master, clock = tần số của timer 2 /2

0010 = chế độ master, clock = Fosc / 64

0001 = chế độ master, clock = Fosc / 16

0000 = chế độ master, clock = Fosc / 4

PHỤ LỤC 2: GIỚI THIỆU VỀ TRÌNH BIÊN DỊCH

MPLAB C18

1.

GIỚI THIỆU

MPLAB C18 là một trình biên dịch C theo chuẩn ANSI dùng cho dòng

PIC18 của Microchip. MPLAB C18 và các công cụ đi kèm cũng có thể được gọi bên trong MPLAB IDE.

Trình biên dịch MPLAB C18 sử dụng ngôn ngữ C chuẩn làm cho sự phát triển của các ứng dụng hệ thống nhúng dễ dàng hơn.

2.

CÁC ĐẶC TRƯNG CỦA TRÌNH DỊCH MPLAB C18:

 Tương thích với chuẩn ANSI-89.

 Tích hợp MPLAB IDE để có thể dễ dàng quản lý project .

 Tương thích với các module đối tượng được tạo bởi trình biên dịch hợp ngữ MPASM, cho phép kết hợp việc lập trình C và lập trình hợp ngữ trong cùng một project.

 Đọc/ ghi vào bộ nhớ ngoài.

59

 Có các thư viện mở rộng hỗ trợ cho PMW, SPI, I2C, UART, USART và thư viện toán học.

3.

QUÁ TRÌNH TẠO RA FILE .HEX

Đầu tiên, MPLAB C18 sẽ biên dịch file2.c và file3.c để tạo ra các file2.o và file3.o. MPASM biên dịch file1.asm thành file1.o. Sau đó, file4.o kết hợp với file3.o để tạo thành 1 thư viện gọi là lib1.lib. Cuối cùng, các file object còn lại liên kết cùng với file lib1.lib bởi trình liên kết MPLINK. MPLINK cũng có một linker script ở đầu vào là file script.lkr. MPLINK liên kết tất cả các file này để tạo ra các file đầu ra: output.cof, output.map, và output.hex.

Hình 2.1: Quá trình tạo file .HEX

60

PHỤ LỤC 3 : GIAO TIẾP GIỮA PIC VÀ

ETHERNET

1.

CÁC PHƯƠNG PHÁP GIAO TIẾP

Thông thường để kết nối thiết bị điều khiển với mạng Ethernet có hai cách, một là sử dụng các vi điều khiển tích hợp sẵn phần giao tiếp với Ethernet, phổ biến là các dòng PIC18F66J60, PIC18F66J65, PIC18F67J60, PIC18F67J60,

PIC18F86J60,…. của Microchip. Sử dụng phương thức này có ưu điểm viết mã code đơn giản, kích thước bo mạch nhỏ gọn. Ngoài ra còn có cách khác là sử dụng chip giao tiếp Ethernet ENC28J60, với cách sử dụng này bo mạch sẽ có kích thước lớn hơn, thường tách thành hai module độc lập được kết nối qua card hỗ trợ giao tiếp chuẩn SPI ( Serial Pheripheral Interface ).

Trong module ghép nối Ethernet, ta chọn cách sử dụng chip ENC28J60.

Các này có ưu điểm là sử dụng được cho bất kỳ vi điều khiển nào hỗ trợ SPI.

2.

CÁCH THỨC HOẠT ĐỘNG CỦA ENC28J60

2.1.

Đặc điểm

ENC28J60 là thiết bị kết nối Ethernet độc lập theo chuẩn công nghiệp giao tiếp SPI. Nó được thiết kế để đáp ứng như một giao diện mạng Ethernet cho bất kì bộ điều khiển nào có trang bị giao tiếp SPI.

Hình 3.1: ENC28J60.

61

2.2.

Các chức năng của ENC28J60

ENC28J60 bao gồm 7 khối chức năng chính:

 Một giao tiếp SPI phục vụ cho kênh truyền thông giữa vi điều khiển với

ENC28J60.

 Các thanh ghi điều khiển được sử dụng để điều khiển và giám sát

ENC28J60.

 Một bộ nhớ đệm RAM dùng cho nhận và truyền dữ liệu.

 Một bộ phân xử để điều khiển truy nhập tới bộ đệm RAM khi yêu cầu được tạo ra từ DMA, khối nhận và truyền.

 Giao diện bus để trao đổi dữ liệu và nhận lệnh qua giao tiếp SPI.

 Module MAC thực hiện phép logic MAC theo IEEE 802.3.

Module PHY mã hóa và giải mã dữ liệu tương tự truyền trên cặp đôi dây xoắn.

.

Hình 3.2 : Giao diện cơ bản ENC28J60

2.3.

Hoạt động

Tất cả bộ nhớ bên trong ENC28J60 là kiểu RAM tĩnh (SRAM ).

Có 3 loại bộ nhớ :

62

 Bộ nhớ chứa các thanh ghi điều khiển được sử dụng để cấu hình, điều khiển và lấy lại trạng thái của ENC28J60. Chúng được đọc và ghi trực tiếp bởi giao tiếp SPI.

 Bộ nhớ chứa các thanh ghi điều khiển được chia thành 4 ngăn

(bank ), có thể được chọn bởi các bit chọn ngăn BSEL1:BSEL0 trong thanh ghi ECON1. Mỗi bank dài 32 bytes và được đánh 5 bit địa chỉ. Vị trí của 5 bytes cuối cùng (từ 1Bh đến 1Fh) của tất cả các bank đều có chung năm thanh ghi EIE, EIR, ESTAT, ECON1,

ECON2.

 Bộ đệm Ethernet là bộ nhớ đệm có được sử dụng để truyền và nhận dữ liệu. Kích thước của bộ đệm là 8Kbyte và được chia thành bộ đệm nhận và bộ đệm truyền. Trong đó, kích thước và vị trí của các bộ đệm trên được lập trình bởi vi điều khiển qua giao tiếp SPI. Nội dung của bộ đệm Ethernet được truy cập thông qua các con trỏ đọc và ghi kết hợp với các lệnh đọc và ghi bộ nhớ đệm SPI.

Hình 3.3: Các vùng nhớ của ENC28J60.

63

Bộ đệm nhận là vùng nhớ tạm thời dùng để lưu dữ liệu nhận được từ mạng

Ethernet. Các cặp thanh ghi ERXSTH: ERXSTL và ERXNDH : ERXNDL đóng vai trò như là các con trỏ để xác định kích thước và vị trí của bộ đệm trong bộ nhớ. Khi các byte của dữ liệu nhận được từ giao diện Ethernet thì chúng sẽ được ghi vào trong bộ đệm nhận một cách tuần tự.

Bộ đệm truyền sẽ chiếm phần bộ nhớ còn lại trong bộ đệm Ethernet. Bộ đệm này cũng được xác định kích thước và vị trí thông qua các cặp thanh ghi

ETXST và ETXSN như các con trỏ. Dữ liệu trước khi truyền lên mạng Ethernet sẽ được lưu tạm thời trong vùng nhớ này.

Hình 3.4: Vùng đệm truyền nhận của ENC28J60.

64

Các thanh ghi PHY được sử dụng để cấu hình, điều khiển và lấy lại trạng thái của module PHY. Các thanh ghi này không được truy nhập trực tiếp qua giao diện SPI, chúng chỉ có thể được truy nhập qua MII thực hiện trong MAC.

Mọi hoạt động của ENC28J60 phụ thuộc vào toàn bộ các lệnh được đưa từ vi điều khiển thông qua giao diện SPI. Các lệnh này được sử dụng để truy nhập tới bộ nhớ chứa các thanh ghi điều khiển và bộ đệm Ethernet.

Lệnh đọc thanh ghi điều khiển (RCR) cho phép vi điều khiển đọc bất kì các thanh ghi nào của ETH, MAC, MII. Lệnh đọc bộ nhớ đệm(RBM)cho phép vi điều khiển có thể đọc các bytes bên trong bộ nhớ đệm truyền và nhận.Lệnh viết thanh ghi điều khiển viết WCR cho phép vi điều khiển viết tới bất kì các thanh ghi nào của ETH, MAC, MII. Lệnh viết tới bộ nhớ đệm WBM cho phép vi điều khiển viết các bytes trong 8-Kbyte bộ nhớ đệm truyền và nhận. Lệnh BSF dùng để thiết lập 8 bits điều khiển trong thanh ghi ETH. Lệnh này không được sử dụng với thanh ghi MAC, PHY, MII hay bộ nhớ đệm. Lệnh BFC dùng để xóa 8 bits trong thanh ghi điều khiển ETH. Lệnh reset hệ thống SRC cho phép vi điều khiển phát ra lệnh SSR. Không giống như các lệnh SPI khác. Lệnh SRC chỉ là lệnh 1 byte, không tác động lên các thanh ghi khác.

65

PHỤ LỤC 4: THÔNG SỐ KỸ THUẬT CỦA SIM900

Hình 4.1: Sim900

Các thông số kỹ thuật

1.

Nguồn cung cấp khoảng 3,2 – 4,8V

2.

Nguồn lưu trữ

3.

Băng tần

EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz

 Phù hợp với GSM Pha 2/2+

4.

Loại GSM là loại MS nhỏ

5.

Kết nối GPRS

 GPRS có nhiều rãnh loại 8 ( lựa chọn )

 GPRS có nhiều ránh loại 10 ( tự động )

6.

Giới hạn nhiêt độ:

 Bình thường -90 0

C tới +70

0

C

 Hạn chế : - 35 0 C tới -90 0

C và +70

0 C tới +80 0

C

66

 Nhiệt độ bảo quản: -45 0 C tới 85 0

C

7.

Dữ liệu GPRS:

 GPRS dữ liệu tải xuống: Max 85.6 kbps

 GPRS dữ liệu tải lên: Max 42.8 kbps

 Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4

 Sim 900 hổ trợ giao thức PAP ,kiểu sử dụng kết nối PPP

 Sim 900 tích hợp giao thức TCP/IP

 Chấp nhận thông tin được điều chỉnh rộng rãi

8.

CSD:

 Tốc độ truyền dẫn CSD: 2; 4; 8; 9; 6; 14 KPPS

 Hỗ trợ USSD

9.

SMS:

MT, MO, CB, Text and PDU mode

 Bộ nhớ SMS: Sim, card

10. FAX:

Nhóm 3 loại 1

11.Sim card:

 Hỗ trợ sim card: 1,8v ; 3v

12. Anten ngoài:

 Kết nối thông qua anten ngoài 500km hoặc đế anten

13. Âm thanh:

 Dạng mã hòa âm thanh.

 Mức chế độ (ETS 06.20)

 Toàn bộ chế độ (ETS 06.10)

 Toàn bộ chế độ tăng cường (ETS 06.50/ 06.06/ 06.80)

 Loại bỏ tiếng dội

14. Giao tiếp nối tiếp và sự ghép nối:

67

 Cổng nối tiếp: 7 Cổng nối tiếp( ghép nối)

 Cổng kết nối có thể Sd với CSD Fax, GPRS và gửi lệnh

ATCommand tới mudule điều khiển

 Cổng nối tiếp có thể Sd chức năng giao tiếp

 Hỗ trợ tốc độ truyền 1200 BPS tới 115200 BPS

 Cổng hiệu chỉnh lỗi: 2 cổng nối tiếp TXD và RXD

 Cổng hiệu chỉnh lỗi chỉ sử dụng sữa lỗi

15. Quản lý danh sách:

 Hỗ trợ mẫu danh sách: SM, FD, LD, RC,ON, MC

16. Sim Application toolkit:

 Hỗ trợ SAT loại GSM 11,14 bản 99

17. Đồng hồ thời gian thực:

 Người cài đặt

18. Times function:

 Lập trình thông qua AT Command

19. Đặc tính vật lý (đặc điểm):

 Kích thướt 50±0.15 x 33±0.15 x7.7±0.3mm

 Nặng 13.8 kg

68

Download