thiẾt kẾ vÀ thi cÔng hỆ...

20
CHƯƠNG 3 THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 3.1. MĐẦU CHƯƠNG Trong chương này, luận văn tập trung vào thiết kế và thi công hthống điều khin, giám sát các thiết bvà xây dng phn mm viết trên ngôn ngC kết ni vi internet thông qua giao thc MQTT. 3.2. XÂY DỰNG SƠ ĐỒ KHỐI HỆ THỐNG Hình 3.1. Sơ đồ khi hthng Khi xlý trung tâm : Là trái tim ca toàn bhthng, là nơi thu nhn, xtruyn ti tt ccác thông tin dliu ca hthng. Khi xlý trung tâm nhn lnh tcác kết nối trên đường truyền internet để điều khin các thiết bngoại vi, và ngược li, phn hi trng thái ca ngoại vi đến các thiết bđầu cui. Khi giao tiếp Internet : Đóng vai trò là cầu nối để dliu di chuyn tkhi trung tâm ra internet và ngược li. Khi ngoi vi : Là các cơ cấu chấp hành thông thường như quạt, đèn... Khi ngun : Cung cp ngun n áp cho toàn hthng. 3.3. SƠ ĐỒ NGUYÊN LÝ CHỨC NĂNG CÁC KHỐI TRONG HỆ THỐNG 3.3.1. Mạch nguồn a. Cơ sở lý thuyết Khi xlý trung tâm Khi giao tiếp Interne Khi ngun Khi ngoi vi PC, Laptop Smartpho ne Thiết bgia dng

Upload: phungdung

Post on 10-Feb-2018

218 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

CHƯƠNG 3

THIẾT KẾ VÀ THI CÔNG HỆ THỐNG

3.1. MỞ ĐẦU CHƯƠNG

Trong chương này, luận văn tập trung vào thiết kế và thi công hệ thống điều

khiển, giám sát các thiết bị và xây dựng phần mềm viết trên ngôn ngữ C kết nối với

internet thông qua giao thức MQTT.

3.2. XÂY DỰNG SƠ ĐỒ KHỐI HỆ THỐNG

Hình 3.1. Sơ đồ khối hệ thống

Khối xử lý trung tâm : Là trái tim của toàn bộ hệ thống, là nơi thu nhận, xử lý và

truyền tải tất cả các thông tin dữ liệu của hệ thống. Khối xử lý trung tâm nhận lệnh từ

các kết nối trên đường truyền internet để điều khiển các thiết bị ngoại vi, và ngược lại,

phản hồi trạng thái của ngoại vi đến các thiết bị đầu cuối.

Khối giao tiếp Internet : Đóng vai trò là cầu nối để dữ liệu di chuyển từ khối

trung tâm ra internet và ngược lại.

Khối ngoại vi : Là các cơ cấu chấp hành thông thường như quạt, đèn...

Khối nguồn : Cung cấp nguồn ổn áp cho toàn hệ thống.

3.3. SƠ ĐỒ NGUYÊN LÝ VÀ CHỨC NĂNG CÁC KHỐI TRONG HỆ

THỐNG

3.3.1. Mạch nguồn

a. Cơ sở lý thuyết

Khối xử

lý trung

tâm

Khối

giao

tiếp

Interne

Khối nguồn

Khối

ngoại vi

PC,

Laptop

Smartpho

ne

Thiết

bị gia

dụng

Page 2: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

Mạch nguồn đóng vai trò quan trọng trong toàn bộ hệ thống. Các IC giao tiếp

hoạt động tốt trong điều kiện nhiệt độ phòng, vì vậy Luận văn hướng đến việc thiết

kế mạch nguồn xung để loại bỏ tổn hao nhiệt trên mạch nguồn tuyến tính

Bộ nguồn xung cung cấp tín hiệu đầu ra nhờ hoạt động của các phần tử đóng

cắt trong mạch điện. Bộ nguồn xung cung cấp hiệu suất cao nhưng thiết kế phức

tạp hơn.

Mạch sử dụng các linh kiện L – C để lưu trữ và giải phóng năng lượng trong

