100_Days_100_IoT_Projects: 100 Days of Silicon: The MicroPython Blueprint for the Physical Web

How `100_Days_100_IoT_Projects` transforms the fragmented world of embedded electronics into a readable, repeatable Python curriculum.

• View on GitHub • More from kritishmohapatra

A massive, 100-step spiral staircase made of green circuit board material. At each step, a different glowing component illuminates the path upward.
A progression from simple GPIO to distributed mesh networks.

Hey everyone 👋 I’m a 3rd-year Electrical Engineering student doing a personal challenge: **100 Days → 100 IoT Projects using MicroPython.** Today I completed **Day 56**🎉

Kritish Mohapatra, Creator · 50 IoT Projects in 50 Days using MicroPython

Key Takeaways

The "100 Days" challenge is a well-worn trope in web development. Commit to coding every day, push to GitHub, and watch the green squares multiply. But porting that challenge to hardware introduces the Physical Tax: wiring errors, fried components, cryptic datasheets, and driver incompatibilities. In the embedded world, failing fast usually means buying new parts.

Kritish Mohapatra’s 100_Days_100_IoT_Projects repository subverts this friction. It isn't just a collection of scripts; it is a MicroPython Standard Library for the Physical World. By stripping away heavy frameworks and focusing on raw MicroPython machine and network modules, Mohapatra has created a Rosetta Stone for turning Python logic into physical action.

The End of the "Hello World" Loop

Most IoT tutorials stop at blinking an LED. The leap from "Hello World" to a state-managed, sensor-fusion system is where most learners abandon ship. This repository bridges that gap by incrementally scaling complexity. Day 1 is simple GPIO control. By Day 50, the projects feature state-machine UIs, non-blocking asynchronous web servers, and edge-to-cloud offloading.

Edge-to-Cloud offloading in the AQI Monitor project.

Consider the Air Quality Index (AQI) Monitor project. Instead of forcing the ESP32 to calculate complex AQI formulas, the workload is split. The ESP32 samples analog gas sensors and POSTs the raw data to a local Flask server. The server performs the inference and returns a clean JSON response for the ESP32 to render on an OLED. This is distributed intelligence, taught through the lens of a beginner's project.

The Anatomy of a Day

The repository’s architecture is deliberately poly-repo. Each "Day" is encapsulated in its own directory, functioning as a standalone encyclopedia entry. Firmware (main.py), wiring diagrams, and—crucially—local copies of essential drivers are bundled together.

A single MicroPython logo snake coiled around a cool soldering iron, typing on a laptop.
Taming hardware through high-level software.

This "Self-Contained Project" pattern is an educational masterstroke. By duplicating driver files (like ssd1306.py) across folders, Mohapatra ensures "Zero-Dependency" execution. A learner can download a single folder, flash it via Thonny, and see immediate results without wrestling with package managers or global library paths.

Cutting the Cord with ESP-NOW

The repository’s most significant technical departure from standard beginner fare is its deep dive into ESP-NOW. While most IoT projects rely on a Wi-Fi router as a central hub, ESP-NOW enables peer-to-peer, connectionless communication directly between microcontrollers.

The ESP-NOW handshake bypasses the router for low-latency communication.

This is the moment IoT stops being "Web-lite" and starts being a distributed nervous system. By addressing devices via MAC address and bypassing DHCP overhead, sensors can wake up, transmit state, and return to deep sleep in milliseconds—enabling battery life measured in months rather than days.

A close-up of a mechanical hand holding a glowing ESP32 chip that sends pulse waves to smaller chips in the background.
Beyond the router: building a localized mesh network.

The Student as Architect

The repository is the work of an Electrical Engineering student building his own ladder.

Portrait of Kritish Mohapatra

By documenting the journey publicly, the project serves as both a personal portfolio and a reusable module library for the community.

The aim is to provide a systematic documentation of hardware projects so that students and beginners can learn a structured curriculum from basic GPIO programming to advanced wireless IoT projects.

Python vs. The Metal

The traditional path to embedded systems runs through C and C++. It is a landscape of manual memory management, pointers, and slow compile-flash cycles. MicroPython offers a different bargain: trading a fraction of execution speed for a massive increase in developer velocity.

FeatureMicroPython (This Repo)Arduino (C++)
LanguageExpressive, REPL-activePerformant, Compile-heavy
Error HandlingTracebacks via SerialSilent Crashes / Watchdog Resets
Iteration SpeedInstant (Save to run)Slow (Compile, Flash, Reboot)
Memory ManagementAutomatic Garbage CollectionManual Pointers

For the vast majority of IoT applications—reading a sensor, debouncing a button, formatting a JSON payload—the bottleneck is not the CPU speed. It is the developer's time. 100_Days_100_IoT_Projects proves that Python is not just a scripting language for servers; it is a capable, elegant tool for orchestrating the physical world.