PHẦN 2: NỘI DUNG THỰC HIỆN
3. Lựa chọn giải pháp và lên phương án thiết kế
3.4 Triển khai hoạt động trong mạng cảm biến
3.4.1 Giải pháp 1: Node chỉ truyền khi bấm nút, không nhận tín hiệu từ Gateway
• Sensor Node:
- Khi người dùng bấm nút. Thiết bị rơi vào trạng thái ngủ chờ nhiệt độ ổn định trong 10s.
- Sau khi thức VĐK sẽ đọc nhiệt độ rồi gửi lên phía Gateway.
- So sánh nhiệt độ với ngưỡng để hiển thị lên LED báo.
- Giảm tần số clk của vi điều khiển xuống mức thấp nhất để tiết kiệm năng lượng.
- Đợi người dùng bấm đo lần tiếp theo.
Hình 15. Lưu đồ thuật toán của Sensor Node triển khai theo giải pháp 1.
• Gateway:
- Chờ gói tin từ Sensor Node gửi tới.
- Khi nhân được gói tin LoRa sẽ kiểm tra gói tin đó có đúng định dạng không.
- Xử lý gói tin, lấy nhiệt độ của node gán vào biến rồi gửi lên Blynk server để người giám sát theo dõi, gửi lên Google Sheet để lưu trữ lại các số liệu đo đạc được.
Hình 16. Lưu đồ thuật toán Gateway triển khai theo giải pháp 1
• Đánh giá ưu điểm của giải pháp và những điểm chưa đạt được:
Ưu điểm Hạn chế
- Triển khai phía thiết bị đo đơn giản.
- Người dùng sẽ thoải mái lựa chọn thời điểm để lấy nhiệt độ vật mẫu (miễn không phải lúc thiết bị ngủ - đèn led tắt)
- Chưa cập nhật được ngưỡng từ xa.
- Node không xác định được Gateway có nhận được nhiệt độ thành công không.
- Khả năng xảy ra nhiểu ở Gateway lớn nếu như nhiều Node gửi lên cùng lúc.
3.4.2 Giải pháp 2: Node chỉ truyền khi bấm nút và nhận được lời gọi từ Gateway a) Mô tả hoạt động mạng
Để đáp ứng được nhiều yêu cầu nhất mà đề tài ra, nhóm em thực hiện cơ chế giao tiếp giữa Node và Gateway theo phương pháp Polling.
• Gateway.
- Gateway thực hiện gửi bản tin lần lượt tới các Sensor Node.
- Mục đích để báo với Node rằng nó đang “rảnh” và sẵn sàng nhận dữ liệu của node đó.
- Mỗi phiên giao tiếp giữa Gateway và Node cảm biến diễn ra trong 1.4s - Để đáp ứng yêu cầu mạng tối thiểu có 10 Node thì Gateway cần 14s để
hoàn thành 1 vòng gọi.
Hình 17.Mô tả hoạt động của Gateway và Sensor Node khi thực hiện giải pháp 2.
• Sensor Node:
- Khi mới tham gia mạng thì Node 1 sẽ thức chờ Gateway gửi gói tin đầu tiên tới mình.
- Khi nhận được gói tin LoRa:
+ Node sẽ kiểm tra xem có đúng là của Gateway gọi tới mình hay không, nếu không sẽ bỏ qua và chờ tiếp.
+ Node nhận được gói tin báo bắt đầu phiên giao tiếp thì sẽ tiến hành kiểm tra trước đó đã có thao tác bấm nút của người dùng không.
Nếu chưa bấm nút thì Sensor Node không phản hồi lại nhiệt độ cho Gateway và kết thúc phiên giao tiếp. Nếu người dùng đã bấm nút thì nhiệt độ sẽ được đọc và gửi lên Gateway, kết thúc phiên giao tiếp.
- Kết thúc phiên giao tiếp với Gateway thì Node được lập lịch ngủ trong 10s. Trong thời gian này người dùng có thể đưa thiết bị vào mẫu vật cần đo để nhiệt độ cảm biến thu được giá trị ổn định.
- Sau khi dậy, Sensor Node sẽ có thời gian chờ trước thời điểm tiếp theo mà Gateway bắt đầu phiên giao tiếp với nó. Trong thời gian này có thể bấm nút để lấy giá trị nhiệt độ cảm biến và khi nào Gateway gọi sẽ tự phản hồi lại nhiệt độ. Khi kết thúc phiên giao tiếp thì Node lại vào trạng thái ngủ 10s.
Như vậy, chu kỳ hoạt động của Sensor Node gần như đồng bộ với chu kỳ gọi của Gateway:
+ 10s ngủ để tiết kiệm nl và để cảm biến ổn định.
+ 4s thức để chờ thao tác của người dùng và để chờ GW báo sẵn sàng nhận nhiệt độ.
Hình 18.Sensor Node xử lý lời gọi Gateway.
b) Cập nhật ngưỡng nhiệt độ cho Sensor Node
• Giải pháp: Gateway sẽ nhận ngưỡng nhiệt độ mới từ phần mềm MQTT Explorer thông qua giao thức MQTT. Sử dụng Broker mã nguồn mở Mosquitto làm trung gian trao đổi dữ liệu.
• Mosquitto:
- Là broker mã nguồn mở - Chấp nhận kết nối từ Client - Nhận các gói tin từ các Publisher
- Xử lý các yêu cầu Subcribe và Unsub từ Clients.
- Chuyển các gói tin tương ứng với Topic của các Subscribe.
• MQTT Explorer:
- Vai trò như 1 MQTT client.
- Hỗ trợ hiển thị trực quan các topic
- Có thể xem được lịch sử các bản tin mà đã trao đổi.
• Mô tả phương pháp:
- Phía người quản lý muốn thay đổi ngưỡng nhiệt độ trên Sensor node sẽ nhập giá trị mới vào Explorer, như ví dụ ở hình minh họa phía dưới: 0,25,75.
- Sau đó Broker sẽ chuyển những giá trị này tới Gateway.
- Gateway sẽ lưu lại các ngưỡng nhiệt độ mới. Tới các phiên giao tiếp giữa GW-Node nó sẽ truyền 3 ngưỡng này xuống cho Node.
- Khi nào Node nhận được gói tin báo bắt đầu phiên giao tiếp, nó sẽ xử lý và cập nhật lại nhiệt độ báo ngưỡng mới.
c) Chương trình cho Sensor Node và Gateway
- Chương trình cho Sensor Node (đã được đính kèm trong folder báo cáo)
Hình 19. Code cho Sensor Node.
- Chương trình cho Gateway (đính kèm trong folder báo cáo)
Hình 20. Code cho Gateway.