Care Companion
A microprocessor project that ended up a working prototype: a mobile assistant for patients and elderly people living at home, combining continuous vitals monitoring with physical actions — moving to the patient, opening a medicine drawer, sounding an alarm.
The Problem
Home care depends on someone being present. Missed medication, an unnoticed fever, a gas leak, or a fall can all go undetected for hours, and commercial monitoring systems are priced out of reach for most households.
The Solution
Split the work across two processors by what each is good at. An Arduino UNO owns the sensors, where tight timing loops matter; the Raspberry Pi 4 handles vision, voice, decisions, and the web layer. They talk over serial, so a slow decision on the Pi never delays a sensor read.
System Architecture
The dashboard never talks to hardware. Sensor readings land in MySQL and the UI reads from there, with Django Channels pushing updates over WebSocket. Celery and Redis own scheduled medication reminders, so timing survives a page being closed — the browser is a view onto state, not a participant in control.
Key Features
Innovative solutions developed to solve complex technical challenges.
Continuous vitals monitoring
DHT11 for temperature and a Pulse Sensor Amped for heart rate, sampled on the Arduino and streamed to the Pi over serial for threshold checks.
Automated medication dispensing
An SG90 servo opens the correct drawer on schedule with a buzzer prompt, driven by Celery so the timing holds independently of the dashboard.
Hazard detection
MQ-2 gas and IR flame sensors raise immediate local alarms and push a notification to caregivers, without waiting on a network round trip.
Autonomous mobility
TT gear motors through an L298N driver, with Pi Camera v3 person detection and obstacle avoidance so the rover can reach the patient.
Voice control
Wake-word commands let a patient summon or direct the rover without reaching a screen or a button.
Caregiver dashboard
Live vitals and trend charts over WebSocket, plus a panic-button feed, reading from the database rather than polling hardware.
Challenges & Breakthroughs
Challenge: Sensor sampling and computer vision on one processor make each other unreliable — vision work starves the timing-sensitive reads.
Growth: Gave the Arduino sole ownership of sensors and left the Pi to decisions and vision, with serial between them. Splitting by timing requirement rather than by feature is what made both halves predictable.
Challenge: Medication reminders cannot depend on a browser being open, but the obvious implementation puts the timer in the request cycle.
Growth: Moved scheduling into Celery with Redis as the broker, so reminders fire from a worker regardless of who is watching. Anything with real-world consequences belongs outside the request cycle.
Challenge: Emergency alerts that travel through the web stack inherit its latency, which is the wrong trade for a gas leak.
Growth: Made hazards trigger the local buzzer and LEDs directly on the device, then notify over the network as a second step. The safety-critical path should not depend on anything that can be slow or offline.
Results & Impact
Next Project
UniShare