Sensor Integration |
Integrated environmental sensors (temperature, humidity, eCO₂) on the Thingy:52. Base node ultrasonic sensor was used for proximity/distance measurement (soil moisture sensor was not used). |
BLE Comms Setup (Thingy:52 → Base) |
Used BLE advertising mode from Thingy:52 to periodically broadcast sensor readings. Base node scanned and parsed data without GATT connections. |
Data Fusion + Angle Calculation |
Implemented control logic on the base node to calculate a servo angle from CO₂ and temperature inputs. Also allowed manual override and sensor spoofing via Zephyr CLI. |
BLE Comms Setup (Base → Actuating Node) |
Sent JSON-formatted BLE advertising packets from the base node to the actuator node, which parsed the payload and applied the servo angle. |
Vent Control System |
Actuator node controlled a servo via CRICKIT PWM, updated continuously based on angle received from BLE advertisements. |
PC CLI Interface (Ubuntu) |
Implemented Zephyr Shell CLI interface for enabling/disabling the ultrasonic sensor, switching servo modes, and overriding sensor data in real time. |
MQTT Publishing (Windows PC) |
PC connected to the actuator node over UART. Parsed and published BLE JSON packets to a Mosquitto MQTT broker for visualisation. |
Dashboard Integration (Grafana) |
Viewer PC subscribed to MQTT broker and visualised JSON data using Grafana. Enabled real-time monitoring of environmental state and vent control. |
Message Protocol Definition |
Defined compact custom manufacturer-specific BLE advertising payload format (co2, humidity, temp, angle, distance). Used consistent JSON structure over UART and MQTT. |
System Testing and Debugging |
Conducted staged system integration tests across all nodes. Debugged UART port conflicts, shell/BLE concurrency issues, and Mosquitto networking. |
Demo Preparation |
Developed a full multi-PC demo showing sensor broadcast, base node fusion logic, servo actuation, and MQTT-based visualisation. CLI and fallback modes were also showcased. |