PHAN TÍCH VA THIET KE HE THONG

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật máy tính: Nghiên cứu và ứng dụng bluetooth mesh vào hệ thống thông minh (Trang 42 - 60)

Nhóm thực hiện khóa luận quyết định ứng dụng hệ thống vào văn phòng thông minh, giúp người dùng quản lý các thiết bị như đèn, quạt,... và có thể theo dõi tình

trạng của căn phòng như nhiệt độ, ánh sáng từ xa thông qua giao diện trên ứng dụng người dùng.

Hệ thống bao gồm các thành phần chính: node Gateway, node cảm biến nhiệt

độ, node cảm biến ánh sáng, node cảm biến lửa, node Relay 4 kênh. Node cảm biến nhiệt độ sử dụng chuẩn giao tiếp I2C dé truyền tín hiệu từ cảm biến nhiệt độ LM75

về nRF52832 giúp theo dõi nhiệt độ của căn phòng. Node cảm biến ánh sáng sử dung chuẩn giao tiếp GPIO dé truyền tín hiệu từ cảm biến ánh sáng về nRF52832, giúp người dùng theo dõi đèn đã thực sự được tắt hay chưa, đảm bảo sự chính xác của hệ thống. Node cảm biến lửa sử dụng chuẩn giao tiếp GPIO dé truyền tín hiệu từ cảm biến lửa về nRF52832, giúp việc báo động khi phát hiện ngọn lửa được kip thời. Node Relay 4 kênh nhận tín hiệu từ nRF52832 dé điều khién đóng mở các kênh thông qua kích điện áp mức thấp, các kênh này sẽ được nối với các thiết bị như đèn, quạt, 4m đun nước,... Cuối cùng là node Gateway được tích hợp module nRF52832 và module Wifi ESP8266 sử dụng chuẩn giao tiếp UART đề truyền nhận tín hiệu giữa 2 module. Node Gateway sẽ đóng vai trò cầu nối giữa các node trong mang mesh và Server, giúp truyền nhận tín hiệu cảm biến từ từng thiết bị trong mạng mesh đến người dùng cũng như tín hiệu điều khién từ người dùng đến các thiết bi này thông qua User App.

Cảm biến

lửa

Cảm biến

. . Sensor signal Uart 'Web Socket API

ánh sáng

= —————————* | nRF52832 | —————————> ESP8266 ——> Server <——ằ | User App

Cam bién †

nhiệt độ

Relay

4 kênh <

Tín hiệu điều khiển từ Server

Hình 3.1. Sơ đồ truyền tín hiệu trong hệ thong

3l

3.1. Thiết kế Gateway tích hợp nRF52832 với ESP8266

e Phan tích:

Gateway là một trong những phan quan trọng nhất trong mô hình mang mesh. Gateway được thiết kế với mục đích giúp cho người dùng có thể đễ dàng truy cập vào

hệ thống điều khiến các thiết bị trong văn phòng tích hợp công nghệ Bluetooth thông qua mạng Internet, do vậy Gateway được tích hợp 2 thành phần chính là module

Bluetooth nRF52832 và module Wifi ESP8266.

se Thiết kế:

Dữ liệu của các cảm biến truyền về nRF52832 (thông qua việc nhận dữ liệu từ mang mesh) sẽ được chuyên tiếp cho ESP8266 thông qua UART với baudrate

115200. ESP8266 sẽ xử lý dữ liệu nhận được và gửi lên Server thông qua WebSocket.

Dữ liệu truyền về từ Server sẽ được ESP8266 xử lý và được gửi lại qua UART cho nRF52832, sau đó dit liệu sẽ được gửi đến các node nhận lệnh điều khiến tương

ứng.

3.2. Thiết kế Node Relay 4 kênh

e Phan tích:

