As a Master’s student diving into IoT systems, I wanted to move beyond theoretical coursework and build something that actually solves a real problem. That’s how the ESP32 based SmartScan Node came about—a privacy-first environmental monitoring system that taught me more about IoT development than any textbook could.
The Learning Challenge: Privacy vs. Monitoring
The project started when I was exploring use cases for my IoT coursework. Elder care facilities caught my attention because they have this interesting technical challenge: they desperately need monitoring systems, but cameras raise huge privacy concerns. It’s the perfect IoT problem—multiple sensors, real-time data processing, edge computing, and user interfaces across different platforms.
I figured if I could build a camera-free monitoring system, I’d get hands-on experience with the entire IoT stack while actually creating something useful.
Technical Learning Objectives
Going into this, I wanted to understand:
- Edge device programming with ESP32 microcontrollers
- MQTT protocol implementation for IoT messaging
- Sensor fusion and real-time data processing
- Multi-platform development (mobile + web)
- System architecture for scalable IoT deployments
Hardware Deep-Dive: ESP32 + Sensor Integration
For the edge device, I went with the ESP32 because it’s basically the Swiss Army knife of IoT development. Built-in WiFi, dual-core processing, and tons of GPIO pins. Perfect for learning microcontroller programming without getting stuck on connectivity issues. The sensor setup taught me a lot about I2C and SPI communication:
- HC-SR04 ultrasonic sensor for distance measurements
- DHT11 for temperature/humidity (simple digital protocol)
- Servo motor for creating scanning patterns
- LCD display for local feedback
Getting the servo motor to smoothly sweep while continuously reading sensors was my first real lesson in interrupt-driven programming. You can’t just use delay() functions when you need real-time responsiveness.

MQTT: Learning IoT Communication Protocols
This was probably the biggest learning curve. MQTT (Message Queuing Telemetry Transport) sounds simple in theory, but implementing it properly taught me about:
- Topic Architecture:
smartscan/node_id/motion
smartscan/node_id/environment
smartscan/node_id/alerts
smartscan/node_id/status
Quality of Service (QoS) levels became really important when I realized some messages (like alerts) absolutely cannot be lost, while others (like routine sensor readings) can be.
I set up Mosquitto MQTT broker on my Ubuntu laptop for development, which was a great learning experience in itself. Configuring the broker, managing client connections, and debugging message flow taught me about publish-subscribe patterns and how they scale way better than request-response for IoT applications.
2. Multi-Platform Development Experience
Building apps for both mobile and web gave me exposure to different development paradigms:
- Android App (Kotlin + Jetpack Compose): Learning Material3 design while implementing real-time MQTT clients was challenging. The biggest lesson: mobile apps need to handle network interruptions gracefully. I spent way too much time debugging why the app would crash when WiFi dropped.

- Web Dashboard (Python): This taught me about concurrent programming for handling multiple device connections simultaneously. The radar visualization was particularly fun—learning how to create real-time graphics that don’t bog down the browser.
3. Algorithm Development: Distance-Based Motion Detection
Instead of computer vision (which would defeat the privacy purpose), I developed a distance-variation algorithm. The learning here was about signal processing and noise filtering.
The algorithm analyzes ultrasonic readings to detect:
- Baseline room mapping during calibration
- Motion through distance change patterns
- Potential falls (rapid changes in floor-level readings)
- Tampering detection (sensor obstruction)
Getting this right required understanding digital signal processing concepts I’d only seen in theory before.
Real Performance Metrics (Learning from Testing)
System Performance:
- 18-second room sweep with 2°/100ms precision
- ~100ms latency from sensor to dashboard
- 99.2% uptime during my testing period
- 94.7% motion detection accuracy
These numbers taught me about the difference between lab testing and real-world deployment. The accuracy dropped significantly when I moved from my dorm room to actual test environments with different furniture layouts.
Unexpected Learning: Deployment Challenges
The technical implementation was just half the battle. Real deployment taught me about:
- Network Reliability: Healthcare facilities have notoriously patchy WiFi. I had to implement automatic reconnection with exponential backoff.
- Power Management: Even though it’s USB-powered, optimizing power consumption taught me about sleep modes and interrupt wakeup on the ESP32.
- User Interface Design: Healthcare staff don’t have time for complex interfaces. This taught me about UX design for IoT applications.
IoT Architecture Lessons Learned
Building this ESP32 based system gave me practical experience with IoT design patterns:
- Edge Processing: Doing motion detection on-device vs. sending raw sensor data
- Message Queuing: How MQTT handles unreliable connections
- State Management: Keeping mobile app, web dashboard, and device synchronized
- Scalability: Designing topic structures that work for one device or hundreds
Technical Stack Summary
Where to buy the hardware: Amazon link here
What This Project Taught Me About IoT
- Technical Skills: Embedded programming, protocol implementation, sensor integration, real-time systems, multi-platform development.
- System Thinking: How to design IoT architectures that are reliable, scalable, and maintainable.
- Problem-Solving: Moving from academic problems to real-world constraints and requirements. The biggest takeaway? IoT development is 20% sensors and 80% system integration. Getting individual components working is straightforward—making them work together reliably is the real challenge.
Next Steps in My IoT Learning
This project opened up several areas I want to explore further:
- Machine learning on edge devices (TensorFlow Lite)
- LoRaWAN for long-range, low-power applications
- Container deployment for scalable IoT backends
- Security protocols for IoT device authentication
This project gave me hands-on experience with the entire IoT development cycle. For other students looking to learn IoT practically, I’d recommend picking a real problem and building end-to-end—you’ll learn way more than following tutorials.