Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

EBOOKBKMT.

COM

MỤC LỤC
NỘI DUNG ĐỀ TÀI.................................................................................................1
LỜI CẢM ƠN...........................................................................................................2
LỜI NÓI ĐẦU..........................................................................................................3
MỤC LỤC................................................................................................................. 4
Chương 1. TỔNG QUAN VỀ MẠNG CẢM BIẾN KHÔNG DÂY VÀ CHUẨN
TRUYỀN THÔNG LORA........................................................................................6
1.1. Giới thiệu chung..............................................................................................6
1.1.1. Mạng cảm biến không dây là gì?..............................................................6
1.1.2. Các ứng dụng của mạng cảm biến không dây...........................................7
1.2. Kiến trúc ngăn xếp giao thức mạng cảm biến không dây................................7
1.3. Tổng quan về Internet kết nối vạn vật.............................................................9
1.3.1. Internet of Things là gì?............................................................................9
1.3.2. Internet of Things là tương lai của thế giới.............................................10
1.4. Một vài mô hình ứng dụng về Internet of Things..........................................10
1.4.1. Lưới điện thông minh..............................................................................10
1.4.2. Nhà thông minh.......................................................................................11
1.6. Chuẩn truyền thông LoraWAN......................................................................12
1.6.1. Khái niệm LoraWAN..............................................................................12
1.6.2. Cấu trúc của mạng LoraWAN.................................................................13
1.6.3. Kiến trúc LoraWAN................................................................................14
1.6.4. Điều khiển truy cập theo kênh truyền.....................................................15
1.6.5. Nguyên lý hoạt động của LoRa...............................................................15
CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG.................................................................17
2.1.Kit Arduino Uno R3.......................................................................................17
2.1.1.Giới thiệu tổng quan................................................................................17
2.1.2.Thành phần phần cứng của KIT...............................................................17
2.1.3. Arduino IDE............................................................................................19
2.2. Module Lora SX1278....................................................................................19
2.2.1. Module Lora SX1278............................................................................19
2.3. Cảm biến đo nhiệt độ, độ ẩm (DHT 11)........................................................22
2.5. Module WIFI ESP8266.................................................................................25
2.6. Cảm biến ánh sáng (Tsl 2561).......................................................................27
2.7.1. Giải pháp thiết kế Node con.......................................................................28
2.7.1.1. Sơ đồ ghép nối phần cứng....................................................................28
2.7.1.2. Lưu đồ thuật toán Node con................................................................29
2.7.1.3. Sơ đồ nguyên lí thiết kế phần cứng.....................................................30
2.7.2 Giải pháp thiết kế GateWay.........................................................................30
2.7.2.1 Sơ đồ ghép nối phần cứng.....................................................................30
2.7.2.2. Lưu đồ thuật toán xử lý GateWay........................................................31
2.7.2.3. Sơ đồ nguyên lí thiết kế phần cứng......................................................32
2.8. Kết quả..........................................................................................................33
CHƯƠNG 3. XÂY DỰNG PHẦN MỀM...............................................................34
3.1 Mã nguồn chương trình..................................................................................34
3.1.1 Mã nguồn Node con.................................................................................34
3.1.2 Mã nguồn Gateway.....................................................................................36
3.2 Thingspeak Webserver lưu trữ dữ liệu và giao diện Website người dùng.......37
3.2.1.Truyền thông Internet...............................................................................37
3.2.2.Giao diện người dùng..................................................................................38
3.2.2.1. Hình ảnh trang chủ...............................................................................38
3.2.2.2. Hình ảnh giao diện đăng nhập..............................................................39
3.2.2.3. Hình ảnh giao diện người dùng............................................................39
3.2.3. Lưu đồ thuật toán.......................................................................................39
KẾT LUẬN.............................................................................................................41
TÀI LIỆU THAM KHẢO.......................................................................................42

2
Chương 1. TỔNG QUAN VỀ MẠNG CẢM BIẾN KHÔNG DÂY VÀ CHUẨN
TRUYỀN THÔNG LORA

1.1. Giới thiệu chung

1.1.1. Mạng cảm biến không dây là gì?

Mạng cảm biến không dây (Wireless Sensor Network – WSN), là mạng liên
kết các thiết bị tự vận hành, liên kết với nhau bằng kết nối sóng vô tuyến (RF
connection) trang bị cảm biến (sensor) để giám sát các tham số của một môi trường
vật lý.
Trong WSN các node mạng thường là các thiết bị đơn giản, nhỏ gọn, giá
thành thấp, có số lượng lớn, thường được phân bố trên một diện tích rộng, sử dụng
nguồn năng lượng hạn chế (pin), có thời gian hoạt động lâu dài (vài tháng đến vài
năm) và có thể hoạt động trong môi trường khắc nghiệt (chất độc, ô nhiễm, nhiệt độ
cao, v.v).
Các node mạng thường có chức năng sensing (sensor node): cảm ứng, quan
sát môi trường xung quanh như: nhiệt độ, độ ẩm, ánh sáng, âm thanh, độ rung, độ
bức xạ, độ ô nhiễm, v.v., theo dõi hay định vị các mục tiêu cố định hoặc di động.
Các node giao tiếp với nhau qua mạng vô tuyến không dây phi thể thức (Wireless
Ad-hoc network) và truyền dữ liệu về trung tâm xử lý (base station) bằng kỹ thuật
truyền đa chặng (multi-hop).

