Đồ á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
Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Thiết kế mạng cảm biến không dây dùng module lora 1) TÓM TẮT Đồ án thực nhằm mục tiêu thiết kế ứng dụng mạng cảm biến khơng dây dùng module lora Lợi ích việc sử dụng module lora khơng dây truyền liệu với khoảng cách lên hàng km mà không cần mạch khuếch đại cơng suất từ giúp tiết kiệm lượng tiêu thụ truyền/nhận liệu tốn sức người, tiết kiệm thời gian Đồ án sử dụng chip SX1278 hãng Semtech (hoạt động tần số 410 – 441 Mhz) Thực thiết kế hệ thống gồm phần chính: Node server Node (arduino) thu thập thông số nhiệt độ từ cảm biến LM35 gửi server để quản lý thông qua công nghệ lora, node server xử lý tác vụ truyền nhận gói tin Node truyền (phản hồi) nhận gói tin từ server Server thực việc gửi lệnh nhận liệu phản hồi từ client (tại ta làm điều với liệu nhận được) Cùng với tìm tòi, học hỏi khơng ngừng nhóm để tạo thành khối có chức điều khiển thực lệnh truyền nhận client với server Kết nghiên cứu mơ hình thực lệnh từ xa truyền nhận theo ý người dùng muốn mà cụ thể truyền nhận client server với thông qua việc điều khiển button (nút nhấn) quan sát kết trả thơng qua trình theo dõi serial (serial monitor) trình biên dịch Arduino IDE thực gửi lệnh từ cửa sổ Đồ á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 to kilometers without the need for power amplifiers, thereby saving energy consumption when transmitting / receiving data, less labor-intensive, saving time This project uses Semtech SX1278 chip (operating at frequencies 410 - 441 Mhz).The implementation of a system design consists of two main parts: Node and server The node (arduino) collects Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ temperature parameters from the LM35 sensor and sends it to the server to manage through the lora technology, the node and the server together handle the two tasks of transmitting and receiving packets The node transmits (responds) when the packet has been received from the server The server sends the command and receives response data from clients (here we can 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 of the user (namely, transmitting between clients and servers together through control buttons) and observing the returned results via the Serial Monitor of the Arduino IDE compiler, or you can also send commands from this window This project meets the requirements of designing a wireless sensor network using module lora to read remote sensor values Keywords: Module lora, wireless sensor network, iot Title: Wireless sensor network design uses lora module 2) GIỚI THIỆU LoRa viết tắt Long Range Radio nghiên cứu phát triển Cycleo sau mua lại công ty Semtech năm 2012 Với cơng nghệ này, truyền liệu với khoảng cách lên hàng km mà khơng cần mạch khuếch đại cơng suất; từ giúp tiết kiệm lượng tiêu thụ truyền/nhận liệu Do đó, LoRa áp dụng rộng rãi ứng dụng thu thập liệu sensor network sensor node gửi giá trị đo đạc trung tâm cách xa hàng km hoạt động với battery thời gian dài trước cần thay pin Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Nguyên lý hoạt động LoRa sao? LoRa sử dụng kỹ thuật điều chế gọi Chirp Spread Spectrum Có thể hiểu nơm na ngun lý liệu băm xung cao tần để tạo tín hiệu có dãy tần số cao tần số liệu gốc (cái gọi chipped); sau tín hiệu cao tần tiếp tục mã hoá theo chuỗi chirp signal (là tín hiệu hình sin có tần số thay đổi theo thời gian; có loại chirp signal up-chirp có tần số tăng theo thời gian downchirp có tần số giảm theo thời gian; việc mã hoá theo nguyên tắc bit sử dụng upchirp, bit sử dụng down-chirp) trước truyền anten để gửi Theo Semtech cơng bố ngun lý giúp giảm độ phức tạp độ xác cần thiết mạch nhận để giải mã điều chế lại liệu; LoRa không cần cơng suất phát lớn mà truyền xa tín hiệu Lora nhận khoảng cách xa độ mạnh tín hiệu thấp nhiễu môi trường xung quanh Băng tần làm việc LoRa từ 430MHz đến 915MHz cho khu vực khác giới: 430MHz cho châu Á 780MHz cho Trung Quốc 433MHz 866MHz cho châu Âu 915MHz cho USA Nhờ sử dụng chirp signal mà tín hiệu LoRa với chirp rate khác hoạt động khu vực mà không gây nhiễu cho Điều cho phép nhiều thiết bị LoRa trao đổi liệu nhiều kênh đồng thời (mỗi kênh cho chirprate) Radio packet LoRa hình sau: Các liệu radio packet LoRa, bao gồm: Preamble: Là chuỗi binary để nhận detect tín hiệu LoRa packet khơng khí Header: chứa thơng tin size Payload có PayloadCRC hay không Giá trị Header check CRC kèm theo Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Payload: liệu ứng dụng truyền qua LoRa Payload: giá trị CRC Payload Nếu có PayloadCRC, LoRa chip tự kiểm tra liệu Payload báo lên CRC OK hay không Lý thực đề tài: Nhằm làm quen với công nghệ truyền từ xa ứng dụng số chức module lora để phát triển mở rộng ứng dụng từ áp dụng thực tế vào số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 thông minh, báo cháy thông minh, điều khiển tự động từ xa, nhà thông minh, iot… Kết mong muốn: Truyền nhận Node Server thuận lợi (khơng có lỗi ngồi ý muốn), phát triển thêm việc ứng dụng lora vào việc điều khiển xe mơ hình nhằm giúp việc quản lý vị trí Node cách tự động Các bước thực hiện: + Tìm hiểu công nghệ Lora linh kiện cần thiết sử dụng đề tài + Tham khảo tài liệu (Datasheet, Internet,… ) + Hỏi giáo viên hướng dẫn khó khăn gặp phải q trình làm đồ án + Thiết kế giải thuật, phần cứng Node Server + Sau thực truyền nhận hai Module tiến hành đọc cảm biến hồn thành đồ án + Đưa hướng phát triển tài liệu tham khảo Tài liệu tham khảo: http://modtronix.com/prod/components/wireless/sx1276.pdf http://arduino.vn/bai-viet/277-song-vo-tuyen-la-gi-va-nhung-suc-manh-cua-no-khi-kethop-voi-arduino http://htelectronics.vn/gioi-thieu-cong-nghe-truyen-du-lieu-lora/ https://github.com/ http://www.nke-watteco.com/gamme/lora-range/ 3) PHƯƠNG PHÁP THỰC HIỆN Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ 3.1) Thiết kế phần cứng: 3.1.1) Kit Arduino Nano 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 tương tự board Arduino Uno nhiên tối giản kích thước cho tiện sử dụng Do tối giản nhiều kích thước nên Arduino Nano nạp code cung cấp điện cổng mini USB Board Arduino Nano Thông số kĩ thuật chi tiết: + Vi xử lý + Điện áp hoạt động + Điện áp đầu vào (khuyến nghị) + Điện áp đầu vào (giới hạn) + Chân vào/ra số + Chân vào tương tự + Dòng điện chân vào/ra + Bộ nhớ ATmega328 (phiên v3.0) 5V 7-12 V 6-20 V 14 (6 chân có khả xuất tín hiệu PWM) 40 mA 16 KB (ATmega168), 32 KB (ATmega328) + SRAM + EEPROM + Xung nhịp KB dùng để nạp bootloader KB (ATmega168) KB (ATmega328) 512 bytes (ATmega168) KB (ATmega328) 16 MHz 3.1.2) Arduino IDE: Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính thơng dụng mang lại nhiều lợi cho Arduino, nhiên sức mạnh thực Arduino nằm phần mềm Mơi trường lập trình đơn giản dễ sử dụng, ngơn ngữ lập trình dễ hiểu dựa tảng C/C++ quen thuộc với người làm kỹ thuật Và quan trọng số lượng thư viện code viết sẵn chia sẻ cộng đồng nguồn mở lớn Giao diện phần mềm Arduino IDE 3.1.3) Module Lora SX1278 (UART): SX1278 module truyền thơng có cơng suất 100mw Nó làm việc dải 433MHZ sử dụng cổng Serial để gửi nhận liệu Khoảng cách truyền tối đa lý tưởng Module Lora đạt khoảng 3000m Module có chế FEC truyền lại báo lỗi Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ truyền tin Khi truyền tin liệu mã hóa giải mã nhằm cải thiện độ tin cậy Module có chế độ hoạt động với mode truyền khác Đặc biệt ứng dụng vào hệ thống yêu cầu điện tiêu thụ thấp Khi chế độ power saving mode Các chế độ truyền nhận 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 -Công suất: 20dbm (100mW) -Khoảng cách truyền tối đa điều kiện lý tưởng: 3000m -Tốc độ truyền: 0.3 - 19.2 Kbps ( mặc định 2.4 Kbps) -512bytes đệm -Hỗ trợ 65536 địa cấu hình có 32 kênh -Kích thước: 21x36mm -Độ dài liệu truyền 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 Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Nhà thông minh Robot thông minh Quan trắc môi trường Hệ thống thu thập liệu tự động Module Lora SX1278 Chi tiết chức chân AUX: - Chân AUX sử dụng để hiển thị q trình truyền nhận liệu khơng dây trình khởi động module Tín hiệu AUX báo hiệu hoạt động module Khi có tín hiệu vào TXD tín hiệu AUX xuất thấp báo hiệu có tín hiệu truyền serial Khi Serial gửi xong AUX=1 tức trở lại mức cao lúc chờ liệu ban đầu 3.1.4) Cảm biến nhiệt độ LM35 Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Cảm biến LM35 cảm biến nhiệt mạch tích hợp xác cao mà điện áp đầu tỉ lệ tuyến tính với nhiệt độ thang Celsius Chúng khơng u cầu cân chỉnh ngồi vốn chúng cân chỉnh Cảm biến LM35 có chân: + Chân nguồn VCC + Chân đầu Vout (chân tương tự) + Chân nối đất GND Hình ảnh cảm biến LM35 Đặc điểm cảm biến LM35 : - Điện áp đầu vào từ 4V đến 30V - Độ phân giải điện áp đầu 10mV/˚C - Độ xác cao 25 ˚C 0.5˚C - Trở kháng đầu thấp 0.1 cho 1mA tải Dải nhiệt độ đo LM35 từ -55˚C đến 150˚C với mức điện áp khác Xét số mức điện áp sau : - Nhiệt độ 55˚C điện áp đẩu -550mV - Nhiệt độ 25˚C điện áp đầu 250mV - Nhiệt độ 150˚C điện áp đầu 1500mV Tùy theo cách mắc LM35 để ta đo giải nhiệt độ phù hợp Đối với hệ thống đo từ 0˚C đến 150˚C Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ 3.2) Giải pháp thiết kế Node (client): Sơ đồ khối ghép nối phần cứng: Sơ đồ khối Node Khối 1: Khối nguồn Khối nguồn có nhiệm vụ cung cấp nguồn điện cho toàn mạch điều khiển bao gồm khối vi điều khiển 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 nhận tín hiệu từ cảm biến gửi 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 nhận thay đổi mơi trường, sau gửi tín hiệu điện áp vi điều khiển Khối 4: Khối truyền thơng Khối truyền thơng có nhiệm vụ gửi gói tin liệu từ nút đến Server Lưu đồ thuật toán Node Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Serial.print(" Version: 0x"); Serial.println(MVer->Version, HEX); Serial.print(" features: 0x"); Serial.println(MVer->features, HEX); } return RET_SUCCESS; } void Reset_module() { triple_cmd(W_RESET_MODULE); WaitAUX_H(); delay(1000); } RET_STATUS SleepModeCmd(uint8_t CMD, void* pBuff) { RET_STATUS STATUS = RET_SUCCESS; Serial.print("SleepModeCmd: 0x"); Serial.println(CMD, HEX); WaitAUX_H(); SwitchMode(MODE_3_SLEEP); switch (CMD) { case W_CFG_PWR_DWN_SAVE: STATUS = Write_CFG_PDS((struct CFGstruct* )pBuff); break; case R_CFG: STATUS = Read_CFG((struct CFGstruct* )pBuff); break; case W_CFG_PWR_DWN_LOSE: break; case R_MODULE_VERSION: Read_module_version((struct MVerstruct* )pBuff); break; case W_RESET_MODULE: Reset_module(); break; default: Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ return RET_INVALID_PARAM; } WaitAUX_H(); return STATUS; } //=== Sleep mode cmd ================================RET_STATUS SettingModule(struct CFGstruct *pCFG) { RET_STATUS STATUS = RET_SUCCESS; #ifdef Device_A pCFG->ADDH = DEVICE_A_ADDR_H; pCFG->ADDL = DEVICE_A_ADDR_L; #else pCFG->ADDH = DEVICE_B_ADDR_H; pCFG->ADDL = DEVICE_B_ADDR_L; #endif pCFG->OPTION_bits.trsm_mode =TRSM_FP_MODE; pCFG->OPTION_bits.tsmt_pwr = TSMT_PWR_10DB; STATUS = SleepModeCmd(W_CFG_PWR_DWN_SAVE, (void* )pCFG); SleepModeCmd(W_RESET_MODULE, NULL); STATUS = SleepModeCmd(R_CFG, (void* )pCFG); return STATUS; } RET_STATUS ReceiveMsg(uint8_t *pdatabuf, uint8_t *data_len) { RET_STATUS STATUS = RET_SUCCESS; uint8_t idx; SwitchMode(MODE_0_NORMAL); *data_len = softSerial.available(); if (*data_len > 0) { Đồ án kỹ thuật điện tử ĐỒ ÁN KỸ THUẬT ĐIỆN TỬ Serial.print("ReceiveMsg: "); Serial.print(*data_len); Serial.println(" bytes."); for(idx=0;idx