Đề tài Điều khiển thiết bị điện qua Internet và GSM_EvaVer

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.

pdf69 trang | Chia sẻ: lylyngoc | Lượt xem: 2786 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đề tài Điều khiển thiết bị điện qua Internet và GSM_EvaVer, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
:  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ì 18 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. 19 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 20 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: 21 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 22 .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: 23 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). 24 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”. 25 - Đế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: 26 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 27 - 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 28 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. 29 Ý 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ỉ 30 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). 31 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. 32 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. 33 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 34 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 35 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. 36 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. 37 4.2 Thiết kế phần cứng mạch chính 38 4.4 Thiết kế Webserver 39 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 40 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. 41  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 42 Hình 1.1: Sơ đồ khối vi điều khiển PIC18F8722 43 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. 44 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. 45 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 46 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. 47 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 48 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 49 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. 50 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-Return- to-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 51 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). 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 : 52 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ộ 53 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). 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), 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 : 54 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 55 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 56 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) 57  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: 58 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: 59 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. 60  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 61 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. 62 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ớ : 63  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. 64 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. 65 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. 66 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 -900 C tới +700C  Hạn chế : - 350C tới -900 C và +700C tới +800C 67  Nhiệt độ bảo quản: -450C tới 850C 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: 68  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

Các file đính kèm theo tài liệu này:

  • pdfdo_an_9098.pdf