Hình 1.1. Mô hình đơn giản của mạng cảm biến không dây.
Mô hình đơn giản của WSN có thể được hình dung như hình 1.1. Trong đó,
các nút cảm biến được phân bố trong một trường cảm biến. Mỗi một nút cảm biến
có khả năng thu thập dữ liệu trong trường cảm biến. Các nút giao tiếp với nhau qua
3
mạng vô tuyến ad-hoc và truyền dữ liệu về trung tâm xử lý bằng kỹ thuật truyền đa
chặng.
1.1.2. Các ứng dụng của mạng cảm biến không dây
Cảm biến thường được chia thành nhiều nhóm chức năng như: Cơ, hóa,
nhiệt, điện, từ, sinh học, quang, chất lỏng, sóng siêu âm... có thể được đưa ra bên
ngoài môi trường độc hại, nhiệt độ cao, nhiễu lớn, môi trường hóa chất độc hại,
trong hệ thống robot tự động hay trong hệ thống nhà xưởng sản xuất…Nhờ đó, mà
mạng cảm biến được ứng dụng một cách rộng rãi trong nhiều lĩnh vực của cuộc
sống. Các ứng dụng điển hình của mạng cảm biến không dây bao gồm thu thập dữ
liệu, theo dõi, giám sát và y học…

1.2. Kiến trúc ngăn xếp giao thức mạng cảm biến không dây
Kiến trúc ngăn xếp giao thức áp dụng cho WSN được trình bày trong hình
1.2. Kiến trúc này bao gồm các lớp và các mặt phẳng quản lý. Các mặt phẳng quản
lý này làm cho các nút có thể làm việc cùng nhau theo cách có hiệu quả nhất,
định tuyến dữ liệu trong mạng cảm biến di động và chia sẻ tài nguyên giữa các nút
cảm biến.

Hình 1.2. Kiến trúc giao thức mạng cảm biến


 Mặt phẳng quản lý công suất: Quản lý cách cảm biến sử dụng
nguồn năng lượng của nó. Ví dụ : Nút cảm biến có thể tắt bộ thu sau khi
nhận được một bản tin. Khi mức công suất của nút cảm biến thấp, nó sẽ
4
quảng bá sang các nút cảm biến lân cận để thông báo rằng mức năng
lượng của nó thấp và nó không thể tham gia vào quá trình định tuyến.
 Mặt phẳng quản lý di động: Có nhiệm vụ phát hiện và đăng ký sự
chuyển động của các nút cảm biến. Các nút cảm biến giữ việc theo dõi
xem nút nào là nút hàng xóm của chúng.
 Mặt phẳng quản lý: Cân bằng và sắp xếp nhiệm vụ cảm biến giữa các nút
trong một vùng quan tâm. Không phải tất cả các nút cảm biến đều thực
hiện nhiệm vụ cảm nhận ở cùng một thời điểm.
 Lớp vật lý

Lớp vật lý có trách nhiệm lựa chọn tần số, tạo tần số sóng mạng, phát hiện
tín hiệu và điều chế dữ liệu.

 Lớp liên kết dữ liệu

Lớp liên kết dữ liệu chịu trách nhiệm ghép các dòng dữ liệu, phát hiện khung
dữ liệu, điều khiển lỗi và điều khiển truy nhập kênh truyền. Nó đảm bảo sự tin cậy
của các kết nối điểm - điểm và điểm - đa điểm trong mạng.

 Lớp mạng

Các nút cảm biến nằm rải rác với mật độ cao trong một trường cảm biến. Lớp
mạng của các mạng cảm biến thường được thiết kế theo quy tắc sau đây:

 Vấn đề hiệu quả năng lượng luôn là vấn đề được quan tâm nhất.

 Các mạng cảm biến chủ yếu là tập trung dữ liệu.

 Ngoài việc định tuyến, các nút chuyển tiếp có thể tổng hợp các dữ liệu từ
các nút lân cận thông qua việc xử lý cục bộ.

 Lớp giao vận

Sự phát triển của các giao thức lớp giao vận là một nhiệm vụ đầy thách thức
bởi vì các nút cảm biến bị ảnh hưởng bởi những hạn chế về phần cứng như là năng
lượng và bộ nhớ hạn chế. Do đó, mỗi nút cảm biến không thể lưu trữ một lượng lớn
dữ liệu như một máy chủ trên mạng Internet.

5
 Lớp ứng dụng

Lớp ứng dụng bao gồm các ứng dụng chính cũng như một số chức năng quản
lý. Ngoài các chương trình ứng dụng cụ thể cho mỗi ứng dụng thì các chức năng
quản lý và xử lý truy vấn cũng nằm ở lớp này.
1.3. Tổng quan về Internet kết nối vạn vật.

1.3.1. Internet of Things là gì?

Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối
Internet viết tắt là IoT (tiếng Anh: Internet of Things) là một kịch bản của thế giới,
khi mà mỗi đồ vật, con người được cung cấp một định danh của riêng mình, và tất
cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà
không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính.
IoT đã phát triển từ sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và
Internet. Nói đơn giản là một tập hợp các thiết bị có khả năng kết nối với nhau,
với Internet và với thế giới bên ngoài để thực hiện một công việc nào đó.

Hình 1.3. Hình ảnh mô tả Internet of Things

6
1.3.2. Internet of Things là tương lai của thế giới

Ngay sau khi nhận được sự chú ý của cộng đồng, IoT đã cho thấy tiềm năng
của mình với những số liệu đáng kinh ngạc. Cisco, nhà cung cấp giải pháp và thiết
bị mạng hàng đầu hiện nay dự báo: Đến năm 2020, sẽ có khoảng 50 tỷ đồ vật kết
nối .

Và không thể không kể tới một thương hiệu Việt Nam là Bkav cũng đã đạt
được những thành tựu đáng ghi nhận về Internet of Things. Hệ thống nhà thông
minh SmartHome của Bkav là một tổ hợp các thiết bị thông minh trong 1 ngôi nhà,
đều được kết nối Internet và có thể tự động điều chỉnh cũng như điều khiển qua
smartphone.

