Real-Time Environmental Sensor Node
Built a FreeRTOS-based sensor node that separates sensing, connectivity, and telemetry tasks for predictable real-time behavior.
Core stack
Case Snapshot
Role
Product-minded implementation: data model, interface behavior, integration path, and maintainable implementation artifacts.
Scope
I designed a FreeRTOS architecture with dedicated tasks for sensing, connectivity, and telemetry, using queue-based communication between execution domains. This makes the node a reusable building block for future BLE, MQTT, and...
Constraints
The node is designed to publish through an authenticated gateway path instead of acting like a directly exposed network service. Task separation and queue-based communication keep sensor sampling stable under concurrent load and...
Result
Separated sensing, connectivity and telemetry into FreeRTOS tasks with queue-based communication.
Architecture
Node
An ESP32-S3 acquires environmental data and runs separate RTOS tasks for sensing, connectivity, and telemetry handling.
Edge
An edge receiver or gateway ingests telemetry so the device does not need to expose a complex external surface itself.
Cloud
Normalized measurements can be forwarded to dashboards, storage, or AI pipelines after they leave the node through the gateway path.
Node
An ESP32-S3 acquires environmental data and runs separate RTOS tasks for sensing, connectivity, and telemetry handling.
Edge
An edge receiver or gateway ingests telemetry so the device does not need to expose a complex external surface itself.
Cloud
Normalized measurements can be forwarded to dashboards, storage, or AI pipelines after they leave the node through the gateway path.
Architecture Views
Concise system views summarize the project boundary, deployment path, and data flow without adding implementation claims.
System overview diagram
Node
Deployment diagram
Edge
Data flow diagram
Cloud
Technical Decisions
- FreeRTOS task isolation for sensing, connectivity, and telemetry
- Queue-based communication between execution domains
- Predictable sampling behavior under concurrent system load
- Reusable embedded pattern for future TinyML and BLE extensions
Challenges
- Simple Arduino-style loops become fragile once sensor timing, wireless communication, and user interaction need to happen concurrently.
- The node is designed to publish through an authenticated gateway path instead of acting like a directly exposed network service.
- Task separation and queue-based communication keep sensor sampling stable under concurrent load and reduce the risk of timing-related faults.
Lessons Learned
- Separated sensing, connectivity and telemetry into FreeRTOS tasks with queue-based communication.
- Improved timing consistency for telemetry acquisition
- Kept a reusable task structure for later BLE and TinyML extensions
Future Improvements
- Keep architecture views aligned with the implementation.
- Keep documentation concise: align README, architecture decisions, and screenshots.
Tech Stack
Related Project
Follow the adjacent case study to see how this project connects with the rest of the work.
Containerized BLE Edge Gateway
Built a containerized BLE gateway on embedded Linux to bridge sensor data into a reusable edge integration layer.