TEAM KSHEMANGKARI · WORLD ROBOTICS OLYMPIAD 2025 · FUTURE INNOVATORS

Care that
never sleeps.

A walking stick that knows which pill is the right one, remembers when it is due, feels the fall you did not see coming, and calls someone who can help.

The CareCompanion assistive stick standing against a wall, camera module and display mounted near the handle.
FIG. 00 — The prototype, assembled.

Demonstration · 9:16

FIG. 01 — THE PROBLEM

She kept forgetting the one that mattered.

Aebong's grandmother fell in the bathroom and was seriously injured. She often takes one medicine twice. Sometimes she even forgets to take her medicine timely. Her recovery was complicated by a daily medication she often forgot to take. We realized that many elderly people face similar challenges with health monitoring and medication management. This inspired us to create a solution. We envisioned a smart assistive stick that could help elderly people with their daily health needs. We named our idea CareCompanion.

Field note — origin of the project

Forgetting a dose, confusing two boxes, or missing a reminder is not a small mistake when you are eighty and living alone. Caregivers cannot watch every hour of every day.

125,000 estimated deaths a year in the United States linked to medication nonadherence
30–50% of chronic disease treatment failures attributed to nonadherence
25% increase in all-cause mortality associated with nonadherence
11.28M0.79M0.73M AGED 65+ MEDICATION HARM/YR DEATHS 65+/YR
FIG. 1.1 — Bangladesh, population aged 65 and over. The second and third figures are estimates at proxy rates of 7.0% and 6.5% respectively, as stated in our project document. Bars are to scale.

11.28 million people are the whole of the opportunity. The 0.79 million facing medication-related harm each year are the reason we built this one.

FIG. 02 — THE DEVICE

Nine parts, one stick.

Everything is mounted on a standard aluminium walking stick, so the thing an elderly person already leans on becomes the thing that looks after them.

OLED 0.91" ESP32 SIM800L GSM DFPLAYER + BUZZER HUSKYLENS 2MP MAX30102 MPU6050 GY-NEO6MV2 GPS BATTERY shows the reminder the brain calls for help speaks the alert reads the pill box pulse + SpO2 detects the fall says where keeps it running
FIG. 2.1 — Component placement. Not to scale.
The prototype electronics laid out on perfboard: ESP32, OLED display, sensor modules, speaker and wiring.
FIG. 2.2 — And the same thing in reality, on perfboard.

FIG. 03 — HOW IT WORKS

Watch, warn, verify.

On power-up the stick brings up its sensors in order, joins Wi-Fi, and synchronises the clock. Then it loops — for as long as it is switched on.

  1. 01

    Read the body

    The MAX30102 looks for a fingertip. Above an infrared threshold it starts averaging beats per minute. Below 50 or above 100, the buzzer sounds.

  2. 02

    Watch for the fall

    The MPU6050 reports acceleration and tilt continuously. A hard impact and a flat resting angle together mean a fall — either alone does not. That pairing is what keeps it from crying wolf.

  3. 03

    Keep the time

    An NTP client holds the clock. Alarms arrive over Bluetooth as alarm:-HH:MM and are stored until they match.

  4. 04

    Sound the reminder

    At the appointed minute: two seconds of buzzer, a spoken prompt from the DFPlayer, and a message on the OLED.

  5. 05

    Check the pill

    The HuskyLens looks at what is being held. Tag ID 1 is the right medicine — a confirmation tone. Anything else is the wrong box, and it says so. If nothing is recognised within sixty seconds, the dose counts as missed and the alerts repeat.

FIG. 3.1 — Fall detection (excerpt)
// Calculate total acceleration magnitude
float totalAccel = sqrt(axg * axg + ayg * ayg + azg * azg);

// Calculate tilt angle (using Z-axis reference)
float angle = atan2(sqrt(axg * axg + ayg * ayg), azg) * 180.0 / PI;