quá trình hoạt động đóng ngắt của bộ switch.

Nguồn xung mang lại nhiều ưu điểm như hiệu suất cao, có thể chế tạo boots

hoặc buck, kích thước mạch nhỏ gọn. Với các đặc tính đó, nguồn xung thường

được dùng trong các máy móc hiện đại. Nhược điểm chính của nguồn xung là

nhiễu EMI cao hơn so với nguồn tuyến tính.

Hình 3.2. Sơ đồ nguyên lý mạch buck

Gọi D là duty cycle của van điều khiển đóng khóa 1.

Khi van điều khiển đóng khóa 1, năng lượng được tích trữ trong L – C. Khi

van ở khóa 2, lượng năng lượng này giải phóng để cấp cho tải. Điện áp trung bình

trên cuộn dây bằng 0.

D(Vin - Vout) – (1 - D)Vout = 0 suy ra Vout = D. Vin

b. Yêu cầu

Nguồn cần đảm bảo các tiêu chí: mức áp dòng ổn định, độ gợn sóng đầu ra

thấp, tính ổn định nhiệt độ cao và không bị ảnh hưởng của các yếu tố môi trường.

Cụ thể các thông số hệ thống cho như sau:

- Điện áp nguồn cấp : 3.3VDC

Page 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

- Điện áp đầu vào : điện áp lưới 220VAC/50Hz

- Độ gợn sóng tín hiệu : < 3%

- Dải nhiệt độ hoạt động : 00C đến 50

0C

c. Sơ đồ nguyên lý

Hình 3.3. Sơ đồ nguyên lý mạch nguồn

Trong đó :

- C1, C5 : Tụ lọc nguồn

- F1, RV1, D2 : Linh kiện bảo vệ nguồn

- U2 : LM2596 IC nguồn xung

- L1 : Cuộn dây tích trữ năng lượng

- R4, D4 : Led báo nguồn

3.3.2. Khối xử lý trung tâm

a. Cơ sở lý thuyết

Luận văn lựa chọn chip vi xử lý PIC24EP512GP806 cho khối xử lý trung

tâm. Ưu điểm lớn của PIC là bộ nạp trình có thể tự lắp ráp một cách dễ dàng với

chi phí thấp theo chuẩn ICSP (In –Circuit Siral Programming).

Microchip cũng cung cấp rất đầy đủ và chi tiết các tài liệu kỹ thuật về tất cả

các loại vi điều khiển PIC. Ngoài ra cộng đồng sử dụng PIC rất lớn mạnh tại Việt

Nam.

PIC24EP512G806 là vi điều khiển thuộc nhóm cao cấp trong dòng vi điều

Page 4: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

khiển PIC24 – hiệu suất tính toán lớn, giá cả phù hợp - độ bền cao, dung lượng bộ

nhớ chương trình được nâng cấp. Ngoài ra chúng còn được thiết kế để phù hợp cho

những ứng dụng có hiệu suất cao, ít tiêu tốn năng lượng.

* Những tính năng chính

- Program Flash Memory 586 Kbyte

- RAM : 52 Kbyte

- Bộ nhớ EEPROM dữ liệu (Bytes): 256

- Cổng I/O: Ports A,B,C,D,E

- 16 bits Timers: 9

- Module Capture/Compare/PWM: 16

- Giao tiếp nối tiếp: MSSP, USART cải tiến.

- Module 10-Bit Analog-to Digital: 24 Input Channels

Hình 3. 4. Sơ đồ chân PIC24EP512GP806

Page 5: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

b. Sơ đồ nguyên lý

Hình 3.5. Sơ đồ nguyên lý khối xử lý trung tâm

Trong đó :

- PORTD9, PORTD10, PORTD11, PORTG2 kết nối SPI với chip Ethernet

- PORTB2, PORTB3, PORTB4, PORTB5 kết nối led chỉ thị

- Thạch anh 20 MHz

3.3.3. Khối giao tiếp qua Internet

a. Cơ sở lý thuyết

