PillPilot is an automated medication dispensing system designed to assist individuals with Multiple Sclerosis (MS) who suffer from memory loss and dexterity impairments. This project was developed independently for the CMSC Competition.
This repository contains the firmware and control logic that powers the device. The system uses a Raspberry Pi 4 to parse medication schedules, drive a custom I2C hardware array, and host a local Flask server for wireless synchronization with an iOS companion app.
- Hardware Abstraction Layer (HAL): Custom drivers for PCA9685 (Servos) and MCP23017 (LEDs) to handle low-level I2C communication.
- Threaded Architecture: Runs a PyQt5 Dashboard GUI on the main thread while a Flask server listens for incoming schedule updates on a background thread.
- JSON Schedule Parsing: Dynamically parses complex dosage schedules (Time, Day, Compartment) to trigger precise hardware actions.
- Audio-Visual Alerts: Integrates 1W Speakers and LED arrays for redundant notification systems.
- Controller: Raspberry Pi 4 Model B
- Language: Python 3
- Libraries:
PyQt5,Flask,RPi.GPIO,adafruit-circuitpython-pca9685,adafruit-circuitpython-mcp230xx - Hardware: Micro Servos (x14), LED Array (x14), 8 Ohm 1W Speakers (x2).
The system synchronizes wirelessly with a custom iOS application, allowing caregivers to configure pill attributes and view adherence schedules.
| Hardware Configuration | Weekly Schedule View |
|---|---|
![]() |
![]() |
| Direct mapping of pill data to the 14-slot hardware array. | Visualizes the JSON schedule parsed by the firmware. |
Independent Competition Project (Team of 5)
- Oscar Zheng: Embedded Systems Lead. Designed the Hardware Abstraction Layer (HAL), implemented JSON schedule parsing, and managed the Hardware-to-Display integration.
- Sheba Panicker: Project Manager & Mechanical Lead. Managed project timeline and deliverables while designing the CAD models for the enclosure and dispensing mechanism.
- Elizabeth Link: Mobile Application Lead. Architected and built the iOS companion app for remote scheduling and user management.
- Louis Fermaintt: Frontend Lead. Designed the Raspberry Pi PyQt5 Dashboard UI and touchscreen interactions.
- Kayla Staley: Research Lead. Collaborated with the PM to conduct market analysis, user validation, and project documentation.