// Check fall conditions
if (totalAccel > accelThreshold && angle < angleThreshold) {
  fallDetected = true;
  Serial.println("⚠ Fall detected!");
  digitalWrite(BUZZER_PIN, HIGH);  // Alarm ON
  delay(2000);                     // Keep alarm for 2s
  digitalWrite(BUZZER_PIN, LOW);   // Alarm OFF
} else {
  fallDetected = false;
}
FIG. 3.2 — Setting the alarm over Bluetooth (excerpt)
// Check Bluetooth input
if (SerialBT.available()) {
  String command = SerialBT.readStringUntil('\n');
  command.trim();                              // Remove any whitespace

  if (command.startsWith("alarm:-")) {
    String timePart = command.substring(7);    // Get HH:MM
    int separator = timePart.indexOf(':');
    if (separator != -1) {
      alarmHour   = timePart.substring(0, separator).toInt();
      alarmMinute = timePart.substring(separator + 1).toInt();
      SerialBT.printf("Alarm set for %02d:%02d\n", alarmHour, alarmMinute);
    }
  }
}

// SerialBT.printf("current time %02d:%02d\n", currentHour, currentMinute);
// Check alarm
if (alarmHour == currentHour && alarmMinute == currentMinute && currentSecond == 0) {
  SerialBT.println("Please Take Your Prescribed Medicine!");
  digitalWrite(BUZZER_PIN, HIGH);
  delay(2000);   // Keep buzzer on for 5 seconds
  digitalWrite(BUZZER_PIN, LOW);
  myDFPlayer.play(1);
  alarm_recheck = millis();
  alarm_done = 1;
}
FIG. 3.3 — Verifying the medicine (excerpt)
if (alarm_done) {
  if (result.ID == 1) {
    med = 1;
    med_time = millis();
    SerialBT.println("Proper Medicine Recognized");
    myDFPlayer.play(3);
  } else {
    if (millis() - med_time > 60000) {
      med = 0;
    }
    SerialBT.println("This medicine is not correct. Please choose the right one");
    myDFPlayer.play(2);
  }
}
Wiring diagram: ESP32 connected to the OLED display, MAX30102, MPU6050, HuskyLens, SIM800L, GPS module, DFPlayer, buzzer and battery.
FIG. 3.4 — Wiring, as built.
System flowchart: component assembly and the decision path from sensor reading through alarm to medicine verification.
FIG. 3.5 — The full system flowchart, as we drew it during the build.

FIG. 04 — IN THE FIELD

Where it goes.

At home

The most direct use. For someone living alone, the stick is already within reach — on the arm of a chair, by the bed. It does not need to be worn, remembered, or charged on a schedule someone else sets.

Assisted living

Staff cannot check every resident's medicine schedule by hand. Reminders run per resident, and staff attention goes to the cases that need judgement.

Hospitals and clinics

Heart rate and SpO₂ are logged as they are taken, so a doctor sees a trend rather than a single reading. GPS can locate a patient in a large ward.

What it cannot do yet

Native app support

The system runs on Arduino IoT Cloud, which limits access and scheduling. Reaching its full potential needs a dedicated server, a real-time database, and an app to drive them.

Recognition scope

HuskyLens identifies medicines from tags it has been taught. Generalising to any pharmacy box needs a much larger dataset and OCR to read the printing.

FIG. 05 — THE LANDSCAPE

Others got here first. Not here.

$2.5B$12.3B 20252035 (PROJECTED) 16.8% CAGR
FIG. 5.1 — Global healthcare companion robot market.

Why this matters in Bangladesh

Robotics is arriving — in rehabilitation

Bangladesh recently opened its first robotic rehabilitation centre at Bangladesh Medical University in Dhaka, with over 60 robots, 22 of them AI-powered, for physiotherapy and neurological rehabilitation.

Health-tech here is digital, not physical

Praava Health, CMED Health and Arogga are changing how people reach care, through apps and online pharmacies. None of them puts a physical companion in someone's hand. That gap is where CareCompanion sits.

FIG. 06 — THE TEAM

Team Kshemangkari

Three students, one coach, and a grandmother who kept forgetting her medicine.

FIG. 07 — WHAT'S NEXT

What we would build with more time.

An app worth having

Real-time vitals for whoever is worrying, push alerts on a missed dose or a detected fall, and a way for a carer to set the schedule remotely instead of over Bluetooth.

Recognition that generalises

A far larger and more varied training set, a stronger model, and OCR so the camera can read a box it has never been shown.

A voice

Simple spoken commands — "when is my next dose", "call my son" — so the stick works for someone who cannot read the display.