Bên cạnh đó, các ông lớn như Google, Apple, Samsung, Microsoft cũng
không hề giấu diếm ý định xâm nhập thị trường này, hứa hẹn một cuộc cạnh tranh
mạnh mẽ trong thời gian tới đây, đưa kỷ nguyên IoT đến sớm hơn với mọi người.

1.4. Một vài mô hình ứng dụng về Internet of Things

1.4.1. Lưới điện thông minh

Lưới điện thông minh (còn gọi là hệ thống điện thông minh) là hệ thống điện
có sử dụng các công nghệ thông tin và truyền thông để tối ưu việc truyền dẫn, phân
phối điện năng giữa nhà sản xuất và hộ tiêu thụ, hợp nhất cơ sở hạ tầng điện với cơ
sở hạ tầng thông tin liên lạc. Có thể coi hệ thống điện thông minh gồm có 2 lớp: lớp
1 là hệ thống điện thông thường và bên trên nó là lớp 2- hệ thống thông tin, truyền
thông, đo lường.

7
Hình 1.4. Mô hình hệ thống lưới điện thông minh.

1.4.2. Nhà thông minh

Nhà thông minh (Smart Home) là một ngôi nhà/căn hộ được trang bị hệ
thống tự động tiên tiến dành cho điều khiển đèn chiếu sáng, nhiệt độ, truyền thông
đa phương tiện, an ninh, rèm cửa, cửa và nhiều tính năng khác nhằm mục đích làm
cho cuộc sống ngày càng tiện nghi, an toàn và góp phần sử dụng hợp lý các nguồn
tài nguyên.

Hình 1.5. Mô hình hệ thống nhà thông minh.

8
1.6. Chuẩn truyền thông LoraWAN

1.6.1. Khái niệm LoraWAN

LoRa là viết tắt của Long Range Radio được nghiên cứu và phát triển bởi
Cycleo và sau này được mua lại bởi công ty Semtech năm 2012. Với công nghệ này,
chúng ta có thể truyền dữ liệu với khoảng cách lên hàng km mà không cần các
mạch khuếch đại công suất; từ đó giúp tiết kiệm năng lượng tiêu thụ khi
truyền/nhận dữ liệu. Do đó, LoRa có thể được áp dụng rộng rãi trong các ứng dụng
thu thập dữ liệu như sensor network trong đó các sensor node có thể gửi giá trị đo
đạc về trung tâm cách xa hàng km và có thể hoạt động trong thời gian dài trước khi
cần thay pin.

Một sự đổi mới của Semtech, LoRa Technology mang lại một sự pha trộn rất
hấp dẫn của tầm xa, tiêu thụ năng lượng thấp và truyền dữ liệu an toàn. Các mạng
công cộng và mạng riêng sử dụng công nghệ này có thể cung cấp phạm vi phủ sóng
lớn hơn so với các mạng di động hiện có. Dễ dàng kết nối với cơ sở hạ tầng hiện có
và cung cấp một giải pháp để phục vụ các ứng dụng IoT sử dụng pin.

LoRa là lớp vật lý hoặc điều chế không dây được sử dụng để tạo ra liên kết
truyền thông tầm xa. Nhiều hệ thống không dây kế thừa sử dụng điều chế chuyển
đổi độ lệch tần số (FSK) như lớp vật lý bởi vì nó là một điều chế rất hiệu quả để đạt
được công suất thấp. LoRa dựa trên điều chế phổ tán xạ chirp, duy trì các đặc tính
năng lượng thấp tương tự như điều chế FSK nhưng làm tăng đáng kể phạm vi
truyền thông.

Ứng dụng của LoraWAN:

 Smart city

 Wireless sensor network

 Smart home

 Internet Of Thing

 Hệ thống nông nghiệp thông minh

9
1.6.2. Cấu trúc của mạng LoraWAN

Một thiết bị hỗ trợ LoRaWan sẽ có cấu trúc software như sau:

Hình 1.6. Các cấu trúc của Lora

Thiết bị đầu cuối định hướng hai chiều (Class A): Thiết bị đầu cuối của lớp A
cho phép truyền thông hai chiều, theo đó mỗi thiết bị truyền dẫn đường lên được
theo sau bởi hai cửa sổ thu nhận đường xuống ngắn. Các khe truyền dẫn được lên
kế hoạch bởi thiết bị đầu cuối dựa trên nhu cầu truyền thông của riêng mình với một
biến thể nhỏ dựa trên cơ sở thời gian ngẫu nhiên (ALOHA-loại giao thức). Hoạt
động của Class A là hệ thống thiết bị đầu cuối thấp nhất cho các ứng dụng mà chỉ
cần truyền thông đường xuống từ máy chủ ngay sau khi thiết bị đầu cuối gửi một
đường truyền lên. Liên lạc đường xuống từ máy chủ tại bất kỳ thời gian nào khác sẽ
phải chờ cho đến khi đường lên kế tiếp.

Thiết bị đầu cuối định hướng hai chiều với các khe tiếp nhận theo lịch trình
(Lớp B): Ngoài các cửa sổ nhận ngẫu nhiên Class A, các thiết bị lớp B mở các cửa
sổ nhận thêm vào các thời gian theo lịch. Để thiết bị đầu cuối mở cửa sổ nhận vào
đúng thời gian, nó sẽ nhận được chỉ dẫn đồng bộ hóa thời gian từ gateway. Điều này
cho phép máy chủ biết khi thiết bị đầu cuối đang nghe.

Thiết bị đầu cuối định hướng hai chiều với khe tiếp nhận cực đại (Class C):
Thiết bị đầu cuối của Class C gần như liên tục mở các cửa sổ nhận, chỉ đóng khi
truyền.

10
Hình 1.7. Các lớp của LoraWAN

Trong cấu trúc này thì LoraWan bao gồm Lora Mac (Class A, Class B, Class
C) và hoạt động dựa trên lớp PHY là chip Lora. Ở mỗi vùng khác nhau trên thế giới
thì thiết bị LoraWan phải cấu hình cho chip Lora hoạt động ở dãy băng tần cho phép
như 433Mhz, 915MHz, v.v..

1.6.3. Kiến trúc LoraWAN

Các thiết bị LoRaWan kết nối với nhau theo mô hình Star trong đó các thiết
bị node sẽ gửi dữ liệu đến các thiết bị Gateway để từ đó sẽ gửi lên server và thực
hiện xử lý dữ liệu trên server

Hình 1.8. Kiến trúc mạng Lora.

Do đó trong 1 mạng LoRaWan sẽ có 2 loại thiết bị:


11
Device node: là các thiết bị cảm biến, hoặc các thiết bị giám sát được lắp đặt
tại các vị trí làm việc ở xa để lấy và gửi dữ liệu về các thiết bị trung tâm. Có 3 loại
device node là Class A, Class B và Class C

Gateway: là các thiết bị trung tâm sẽ thu thập dữ liệu từ các device node và
gửi lên 1 server trung tâm để xử lý dữ liệu. Các thiết bị Gateway thường sẽ được đặt
tại 1 vị trí có nguồn cung cấp và có các kết nối network như Wifi, LAN, GSM để có
thể gửi dữ liệu lên server.

1.6.4. Điều khiển truy cập theo kênh truyền

Cấu trúc LoraWAN network thì thường được đặt trong mô hình star-of-stars
mà Gateways là một cầu nối được ẩn đi chuyển tiếp các message giữa thiết bị đầu
cuối với server trung tâm network ở backend. Các Gateway được kết nối với server
của network thông qua kết nối IP chuẩn trong khi thiết bị đầu cuối dùng giao tiếp
không dây single-hop đến một hoặc nhiều gateway.

Hình 1.9. Lora Connect.

1.6.5. Nguyên lý hoạt động của LoRa

LoRa sử dụng kỹ thuật điều chế gọi là Chirp Spread Spectrum. Có thể hiểu
nôm na nguyên lý này là dữ liệu sẽ được băm bằng các xung cao tần để tạo ra tín
hiệu có dãy tần số cao hơn tần số của dữ liệu gốc (cái này gọi là chipped); sau đó tín
hiệu cao tần này tiếp tục được mã hoá theo các chuỗi chirp signal (là các tín hiệu
hình sin có tần số thay đổi theo thời gian; có 2 loại chirp signal là up-chirp có tần số
tăng theo thời gian và down-chirp có tần số giảm theo thời gian; và việc mã hoá
12
theo nguyên tắc bit 1 sẽ sử dụng up-chirp, và bit 0 sẽ sử dụng down-chirp) trước khi
truyền ra anten để gửi đi.

Nhờ sử dụng chirp signal mà các tín hiệu LoRa với các chirp rate khác nhau
có thể hoạt động trong cùng 1 khu vực mà không gây nhiễu cho nhau. Điều này cho
phép nhiều thiết bị LoRa có thể trao đổi dữ liệu trên nhiều kênh đồng thời (mỗi
kênh cho 1 chirprate)

Radio packet của LoRa như hình sau:

Hình 1.10. Radio packet

- Các dữ liệu trong 1 radio packet của LoRa, bao gồm:

Preamble: Là chuỗi binary để bộ nhận detect được tín hiệu của LoRa packet
trong không khí.

Header: chứa thông tin về size của Payload cũng như có PayloadCRC hay
không. Giá trị của Header cũng được check CRC kèm theo.

Payload: là dữ liệu ứng dụng truyền qua LoRa.

Payload: giá trị CRC của Payload. Nếu có PayloadCRC, LoRa chip sẽ tự
kiểm tra dữ liệu trong Payload và báo lên nếu CRC OK hay không.

13
CHƯƠNG 2. THIẾT KẾ PHẦN CỨNG

2.1.Kit Arduino Uno R3.

2.1.1.Giới thiệu tổng quan

Phần mềm Arduino IDE: được gọi là sketches, được tạo ra trên máy tính có
tích hợp môi trường phát triển(IDE). IDE cho phép bạn viết, chỉnh sửa code và
chuyển đổi sao cho phần cứng có thể hiểu. IDE dùng để biên dịch và nạp vào
Arduino ( quá trình sử lý này gọi là UPLOAD).

Phần cứng Arduino: là các board Arduino nơi thực thi các chương trình lập
trình. Các board này có thể điều khiển hoặc đáp trả các tín hiệu điện, vì vậy các
thành phần được ghép trực tiếp vào nó để tương tác với thế giới thực để cảm nhận
hoặc truyền thông. Ví dụ các cảm biến bao gồm các thiết bị chuyển mạch, cảm biến
siêu âm, gia tốc. Các thiết bị truyền động bao gồm đèn, motor, loa và các thiết bị
hiển thị.

Hầu hết các board Arduino sử dụng kết nối kiểu USB dùng để cấp nguồn và
upload dữ liệu cho board Arduino.

Hình 2.0. Board cơ bản của Arduino Uno

2.1.2.Thành phần phần cứng của KIT

14
Hình 2.1. Hình mặt trên của Arduino Uno

Thông số kỹ thuật:

 Vi điều khiển ATMega328.

 Điện áp hoạt động 5V.

 Đầu vào diện áp 7-12V.

 Điện áp đầu vào tới hạn 6-20V.

 Chân vào ra số là 14 chân (trong đó có 6 chân băm xung PWM).

 Chân đầu vào tương tự có 6 chân.

 Dòng DC vào ra trên chân là 40mA.

 Dòng đầu ra ở chân 3.3V là 50mA.

 Bộ nhớ Flash 32KB(ATMega328) trong đó 0.5KB sử dụng cho


bootloader.

 SRAM là 2KB(ATMega328).

 EEPROM là 1KB(ATMega328).

 Tần số 16MHz.