ENC424J600 là chip hỗ trợ kết nối Ethernet ở lớp vật lý tương tự trong mô

hình OSI cho bất kỳ vi điều khiển nào có giao tiếp SPI hoặc giao tiếp song song.

Phần cứng của ENC424J600 được tích hợp trong cả hai lớp kết nối dữ liệu và lớp

vật lý. Chip đáp ứng tất cả các thông số của tiêu chuẩn IEEE 802.3 với các ứng

Page 6: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

dụng Ethernet 10Base-T và 100Base-TX. Chip hỗ trợ bộ DMA 16 bit đáp ứng tốc

độ thông suốt dữ liệu nhanh hơn, đồng thời hỗ trợ việc tính toán IP checksum.

Chip hỗ trợ truyền song công và bán song công với cơ chế CSMA/CD chống xung

đột kênh truyền

ENC424J600 cung cấp giao diện truyền thông SPI với vi điều khiển tốc độ

14Mbit/s, bộ nhớ đệm thu/phát lên đến 24Kbyte RAM

Hình 3.6. Sơ đồ khối chức năng chip ENC424J600

b. Một số lưu ý khi thiết kế mạch giao tiếp Ethernet

* Kết nối thạch anh

ENC424J600 được thiết kế hoạt động với thạch anh 25Mhz, đảm bảo tính

chính xác thấp hơn 50ppm phù hợp tiêu chuẩn IEEE 802.3

* Điện áp phân cực

Để giảm thiểu tối đa các điện áp nhiễu gây ảnh hưởng đến đường truyền

Ethernet và đảm bảo công suất dòng lớn, chip được tích hợp nhiều chân nguồn, cụ

Page 7: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

thể là VDD và VSS, VDDOSC và VSSOSC, VDDPLL và VSSPLL, VDDRX và VSSRX, VDDTX và

VSSTX. Các cặp chân nguồn này luôn phải nối đến các tụ bypass gần nhất để triệt

nhiễu EMI.

Hình 3.7. Các tụ ngoại vi cho ENC424J600

Các linh kiện bên trong chip hoạt động ở điện áp 1.8V, được cấp bởi bộ ổn áp

on-chip, vì vậy cần kết nối tụ lọc tại chân VCAP để đảm bảo điện áp chuẩn. Tụ điện

này phải được lựa chọn là tụ có trở kháng nối tiếp tương đương thấp, cụ thể là các

tụ ceramic hay tantalum, tránh dùng tụ aluminum electrolytic.

* RBIAS

Được sử dụng để phục vụ chức năng cho tầng vật lý bên trong chip.

Trở này phải đặt sát chip, nhưng phải tránh xa các đường tín hiệu để nhiễu EMI

dung kháng không ảnh hưởng đến đường truyền.

Hình 3.8. Điện trở phân cực cho ENC424J600

* Kết nối đến cổng RJ45

Page 8: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

Hình 3.9. Sơ đồ nguyên lý kết nối ENC424J600 với cổng RJ45

Các tụ điện và điện trở kèm theo được tích hợp bên ngoài chip để đảm bảo

phân cực và kết nối Ethernet, ngoài ra chúng còn kết hợp như một bộ lọc thông cao

triệt nhiễu baseline. Điện trở 10 Ω được kết nối để tạo đường dẫn nguồn nến điểm

giữa biến áp nhằm tạo ra dạng sóng Ethernet. Ngoài ra, điện trở này còn giúp tiêu

tán bớt nhiệt mà PHY phải gánh trong quá trình truyền dẫn.

Giao diện truyền Ethernet bao gồm 2 chân TPOUT + và TPOUT-. Đây là các

chân vi sai và chế độ truyền là current-mode. Để có thể tạo ra một dạng sóng

Ethernet, thông thường yêu cầu sử dụng một biến áp điểm giữa,khi module

Ethernet được kích hoạt và kết nối đến thiết bị khác, sóng sẽ xuất hiện thông qua

cả hai chân TPOUT. Khi lớp PHY là tích cực truyền, một điện áp vi sai sẽ được tạo

