Thiết kế xây dựng mạch thứ hai sử dụng Blue Pill có khả năng nhận các giá trị từ thiết bị thứ nhất thông qua giao thức LoRa sau đó xử lý để hiển thị các giá trị lên LCD.. Với kiến trúc 3
GIỚI THIỆU
Tổng quan
Lĩnh vực nghiên cứu đề tài này tập trung vào việc phân tích và đánh giá các khía cạnh quan trọng liên quan đến chủ đề chính Mục tiêu nghiên cứu nhằm làm rõ các vấn đề cốt lõi và đề xuất giải pháp hiệu quả Từ đó, nhiệm vụ của luận văn sẽ được xác định rõ ràng, nhằm đóng góp vào sự phát triển của lĩnh vực này.
Ngày nay, việc ứng dụng công nghệ, đặc biệt là hệ thống IoT, trong canh tác thủy sản đã trở nên phổ biến Những ưu điểm nổi bật của công nghệ này bao gồm việc tối ưu hóa quy trình nuôi trồng, cải thiện hiệu suất sản xuất và nâng cao chất lượng sản phẩm.
Hệ thống giám sát hiện đại cho phép người dùng dễ dàng theo dõi và quản lý thông tin qua nhiều thiết bị như LCD, điện thoại di động và máy tính Giao diện trực quan giúp việc quan sát trở nên thuận tiện và hiệu quả hơn.
Báo cáo hoạt động: Hệ thông có khả năng lưu trữ các dữ liệu từ có thể đánh giá cải tiến hoạt động nuôi trồng
Khả năng tự động hóa cho phép vận hành và điều khiển các thiết bị ngoại vi một cách dễ dàng, đồng thời đảm bảo phản ứng kịp thời trước những biến đổi bất thường của môi trường.
Các hệ thống IoT mang lại nhiều lợi ích cho canh tác nuôi trồng thủy sản, giúp cải thiện hiệu quả và nâng cao năng suất.
Nhiệm vụ luận văn
Hệ thống được thiết kế bao gồm hai phần: phần đầu tiên thu thập giá trị từ các cảm biến và gửi dữ liệu đến phần thứ hai, nơi thông tin được hiển thị trên màn hình LCD Ngoài ra, hệ thống còn có khả năng truyền dữ liệu lên webserver, giúp người dùng có cái nhìn trực quan về các thông số chất lượng nước Đề tài yêu cầu thực hiện các nhiệm vụ sử dụng Blue Pill, giao thức truyền LoRa giữa hai thiết bị, và xây dựng server trên nền tảng Thingsboard.
Mạch thứ nhất được thiết kế sử dụng Blue Pill, cho phép đọc giá trị từ cảm biến và gửi dữ liệu đến thiết bị thứ hai Bên cạnh đó, mạch còn có khả năng điều khiển tải thông qua relay kết nối.
Mạch thứ hai được thiết kế sử dụng Blue Pill có khả năng nhận dữ liệu từ thiết bị đầu tiên qua giao thức LoRa, sau đó xử lý và hiển thị trên màn hình LCD Bên cạnh đó, mạch còn có thể gửi dữ liệu lên server Thingsboard thông qua module SIM A7670C và giao thức MQTT.
Phát triển xây dựng Thingsboard để có thể theo dõi các thông số chất lượng nước Ngoài ra còn có thể điều khiển relay trực tiếp từ đây
LÝ THUYẾT
Phần cứng
2.1.1 Kit phát triển STM32F103C8T6 Blue Pill
Kit phát triển Blue Pill sử dụng vi điều khiển STM32F103C8T6, một trong những dòng vi điều khiển 32-bit ARM Cortex-M3 của STMicroelectronics Với kiến trúc 32-bit và tốc độ xử lý lên đến 72 MHz, STM32F103C8T6 trở thành chip vi điều khiển phổ biến, được ứng dụng rộng rãi trong các lĩnh vực như thiết bị đo lường, hệ thống điều khiển nhiệt độ, và các thiết bị IoT.
Thông số kĩ thuật bao gồm:
- Vi điều khiển chính: STM32F103C8T6
Điện áp 5VDC được cung cấp qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC thông qua IC nguồn, cung cấp cho Vi điều khiển chính Ngoài ra, có thể cấp trực tiếp 5V hoặc 3.3V vào chân nguồn của kit.
- Dòng cấp vào: 150mA, dòng ra chân IO: 25mA
- Tích hợp sẵn thạch anh 8Mhz
- Tích hợp sẵn thạch anh 32Khz cho các ứng dụng RTC
- Bộ nhớ 64KB Flash, 20KB SRAM, 32 chân GPIO
- Các giao thức: SPI, I2C, UART, USB 2.0 Full speed, Can 2.0B
Hình 2.1 Kit phát triển STM32F103C8T6 Blue Pill
Cảm biến RK500-04 là thiết bị chuyên dụng để đo nồng độ oxy hòa tan trong nước và tích hợp chức năng đo nhiệt độ Với thiết kế chắc chắn, cảm biến này cung cấp dữ liệu oxy hòa tan (DO) chính xác trong một phạm vi rộng, đồng thời giúp tối ưu hóa chi phí bảo trì.
Cảm biến RK500-04 là thiết bị quan trọng trong nhiều lĩnh vực như phân bón hóa học, luyện kim, bảo vệ môi trường, dược phẩm, hóa sinh, thực phẩm và nuôi trồng thủy sản Trong ngành nuôi trồng thủy sản, cảm biến này được sử dụng để theo dõi liên tục lượng oxy hòa tan trong dung dịch, giúp đảm bảo môi trường sống tối ưu cho các loài thủy sản.
RK500-04 được phát triển dựa trên nguyên lý huỳnh quang, mang lại hiệu suất cao qua màng oxy Thiết bị này nổi bật với thời gian đáp ứng ngắn, độ chính xác cao trong phép đo và hiệu suất ổn định, phù hợp cho nhiều ứng dụng công nghiệp.
Thông số kĩ thuật bao gồm:
- Điện áp hoạt động: từ 12V đến 24V
- Công xuất tiêu thụ: nhỏ hơn 0.2W
- Đo nồng độ oxy hòa tan: Khoảng đo 0 – 20mg/L, độ chính xác ±0.5%FS
- Đo nhiệt độ: Khoảng đo 0-60℃, độ chính xác ±0.5℃
- Thời gian đáp ứng: nhỏ hơn 1 giây
- Đầu ra tín hiệu RS485, 4 – 20 mA
- Tiêu chuẩn bảo vệ IP68
- Transmission mode: MODBUS-RTU, Baud rate: 9600bps, Data bits:8, Stop bit:1, Check bit: không
2.1.3 Mạch giao tiếp TTL MAX485 UART
Hình 2.3 Mạch giao tiếp TTL MAX485 UART
Mạch giao tiếp UART TTL to RS485 cho phép chuyển đổi giữa chuẩn giao tiếp UART TTL và RS485, phù hợp cho vi điều khiển và máy tính nhúng Với thiết kế chống nhiễu cao, mạch này còn hỗ trợ kết nối “nóng”, giúp đảm bảo an toàn cho module mà không cần ngắt đường truyền tổng.
- Điện áp hoạt động: 3 - 5VDC
- Điện áp giao tiếp TTL: 3 - 5VDC
- Khoảng cách truyền RS485 có thể lên đến 1km (khuyến nghị sử dụng dưới 800m và dây bus chuyên dụng cho RS485)
2.1.4 Mạch hạ áp DC LM2596 3A
Hình 2.4 Mạch hạ áp DC LM2596 3A
Mạch hạ áp DC LM2596 là một giải pháp nhỏ gọn và hiệu quả, có khả năng giảm điện áp từ 30VDC xuống 1.5VDC với hiệu suất lên đến 92% Sản phẩm này rất phù hợp cho các ứng dụng chia nguồn và cấp điện cho các thiết bị như camera và robot.
- Điện áp đầu vào: Từ 3V đến 30V
- Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V
- Dòng đáp ứng tối đa là 3A
2.1.5 Mạch Thu Phát RF UART Lora EBYTE E32-433T20D
Hình 2.5 Mạch Thu Phát RF UART Lora EBYTE32-433T30D
Mạch thu phát RF UART LoRa sử dụng chip SX1278 của SEMTECH, chuẩn giao tiếp LoRa, mang lại lợi ích tiết kiệm năng lượng và khoảng cách phát siêu xa Với khả năng cấu hình để tạo mạng, mạch này đang được phát triển và ứng dụng rộng rãi trong nghiên cứu IoT Bên cạnh đó, giao tiếp UART giúp kết nối dễ dàng với vi điều khiển hoặc máy tính nhúng.
- Giao tiếp UART Data bits 8, Stop bits 1, Parity none, tốc độ từ 1200 – 115200
- 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)
- 512 bytes bộ đệm, Hỗ trợ 65536 địa chỉ cấu hình
Module 4G LTE-CAT1 TDM-A7670C-LASS là phiên bản mới của Module 4G SIMCOM, đã được trang bị chân và khay sim, phù hợp với các nhà mạng tại Việt Nam Thiết kế thông minh với khe sim và cổng antena sẵn có giúp người dùng dễ dàng và thuận tiện trong quá trình sử dụng.
- Giao tiếp UART Data bits 8, Parity none
- Giao thức hỗ trợ: TCP/IP/IPV4/IPV6/Multi-PDP/FTP/FTPS/HTTP/HTTPS/DNS
Giao tiếp UART (Universal Asynchronous Receiver-Transmitter) là một trong những giao thức truyền thông thiết bị phổ biến nhất, thường được sử dụng để kết nối với các module như Wifi, Bluetooth, Xbee, và đầu đọc thẻ RFID trên Raspberry Pi, Arduino, hoặc các vi điều khiển khác Chuẩn giao tiếp này đã trở thành một phần quan trọng trong nhiều ứng dụng công nghiệp từ trước đến nay.
Giao tiếp UART sử dụng hai dây để truyền và nhận dữ liệu giữa các thiết bị, bao gồm TX (Transmitter) cho việc truyền dữ liệu và RX (Receiver) cho việc nhận dữ liệu Để đồng bộ hóa tốc độ truyền, một đồng hồ được sử dụng, với tốc độ truyền dữ liệu được đo bằng bit mỗi giây (baud rate) Việc đồng bộ đồng hồ giữa hai thiết bị là cần thiết để tránh sự chênh lệch tốc độ truyền dữ liệu.
UART hoạt động với hai chế độ truyền thông chính: đồng bộ và không đồng bộ Trong chế độ đồng bộ, dữ liệu được truyền cùng với tín hiệu clock để đảm bảo sự đồng bộ hóa Ngược lại, trong chế độ không đồng bộ, dữ liệu được truyền mà không cần tín hiệu clock đi kèm.
UART hỗ trợ các tín hiệu điều khiển quan trọng như Start bit, Stop bit và Parity bit Tín hiệu Start bit khởi động chu kỳ truyền thông, trong khi Stop bit đánh dấu sự kết thúc của chu kỳ đó Parity bit được sử dụng để kiểm tra lỗi trong quá trình truyền dữ liệu.
Hình 2.7 Cấu trúc một gói tin UART 2.1.8 Chuẩn giao tiếp RS485
Chuẩn giao tiếp RS485 là một phương thức phổ biến trong ngành công nghiệp và viễn thông, được thiết kế để truyền dữ liệu qua các đường truyền dài và trong môi trường nhiễu cao Với khả năng truyền dữ liệu tốc độ cao, RS485 có thể hoạt động hiệu quả ở khoảng cách lên đến 1200 mét.
Chuẩn giao tiếp RS485 có các đặt tính như:
- Cáp RS485 là chuẩn giao tiếp duy nhất có thể kết nối cùng lúc nhiều máy phát và máy thu trên cùng một hệ thống mạng
- RS485 là một chuẩn giao tiếp điểm điểm, nghĩa là các thiết bị truyền thông phải được kết nối trực tiếp với nhau
- RS485 có tính năng tự động điều chỉnh đường truyền, giúp giữ cho tín hiệu ổn định và chống nhiễu
Công nghệ LoRa (Long Range) do Semtech phát triển là một giao thức không dây tiên tiến, được thiết kế để truyền thông tầm xa với năng lượng thấp LoRa nổi bật với khả năng kết nối hiệu quả các thiết bị địa phương và đảm bảo tính toàn vẹn của dữ liệu Công nghệ này được ứng dụng rộng rãi trong các lĩnh vực Internet of Things (IoT), quản lý tài nguyên và nhiều hệ thống kết nối không dây khác.
Là công nghệ được sử dụng phổ biến hiện nay, LoRa có những đặc điểm sau:
Phần mềm
Modbus là giao thức truyền thông master/slave, phổ biến trong các ứng dụng kiểm soát và giám sát hệ thống điện, dầu khí, xử lý nước, bảo vệ môi trường và tự động hóa công nghiệp.
Giao thức Modbus cho phép truyền thông hiệu quả giữa các thiết bị điều khiển, cảm biến, máy tính và nhiều thiết bị khác qua mạng RS485 Hai loại chính của giao thức Modbus là Modbus RTU và Modbus TCP; trong đó, Modbus RTU sử dụng định dạng dữ liệu nhị phân trên mạng RS485, còn Modbus TCP áp dụng định dạng dữ liệu TCP/IP cho mạng Ethernet.
Modbus RTU là giao thức phổ biến trong các ứng dụng điều khiển và giám sát nhờ vào tính đơn giản và khả năng hoạt động ổn định trong các môi trường khắc nghiệt.
Modbus RTU sử dụng các lệnh cơ bản để thực hiện các thao tác trên các thiết bị Slave, bao gồm lệnh đọc và ghi từ các thanh ghi Mỗi lệnh được truyền qua mạng dưới dạng chuỗi bit và nhận phản hồi tương ứng cũng bằng chuỗi bit.
Cấu trúc của một gói tin Modbus RTU bao gồm:
- Địa chỉ Slave: Đây là địa chỉ của thiết bị nhận hoặc trả lời gói tin Địa chỉ này có thể là một số từ 1 đến 247
- Function code: Function code xác định loại hoạt động được yêu cầu bởi Master
- CRC: Giá trị kiểm tra CRC của gói tin
Hình 2.8 Cấu trúc gói tin Modbus RTU Các Function code phổ biến của Modbus bao gồm:
- Đọc Coil Status (0x01): Đọc trạng thái của các đầu ra coil
- Đọc Input Status (0x02): Đọc trạng thái của các đầu vào disk
- Đọc Holding Registers (0x03): Đọc giá trị của các thanh ghi lưu trữ
- Đọc Input Registers (0x04): Đọc giá trị của các thanh ghi đầu vào
- Ghi Single Coil (0x05): Ghi giá trị cho một đầu ra coil
- Ghi Single Register (0x06): Ghi giá trị cho một thanh ghi lưu trữ
- Ghi Multiple Coils (0x0F): Ghi giá trị cho nhiều đầu ra coil
Ghi nhiều thanh ghi (0x10) cho phép ghi giá trị vào nhiều thanh ghi lưu trữ, với cấu trúc dữ liệu khác nhau tùy thuộc vào việc đối tượng là Master hay Slave.
Thingsboard là nền tảng IoT mã nguồn mở, cho phép giám sát, xử lý và trực quan hóa dữ liệu, cùng với quản lý thiết bị Nền tảng này hỗ trợ các giao thức IoT tiêu chuẩn công nghiệp như MQTT, CoAP và HTTP Với khả năng mở rộng, độ tin cậy và hiệu suất cao, Thingsboard giúp thu thập dữ liệu hiệu quả từ các thiết bị để phục vụ cho việc xử lý và giám sát.
Thingsboard cung cấp một gateway server cho phép giao tiếp với các thiết bị đính kèm, kết hợp với giao diện đồ họa trực quan giúp người dùng dễ dàng quản lý và giám sát các thiết bị IoT Ngoài ra, nền tảng này còn hỗ trợ phát triển ứng dụng tùy chỉnh thông qua các API và plugin mở rộng.
Thingsboard có thể được triển khai linh hoạt trên đám mây hoặc trên các máy chủ riêng tư, cho phép người dùng tùy chỉnh các tùy chọn triển khai để phù hợp với nhu cầu cụ thể của họ.
Với Thingsboard, người dùng có khả năng tiết kiệm thời gian và chi phí khi triển khai hệ thống IoT, đồng thời nâng cao tính linh hoạt và hiệu quả hoạt động của hệ thống.
Hình 2.9 Thingsboard 2.2.3 Giao thức MQTT
MQTT là giao thức nhắn tin dựa trên các tiêu chuẩn, được thiết kế cho giao tiếp máy với máy, đặc biệt trong môi trường IoT Với khả năng truyền và nhận dữ liệu qua mạng hạn chế, MQTT trở thành lựa chọn lý tưởng nhờ tính dễ triển khai và hiệu quả trong giao tiếp dữ liệu Giao thức này hỗ trợ nhắn tin giữa các thiết bị và đám mây, cũng như ngược lại, góp phần làm cho MQTT trở thành tiêu chuẩn hàng đầu trong truyền dữ liệu IoT với nhiều lợi ích nổi bật.
MQTT là giao thức nhẹ và hiệu quả, lý tưởng cho các thiết bị IoT với yêu cầu tài nguyên tối thiểu, cho phép hoạt động trên cả các bộ vi điều khiển nhỏ Thông điệp kiểm soát MQTT có thể chỉ cần tối thiểu hai byte dữ liệu, và tiêu đề thông điệp cũng rất nhỏ, giúp tối ưu hóa băng thông mạng.
Giao thức MQTT có khả năng mở rộng linh hoạt, yêu cầu mã hóa tối thiểu và tiêu thụ năng lượng rất thấp trong quá trình hoạt động Với tính năng tích hợp hỗ trợ giao tiếp với hàng triệu thiết bị IoT, MQTT là giải pháp lý tưởng để kết nối và quản lý một lượng lớn thiết bị một cách hiệu quả.
Độ tin cậy của các thiết bị IoT kết nối qua mạng di động thường gặp vấn đề với băng thông thấp và độ trễ cao MQTT tích hợp các tính năng giúp giảm thời gian kết nối lại với đám mây cho các thiết bị IoT Hơn nữa, MQTT cung cấp ba mức chất lượng dịch vụ khác nhau, đảm bảo độ tin cậy cho các trường hợp sử dụng đa dạng.
MQTT cung cấp tính năng bảo mật mạnh mẽ cho các nhà phát triển, cho phép họ mã hóa thông điệp và xác thực thiết bị cũng như người dùng thông qua các giao thức hiện đại như OAuth, TLS 1.3 và chứng chỉ do khách hàng quản lý.
- Hỗ trợ tốt: Một số ngôn ngữ như Python có hỗ trợ rộng rãi cho việc triển khai giao thức MQTT
Do đó, các nhà phát triển có thể nhanh chóng triển khai giao thức này mà ít cần phải viết mã trong bất kỳ loại ứng dụng nào
Ngôn ngữ lập trình C, do Dennis M Ritchie phát triển vào năm 1972 tại phòng thí nghiệm Bell của AT&T, là một ngôn ngữ máy tính độc lập với hệ thống máy tính và hệ điều hành C có mối liên hệ chặt chẽ với hệ thống UNIX, cho phép lập trình viên phát triển phần mềm linh hoạt và hiệu quả.
THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG
Mạch đọc giá trị cảm biến
3.1.2 Danh sách linh kiện và module chính
STT Tên Số lượng Ghi chú
1 Kit phát triển Blue Pill 1
4 Mạch hạ áp DC LM2596 3A 1
Hình 3.1 Sơ đồ khối mạch đọc cảm biến
5 Mạch Thu Phát RF UART Lora EBYTE E32-
Bảng 3.1 Danh sách linh kiện và module chính của mạch đọc cảm biến 3.1.3 Sơ đồ nguyên lý
Hình 3.2 Sơ đồ nguyên lý mạch đọc cảm biến 3.1.4 Chức năng của từng khối chức năng
- Kit Blue Pill đóng vai trò là bộ xử lý trung tâm
- Khối nguồn: Cung cấp nguồn điện ổn định cho mạch Nguồn 5V với các module và nguồn 12V đối với cảm biến
Mạch chuyển đổi UART/RS485 đóng vai trò quan trọng trong việc chuyển đổi giữa hai giao thức, giúp cải thiện khả năng giao tiếp với cảm biến một cách dễ dàng và chính xác hơn.
Module LoRa cho phép giao tiếp hiệu quả với gateway thông qua kết nối UART với kit Blue Pill, mang lại khả năng truyền dữ liệu ổn định, khoảng cách xa và chi phí hợp lý.
- Relay dùng để điều khiển một tải ngoài Ví dụ như có thể là một máy bơm có thể tác động vào giá trị DO
Mạch gateway
3.2.2 Danh sách linh kiện và module chính
STT Tên Số lượng Ghi chú
1 Kit phát triển Blue Pill 1
4 Mạch hạ áp DC LM2596 3A 1
5 Mạch Thu Phát RF UART Lora EBYTE E32-
Bảng 3.2 Danh sách linh kiện và Module chính mạch Gateway
Hình 3.3 Sơ đồ khối mạch Gateway
Hình 3.4 Sơ đồ nguyên lý mạch Gateway
3.2.4 Chức năng của từng khối chức năng
Kit Blue Pill đóng vai trò là bộ xử lý trung tâm
- Khối nguồn: Cung cấp nguồn điện ổn định cho mạch Nguồn 5V với các module
Module LoRa cho phép giao tiếp hiệu quả giữa việc gửi và nhận dữ liệu từ mạch đọc cảm biến thông qua kết nối UART với kit Blue Pill Đây là lựa chọn lý tưởng nhờ vào khả năng truyền tín hiệu ổn định, khoảng cách xa và giá thành hợp lý.
- LCD 1602 giúp người dùng dễ dàng quan sát các thông số từ cảm biến Với ưu điểm là độ phổ biến và giá thành rẽ
- Module SIM A7670C đóng vai tròn quan trọng là công cụ để có thể giao tiếp với server Thingsboard
THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM
Mạch đọc cảm biến
Mạch đọc cảm biến có nhiệm vụ chính bao gồm:
- Đọc dữ liệu từ cảm biến RK500-04
- Giao tiếp truyền nhận LoRa với gateway
4.1.1 Đọc dữ liệu từ cảm biến RK500-04 Để đọc được giá trị của cảm biến RK500-04 qua giao tiếp modbus ta cần phải xác định các giá trị trong gói tin gửi đi cho cảm biến Gói tin gồm 7 byte là: [0A 03 00 00 00 06 C4 B3] Cụ thể 0A là byte địa chỉ của cảm biến 03 là Function code, giá trị này của Function code là đọc các giá trị trong các thanh ghi của cảm biến 4 byte tiếp theo 00 00 00 06 có nghĩa là đọc các giá trị từ địa chỉ 0 và đọc 6 giá trị
2 byte cuối là CRC để kiểm tra lỗi
Sau khi cảm biến nhận được đủ đủ và đúng như trên sẽ gần như ngay lập tức trả lời 1 gói tin gồm 17 byte cụ thể như sau:
- Byte thứ nhất: Là địa chỉ của cảm biến mặc định là 0A
- Byte thứ hai: Là function code 03
- Byte thứ ba: Là 0C có nghĩa là số lượng byte dữ liệu sẽ gửi là 12
Trong 12 byte tiếp theo, sẽ có ba gói dữ liệu 32 bit theo thứ tự lần lượt là: giá trị nồng độ oxy hòa tan, độ bảo hòa và nhiệt độ.
- 2 byte cuối cùng là CRC
Lưu đồ giải thuật cụ thể như sau:
Hình 4.1 Lưu đồ giải thuật đọc cảm biến RK500-04 4.1.2 Giao tiếp truyền nhận LoRa với gateway Ở đây nhiệm vụ được chia thành hai phần:
Gửi hai giá trị từ cảm biến đến gateway được thực hiện bằng cách đóng gói các giá trị thành các gói tin Gói tin bao gồm byte đầu tiên để định danh, tiếp theo là 2 byte dữ liệu và cuối cùng là 2 byte CRC để kiểm tra lỗi.
Để điều khiển thiết bị thông qua Relay, chương trình ngắt nhận sẽ liên tục nhận giá trị Relay_status từ gateway Nếu giá trị nhận được khác với giá trị hiện tại lưu trong biến trạng thái, mạch sẽ đảo giá trị của chân GPIO và cập nhật trạng thái mới Lưu đồ chi tiết của quá trình này được mô tả rõ ràng.
Hình 4.2 Lưu đồ giải thuật điều khiển Relay
Mạch gateway
Mạch gateway có nhiệm vụ chính bao gồm
- Giao tiếp truyền nhận LoRa với mạch đọc cảm biến
- Hiển thị các giá trị đo đạc lên LCD
- Truyền nhận dữ liệu với Thingsboard
4.2.1 Giao tiếp với mạch đọc cảm biến Ở đây thực hiện hai hoạt động chính là nhận giá trị cảm biến và gửi giá trị relay_status Đối với hoạt động nhận giá trị cảm biến, cụ thể cần phải lấy ra được các giá trị từ các gói tin nhận được và lưu vào các biến tương ứng Trong khi đó với mỗi lần nhận một gói tin thì mạch sẽ gửi lại giá trị trạng thái của relay
Lưu đồ cụ thể như sau:
Hình 4.3 Lưu đồ giải thuật giao tiếp LoRa với mạch đọc cảm biến 4.2.2 Hiển thị các giá trị lên LCD
Các biến lưu trữ giá trị đo từ cảm biến được chuyển đổi từ định dạng 32 bit sang dấu chấm động thập phân và sau đó được hiển thị lần lượt trên màn hình LCD.
4.2.3 Giao tiếp truyền nhận với Thingsboard thông qua MQTT
Tập lệnh AT command là phương pháp giao tiếp với ThingsBoard thông qua module SIM Để thiết lập kết nối MQTT với ThingsBoard, cần thực hiện các lệnh phù hợp.
AT+CMQTTCONNECT=0,"tcp://demo.thingsboard.io:1883",60,1,"abc","1234"
Sau đó để có thể có thể nhận giá trị trạng thái relay từ thingsboard ta cần phải follow topic: v1/devices/me/rpc/request/+ thông qua các lệnh:
Khi bật hoặc tắt nút relay trên Thingsboard, chúng ta sẽ nhận được các gói tin phản ánh trạng thái của relay, từ đó cập nhật vào biến relay_status Để gửi giá trị lên Thingsboard, cần gửi gói tin cảm biến dưới dạng JSON vào topic: v1/devices/me/telemetry.
AT+CMQTTTOPIC=0,23 v1/devices/me/telemetry
Trong đó ví dụ của 1 gói JSON là [{“Temp”:25.01}] kèm theo đó có 1 số giá trị cần phải thây đổi cho phù hợp trong các điều kiện khác nhau
4.2.4 Lưu đồ của chương trình
Có một điểm cần chú ý rằng từ khi được cấp nguồn thì module SIM cần khoản 15-20 s để khởi động do đó ta có lưu đồ như sau:
Trong thời gian chờ module SIM khởi động mà không làm giảm khả năng thu nhận tín hiệu, chúng ta thiết lập các biến start_flat và count_send Khi biến đếm count_send đạt đến giá trị 15, tương ứng với khoảng thời gian cần thiết, quá trình sẽ tiếp tục diễn ra.
15 giây thì MQTT sẽ được kết nối sau đó cứ mỗi 10 giây thì dữ liệu sẽ được gửi lên thingsboard
Hình 4.4 Lưu đồ giải thuật của mạch Gateway
KẾT QUẢ THỰC HIỆN
Kết quả thực hiện phần cứng
5.1.1 Một số vấn đề khi thực hiện phần cứng
Một số vấn đề khi thực hiện phần cứng như:
- Khả năng sắp xếp linh kiện và đi dây còn hạn chế dẫn đến tốn nhiều thời gian
- Chưa thiết kế để tối ưu hộp dựng sản phẩm
- Gặp khó khăn trong việc tìm kiếm địa điểm gia công mạch
Số mạch phải thi công: một mạch đọc cảm biến và một mạch gateway
Hình 5.3 Kết quả thi công mạch gateway
Layout mạch đọc cảm biến
Hình 5.1 Layout mạch đọc cảm biến
25 Hình 5.2 Layout 3D mạch đọc cảm biến
26 Hình 5.3 Kết quả thi công mạch đọc cảm biến
Kết quả thực hiện phần mềm
Phần mềm được lập trình bằng ứng dụng STM32CubeIDE
Hình 5.4 Kết quả thực hiện phần mềm gateway
28 Hình 5.5 Kết quả trên thingsboard