Skip to content

salimcodes/olumide-hardware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Olumide Firmware

Bedside hardware companion for the Olumide OpenClaw plugin.

Olumide is a self-hosted chronic-disease companion you message from WhatsApp, Telegram, or any channel your OpenClaw gateway supports. This repository contains the Arduino firmware that turns an Arduino Uno into the optional bedside device - a low-friction physical layer for medication adherence and daily check-ins.

Final Olumide hardware build

Olumide is an open-source personal-health tool, not a medical device. It does not diagnose, prescribe, or replace clinical care. See docs/SAFETY.md.


What this device does

Plugged into the laptop or home server running your OpenClaw gateway, the device:

  • Logs medication doses - tap an RFID-tagged pill bottle on the reader and the dose is logged into your Olumide logbook.
  • Surfaces reminders - the LCD shows your next dose and the RGB LED ambient-codes your day (green = on track, yellow = something due, red = attention).
  • Triggers a check-in - short-press the button to tell Olumide "I need you"; it opens a session in your default chat channel.
  • Triggers a panic event - long-press the button (>3s) to fire a crisis hook; Olumide notifies your designated circle.
  • Tracks ambient conditions - DHT11 reports room temp/humidity (medication storage); photoresistor dims the LEDs at night.
  • Survives gateway downtime - the DS1302 RTC keeps accurate time and the device can hold up to 24 hours of pre-loaded reminders if the USB or gateway drops.

Everything else lives in the gateway. The firmware itself is small and boring on purpose.


Wiring diagram

Olumide hardware wiring diagram


Repository layout

olumide-firmware/
├── README.md                  # you are here
├── LICENSE                    # MIT
├── firmware/
│   └── olumide_firmware.ino   # the sketch
├── docs/
│   ├── WIRING.md              # pin map + breadboard guide
│   ├── PROTOCOL.md            # JSON line protocol over USB serial
│   ├── BUILD.md               # build, flash, and verify
│   ├── SAFETY.md              # scope and disclaimers
│   └── TROUBLESHOOTING.md     # common problems
├── examples/
│   ├── tag_writer.ino         # one-off sketch to write tag IDs to RFID cards
│   └── protocol_demo.py       # talk to the device from a host script
└── assets/
    └── wiring.txt             # ASCII wiring diagram

Quick start

  1. Wire the board - see docs/WIRING.md.
  2. Install Arduino libraries - see docs/BUILD.md.
  3. Flash the firmware - open firmware/olumide_firmware.ino in Arduino IDE, select your Uno + serial port, click Upload.
  4. Tag your pill bottles - run examples/tag_writer.ino once per bottle; stick the RFID tag on it; record the tag ID in your Olumide profile (profile.yaml).
  5. Connect to the gateway - install the Olumide plugin and point it at the device's serial port. The gateway will auto-detect the device on the next handshake.

That's it. Tap a tagged bottle on the reader and watch the dose appear in your logbook.


What you need

Hardware

The standard Arduino "Uno R3 Super Starter Kit" covers everything. Specifically:

Component Purpose
Arduino Uno (or CH340G clone) Microcontroller
830-tie breadboard + jumper wires Wiring
Push button Check-in / panic
RC522 RFID module + tags/cards Dose logging
1602 LCD (I2C backpack recommended) Status display
Active buzzer Reminder beeps
Passive buzzer Escalation tones
RGB LED module Ambient status
DHT11 Room temp / humidity
DS1302 RTC + CR2032 cell Offline-accurate clock
Photoresistor (5528) Night dimming
Resistors: 220Ω, 1KΩ, 10KΩ Pull-ups + LED current-limit

Optional but recommended: an I2C backpack on the 1602 LCD frees up six digital pins. The wiring docs assume one.

Software

  • Arduino IDE 2.x (or arduino-cli)
  • Libraries (install via Library Manager - exact names in docs/BUILD.md):
    • MFRC522 - RC522 RFID
    • LiquidCrystal_I2C - 1602 over I2C
    • DHT sensor library (Adafruit) - DHT11
    • Rtc by Makuna - DS1302 RTC
    • ArduinoJson - line protocol parsing

Host

  • A laptop or home server running OpenClaw with the Olumide plugin installed. The plugin opens the device's USB serial port and bridges it to the gateway.

How the device talks to OpenClaw

The firmware speaks a tiny line-delimited JSON protocol over USB serial at 115200 baud. The Olumide plugin opens the port, reads events, and sends commands.

A taste:

// device → host (events)
{"t":"EVT","e":"BTN_SHORT","ts":1745000000}
{"t":"EVT","e":"RFID","tag":"AMLO_5MG","ts":1745000100}
{"t":"TELE","temp":28.4,"hum":62,"lux":412,"ts":1745000060}

// host → device (commands)
{"t":"CMD","id":"c1","c":"REMIND","label":"Amlodipine 5mg","color":"GREEN","beep":"SHORT"}
{"t":"CMD","id":"c2","c":"LCD","l1":"Next: 20:00","l2":"Metformin 1g"}
{"t":"CMD","id":"c3","c":"ALERT","reason":"HYPO"}

Full spec: docs/PROTOCOL.md.


Privacy

This device sees:

  • Which RFID tag was tapped, and when.
  • Button presses.
  • Room temperature, humidity, light level.

It does not see medication names, patient identity, or anything else - those live in the gateway's plugin config. Tags are opaque IDs (e.g. AMLO_5MG); the device cannot map them back to a drug. Cut the USB cable and the device is just a beeping breadboard.


Status

Pre-1.0. Useful as-is for one person; expect rough edges. Issues and PRs welcome.


License

MIT - see LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages