Đồ án Mạng cảm biến không dây dùng Module Lora SX1278 (UART) , Truyền nhận đọc nhiệt độ từ cảm biến và điều khiển thiết bị (Cụ thể là xe điều khiển) Với tối thiểu 3 node (1 Node đọc nhiệt độ và 1 node điều khiển) Có code mẫu và sơ đồ mạch
Trang 1Thiết kế mạng cảm biến không dây dùng module lora
1) TÓM TẮT
Đồ án thực hiện nhằm mục tiêu thiết kế được ứng dụng mạng cảm biến không dây dùngmodule lora Lợi ích của việc sử dụng module lora không dây là có thể truyền dữ liệu vớikhoả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ếtkiệm năng lượng tiêu thụ khi truyền/nhận dữ liệu ít tốn sức người, tiết kiệm thời gian Đồ
án sử dụng chip SX1278 của hãng Semtech (hoạt động ở tần số 410 – 441 Mhz) Thựchiện thiết kế một hệ thống gồm 2 phần chính: Node và server Node (arduino) thu thậpcác thông số nhiệt độ từ cảm biến LM35 và gửi về server để quản lý thông qua công nghệlora, node và server cùng xử lý 2 tác vụ là truyền và nhận gói tin Node thì truyền (phảnhồi) khi đã nhận được gói tin từ server Server thì thực hiện việc gửi lệnh và nhận dữ liệuphản hồi từ client (tại đây ta có thể làm mọi điều với dữ liệu nhận được) Cùng với sự tìmtòi, học hỏi không ngừng của nhóm để tạo thành một khối có chức năng điều khiển vàthực hiện lệnh truyền nhận được giữa các client với server Kết quả nghiên cứu là môhình có thể thực hiện lệnh từ xa truyền nhận theo ý người dùng muốn mà ở đây cụ thể làtruyền nhận giữa các client và server với nhau thông qua việc điều khiển bằng các button(nút nhấn) và quan sát các kết quả trả về thông qua trình theo dõi serial (serial monitor)của trình biên dịch Arduino IDE hoặc cũng có thể thực hiện gửi lệnh từ chính cửa sổ này
Đồ án đạt yêu cầu thiết kế ứng dụng mạng cảm biến không dây dùng module LoRa đểđọc giá trị cảm biến từ xa
Từ khóa: Module lora, mạng cảm biến không dây, iot
ABSTRACT
The project aims to design a wireless sensor network application using the module lora.The benefit of using the wireless module lora is that it can transmit data at distances up tokilometers without the need for power amplifiers, thereby saving energy consumptionwhen transmitting / receiving data, less labor-intensive, saving time This project uses
Trang 2Semtech SX1278 chip (operating at frequencies 410 - 441 Mhz).The implementation of asystem design consists of two main parts: Node and server The node (arduino) collectstemperature parameters from the LM35 sensor and sends it to the server to managethrough the lora technology, the node and the server together handle the two tasks oftransmitting and receiving packets The node transmits (responds) when the packet hasbeen received from the server The server sends the command and receives response datafrom clients (here we can do everything with the data received) My group has designed
a block that controls and executes commands received between clients and the server.The research result is that the model can execute remote commands at the discretion ofthe user (namely, transmitting between clients and servers together through controlbuttons) and observing the returned results via the Serial Monitor of the Arduino IDEcompiler, or you can also send commands from this window This project meets therequirements of designing a wireless sensor network using module lora to read remotesensor values
Keywords: Module lora, wireless sensor network, iot
Title: Wireless sensor network design uses lora module
2) GIỚI THIỆU
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à saunà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ôngsuấ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 với battery trong thời gian dài trước khi cần thay pin
Trang 3Nguyên lý hoạt động của LoRa ra sao?
LoRa sử dụng kỹ thuật điều chế gọi là Chirp Spread Spectrum Có thể hiểu nôm nanguyê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ếptụ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 đổitheo 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á 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
Theo Semtech công bố thì nguyên lý này giúp giảm độ phức tạp và độ chính xác cần thiếtcủa mạch nhận để có thể giải mã và điều chế lại dữ liệu; hơn nữa LoRa không cần côngsuất phát lớn mà vẫn có thể truyền xa vì tín hiệu Lora có thể được nhận ở khoảng cách xangay cả độ mạnh tín hiệu thấp hơn cả nhiễu môi trường xung quanh
Băng tần làm việc của LoRa từ 430MHz đến 915MHz cho từng khu vực khác nhau trênthế giới:
430MHz cho châu Á
780MHz cho Trung Quốc
433MHz hoặc 866MHz cho châu Âu
Trang 4Cá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 trongkhô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
Lý do thực hiện đề tài: Nhằm làm quen với công nghệ truyền từ xa và ứng dụng được
một số các chức năng của module lora để có thể phát triển mở rộng ra các ứng dụng từ đó
áp dụng thực tế vào cuộc sống hằng ngày
Nghiên cứu liên quan mạng cảm biến không dây dùng module: Có thể phát triển thêm
để ứng dụng vào hệ thống tưới cây thông minh, báo cháy thông minh, điều khiển tự động
từ xa, ngôi nhà thông minh, iot…
Kết quả mong muốn: Truyền nhận giữa các Node và Server thuận lợi (không có lỗi
ngoài ý muốn), phát triển thêm việc ứng dụng lora vào trong việc điều khiển xe mô hìnhnhằm có thể giúp việc quản lý vị trí của các Node một cách tự động
Các bước thực hiện:
+ Tìm hiểu công nghệ Lora và các linh kiện cần thiết sử dụng trong đề tài
Trang 5+ Tham khảo tài liệu (Datasheet, Internet,… )
+ Hỏi giáo viên hướng dẫn về những khó khăn gặp phải trong quá trình làm đồ án
+ Thiết kế giải thuật, phần cứng của Node và Server
+ Sau khi thực hiện truyền nhận được giữa hai Module thì tiến hành đọc cảm biến vàhoàn thành đồ án
+ Đưa ra được hướng phát triển và tài liệu tham khảo
Tài liệu tham khảo:
http://modtronix.com/prod/components/wireless/sx1276.pdf
hop-voi-arduino
3.1.1) Kit Arduino Nano và Kit Arduino Uno R3
Giới thiệu tổng quan:
Board Arduino Nano có cấu tạo, số lượng chân vào ra là tương tự như board ArduinoUno tuy nhiên đã được tối giản về kích thước cho tiện sử dụng hơn Do được tối giản rấtnhiều về kích thước nên Arduino Nano chỉ được nạp code và cung cấp điện bằng duynhất 1 cổng mini USB
Trang 6Board Arduino Nano
Thông số kĩ thuật chi tiết:
+ Điện áp đầu vào (khuyến nghị) 7-12 V
+ Điện áp đầu vào (giới hạn) 6-20 V
+ Chân vào/ra số 14 (6 chân có khả năng xuất ra tín hiệu PWM)
+ Dòng điện mỗi chân vào/ra 40 mA
2 KB dùng để nạp bootloader
3.1.2) Arduino IDE:
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợi thế choArduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm Môi trường lập trình
Trang 7đơn giản dễ sử dụng, ngôn ngữ lập trình dễ hiểu và dựa trên nền tảng C/C++ rất quenthuộc với người làm kỹ thuật Và quan trọng là số lượng thư viện code được viết sẵn vàchia sẻ bởi cộng đồng nguồn mở là cực kỳ lớn.
Giao diện phần mềm Arduino IDE.
3.1.3) Module Lora SX1278 (UART):
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 ModuleLora này đạt được khoảng 3000m Module này có cơ chế FEC truyền lại khi báo lỗitruyề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
Trang 8Module có 4 chế độ hoạt động với 4 mode truyền khác nhau Đặc biệt có thể ứng dụngvà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.
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.5 - 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
Trang 9-Độ dài dữ liệu truyền và nhận là: 58 Byte / gói tin
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
Robot thông minh
Quan trắc môi trường
Hệ thống thu thập dữ liệu tự động
Module Lora SX1278
Chi tiết chức năng chân AUX:
- Chân AUX có thể được sử dụng để hiển thị quá trình truyền nhận dữ liệu khôngdây hoặc quá trình khởi động của module
Tín hiệu AUX báo hiệu hoạt động của module
Trang 10Khi 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ềnserial 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.
3.1.4) Cảm biến nhiệt độ LM35
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của
nó tỉ lệ tuyến tính với nhiệt độ thang Celsius Chúng không yêu cầu cân chỉnh ngoài vìvốn chúng đã được cân chỉnh
Đặc điểm chính của cảm biến LM35 :
- Điện áp đầu vào từ 4V đến 30V
- Độ phân giải điện áp đầu ra là 10mV/˚C
Trang 11- Độ chính xác cao ở 25 ˚C là 0.5˚C
- Trở kháng đầu ra thấp 0.1 cho 1mA tải
Dải nhiệt độ đo được của LM35 là từ -55˚C đến 150˚C với các mức điện áp ra khácnhau Xét một số mức điện áp sau :
- Nhiệt độ 55˚C điện áp đẩu ra -550mV
- Nhiệt độ 25˚C điện áp đầu ra 250mV
- Nhiệt độ 150˚C điện áp đầu ra 1500mV
Tùy theo cách mắc của LM35 để ta đo các giải nhiệt độ phù hợp Đối với hệ thống nàythì đo từ 0˚C đến 150˚C
3.2) Giải pháp thiết kế Node con (client):
Sơ đồ khối ghép nối phần cứng:
Sơ đồ khối Node con Khối 1: Khối nguồn
Trang 12Khố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 baogồm khối vi điều khiể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 Server 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ẽ nhận thay đổi của môi trường, sau đó sẽ gửi tín hiệu điện áp về vi điềukhiển
Khối 4: Khối truyền thông
Khối truyền thông có nhiệm vụ gửi các gói tin dữ liệu từ nút con đến Server
Lưu đồ thuật toán Node con
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ệncấ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 vàđợi nhận lệnh từ Server Qúa trình này lặp lại liên tục
Trang 13Sơ đồ nguyên lí thiết kế phần cứng
Sơ đồ nguyên lý Node con
3.3) Giải pháp thiết kế Server:
Sơ đồ khối ghép nối phần cứng:
Trang 14Sơ đồ khối Server
Khối 1: Khối nguồn
Khối 2: Khối vi điều khiển MCU
Khối 3: Khối cảm biến
Khối 4: Khối truyền thông
Lưu đồ thuật toán Server:
Lưu đồ thuật toán Server
Giải thích lưu đồ thuật toán: Sau khi cấp nguồn cho Server, vi điều khiển sẽ thực hiện cấuhình các tham số và cấu hình hệ thống Sau đó thực hiện đợi lệnh, khi có lệnh thì nhận vàkiểm tra lệnh để gửi cho từng Node con thực thi (Với Lệnh Auto thì gửi cho toàn Chanel)
và nhận các giá trị tương ứng với từng lệnh khác nhau từ Client và quan sát trên Serialmonitor của Arduino IDE
Sơ đồ nguyên lí thiết kế phần cứng
Trang 15Sơ đồ nguyên lý Server
3.5) CÁC DẠNG GỬI GÓI TIN TRONG LORA THÔNG DỤNG:
3.5.1) Theo Kiểu Giao Thức TCP/IP:
Giao thức TCP/IP hoạt động như thế nào?
TCP/IP là sự kết hợp của hai giao thức riêng biệt: Giao thức kiểm soát truyền tin (TCP) và giao thức Internet (IP) Giao thức Internet cho phép các gói được gửi qua mạng; Nó cho biết các gói tin được gửi đi đâu và làm thế nào để đến đó IP có một phương thức cho phép bất kỳ máy tính nào trên Internet chuyển tiếp gói tin tới một máy tính khác thông qua một hoặc nhiều khoảng (chuyển tiếp) gần với người nhận gói tin
Giao thức điều khiển truyền dẫn đảm bảo việc truyền dữ liệu đáng tin cậy qua các mạng kết nối Internet TCP kiểm tra các gói dữ liệu xem có lỗi không và gửi (ACK) yêu cầu truyền lại nếu
có lỗi được tìm thấy.
Được áp dụng trong đồ án khi gửi các lệnh đơn (Hoặc khi kiểm tra kết nối) thì sẽ đợi ACK, nếu Server nhận được ACK thì sẽ làm tiếp việc khác Nếu như hết Timeout mà không nhận được ACK thì ta sẽ gửi lại (Hoặc không).
Giao thức TCP đảm bảo được việc không bị mất gói tin (Được áp dụng trong những trường hợp muốn đảm bảo việc truyền nhận gói tin chính xác 100%)
Trang 163.5.2) Theo Kiểu Giao Thức UDP:
Giao thức UDP giống với TCP nhưng UDP chỉ gửi gói tin mà không quan tâm quá trình gửi (nhận)
Dễ gây mất gói tin, nhưng phù hợp khi ta cần gửi nhiều lệnh, liên tục mà không muốn đợi Timeout (Như khi gửi lệnh điều khiển)
Trang 18uint8_t cnt = 0;
uint8_t data_buf[100], data_len;
while((ReadAUX()==LOW) && (cnt++<TIME_OUT_CNT))
===========================================-{
static MODE_TYPE pre_mode = MODE_INIT;
Trang 21RET_STATUS STATUS = RET_SUCCESS;
uint8_t Readcnt, idx;
Trang 22RET_STATUS STATUS = RET_SUCCESS;
//1 read UART buffer
cleanUARTBuf();
Trang 23Serial.print(" CHAN: "); Serial.println(pCFG->CHAN, HEX); }
return STATUS;
}
RET_STATUS Read_module_version(struct MVerstruct* MVer)
{
RET_STATUS STATUS = RET_SUCCESS;
//1 read UART buffer
Trang 24if(STATUS == RET_SUCCESS)
{
Serial.print(" HEAD: 0x"); Serial.println(MVer->HEAD, HEX); Serial.print(" Model: 0x"); Serial.println(MVer->Model, HEX); Serial.print(" Version: 0x"); Serial.println(MVer->Version, HEX); Serial.print(" features: 0x"); Serial.println(MVer->features, HEX); }
RET_STATUS STATUS = RET_SUCCESS;
Serial.print("SleepModeCmd: 0x"); Serial.println(CMD, HEX); WaitAUX_H();
SwitchMode(MODE_3_SLEEP);
switch (CMD)
Trang 29struct MVerstruct MVer;
STATUS = SleepModeCmd(R_MODULE_VERSION, (void* )&MVer);
// Mode 0 | normal operation
Trang 30Serial.println("Setup init OK!!");
Trang 33#define TRSM_TT_MODE 0x00 /*Transparent Transmission*/
#define TRSM_FP_MODE 0x01 /*Fixed-point transmission mode*/
Trang 34uint8_t air_bps : 3; //bit 0-2
uint8_t uart_bps: 3; //bit 3-5
uint8_t uart_fmt: 2; //bit 6-7
};
struct OPTIONstruct {
uint8_t tsmt_pwr : 2; //bit 0-1
uint8_t enFWC : 1; //bit 2
uint8_t wakeup_time : 3; //bit 3-5
uint8_t drive_mode : 1; //bit 6
uint8_t trsm_mode : 1; //bit 7
Trang 35struct OPTIONstruct OPTION_bits;
Tóm tắt kết quả đề tài: Nhóm đã truyền nhận nhiệt độ môi trường giữa các Node và
Server với nhau, đã hạn chế được việc mất mác gói tin bằng việc thêm các bit kiểm travào trong gói tin, cũng như kiểm tra sự sai lệch về kích thước cho các gói tin, ứng dụng
Trang 36được lora vào trong điều khiển mô hình xe để tiện cho viêc quan sát các thông số cảmbiến trả về.
Hình ảnh Server Hình ảnh Node con
Trang 37Hình ảnh phát triển của đề tài (Node con)
Tóm tắt kết quả đề tài đã đạt được yêu cầu đề ra thiết kế mạng cảm biến không dây dùngmodule lora truyền nhận được nhiệt độ trong thực tế
Vị trí Khoảng cách Số lần Test Thời gian nhận
được gói tin Tại môi trường ít
Từ lầu 3
(Trong phòng kín
Khoảng trên 200m 3 lần Khoảng vài giây
(Thỉnh thoảng