PillDrill
MedMinder
Purpose: The Medication Reminder Alarm is designed to ensure that individuals take their prescribed medications on time, thereby improving medication adherence. Forgetting to take medications can lead to ineffective treatment and serious health complications, particularly for elderly individuals or those with chronic conditions.
Problem Solved: This project addresses the common issue of forgetting to take medications. For many people, especially the elderly or those with busy schedules, keeping track of multiple medications can be challenging. The Medication Reminder Alarm provides timely reminders through auditory and visual alerts, helping users stick to their prescribed schedules.
Why It Matters: Ensuring timely medication intake is crucial for maintaining health and effectively managing medical conditions. This device offers a reliable solution to the problem of missed doses, which can lead to health deterioration or hospital visits.
Inspiration: The project was inspired by personal experiences with family members who struggled to remember their medications as my dad and mum. Additionally, existing solutions like mobile apps lack a physical component that can be more effective for certain users, such as those who are less tech-savvy.
Similar Projects:
- Pill Dispensers: These devices often combine medication storage with reminder systems. Examples include PillDrill and MedMinder.
- Mobile Reminder Apps: Apps like Medisafe and MyTherapy offer digital reminders but require a smartphone and may not be ideal for all users as the most needed users are old and less tech-savvy.
Project Idea: The Medication Reminder Alarm is a standalone device that reminds users to take their medications at scheduled times. It features an audible alarm, a visual LED indicator, and buttons for user interaction. The device can be programmed to accommodate different medication schedules and logs the time when a medication is taken.
General Features:
Audible Alarm: A sound alert that activates at the set medication times.
LED Indicator: A visual cue that lights up when it’s time to take medication.
Acknowledge Button: Users press this button to confirm they’ve taken their medication, which stops the alarm and logs the action.
Time Logging: The device records the time the medication was acknowledged for tracking adherence.
Customizable Schedules: Users can set multiple alarms for different medications throughout the day.
Display: for showing time.
integrated pill compartment: for convenience
Construction Parts
Enclosure/Case:
A compact case to house all the components. It could be made of 3D-printed material as PLA, designed to be easy to carry or place on a desk or bedside.
The enclosure should have slots for buttons, a display, and any other necessary openings for sensors or connections.
Display:
An LCD or OLED screen to show the current time, alarm times, and other user interface elements like status indicators (e.g., low battery warning).
Buttons:
Physical buttons for setting time and alarms, adjusting settings, and controlling the device. Could include basic controls like "Set," "Adjust," "Up," "Down," and "Snooze."
Input
(Sensing, Tactile Input, and/or Graphical Input)
Sensing:
Real-Time Clock (RTC) Module:
Keeps track of the current time and ensures the alarms are triggered at the correct times.
Temperature Sensor (Optional):
Can be added to monitor ambient temperature, useful if the medication storage requires specific temperature conditions.
Light Sensor (Optional):
Detects ambient light to adjust the brightness of the display automatically.
Tactile Input:
Push Buttons:
For setting alarms, confirming actions, and other manual inputs from the user.
Action
(Physical and/or Graphic)
Physical Actions:
Buzzer or Speaker:
Emits an audible alarm when it’s time to take medication.
LED Indicators:
Blinks or changes color to provide visual cues alongside the audio alarm.
Vibration Motor (Optional):
Adds a tactile alert, useful for users who may not notice the sound or light.
Graphical Actions:
Display Messages:
Shows messages like "Time to take medication," "Missed dose," or "Battery low."
User Interface:
Displays the current settings, options for adjusting alarms, and other information.
Brain
Microcontroller Arduino uno or nano
Acts as the brain of the project, managing all the inputs and outputs, controlling the timing of alarms, and handling user interactions.
Programming Logic:
Code to manage the real-time clock, handle button presses, trigger alarms, and provide feedback through the display and other output modules.
Power Management
Rechargeable battery
Type: Lithium Polymer (LiPo) or Lithium-ion (Li-ion) Battery
Capacity: 1200mAh to 3000mAh
Voltage: 3.7V (standard for many Li-ion/LiPo batteries)
Estimated Runtime: With a 1200mAh battery, if your project consumes around 100mA on average, the runtime could be approximately 12 hours. With a 3000mAh battery, the runtime could extend to around 30 hours under the same conditions.
Power Consumption: To maximize battery life, ensure your project is optimized for low power consumption, using sleep modes and only activating components when necessary. Sleep modes or low-power modes are programmed into the microcontroller to extend battery life when the device is idle.
Charging Circuit:
A charging circuit, possibly with a micro USB or USB-C port, to recharge the battery.
Power Regulation:
Voltage regulators to ensure stable power supply to the microcontroller, sensors, and other components.
Cover view
User interface view
Back view
Demo video
Minimum Features: are the least amount of features that would demonstrate the coverage of all the technical modules and their complete integration
Complete Features: are the set of features that will complete your original project objective and vision
Nice-to-have Features: are the extra set of features that will make the project cooler, yet they need extra time, effort, and/or resources to finish
Minimum User Features
Alarm Setup:
Action: Display changes to show the current setting screen.
Sensing: Real-time clock (RTC) module tracks current time.
User Input: Buttons (e.g., up/down, select) to set the alarm time.
Sound Alarm with LED Indicator:
Action: Buzzer sounds and LED lights up when it’s time for medication.
Sensing: RTC module triggers the alarm at the set time.
User Input: None during alarm activation.
Acknowledge Button:
Action: Stops the alarm and logs the acknowledgment time.
Sensing: Button press detected by the microcontroller.
User Input: Press the acknowledgment button.
Time Logging:
Action: Stores the time of acknowledgment in memory (could be an SD card or EEPROM).
Sensing: Acknowledge button press triggers logging.
User Input: Press the acknowledgment button.
Complete User Features
Multiple Alarms:
Action: Display shows additional alarm settings.
Sensing: RTC module tracks multiple alarm times.
User Input: Buttons for setting multiple alarm times.
Customizable Schedules:
Action: Allows different alarm times for different days or users.
Sensing: RTC module and microcontroller manage complex schedules.
User Input: Menu navigation and selection buttons.
Display Module:
Action: Shows time, upcoming reminders, and acknowledgment confirmations.
Sensing: None directly, but the RTC and microcontroller feed data to the display.
User Input: None (display is output-only).
Snooze Function:
Action: Delays the alarm for a set period (e.g., 5 minutes).
Sensing: Button press for snooze detected.
User Input: Press the snooze button.
Nice-to-have User Features
Wi-Fi Connectivity:
Action: Syncs with an app for remote management and tracking.
Sensing: Microcontroller with Wi-Fi module detects connection status.
User Input: Controlled through a connected mobile app.
Voice Reminders:
Action: Plays a pre-recorded or synthesized voice reminder.
Sensing: None (action triggered by RTC and microcontroller).
User Input: None (voice plays automatically).
Smart Home Integration:
Action: Communicates with smart home devices to provide reminders via different platforms (e.g., Alexa).
Sensing: Microcontroller with appropriate communication module (e.g., Zigbee, Wi-Fi).
User Input: Commands through smart home devices.
Automatic Pill Dispensing:
Action: Mechanism releases pills into a tray or container.
Sensing: RTC triggers pill release, or sensors detect pill count.
User Input: None (automatic).
Lamp Color Change with Proximity:
Action: Lamp changes color based on user proximity.
Sensing: Ultrasonic sensor detects proximity.
User Input: None (sensor-based).
Action: Lamp changes color when the user gets closer.
Sensing: Ultrasonic Sensor measures the distance of the user.
User Input: None (sensor triggers automatically).
Task
Sub-Tasks
From:
To:
Objective: Develop the core code for the reminder system, set up and test electronic components on a breadboard, and establish initial Bluetooth communication.
Arduino Code Setup
Initial Code Structure
Basic Time-Setting Functionality
Set up the core Arduino program:
Libraries for RTC (Real-Time Clock).
Pin assignments for buttons, LED, buzzer, and RTC.
Initialize the display LCD to show time and alarms.
Write code to allow the user to set the current time using the buttons:
One button for increasing hours.
Another for increasing minutes.
Display the time on the screen in real-time.
24/8
25/8
Alarm Logic and Notification System
Implement Alarm Logic:
Configure Visual and Audible Alerts:
Code logic for multiple alarms:
Store alarm times in an array.
Use buttons to cycle through and set up to 5 alarms (morning, afternoon, evening, etc.).
Trigger alarms at the set times.
Use the LED and buzzer to alert the user when it's time for medication:
Buzzer beeps for a few seconds.
LED stays lit until the alarm is acknowledged.
Code a “Snooze” function to repeat the alarm after 5-10 minutes if ignored.
26/8
27/8
Logging Functionality and Power Optimization
Logging Medication Acknowledgments:
Power Management.
Write a function to log the time when a user acknowledges an alarm:
Store this data in memory using the EEPROM.
Display logs on the screen or transmit them to the Bluetooth app.
Implement power-saving techniques in the Arduino code:
Use sleep modes to turn off the display and other components when idle, waking up only during alarms
28/8
29/8
Testing and Initial Bluetooth Integration
Testing Core Features:
Bluetooth Module Setup (Optional for this week):
Test the core alarm, notification, and logging functionalities on the breadboard.
Verify that alarms trigger accurately and can be acknowledged via buttons.
Connect the Bluetooth module (e.g., HC-05 or HC-06) to the Arduino.
Write basic code to establish communication between the Arduino and a paired phone.
Test by sending simple data between the Arduino and the phone using a Bluetooth terminal app.
30/8 00:00 AM
30/8 11:59 PM
Objective: Design and build the physical housing for the device, install the electronics, and finalize the integration of all hardware components.
Design the Enclosure:
Use Fusion 360 to design the enclosure, keeping in mind:
Sides of enclosure
top made of PLA 3D (cover of the bills) It is fixed by a hinge and opens and closes by a clip on the other side and has a hole in the middle where the screen and buttons are located.
The bottom is hollowed out in the middle for the battery and the industrial writing on both sides is made of plywood or PLA
The cylinder in the middle is smaller than the large cylinder and contains the electronics. is made of PLA
the slots of bills are made of PLA
Notes:
The display must be visible (cut-out for the screen).
Buttons should be accessible on the front or side.
Holes for the buzzer
hole for adapter
hole for a mini USB
left cut-off in the bottom for the battery
Include compartments for the battery, RTC, Arduino, and wiring, ensuring everything fits neatly.
31/8
2/9
2. Fabrication of the Enclosure
Use a 3D printer and laser cutter to build the enclosure:
3D print with PLA for a solid structure.
3/9
3/9 the entire day
Install the Components Inside the Enclosure:
Battery Integration:
Securely mount the Arduino, RTC, buttons, buzzer, and Bluetooth module in their respective positions.
Ensure wiring is clean and organized, preventing interference or disconnection.
If using a rechargeable battery, ensure it’s mounted securely with an accessible charging port.
Test the battery’s voltage to confirm it's sufficient to power all components for extended use.
4/9
4/9 the entire day
Test the Assembled Device:
Test the device in the enclosure:
Verify that the buttons, LED, and buzzer work as intended.
Ensure alarms are triggered and acknowledged correctly.
Make sure the device is user-friendly with clear access to buttons and display.
5/9
6/9
Finalize the assembly, refine the code, and create a mobile app using MIT App Inventor to manage the device via Bluetooth and do the undoing work!
Final Code Optimization
Code Refinements:
Review and optimize the Arduino code:
Remove unnecessary functions and streamline logic for better performance.
Fine-tune the power management system (especially for battery-operated devices).
Ensure reliable communication between the device and Bluetooth module.
7/9
7/9 the entire day
Bluetooth App Development on MIT App Inventor
Create the App Layout:
Bluetooth Communication
Include buttons to:
Set alarms.
View current alarms and logs.
Acknowledge and stop alarms.
Add fields to display logs of missed/acknowledged medication.
Set up a Bluetooth Client in the app to pair with the device:
Write blocks to send alarm data from the app to the Arduino.
Allow the app to receive acknowledgment logs from the Arduino.
8/9
10/9
Debugging and Testing the App
Test App Functionality:
Fix Bugs and Improve the UI
Test the app on an Android phone, ensuring:
It connects seamlessly to the device via Bluetooth.
Alarms can be set from the app and reflected on the device.
Logs from the Arduino are displayed on the app.
Debug any connection or display issues.
Ensure the app works under various scenarios (e.g., multiple alarms, Bluetooth disconnections).
11/9
11/9 the entire day
Final Testing and Adjustments
Stress Testing the Device
Final Adjustments
الوقت بدل الضايع لعمل اي حاجة متعملتش
Run several alarm cycles with the device and the app:
Test how the device responds to multiple alarms.
Ensure Bluetooth connectivity is reliable over time.
Simulate real-world use, including battery testing.
If any issues are found, make final tweaks to the code, hardware, or app.
Ensure both the device and app are polished and fully functional by the end of Week 3.
12/9
15/9
Component/Material
Amount
Link
1
already have it.
DS3231 Real-Time Clock (RTC) Module
1
1
1
Already have it
Buzzer
1
Already have it
LEDs
3
Already have them
Resistors (220 ohm)
3
Already have them
1
---
Breadboard
1
Already have them
9 V DC adapter
1
Already have them
--
Already have them
--
--
--
Already have them
--
Already have them