3 min read

Lighthouse

A connected medication adherence system: dispenser with integrated notifier, tracker, and logger.

Built at HackGT 12 (teammates: Hudson Etkin and Aiden Gilmore) over 36 hours - 4-channel physical device and companion mobile app. The device confirms doses via per-silo limit switches and visualizes adherence with a segmented LED ring. The app handles prescription ingestion, scheduling, and report generation. Both sync through Firestore.


System Overview

Hardware

  • 4 independent silos with spring-loaded reset mechanisms
  • Per-silo dose confirmation via NC limit switches
  • 56-pixel WS2812B LED ring, segmented into 4 × 14 (12 active per silo) for progress + state
  • Raspberry Pi 3B+ controller

Software

  • Mobile app for OCR prescription ingestion, schedule display, and report generation
  • Device controller that schedules doses, logs events, and drives LED state

Cloud

  • Firestore as shared backend between device and app
    • prescriptions
    • dose_events
    • switch_events

Mechanical Design & Fabrication

Modeled the dispenser in Onshape and iterated printed parts for fit + assembly under deadline pressure:

  • Silo reset geometry + switch mounting
  • Heat-set insert interfaces and serviceable fastener layout
  • Print prep + iteration workflow (Bambu slicer)
3D-printed Lighthouse prototype.
3D-printed Lighthouse prototype (mechanical assembly + packaging).

Electronics Integration

Wired the Raspberry Pi 3B+, LED ring, and 4 NC switches into a single harness and defined pin mappings + segmentation for reliable demo behavior.

Close-up of Raspberry Pi wiring for switches and LED ring.
Close-up of Raspberry Pi wiring for switches and LED ring.
Fritzing diagram showing LED ring + four switch wiring to Raspberry Pi.
Fritzing diagram showing LED ring + four switch wiring to Raspberry Pi.

Firmware + System Services

Took bring-up code and turned it into a working controller in Python:

  • Firestore integration via Firebase Admin SDK
  • Prescription → daily dose_events generation
  • Debounced GPIO switch handling (logs switch_events, marks doses taken)
  • LED state machine:
    • idle = white
    • due = blinking yellow
    • taken = green
  • Packaged as a systemd service for autostart + recovery
  • Startup diagnostics animation (“rainbow chase”)

Link to Firmware (Python controller)

Stack Exercised

Onshape (CAD), FDM 3D printing + iteration, Raspberry Pi 3B+, Python (RPi.GPIO, adafruit-neopixel, Firebase Admin SDK), Firestore, systemd, wiring/debug under deadline pressure.

View additional screenshots and renders

App + UX (teammates)

Mobile app UI for prescription ingestion and channel assignment.
Mobile app UI for prescription ingestion and channel assignment.
Mobile app UI for adherence tracking and report generation.
Mobile app UI for adherence tracking and report generation.

CAD + Packaging

CAD hero render of Lighthouse.
CAD hero render of Lighthouse.
Cross-section view of Lighthouse showing internal packaging.
Cross-section view of Lighthouse showing internal packaging.

Startup Animation

Rainbow startup animation showing off addressable LEDs!
Rainbow startup animation showing off addressable LEDs!