Insights on system architecture, technical decisions, and lessons learned
Initial architecture design completed. Technology stack selected. Development environment setup and first proof-of-concept implemented to validate core architectural assumptions.
Regular updates on milestones, development progress, technical challenges solved, and key learnings will be posted here as the project evolves.
Arctic Environmental Monitor: A LoRa-Based Sensor Network for Harsh Environments
A distributed IoT sensor network designed to operate autonomously in extreme conditions. The system consists of battery-powered ESP32 sensor nodes communicating via LoRa (Long Range) radio to a central Raspberry Pi gateway that processes data locally and provides real-time visualization.
In Greek mythology, Talos was a giant bronze automaton who tirelessly patrolled the shores of Crete, protecting the island from invaders. Never resting, never failing, this mechanical guardian circled the island three times daily with unwavering vigilance. Meanwhile, Argos Panoptes (meaning "all-seeing") was a giant with a hundred eyes, ensuring that some eyes always remained open, watching, observing, never allowing threats to go unnoticed.
Project Talargos embodies both guardians: the tireless automation of Talos and the omniscient observation of Argos. Like these mythological sentinels, this system never sleeps, constantly monitoring, detecting, and protecting with hundreds of data points acting as ever-watchful eyes across distributed nodes.
Traditional environmental monitoring systems fail in remote deployments due to:
Defense & Security:
Environmental Research:
Infrastructure:
┌─────────────────────────────────────────┐
│ SENSOR NODES (3-4x) │
│ ESP32 + LoRa Radio │
│ • BME280: Temp/Humidity/Pressure │
│ • PIR: Motion Detection │
│ • MAX4466: Sound Monitoring │
│ • 18650 Battery (90+ day life) │
└─────────────────────────────────────────┘
│
LoRa 915MHz
(2-10km range)
↓
┌─────────────────────────────────────────┐
│ RASPBERRY PI GATEWAY │
│ • LoRa HAT (receives sensor data) │
│ • Python Backend (data processing) │
│ • SQLite Database (local storage) │
│ • Anomaly Detection Engine │
│ • WebSocket Server (real-time push) │
└─────────────────────────────────────────┘
│
HTTP / WebSocket
↓
┌─────────────────────────────────────────┐
│ WEB DASHBOARD │
│ • Interactive map (Leaflet.js) │
│ • Real-time charts (Chart.js) │
│ • Live updates via WebSocket │
│ • Offline-capable (Service Worker) │
│ • Alert notifications │
└─────────────────────────────────────────┘
Comparison with alternatives:
| Technology | Range | Power (sleep) | Cost | Bandwidth |
|---|---|---|---|---|
| LoRa | 2-10km | 10µA | Low | 5 kbps |
| WiFi | 50-100m | 15mA | Low | 150 Mbps |
| Bluetooth | 10-100m | 1µA | Low | 2 Mbps |
| Cellular | 10km+ | 5mA | High recurring | 1 Mbps |
LoRa advantages:
Trade-off: Low bandwidth limits to telemetry only (no video/images)
Sensor → Gateway → Internet → Cloud → Dashboard
Sensor → Gateway (local) → Local Dashboard ↓ (optional) Cloud Archive
Key benefit: Critical for remote/tactical deployments where connectivity is unreliable or unavailable.
| Platform | Power (sleep) | Flash | Cost | LoRa | WiFi/BT |
|---|---|---|---|---|---|
| ESP32 | 10µA | 4MB | $8 | ✓ | ✓ |
| Arduino Uno | 50mA | 32KB | $25 | ✗ | ✗ |
| STM32 | 2µA | 64KB | $3 | ✗ | ✗ |
Target: 90+ days on single 18650 battery (3500mAh)
Component Active Current Duty Cycle Avg Current ------------------------------------------------------------------ ESP32 Active 160 mA 0.67% 1.07 mA ESP32 Deep Sleep 10 µA 99.33% 0.01 mA BME280 1.8 mA 0.17% 0.003 mA PIR Sensor 65 µA 100% 0.065 mA LoRa TX (20dBm) 120 mA 0.07% 0.08 mA Voltage Regulator 50 µA 100% 0.05 mA ------------------------------------------------------------------ TOTAL AVERAGE 1.28 mA Battery Life = 3500 mAh / 1.28 mA = 114 days ✓
Key strategies:
Why WebSockets over HTTP polling:
setInterval(() =>
fetch('/api/latest'),
2000);
socket.on('sensor_update',
(data) =>
updateDashboard(data));
Problem: Li-ion batteries lose 50% capacity at -20°C
Planned solutions:
Problem: Multiple nodes transmitting simultaneously causes packet loss
Planned solutions:
Problem: ESP32 RTC drifts ~1 second/hour without calibration
Planned solutions:
Problem: Moisture ingress can short electronics
Planned solutions:
Problem: SQLite may slow with millions of readings
Planned solutions:
Estimated Total: $285
| Component | Quantity | Unit Cost | Total |
|---|---|---|---|
| TTGO LoRa32 V2.1 boards | 4 | $18 | $72 |
| Raspberry Pi 4 (4GB) + accessories | 1 kit | $100 | $100 |
| Waveshare LoRa HAT | 1 | $35 | $35 |
| BME280 sensors | 4 | $5 | $20 |
| PIR motion sensors | 4 | $3 | $12 |
| 18650 batteries | 4 | $5 | $20 |
| Waterproof enclosures | 4 | $8 | $32 |
| Antennas, wires, misc | - | - | $30 |