ra trên cáp Ethernet bằng cách thay dòng ở TPOUT + so với TPOUT-. Cơ chế hoạt

Page 9: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

động hoàn toàn tương tự cho mode nhận. PHY sử dụng bộ ADC tốc độ cao để lấy

mẫu sóng và giải mã nó bằng cách sử dụng bộ DSP onchip.

* Kết nối đến vi điều khiển

Kết nối từ ENC424J600 đến vi điều khiển theo giao thức SPI nên các chân

song song của chip sẽ tự động bị khóa ở trạng thái trở kháng cao và bộ nhớ đệm

song song sẽ ngắt. Vì vậy tốt nhất nên nối mass cho các chân song song này.

Hình 3.10. Sơ đồ nguyên lý kết nối ENC424J600 với vi xử lý

- SCK Serial Clock – Xung đồng bộ cho đường nối tiếp

- SI Serial Input – Tín hiệu nối tiếp vào (ghi)

- SO Serial Output – Tín hiệu nối tiếp ra (đọc)

c. Chuẩn truyền thông SPI trên chip ENC424J600

SPI (Serial Peripheral Inteface) là một chuẩn truyền thông nối tiếp tốc độ cao

do hãng Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong đó có 1

chip Master điều phối quá trình tuyền thông và các chip Slaves được điều khiển

bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave. SPI là một cách

truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và

nhận có thể xảy ra đồng thời. SPI đôi khi được gọi là chuẩn truyền thông “4 dây”

vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master

Input Slave Output), MOSI (Master Output Slave Input) và SS (Slave Select).

Page 10: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên

cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi. Đây

là điểm khác biệt với truyền thông không đồng bộ mà chúng ta đã biết trong chuẩn

UART. Sự tồn tại của chân SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc độ

truyền của SPI có thể đạt rất cao. Xung nhịp chỉ được tạo ra bởi chip Master.

MISO– Master Input/Slave Output: nếu là chip Master thì đây là đường Input

còn nếu là chip Slave thì MISO lại là Output. MISO của Master và các Slaves được

nối trực tiếp với nhau.

MOSI – Master Output/Slave Input: nếu là chip Master thì đây là đường

Output còn nếu là chip Slave thì MOSI là Input. MOSI của Master và các Slaves

được nối trực tiếp với nhau.

SS – Slave Select: SS là đường chọn Slave cần giap tiếp, trên các chip Slave

đường SS sẽ ở mức cao khi không làm việc. Nếu chip Master kéo đường SS của

một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và

Slave đó. Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều

khiển SS trên Master, tùy thuộc vào thiết kế của người dùng.

Hoạt động: mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits. Cứ

mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bit trong thanh ghi

dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit

trong thanh ghi dữ liệu của chip Slave cũng được truyền qua Master trên đường

MISO. Do 2 gói dữ liệu trên 2 chip được gởi qua lại đồng thời nên quá trình truyền

dữ liệu này được gọi là “song công”.

Page 11: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

Hình 3.11. Quá trình truyền 1 gói dữ liệu thực hiện bởi module SPI

d. Chuẩn truyền thông Ethernet trên chip ENC424J600

Cấu trúc Packet

Hình 3.12. Cấu trúc packet truyền thông Ethernet

Giao tiếp Ethernet thiết lập thông tin truyền dẫn giữa các node thoogn qua

chuẩn chung, bao gồm nhiều byte tạo thành một packets. Thông thường 1 packet

dài 64 byte đến 1518 bytes. Mỗi packet có thể chứa 6 trường :địa chỉ MAC đích ,

địa chỉ MAC nguồns, type/length field, trường dữ liệu payload, trường optional

padding và trường mã Cyclic Redundancy Check (CRC).

Trên đường truyền Ethernet, trường CRC rất quan trọng trong quá trình mã

hóa kênh. Mã CRC thường có độ dài 4-byte được tính toán thông qua địa chỉ

Page 12: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

nguồn, địa chỉ đích, dạng dữ liệu và trường padding. CRC cho phép phát hiện lỗi