15
2.1.3. Arduino IDE

Arduino IDE là nơi để soạn thảo code, kiểm tra lỗi và upload code cho
Arduino

Hình 2.2. Arduino IDE

2.2. Module Lora SX1278

2.2.1. Module Lora SX1278

SX1278 là module truyền thông có công suất 100mw. Nó làm việc ở dải
433MHZ và sử dụng cổng Serial để gửi nhận dữ liệu. Khoảng cách truyền tối đa lý
tưởng của Module Lora này đạt được khoảng 3000m. Module này có cơ chế FEC
truyền lại khi báo lỗi truyền tin. Khi truyền tin thì dữ liệu sẽ được mã hóa và giải
mã nhằm cải thiện độ tin cậy. Module có 4 chế độ hoạt động với 4 mode truyền
khác nhau. Đặc biệt có thể ứng dụng vào các hệ thống yêu cầu điện năng tiêu thụ rất
thấp. Khi ở chế độ power saving mode.
16
Hình 2.3. Các chế độ truyền nhận của module lora SX1728

Thông số kỹ thuật :

-Model: E32-TTL-100 RF
-IC chính: SX1278 từ SEMTECH.
-Điện áp hoạt đông: 2.3 - 5.5 VDC
-Điện áp giao tiếp: TTL
-Giao tiếp UART Data bits 8, Stop bits 1, Parity none, tốc độ từ 1200 -
115200.
-Tần số: 410 - 441Mhz
-Công suất: 20dbm (100mW)
-Khoảng cách truyền tối đa trong điều kiện lý tưởng: 3000m
-Tốc độ truyền: 0.3 - 19.2 Kbps ( mặc định 2.4 Kbps)
-512bytes bộ đệm.
-Hỗ trợ 65536 địa chỉ cấu hình có 32 kênh
-Kích thước: 21x36mm.
Các ứng dụng:

 Cảm biến đọc khoảng cách thông minh

 Node cảm biến

 Nhà thông minh


17
 Robot thông minh

 Quan trắc môi trường

 Hệ thống thu thập dữ liệu tự động

Hình 2.4. Module Lora SX1278


Trước khi Serial gửi data thì thằng AUX xuất thấp
Module sử dụng điện áp trong dải từ 1.9Vtrước
- 3.6V DC.
1-2ms, và luôn bằng 0 trong quá trình truyền

Hình 2.5. Tín hiệu AUX báo hiệu hoạt động của module

Khi có tín hiệu vào TXD thì tín hiệu AUX xuất ra là thấp báo hiệu có tín hiệu
truyền serial. Khi Serial đã gửi xong thì AUX=1 tức là trở lại mức cao như lúc chờ
dữ liệu ban đầu.

2.3. Cảm biến đo nhiệt độ, độ ẩm (DHT 11)

Trong thiết kế sử dụng cảm biến DHT11. DHT11 là cảm biến nhiệt độ và độ
ẩm. Nó ra đời sau và được sử dụng thay thế cho dòng SHT1x ở những nơi không
cần độ chính xác cao về nhiệt độ và độ ẩm.

18
Hình 2.6. Cảm biến DHT11
 DHT11có cấu tạo 4 chân như hình. Nó sử dụng giao tiếp số
theo chuẩn 1 dây.
 Thông số kỹ thuật:
 Điện áp hoạt động: 3.3-5v.
 Chuẩn giao tiếp: 1wire.
 Dải đo độ ẩm: 0-99.9%.
 Dải đo nhiệt độ: -40-80 độ C.
 Sai số độ ẩm: +-2%.
 Sai số nhiệt độ: +-0.5 độ C.
 Nguyên lý hoạt động:
 Sơ đồ kết nối vi xử lý:

19
Hình 2.7. Sơ đồ kết nối
Để có thể giao tiếp với DHT11theo chuẩn 1 chân vi xử lý thực hiện theo 2
bước:

 Gửi tin hiệu muốn đo (Start) tới DHT11, sau đó DHT11xác nhận lại.

 Khi đã giao tiếp được với DHT11, Cảm biến sẽ gửi lại 5 byte dữ liệu và nhiệt
độ đo được.
- Bước 1: gửi tín hiệu Start

Hình 2.8. Xung tín hiệu start

20
+, MCU thiết lập chân DATA là Output, kéo chân DATA xuống 0 trong
khoảng thời gian >18ms. Khi đó DHT11sẽ hiểu MCU muốn đo giá trị nhiệt độ và
độ ẩm.MCU đưa chân DATA lên 1, sau đó thiết lập lại là chân đầu vào.
+, Sau khoảng 20-40us, DHT11sẽ kéo chân DATA xuống thấp. Nếu >40us
mà chân DATA ko được kéo xuống thấp nghĩa là ko giao tiếp được với DHT11.
+, Chân DATA sẽ ở mức thấp 80us sau đó nó được DHT11kéo nên cao trong
80us. Bằng việc giám sát chân DATA, MCU có thể biết được có giao tiếp được với
DHT11ko. Nếu tín hiệu đo được DHT11lên cao, khi đó hoàn thiện quá trình giao
tiếp của MCU với DHT.
- Bước 2: đọc giá trị trên DHT11
DHT11sẽ trả giá trị nhiệt độ và độ ẩm về dưới dạng 5 byte. Trong đó:
Byte 1: giá trị phần nguyên của độ ẩm (RH%)
Byte 2: giá trị phần thập phân của độ ẩm (RH%)
Byte 3: giá trị phần nguyên của nhiệt độ (TC)
Byte 4 : giá trị phần thập phân của nhiệt độ (TC)
Byte 5 : kiểm tra tổng.
Nếu Byte 5 = (8 bit) (Byte1 +Byte2 +Byte3 + Byte4) thì giá trị độ ẩm và
nhiệt độ là chính xác, nếu sai thì kết quả đo không có nghĩa.
Đọc dữ liệu:
Sau khi giao tiếp được với DHT11, DHT11sẽ gửi liên tiếp 40 bit 0 hoặc 1 về MCU,
tương ứng chia thành 5 byte kết quả của Nhiệt độ và độ ẩm.

