Mobile · Intermediate · 2–3 weeks
Offline-first Field Inspection App
A mobile app for technicians who inspect equipment on site: checklists, photos, and signatures that work with no signal and sync later.
- React Native (Expo)
- TypeScript
- SQLite
- Supabase
Features
- Dynamic checklist templates loaded from the server
- Photo capture with on-image annotation
- Local-first storage with background sync and conflict handling
- Signature capture and PDF report export
- GPS-tagged inspections
Bonus: A small web admin dashboard where managers create templates and review submitted inspections.
Mobile · Intermediate · 2 weeks
Bluetooth LE Sensor Companion App
A phone app that discovers a Bluetooth Low Energy sensor, streams live readings, keeps a history, and sends settings back to the device.
- Flutter (Dart)
- flutter_blue_plus
- SQLite
- ESP32 or nRF52 as the peripheral
Features
- Scan, connect, and auto-reconnect to the device
- A custom GATT service and characteristics that you define
- Live charts of incoming readings
- Local history with CSV export
- Write settings like sample rate and thresholds back to the device
Bonus: Firmware updates delivered over Bluetooth straight from the app.
Embedded & IoT · Intermediate · 1–2 weeks
ESP32 Air Quality Station
A connected sensor node that measures CO₂, PM2.5, temperature, and humidity, and streams readings over MQTT to a live dashboard.
- ESP32
- C++ (ESP-IDF or PlatformIO)
- MQTT
- InfluxDB
- Grafana
Features
- Sensor drivers over I²C and UART with calibration
- Deep-sleep power management for battery use
- MQTT with reconnect and local buffering during outages
- Over-the-air firmware updates
- Dashboard with thresholds and alerts
Bonus: A custom PCB designed in KiCad and a 3D-printed enclosure, shown in photos in the README.
Embedded & IoT · Advanced · 2–3 weeks
PID Motor Controller on FreeRTOS
A closed-loop DC motor speed and position controller on an STM32, with a desktop app for live plotting and tuning.
- STM32
- C
- FreeRTOS
- Quadrature encoder
- Python (PyQt, pyqtgraph)
Features
- Encoder reading using hardware timer peripherals
- PID loop running at a fixed rate in its own RTOS task
- Serial protocol with framing and checksums
- Desktop GUI with live plots and gain sliders
- Host-side unit tests for the control logic
Bonus: An auto-tuning routine (relay or Ziegler–Nichols) with a before/after step-response plot.
Embedded & IoT · Advanced · 2–3 weeks
FPGA Game Console with VGA Output
Pong or Breakout built entirely in hardware with Verilog, driving a VGA monitor straight from an FPGA board with no CPU at all.
- Verilog or SystemVerilog
- Vivado or Quartus
- Basys 3 or DE10-Lite board
- Verilator
Features
- VGA timing generator for 640×480 at 60 Hz
- Sprite drawing and collision logic in hardware
- Debounced button input and a score on the seven-segment display
- Testbenches with automated waveform checks
- Clean module hierarchy with resource and timing reports
Bonus: Sound effects generated in hardware through PWM audio output.