sai trên đường truyền. Khi thực hiện truyền thông, ENC424J600 nguồn có thể tự

động tạo ra mã CRC nếu thiết lập bit PADCFG<2:0> chuẩn xác. Khi

ENC424J600 đích nhận được gói tin, bộ mã CRC này được ghi vào bộ đệm thu và

kiểm tra để loại bỏ các packet lỗi.

* Thiết lập truyền thông

- Ghi giá trị 1234h vào thanh ghi EUDAST.

- Đọc giá trị thanh ghi EUDAST, nếu đúng bằng 1234h thì thực hiện bước

tiếp theo, nếu không thì truyền thông SPI và PSP không thể thực thi được. Vì vậy

phải quay lại bước 1 để thiết lập lại.

- Poll bit CLKRDY (ESTAT<12>) à đợi cho đến khi được set lên 1.

- Thực hiện lệnh System Reset bằng cách set bit ETHRST (ECON2<4>).

- Phần mềm thực hiện đợi ít nhất 25 μs cho việc Reset và giao tiếp SPI/PSP

tái khởi động.

- Đọc giá trị thanh ghi EUDAST để xác nhận quá trình System Reset đã

đưuọc thực thi. EUDAST phải được reset và trả về giá trị mặc định là 0000h.

- Đợi ít nhất 256 μs cho thanh ghi PHY registers và bit PHY status khởi động.

Đến lúc này thì chip đã có thể truyền nhận lệnh thông thường.

* Quá trình truyền packet

Trước khi thực hiện truyền packets, thiết bị pahir được thiết lập đúng chuẩn.

Set bit TXRTS (ECON1<1>) để bắt đầu truyền tin, bit này sẽ tự động được xóa

sau khi quá trình truyền kết thức. Ngoài ra, quá trình truyền được cung cấp các

ngắt TXIF interrupt và ngắt ngoài cho coding.

Thiết lập địa chỉ MAC cho thiết bị, đây là địa chỉ duy nhất giúp thiết bị luôn

luôn là duy nhất trên đường truyền Internet. Hầu hết các ứng dụng đều sử dụng bit

PADCFG<3:0> và bit TXCRCEN ở trạng thái mặc định để đảm bảo quá trình tạo

mã CRC diễn ra tự động. Để chèn thông tin địa chỉ MAC vào packet tự động, phần

Page 13: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

mềm set bit TXMAC lên 1.

- Thiết lập ngắt trong quá trình truyền bằng cách set bit TXIE và TXABTIE

(EIE<3:2>). Xóa các cờ ngắt liện quan TXIF và TXABTIF nếu chúng đang bằng

1. Thiết lập ngắt toàn cục bằng cách set bit INTIE (EIE<15>).

- Copy packet đến SRAM buffer.

- Nạp giá trị ETXST để bắt đầu địa chỉ của packet và ETXLEN là độ dài

packet copy vào bộ nhớ.

- Set bit TXRTS để bắt đầu truyền tin.

- Đợi cho đến khi phần cứng xóa bit TXRTS và kích hoạt ngắt truyền thì quá

trình truyền đã thực thi xong.

- Đọc giá trị thanh ghi ETXSTAT để xác định thông tin mô tả quá trình truyền

tiếp theo.

* Quá trình nhận packet

CONFIGURING PACKET RECEPTION

Khi các thanh ghi phục vụ MAC và PHY được thiết lập chính xác, thiết bị có

thể bắt đầu quá trình nhận tin.

- Thiết lập ERXST Pointer để xác định địa chỉ đầu tiên cho bộ đệm thu. Head

Pointer ERXHEAD cũng sẽ tự động được set đến cùng giá trị đó.

- Tạo giá trị biến NextPacketPointer để lưu giữ giá trị địa chỉ cho packet nhận

tiếp theo.

- Thiết lập Tail Pointer, ERXTAIL, là điểm nhớ cuối cho bộ đệm thu, giá trị là

5FFEh.

- Thiết lập ngắt nhận nếu cần.

- Set bit RXEN (ECON1<0>) cho phép nhận.

* Đọc giá trị packet từ bộ đệm thu:

- Xác định các packet có trong bộ nhớ đệm bằng cách xét giá trị bit

PKTCNT<7:0> bits khác không và cờ ngắt PKTIF (EIR<6>) được set.

Page 14: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

- Đọc vào giá trị NextPacketPointer.

- Đọc 2 byte đầu của frame để xác định địa chỉ cho packet tiếp theo, ghi giá trị

này vào NextPacketPointer.

- Đọc vào 6 byte tiếp theo để xác định Receive Status Vector (RSV).

- Đọc vào frame Ethernet. Độ dài của frame thông tin này được xác định bằng

giá trị ghi trong RSV đọc được ở trên.

- Khi frame đã được đọc xong, tăng giá trị bộ nhớ đệm lên 1 đơn vị bằng cách

tăng giá trị ERXTAIL, giá trị cuối cùng của thanh ghi ERXTAIL phải bằng

(NextPacketPointer– 2).

- Set bt PKTDEC (ECON1<8>) để giảm PKTCNT bits. PKTDEC được tự

động reset khi PKTCNT giảm về zero.

e. Sơ đồ nguyên lý

Hình 3.13. Sơ đồ nguyên lý khối giao tiếp Ethernet

Nguyên lý hoạt động

- Nhận dữ liệu: Tín hiệu yêu cầu từ mạng truyền qua cổng RJ45 vào

ENC424J600. Chip được thiết kế để giải mã tín hiệu và chuyển tín hiệu đó thành

dữ liệu và lưu vào bộ đệm thu. Thông qua giao tiếp SPI, PIC liên tục kiểm tra bộ

đệm của ENC28J60. Nếu phát hiện có dữ liệu nó sẽ đọc dữ liệu và xử lí.

Page 15: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

- Truyền dữ liệu: Thông qua giao tiếp SPI, PIC sẽ gửi dữ liệu vào bộ đệm phát

của ENC424J600. Chip sẽ mã hóa dữ liệu và truyền ra đường RJ45 đến địa chỉ

mong muốn.

- Trong mạch này, sử dụng đầu cắm giao tiếp RJ45 là HR911105A của

HANRUN.HR911105A được tích hợp sẵn biến áp cad có 2 đèn led để thông báo

trạng thái kết nối của mạch.

3.3.4. Khối ngoại vi

Khối ngoại vi bao gồm tất cả các cơ cấu chấp hành và thiết bị gia dụng thông

thường trong gia đình như : các công tắc đèn điện, hệ thống chiếu sáng...

Khối ngoại vi nhận lệnh điều khiển trực tiếp thông qua khối xử lý trung tâm,

trạng thái luôn được cập nhật với thời gian thực cho từng ứng dụng

3.4. XÂY DỰNG PHẦN MỀM

3.4.1. Stack TCP/IP:

Microchip cung cấp miễn phí bộ thư viện và công cụ TCP/IP Stack được tối

ưu hóa cho các dòng PIC18, PIC24, DsPIC và PIC32. Stack được chia thành nhiều

lớp, trong đó mỗi lớp có thể truy cập trực tiếp các service từ một hoặc nhiều lớp

dưới nó.

Hình 3.14.Cấu trúc của Stack.

TCP/IP Stack của Microchip bao gồm các tính năng đặc trưng sau:

- Hỗ trợ các giao thức: ARP, IP, ICPM, UDP, TCP, DHCP, SNMP, HTTP,

Page 16: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

FTP, TFTP

- Hỗ trợ TCP, UDP

- Secure Sockets Layer (SSL)

- NetBIOS Name Service

- DNS – Domain Name System

- Ethernet Device Discovery

Stack được thiết kế theo kiểu module trên ngôn ngữ C. Sau khi biên dịch,

dung lượng bộ nhớ chương trình khoảng từ 28-34 KB tùy theo các module sử

dụng.

3.4.2. Thiết kế lớp ứng dụng MQTT Client

Stack TCP/IP của Microchip tuy hỗ trợ hầu hết các giao thức để thiết kế các