21
Hình 2.9. Tín hiệu bit 0 từ DHT gửi về

Hình 2.10. Tín hiệu bit 1 từ DHT gửi về


Sau khi tín hiệu được đưa về 0, ta đợi chân DATA của MCU được DHT11
kéo lên 1. Nếu chân DATA là 1 trong khoảng 26-28us thì là 0, còn nếu tồn tại 70us
là 1. Do đó trong lập trình ta bắt sườn lên của chân DATA, sau đó delay 50us. Nếu
giá trị đo được là 0 thì ta đọc được bit 0, nếu giá trị đo được là 1 thì giá trị đo được
là 1. Cứ như thế ta đọc các bit tiếp theo.

2.5. Module WIFI ESP8266

ESP8266 là một chip tích hợp cao, được thiết kế cho nhu cầu của một thế
giới kết nối mới, thế giới Internet of thing (IOT). Nó cung cấp một giải pháp kết nối
mạng Wi-Fi đầy đủ và khép kín, cho phép nó có thể lưu trữ các ứng dụng hoặc để
giảm tải tất cả các chức năng kết nối mạng Wi-Fi từ một bộ xử lý ứng dụng.

22
ESP8266 có xử lý và khả năng lưu trữ mạnh mẽ cho phép nó được tích hợp
với các bộ cảm biến, vi điều khiển và các thiết bị ứng dụng cụ thể khác thông qua
GPIOs với một chi phí tối thiểu và một PCB tối thiểu.

Hình 2.11. Mobule wifi 8266

Tính năng, đặc điểm:

 chuẩn truyền thông 802.11 b / g / n

 Wi-Fi Direct (P2P), mềm-AP

 Tích hợp giao thức TCP / IP stack

 Tích hợp TR switch, balun, LNA, bộ khuếch đại quyền lực và phù hợp với
mạng

 PLLs tích hợp, điều chỉnh, DCXO và các đơn vị quản lý điện năng

 Công suất đầu ra 19.5dBm trong chế độ 802.11b

 Power xuống dòng rò của <10uA

 Bộ nhớ 1MB flash

 Tích hợp công suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử
lý ứng dụng.

 SDIO 1.1 / 2.0, SPI, UART

 STBC, 1 × 1 MIMO, 2 × 1 MIMO

 A-MPDU & A-MSDU tập & 0.4ms khoảng bảo vệ


23
 Thời gian thức dậy và truyền tải các gói dữ liệu trong <2ms

 Công suất dòng điện chế độ chờ <1.0mW (DTIM3)

2.6. Cảm biến ánh sáng (Tsl 2561)

Cảm biến cường độ ánh sáng (lux) TSL2561 được sử dụng để đo cường
độ ánh sáng thường, hồng ngoại theo đơn vị lux với độ ổn định và độ chính xác cao,
càm biến có ADC nội và bộ tiền xử lý nên giá trị được trả ra là giá trị trực tiếp
cường độ ánh sáng lux mà không phải qua bất kỳ xử lý hay tính toán nào thông qua
giao tiếp I2C .

Thông số:

 IC chính: TSL2561
 Nguồn: 3.3~5VDC
 Dòng điện tiêu thụ: 0.6mA
 Đo được cường độ ánh sáng thường và hồng ngoại (IR).
 Giao tiếp: I2C mức TTL 3.3~5VDC
 Khoảng đo: 0.1 ~ 40.000 Lux
 Kích cỡ: 20 x 14mm

Hình 2.12. Cảm biến ánh sáng Tsl2561

24
2.7.1. Giải pháp thiết kế Node con

2.7.1.1. Sơ đồ ghép nối phần cứng

Hình 2.13. Sơ đồ ghép nối phần cứng

Sơ đồ khối ghép nối phấn cứng Node con bao gồm có 4 khối chức năng:

Khối 1: Khối nguồn

Khối nguồn có nhiệm vụ chính là cung cấp nguồn điện cho toàn bộ mạch
điều khiển bao gồm khối vi điều khiển, khối cảm biến và khối truyền thông.

Khối 2: Khối vi điều khiển MCU

Khối vi điều khiển MCU ARDUINO UNO R3 sẽ nhận tín hiệu từ cảm biến
và gửi bản tin đến GateWay thông qua module truyền thông SX1278.

Khối 3: Khối cảm biến

Khối cảm biến sẽ lắng nghe thay đổi của môi trường, sau đó sẽ gửi tín hiệu
điện áp về vi điều khiển.

Khối 4: Khối truyền thông SX1278

Khối truyền thông có nhiệm vụ gửi các bản tin dữ liệu từ nút con đến
Gateway.

25
2.7.1.2. Lưu đồ thuật toán Node con

Hình 2.14. Lưu đồ thuật toán Node con

Giải thích lưu đồ thuật toán:

Sau khi cấp nguồn cho Node con, vi điều khiển sẽ thực hiện cấu hình các
tham số và cấu hình hệ thống. Sau đó thực hiện đọc giá trị các cảm biến, nếu nhận
giá trị các cảm biến thành công sẽ tiến hành truyền dữ liệu về GateWay. Quá trình
này lặp lại đọc dữ liệu cảm biến.

26
2.7.1.3. Sơ đồ nguyên lí thiết kế phần cứng

Hình 2.15. Sơ đồ ghép nối Node con

2.7.2 Giải pháp thiết kế GateWay

2.7.2.1 Sơ đồ ghép nối phần cứng

Hình 2.16. Sơ đồ ghép nối GateWay