Relay 4 Kénh 5V gom 4 ro le hoạt động tại điện áp 5V DC, chịu được hiệu điện thế lên đến 250V AC 10A [16]. Relay 4 kênh 5V được thiết kế chắc chắn, khả năng cách điện tốt. Trên module đã có sẵn mạch kích relay sử dung transistor và IC cách ly bang ánh sáng giúp cách ly hoàn toàn mạch điều khiển (vi điều khiến) với

32

relay, bảo đảm vi điều khiến hoạt động ôn định. Có sẵn header rất tiện dụng khi kết

nối với vi điều khiển.

e Thiết kế:

Node Relay được thiết kế gồm nRF52832 và module relay 4 kênh. Cap nguồn cho relay 4 kênh được lấy trực tiếp từ nRF52832. Relay 4 kênh sử dung chân kích mức Thấp (0V), khi có tín hiệu 0V vào chân IN thì relay sẽ chuyên từ thường Hở

sang thường Đóng giúp cho dòng điện đi qua.

3.3. Thiết kế Node cảm biến nhiệt độ

e Phan tích:

Node cảm biến nhiệt độ sử dụng cảm biến LM75 sử dung chuẩn giao tiếp I2C,

sử dụng mức điện áp từ 2.8V đến 5.5V, có độ chính xác cao, tốc độ cảm biến nhanh, cung cấp độ chính xác lên tới 0,125°C, phạm vi đo nhiệt độ trong khoảng -55°C đến +125°C [13]. Chức năng chính của node cảm biến nhiệt độ là đo đạc nhiệt độ không khí trong phòng cũng như trong cả hệ thống như ngôi nhà, sân vuon,...

e Thiết kế:

Hiện tại nhóm tác giả dang sử dụng thư viện Im75b.h do Nordic cung cấp giúp cho việc cấu hình thanh ghi, thao tác giữa LM75 và module nRF52 được dễ dàng

hơn.

nRF52832 có thể trực tiếp đọc dữ liệu trong các thanh ghi thông qua bus I2C. LM75 có ba chân chọn địa chỉ logic A2, Al, AO. Mỗi chân thường được kết nối với

GND cho giá tri logic 0 hoặc với VCC cho logic 1 va cho phép người dùng định nghĩa

chúng. LM75 có slave addess có 7 bit gồm 4 bit cho MSB (Most Significant Byte) và

3 bit cho LSB (Least Significant Byte) (như hình Adress table bên dưới). Bén bit MSB được định nghĩa sẵn có giá trị 1001. Ở đây nêu chúng ta nối A2, A1 và A0 cho

GND thì sẽ được giá tri LSB là 000, từ đó có slave address của LM75 là 0x48 (1001000) [13].

33

Table 4. Address table

1 = HIGH; 0 = LOW.

MSB LSB

1 0 0 1 A2 Al A0

Hình 3.3. Address table [I3]

Để module nRF52 đọc duoc di liệu từ cảm biến, ta cần cấu hình Pointer Register (thanh ghi con trỏ). Khi cấp nguồn cho LM75, con trỏ tự động được gán giá

trị 00 và thanh ghi nhiệt độ (Temperature register) sẽ được chọn.

Table 6. Pointer register

B7 BB B5 B4 B3 B2 B[1:0]

0 0 0 = = =, pointer value

Table 7. Pointer value

B1 Bo Selected register

0 0 Temperature register (Temp)

0 1 Configuration register (Conf) ` `

1 0 Hysteresis register (Thyst)

1 1 Overtemperature shutdown register (Tos)

Hình 3.4. Thanh ghi con tro va giá trị các con tro [13]

Khi đọc thanh ghi Temp, tat cả 16 bit của 2 byte dit liệu (1 byte MSB và 1 byte LSB) đều phải được cung cấp cho dé vi điều khién có thé xử lý. Tuy nhiên chỉ có 11 bit chứa giá trị quan trong trong thanh ghi được sử dụng, 5 bit cuối cùng thuộc LSB

có giá tri đều bằng 0 và sẽ được lược bỏ [13].

