Zero Axis Technologies
Three round touchscreen medication reminders showing the home screen with the next scheduled dose, a dose alarm with Open, Close, and SOS buttons, and an adherence report with goal, punctuality, and average time deviation

Building a round-touchscreen medication reminder with captive-portal setup and adherence scoring

Challenge

A hardware team needed firmware for a bedside medication reminder with a round touchscreen: something that could alarm at the right time for each dose, let a patient or caregiver accept, skip, snooze, or trigger an emergency SOS from that same screen, track whether doses were actually taken on time rather than just logging that a button was pressed, and be set up entirely from a phone's browser rather than requiring a companion app or a cloud account.

Solution

We built the firmware on an ESP32-S3 driving a round ST7701S RGB LCD with GT911 capacitive touch through LVGL, laying out five dedicated screens - home, alarm, medication plan, reporting, and settings - backed by a hardware RTC and IMU, on-device battery monitoring, and an SD card for persistent storage. When a dose comes due, the scheduler wakes a dedicated alarm screen with a four-way action set - a green accept button, a red skip button, an amber postpone/snooze button, and a small dedicated SOS button - with the buzzer driven independently through its own service task. For setup, we skipped the companion-app route entirely: the device hosts its own Wi-Fi access point and a self-contained HTTP server serving a captive-portal-style set of pages straight from flash - a network picker, a medication plan builder, and an adherence report - talking to the firmware over a small JSON API for scanning and joining a home Wi-Fi network, saving and fetching the medication plan, and pushing notification settings, so a caregiver only needs a phone's browser, no app install, no account. The plan itself is stored as JSON and mirrored to both onboard flash and the SD card, with automatic recovery from the SD copy if the flash copy ever goes missing. Every dose event - accepted, taken ad hoc, cancelled, or postponed - is appended to a CSV diary on the SD card with its actual timestamp, and we built a reporting engine that reconciles that log against the plan: a "goal" percentage of doses actually taken against doses scheduled, a punctuality score that decays linearly from 100% at the exact scheduled time down to 0% at a 15-minute tolerance window, and an average time-deviation figure in minutes - correctly re-attributing a postponed-then-later-taken dose back to its original scheduled slot rather than scoring it against the postponed time, so snoozing an alarm doesn't quietly inflate the numbers.

Results

The result is a medication reminder that doesn't just beep and hope: every dose is logged, every day is scored against how closely it was actually followed, and that scoring holds up correctly even when a dose is postponed or taken ad hoc instead of accepted exactly on schedule. Setup and plan-editing happen entirely from a browser talking to the device's own access point, with no companion app, no account, and no dependency on the patient's home network being configured first - and because the plan and diary both live on durable storage with a flash-to-SD fallback, the device's state survives a reset without losing a day's medication history.

Contact Us

Kick-start your project

Get in touch with our team to discuss your business needs and see how we can help with a project like this one.