27
Sơ đồ khối ghép nối phấn cứng Node chủ bao gồm có 4 khối chức năng :

Khối 1: Khối nguồn

Khối nguồn có nhiệm vụ chính là cung cấp nguồn điện cho toàn bộ mạch
điều khiển bao gồm khối vi điều khiển, khối cảm biến và khối truyền thông.

Khối 2: Khối vi điều khiển MCU

Khối vi điều khiển MCU Arduino Uno R3 sẽ nhận tín hiệu từ Module truyền
thông SX1278 rồi chuyển đến ESP8266.

Khối 3: Khối truyền thông ESP8266

Gửi dữ liệu từ vi điều khiển lên Server

Khối 4: Khối truyền thông SX1278

Khối truyền thông sẽ SX1278 nhận bản tin dữ liệu từ Node con khi có tín
hiệu dữ liệu từ vi điều khiển.

2.7.2.2. Lưu đồ thuật toán xử lý GateWay

Hình 2.17. Lưu dồ thuật toán xử lý GateWay

Giải thích:

28
Sau khi cấp nguồn cho GateWay, vi điều khiển sẽ tiến hành cấu hình các
tham số, cấu hình hệ thống. Sẽ lắng nghe dữ liệu từ node cảm biến. Sau khi nhận
được dữ liệu từ node cảm biến sẽ tiến hành gửi dữ liệu đó lên database để lưu trữ cơ
sở dữ liệu. Sau đó tiến hành nhận dữ liệu phản hồi điều khiển từ WebServer và điều
khiển các thiết bị ngoại vi.

2.7.2.3. Sơ đồ nguyên lí thiết kế phần cứng

Hình 2.18. Sơ đồ ghép nối GateWay

29
2.8. Kết quả

Hình 2.19. Hình ảnh node con

Hình 2.20. Hình ảnh GateWay

30
CHƯƠNG 3. XÂY DỰNG PHẦN MỀM

3.1 Mã nguồn chương trình

3.1.1 Mã nguồn Node con