Table 9. Temp register

MSByte LSByte

7 6 5 4 3 2 41 0 7 6 5 4 3 2 1 0 D10 DS D& DF D6 D5 D4 D3 D2 Di DO X X Xx x Xx

Hình 3.5. Thanh ghi nhiệt độ của LM75 [13]

Node cảm biến nhiệt độ sẽ cập nhật dữ liệu nhiệt độ mỗi phút một lần. Dữ liệu này sẽ được publish liên tục trong mang mesh rồi cập nhật real — time cho người dùng

thông qua Gateway.

34

3.4. Thiết kế Node cảm biến lửa

e Phan tích:

Node cảm biến lửa dùng để phát hiện lửa trong phạm vi 80cm, có thé điều chỉnh độ nhạy bằng biến trở. Kết quả trả về kiêu Digital (1 hoặc 0). Khi phát hiện có lửa thì chân OUT day điện thé lên mức cao và ngược lại.

e Thiết kế:

VCC VCC

Pin 23 (input) OUT

nRF52832

GND |

| GND

Hình 3.6. Sơ đồ kết nối trong node cảm biến lửa

Module nRF52 sử dụng pin GPIO 23, khi cảm biến lửa phát hiện có lửa, chân OUT của cảm biến lửa sẽ được kích từ mức thấp lên mức cao. Lúc này, dit liệu của cảm biến lửa sẽ được publish trong mạng mesh về Gateway. Gateway sẽ gửi tín hiệu này lên cơ sở dữ liệu của Server rồi cập nhật cảnh báo lửa cho người dùng qua User

App một cách real — time.

3.5. _ Thiết kế Node cảm biến ánh sáng

e Phân tích:

Node cảm biên ánh sáng quang trở phát hiện cường độ ánh sáng, sử dụng bộ

cảm biên photoresistor loại nhạy cảm, cho tín hiệu ôn định, rõ rang và chính xác hon

so với quang trở. Có biến trở dé điều chỉnh độ nhạy của cảm biến [14].

Node cảm biến ánh sáng hỗ trợ người dùng trong việc theo dõi chính xác thiết

bị phát sáng như đèn đã được bật/tắt theo đúng như trong ứng dụng người dùng hay

chưa.

e Thiết kế:

35

Ngõ ra DO trên cảm biên được dùng đê xác định cường độ ánh sáng của môi trường, khi ở ngoài sáng, ngõ ra DO có giá tri 0, ngược lại DO có giá tri 1.

3.6. _ Thiết kế mô hình mang mesh giao tiếp giữa Gateway với các Nodes

e Phân tích:

Sau khi đã phân tích hệ thống, nhóm đã sử dụng nRF5 SDK for Mesh là base- source cho khóa luận. nRF5 SDK for Mesh cung cấp các model đã dựng sẵn như Generic Model bao gồm Generic OnOff Server và Generic Client Models [5]. Model

Hinh 3.7. Generic OnOff Model [5]

Cấu trúc một message được gửi từ các node device lên node Gateway gồm 1- byte Opcode dé nhận diện loại dữ liệu cần xử lý và I-byte chứa trạng thái của node

device, sử dụng toán tử OR (“|”):

+ Message cua data từ cảm biên lửa:

MSG_OPCODE_ FIREI | FIRE_DETECT_DATA

+ Message của data cảm biến ánh sáng:

MSG_OPCODE_LIGHT1 | LIGHT_DETECT_DATA + Message cua data cam biên nhiệt độ:

MSG_OPCODE_ TEMPI | TEMP_DATA + Message cho Switch 1:

MSG_OPCODE_SWITCH_ON_1

36

MSG_OPCODE_SWITCH_ON_2 MSG_OPCODE_SWITCH_ON_3 MSG_OPCODE_SWITCH_ON_

MSG_OPCODE_SWITCH_OFF_1 MSG_OPCODE_SWITCH_OFF_2 MSG_OPCODE_SWITCH_OFF_3 MSG_OPCODE_SWITCH_OFF_4 + Message cho Switch 2:

MSG_OPCODE_SWITCH_ON_1 MSG_OPCODE_SWITCH_ON_2 MSG_OPCODE_SWITCH_ON_3 MSG_OPCODE_SWITCH_ON_

MSG_OPCODE_SWITCH_OFF_1 MSG_OPCODE_SWITCH_OFF_2 MSG_OPCODE_SWITCH_OFF_3

MSG_OPCODE_SWITCH_OFF_4

+ Message xóa trạng thái chuông báo của cam biến lửa:

MSG_ OPCODE_CLEAR_ FIRE

Gia sử nhiệt độ của cảm biến do được là 27°C nghĩa là

MSG_OPCODE_ TEMPI | TEMP_DATA = (0x46<<8 | 0x1B), riêng message của

cảm biến lửa 1 là 0x4600, cảm biến ánh sáng là 0x4700.

e Thiết kế:

Dựa vào cơ chế Publish/Subscribe [5], nhóm đã xây dựng sơ đồ khóa luận:

37

fẨ~~~~~~~~~~~~~~~~~~~~T~~~~~~~~~~~~T~~~~T~~T—~—~-~ ơ

1 |

1 Gateway I

1 1

| 1

1 1

1 1

1 0xC09A 0xC00B 0xC00C 0xC00D 1

1 1

1 !

CF J

0xC001 0xC002 OxC003