ứng dụng qua giao tiếp Ethernet, nhưng với điều kiện đặt ra của đề tài là thiết kế

một ứng dụng điều khiển thiết bị qua internet theo tiêu chí IOT thì stack này chưa

hỗ trợ. Vì vậy, người nghiên cứu đã thiết kế thêm ứng dụng theo giao thức MQTT

theo chuẩn mới nhất mà IBM đã đưa ra.

Hình 3.15. Lớp MQTT Client được thêm vào TCP/IP Stack

Một đoạn code thực hiện việc kết nối MQTT Client đến Server.

Page 17: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

Code

case MQTTCONNECT:

/* Fixed header */

MQTTBuffer[pos++] = header&MQTTMTMASK;

/* calculate remaining length */

remlen = 6 + 1 + 1 + 2;

if (MQTTClient.ClientId.szRAM)

remlen += 2 + strlen(MQTTClient.ClientId.szRAM);

if (MQTTClient.ConnFlags.bits.WillFlag)

remlen += 2 + strlen(MQTTClient.WillTopic.szRAM);

remlen += 2 + strlen(MQTTClient.WillMessage.szRAM);

if (MQTTClient.ConnFlags.bits.UserNameFlag)

remlen += 2 + strlen(MQTTClient.Username.szRAM);

if (MQTTClient.ConnFlags.bits.PasswordFlag)

remlen += 2 + MQTTClient.PassLength;

if (remlen > (MQTT_MAX_PACKET_SIZE - 5)) return

(MQTTERROR);

/* fill in remaining length */

pos = MQTTWriteRemainingLength(MQTTBuffer, pos, remlen);

/* variable header */

MQTTBuffer[pos++] = 0x00;

Page 18: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

MQTTBuffer[pos++] = 0x04;

MQTTBuffer[pos++] = 'M';

MQTTBuffer[pos++] = 'Q';

MQTTBuffer[pos++] = 'T';

MQTTBuffer[pos++] = 'T';

/* Protocol Level */

MQTTBuffer[pos++] = MQTTPROTOCOLVERSION;

/* Connect Flags */

MQTTBuffer[pos++] = MQTTClient.ConnFlags.Val;

/* Keep Alive */

MQTTBuffer[pos++] = HIBYTE(MQTTClient.KeepAlive);

MQTTBuffer[pos++] = LOBYTE(MQTTClient.KeepAlive);

/* Client Identifier */

pos = MQTTWriteString(MQTTClient.ClientId.szRAM,

MQTTBuffer, pos);

/* Will Topic & Will Message */

if (MQTTClient.ConnFlags.bits.WillFlag)

pos = MQTTWriteString(MQTTClient.WillTopic.szRAM,

MQTTBuffer, pos);

pos = MQTTWriteString(MQTTClient.WillMessage.szRAM,

MQTTBuffer, pos);

/* Username */

if (MQTTClient.ConnFlags.bits.UserNameFlag)

pos = MQTTWriteString(MQTTClient.Username.szRAM,

MQTTBuffer, pos);

Page 19: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

/* Password, binary format must be allowed */

if (MQTTClient.ConnFlags.bits.PasswordFlag)

pos = MQTTWriteArray(MQTTClient.Password.szRAM,

MQTTClient.PassLength, MQTTBuffer, pos);

break

3.4.3. Server

Hình 3.16. Mô hình kết nối thiết bị trong giao thức MQTT

Trong giới hạn của đề tài, người nghiên cứu sử dụng server broker mosquito.

Mosquitto là broker mã nguồn mở để thực hiện giao thức MQ Telemetry Transport

version 3.1 và 3.1.1, đây là phương pháp truyền nhận các message một cách nhẹ

nhất (lightweight). Broker này phù hợp với các ứng dụng giám sát và điều khiển

Page 20: THIẾT KẾ VÀ THI CÔNG HỆ THỐNGkdientu.duytan.edu.vn/media/50257/thiet-ke-va-thi-cong-mqtt.pdf · phản hồi trạng thái của ngoại vi đến các thiết bị

các thiết bị theo các message (machine-to-machine).