NODE 1:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
#include <Wire.h>
#include "TSL2561.h"
TSL2561 tsl(TSL2561_ADDR_FLOAT);
DHT dht(DHTPIN, DHTTYPE, 6);
byte Data[3],NhietDo,DoAm,AnhSang;
void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
if (tsl.begin()) {
dht.begin();
Serial.println("Found sensor");
}
else {
Serial.println("No sensor?");
while (1);
}
tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS);
}
void loop() {
float NhietDo = dht.readHumidity();
float DoAm = dht.readTemperature();

31
uint16_t AnhSang = tsl.getLuminosity(TSL2561_VISIBLE);
if (isnan(NhietDo) || isnan(DoAm) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
String Humidity=String(NhietDo);
String Temperature=String(DoAm);
String Lux=String(AnhSang);
//String
data="id=1&NhietDo="+Humidity+"&(DoAm="+Temperature+"&AnhSang="+Lu
x+"";
// Serial.println(data);
Data[0]=NhietDo;
Data[1]=DoAm;
Data[2]=AnhSang;
Serial.write(Data,3);
delay(2000);

32
NODE 2:

#include <SoftwareSerial.h>

#define M0 6

#define M1 7

#define TX 3

#define RX 5

#define AUX_PIN A0

#define time_out 100

SoftwareSerial Lora(RX, TX);

volatile byte do_am_kk = 25;

volatile byte nhiet_do = 27;

volatile byte do_am_dat = 29;

volatile unsigned int cuong_do_as = 3579;

volatile bool tt_1 = true, tt_2 = true,

tt_3 = true, tt_4 = true, tt_5 = true;

volatile bool tt_lam_kho, tt_m_bom, tt_quat, tt_che, tt_phan;

volatile bool tt_tx = false, tt_nh = false;

volatile uint8_t yc = 9, len;

volatile uint8_t data[6];

unsigned long time0;

bool AUX_HL;

bool docAUX()

int val = analogRead(AUX_PIN);


33
if (val < 50)

AUX_HL = LOW;

} else {

AUX_HL = HIGH;

return AUX_HL;

void doiAUX()

uint8_t cnt = 0;

while ((docAUX() == LOW) && (cnt++ < time_out))

delay(10);

void xoabd()

while (Lora.available())

Lora.read();

void gui_tt()
34
{

uint8_t tt[6] = {0, tt_1, tt_2, tt_3, tt_4, tt_5};

Serial.println("Done TT.");

doiAUX();

xoabd();

Lora.write(tt, 6);

delay(10);

void gui_data()

byte sang_cao = ((cuong_do_as >> 8) & 0xFF);

byte sang_thap = (cuong_do_as & 0xFF);

uint8_t dt[6] = {1, do_am_kk, nhiet_do, do_am_dat, sang_cao, sang_thap};

Serial.println("Done DATA.");

doiAUX();

xoabd();

Lora.write(dt, 6);

delay(10);

void nhan_data(uint8_t* doc_tu_bd, uint8_t do_dai)

uint8_t idx;

for (idx = 0; idx < do_dai; idx++)

*(doc_tu_bd + idx) = Lora.read();


35
}

void nhan_tt()

nhan_data(data, len);

if (data[0] == 21) {

tt_che = data[1];

tt_m_bom = data[2];

tt_quat = data[3];

tt_lam_kho = data[4];

tt_phan = data[5];

doiAUX();

//xoabd();

Lora.write(37);

doiAUX();

Serial.print(tt_che);

Serial.print(" ");

Serial.print(tt_m_bom);

Serial.print(" ");

Serial.print(tt_quat);

Serial.print(" ");

Serial.print(tt_lam_kho);

Serial.print(" ");

Serial.println(tt_phan);

}
36
}

void setup() {

// put your setup code here, to run once:

pinMode(M0, OUTPUT);

pinMode(M1, OUTPUT);

pinMode(TX, OUTPUT);

pinMode(RX, INPUT);

digitalWrite(M0, LOW);

digitalWrite(M1, LOW);

//pinMode(AUX_PIN, INPUT);

Lora.begin(9600);

Serial.begin(9600);

delay(50);

Serial.println("Bat Dau: ");

delay(50);

xoabd();

time0 = millis();

void loop() {

// put your main code here, to run repeatedly:

while (Lora.available() > 0) {

len = Lora.available();

if (len == 1) {

yc = Lora.read();
37
if (yc == 1) { //1

gui_tt();

doiAUX();

//Serial.println("Done TT!") ;

else if (yc == 2) { //0

gui_data();

doiAUX();

// Serial.println("Done Data!") ;

else if (yc == 3) {

tt_tx = true;

tt_nh = true;

Serial.print("TT_TX: ") ;

Serial.println(tt_tx) ;

doiAUX();

byte b=31;

xoabd();

Lora.write(b);

doiAUX();

delay(10);

//xoabd();

}
38
else if (yc == 4) {

tt_tx = false;

Serial.print("TT_TX: ") ;

Serial.println(tt_tx) ;

doiAUX();

byte t = 34;

//xoabd();

Lora.write(t);

doiAUX();

delay(10);

else if ((len == 6)&&tt_nh) {

nhan_tt();

tt_nh = false;

else Lora.write("lai");

39
3.1.2 Mã nguồn Gateway

#include <ESP8266WiFi.h>

#include <ESP8266HTTPClient.h>

#define Led 2

HTTPClient http;

byte Data[3],NhietDo,DoAm,AnhSang;

void setup(void)

// Khoi dong serial de debug

pinMode(Led,OUTPUT);

Serial.begin(9600);

WiFi.mode(WIFI_STA);

// Ket noi voi WiFi

WiFi.begin("xxx","12345678");

while (WiFi.status() != WL_CONNECTED)

digitalWrite(Led,digitalRead(Led) == HIGH ? LOW : HIGH);

delay(500);

void loop()

//Đọc thông tin về

40
if(Serial.available())

Serial.readBytes(Data,3);

digitalWrite(Led,digitalRead(Led) == HIGH ? LOW : HIGH);

//Tách dữ liệu từ mảng

NhietDo = Data[0];

DoAm = Data[1];

AnhSang = Data[2];

// String chuoi = "Nhiet do: " + String(NhietDo) + " Do am: " + String(DoAm) +
" AnhSang: " + String(AnhSang);

String Data = "http://api.thingspeak.com/update?


api_key=JSIPNSTNZCP6QREK&field1="+String(NhietDo)
+"&field2="+String(DoAm)+"&field3="+String(AnhSang);

http.begin(Data);

int httpCode = http.GET();//Gửi truy vấn

http.end();//Đóng kết nối

3.2 Thingspeak Webserver lưu trữ dữ liệu và giao diện Website người dùng

3.2.1.Truyền thông Internet

Ta thu thập dữ liệu từ KIT, và cần một trang web để có thể theo dõi nó từ xa.
Với ví dụ websever, ta đã sử dụng KIT như một máy chủ web, tuy nhiên ta không thể
làm được gì nhiều với dung lượng Ram của KIT. Vì vậy, bây giờ cần có một công cụ
hỗ trợ để có thể lưu trữ dữ liệu lâu dài và hiển thị dữ liệu một cách trực quan cho người
dùng. Có một số trang web cung cấp máy chủ miễn phí mà ta có thể sử dụng như :
Xilely, 2lemetry, exosite, carritots, grovestream, thingspeak, opennenergymonitor. Ta sẽ
chọn Thingspeak cho đề tài này. Thingspeak dễ dàng đăng ký và dễ dàng sử dụng với
41
người bắt đầu với hệ thống lệnh API đơn giản. Nó có thể lưu trữ được dữ liệu khá
lâu và hiển thị dữ liệu cảm biến bằng đồ thị trực quan.
* Sử dụng Thingspeak:
- Đăng ký một tài khoản tại https://thingspeak.com/users/sign_up, tạo
channel để lưu dữ liệu.
- Sau khi tạo channel, chú ý thông tin quan trọng của channel là API Keys
(quyền đọc/ghi dữ liệu).
- Gửi dữ liệu lên Thingspeak sau khi chạy code, Thingspeak sẽ nhận được
data .

3.2.2.Giao diện người dùng

3.2.2.1. Hình ảnh trang chủ

Hình 3.0. Giao diện trang chủ

42
3.2.2.2. Hình ảnh giao diện đăng nhập

Hình 3.1. Giao diện đăng nhập

3.2.2.3. Hình ảnh giao diện người dùng

Hình 3.2. Giao diện hiển thị dữ liệu

3.2.3. Lưu đồ thuật toán

Lưu đồ thuật toán :

43
Hình 3.3. Lưu đồ thuật toán
Giải thích lưu đồ thuật toán :
Sau khi cấp nguồn và nạp chương trình cho vi điều khiển thành công. Vi điều
khiển sẽ tiến hành cấu hình Ethernet kết nối internet, sau khi kết nối internet thành
công vi điều khiên sẽ tiến hành gửi dữ liệu lên Webserver thông qua chuẩn truyền
thông. Qúa trình cứ như thế lặp đi lặp lại.

44
KẾT LUẬN

45
TÀI LIỆU THAM KHẢO

[1]. http://arduino.vn/
[2]. https://cdn-shop.adafruit.com/datasheets/TSL2561.pdf

[3]. http://cem.gov.vn/Portals/0/2016/TinBai/Chuong%205.pdf

[4]. https://toc.123doc.org/document/1004260-hinh-3-2-cam-bien-nhiet-
do-do-am-dht11.htm

[5]. http://www.semtech.com/images/datasheet/sx1276_77_78_79.pdf

46

You might also like