—>| Light 1 —>|[ Light 2

0xC005 0xC006

() Cac element của Gateway

Node subscribe dén node khac

Node subscribe lan nhau

Hình 3.8. Sơ đồ Publish/Subscribe các node trong mang mesh

Sơ đồ mang mesh bao gồm node Gateway và các node device, cụ thé: 2 node Switch, 2 node cảm biến ánh sang (Light), node cam biến lửa (Fire), node cảm biến nhiệt độ (Temp). Với mỗi node đều có một địa chỉ publish riêng như sau:

+ Gateway có 4 Element, mỗi element là một model được xây dựng trên cơ

chế truyền nhận 2 bytes, lần lượt publish tới địa chỉ lần lượt là 0xC00A,

0xC00B, 0xCO0C, 0xC00D:

o Element 1, Element 2 lần lượt được subscribe bởi Switch 1 va Switch

2, Gateway nhận dữ liệu điều khién từ trên Server và gửi message điều khiển tới các Switch, dữ liệu được phận biệt bởi các địa chỉ Element

38

riêng biệt. Hai element subscribe tới 2 node Light có nhiệm vụ nhận dữ

liệu và cập nhật về Server.

o Element 3 subscribe tới node Temp có nhiệm vụ cập nhật dữ liệu nhiệt

độ về Server.

o Element 4 subscribe tới node Fire có nhiệm vu phát hiện lửa và nhanh

chóng gửi về Server dé thông báo cho người dùng.

+ Switch 1 va Switch 2 có dia chi publish lần lượt là 0xC001 va 0xC002

subscribe tới Element 1, Element 2. Điều này có nghĩa là 2 switch này nhận lệnh điều khiển thông qua 2 element khác nhau trong cùng một node

Gateway.

+ Hai node Light lần lượt có dia chỉ publish là 0xC005, 0xC006 được

subscribe bởi 2 element khác nhau đồng nghĩa với việc phân biệt được message của từng node Light khi gửi dir liệu về Gateway.

+ Node Temperature có địa chỉ publish là 0xC003, được subscribe bởi

Element 3, cập nhật nhiệt độ liên tục về Gateway mỗi phút 1 lần.

+ Node Fire có địa chỉ publish là 0xC004 được subscribe bởi Gateway thực

hiện việc cập nhật tình trạng của cảm biến lửa. Đồng thời cũng subscribe tới Gateway dé truyền message về với mục đính xóa trạng thái của chuông báo khi cần.

Các node trong mạng có cấu hình với khả năng tích hợp các tính năng relay,

proxy, trong đó:

+ Relay: là một tính năng quan trọng trong mạng Bluetooth mesh, nó có kha

năng truyền tải message trong trường hợp node nhận message năm ngoài phạm vi truyền tải của node gửi ban đầu.

+ Proxy: là tính năng cho phép các node sử dung proxy protocol với khả nang

tận dụng GATT Bearer cho phép thiết bị hỗ trợ Advertising Bearer giao tiếp một cách gián tiếp với các node của mạng mesh [5]. Nhờ vào điều này

các node trong mạng mesh sẽ được thực hiện dễ dàng quá trình provisioning băng smartphone.

39

Quá trình provisioning trong mạng được thực hiện trên smartphone thông qua

ứng dụng có tên nRF Mesh do Nordic Semiconductor cung cấp. Smartphone có vai trò là provisioner giúp cau hình các node trong mạng mesh:

+ Cấp cho mỗi thiết bị được provision một địa chỉ duy nhất (Unicast address) + Phân phối các network keys va application keys tương ứng với mỗi thiết

bị.

+ Cấu hình mesh model cho từng thiết bi

Sending provisioning invites.

Provisioning capabilities received...

Sending provisioning start...

Sending provisioning public key...

Provisioning public key receẽved...

Sending provisioning confirmation...

Provisioning confirmation recelved...

Sending provisioning randomse.

Provisionee random received Sending provisioning data...

Provisioning complete received...

Wireless by Nordic

Hình 3.9. Quá trình provisioning node Light 2 vào mang mesh

40

nAF Mesh

Address; 0008.

Company: Nordic Semẽcon,..

Elements; 1 Models: 2

CONFIGURE DETAILS

Temp Node

Address; 000C Company: Nordic Semẽcon,., Elements; 1

Models: 3

CONFIGURE DETAILS

Ov Confguration Complete

Mesh node has been Successfully configured,

Light 2

Address; 00D Company’ Nordic Semiconaes Elements; 1

Models: 2

CONFIGUAE DETAILS

Hình 3.10. Node Light 2 sau khi được prosivion vào mang mesh

Ung dụng nRF Mesh do Nordic cung cấp có vai trò là provisioner giúp cho quá trình provisioning một cách dé dàng, linh hoạt và giúp kiểm soát các bước trong

quá trình này.

3.7. Thiết kế cơ sở dữ liệu với MongoDB

e Phân tích: lý do lựa chon cơ sở dữ liệu (CSDL) MongoDB | Atlas [20]

+ Dễ dàng xây dựng, quản lý và kết nói. Hỗ trợ đầy đủ API dé có thé kết nối

từ phía Server.

+ Không phải xây dựng cấu trúc dữ liệu nhất định, cho phép dé dàng thay

đổi linh hoạt cầu trúc CSDL mà không có ràng buộc.

+ Sử dụng JSON giúp lập trình với ứng dụng Android được dễ dàng

+ Tốc độ kết nối, truy xuất dữ liệu nhanh chóng với độ trễ rat thấp.

e Thiết kế:

Thiết kế các thành phần chính trong CSDL MongoDB trong đề tài:

+ Database: có tên “bluetoothMesh”.

41

+ Collection: có tên “user”.

+ Document: mỗi collection có thê có nhiều document. Cụ thé trong nghiên

cứu này mỗi document đóng vai trò như một hệ thống với thông tin của

từng user và thông tin của Gateway (địa chỉ MAC) cũng như toàn bộ các

thiết bị được kết nối với nhau trong mạng Bluetooth mesh với Gateway đó. Phân cấp trong CSDL của hệ thống từ trên xuống:

+ Trong collection “user” chứa nhiều document có ý nghĩa là tài khoản người

dùng với “name”, “password” tương ứng và “_id” duy nhất dé định danh

các document.

+ Mỗi user có thé có chứa nhiều “home”. Mỗi “home” sẽ do 1 Gateway quản

lý với tên “name”, địa chỉ MAC “macAddr” của Gateway và danh sách các

thiết bi “device” có trong “home” đó.

+ “device”: chứa thông tin các device được provision trong mạng Bluetooth

mesh đã kết nối với Gateway. Có nhiều loại “device” khác nhau như

“temperature”, “light”, “fire” va “switch”.

+ Cuối cùng là “switch”: mỗi “switch” là 1 relay 4 kênh lưu trữ thông tin tên

“name” cua switch và trang thai “status” (bật: “on”, tắt: “of? ”) của các thiết

bị trong mỗi kênh của relay.

Cuối cùng, sau khi tạo thành công CSDL trên MongoDB | Atlas, ta sẽ có được một chuỗi kết nối đến CSDL tùy theo từng mục đích sử dụng với username, password

mà ta đã tạo:

MongoClientURI uri = new MongoClientURI(

"mongodb+srv: //bao:<password>@dbk1tn.y9mge.mongodb.net/<dbname>?retryWrites=true đi] Copy

MongoClient mongoClient = new MongoClient(uri);

MongoDatabase database = mongoClient.getDatabase("test");

1 TL L A aỡ3 m3 0 v af 8 a] D D m

are URL encoded

Hình 3.11. Connection string do MongoDB cung cấp dé kết nối đến CSDL

42

3.8. Thiết kế Server với Java

e Phan tích:

Trong quá trình thực hiện khóa luận, nhóm thực hiện nhận thấy Java là một ngôn ngữ hướng đối tượng, có cơ chế quản lý bộ nhớ (Garbage collector) giúp cho việc xây dựng Server ôn định hơn, không bị rò ri bộ nhớ và có thé dé dàng phát hiện

lỗi phát sinh trong chương trình [21]. Bên cạnh đó, Java đã là một ngôn ngữ có cộng

đồng lập trình viên nhiều kinh nghiệm và được hỗ trợ lập trình cho nhiều nền tảng. Chính vì vậy nhóm quyết định sử dụng Java làm ngôn ngữ chính để lập trình cho

Server.

Mục đích của Server chính là cầu nối cho quá trình truyền nhận dit liệu giữa ứng dụng người dùng (User App) và Gateway (thông qua giao thức WebSocket) dé quản lý tín hiệu từ các node cảm biến trong mạng mesh cũng như gửi tín hiệu điều khiến từ User App cho các thiết bị trong mang. Server phải được kết nối với cơ sở dữ liệu để có thể đồng bộ dit liệu với User App và có thé giao tiếp với User App thông qua giao thức. Cuối cùng Server phải luôn online dé có thé được kết nối từ xa thông qua một dia chỉ IP và Port cố định.

e Thiết kế:

Server được thiết kế với nền tảng chính là giao thức WebSocket và CSDL MongoDB. Đầu tiên ta sẽ tạo class “Server” được thêm thư viện WebSocket của Java

và chạy Server trên một port cố định (8080) dé lang nghe kết nối từ phía Client. Phía Server sẽ có những phương thức đề xử lý sự kiện như sau:

+ onStart(...): được gọi khi Server được chạy thành công.

+ onClose(WebSocket conn,...): được gọi khi kết nối giữa Client và Server

bị hủy.

+ onOpen(WebSocket conn,...): được gọi khi có Client kết nối thành công

đến Server với Socket là biến “conn”.

+ onMessage(WebSocket conn, String message): dùng dé giao tiếp truyền

nhận dữ liệu giữa Server với Client. Được gọi khi có Server nhận được

43

Một phần của tài liệu Khóa luận tốt nghiệp Kỹ thuật máy tính: Nghiên cứu và ứng dụng bluetooth mesh vào hệ thống thông minh (Trang 42 - 60)

Tải bản đầy đủ (PDF)

(70 trang)