WallpaperMachine
The wallpapers you love. A new home on your Mac.
Stella — robot dashboard
Translation pending
LifestyleJavaScript · TypeScriptGitHub @KingSharif1OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A DIY autonomous home robot built on a Roomba 694, with a Raspberry Pi 4 brain, an Arduino Mega 2560 bridge, an RPLIDAR C1, a Pi camera and ROS 2 Jazzy, plus this web dashboard.
Live dashboard (demo mode for visitors): https://roomba-dashboard.vercel.app
I bought a secondhand Roomba 694 in August with one idea: turn a dumb vacuum into a robot that maps my place and cleans on its own, run from a dashboard I built myself. I named her Stella.Read the full README ↗A DIY autonomous home robot built on a Roomba 694, with a Raspberry Pi 4 brain, an Arduino Mega 2560 bridge, an RPLIDAR C1, a Pi camera and ROS 2 Jazzy, plus this web dashboard.
Live dashboard (demo mode for visitors): https://roomba-dashboard.vercel.app
| Path | What it is |
|---|---|
web/ | Next.js dashboard. Install, dev, build, and tests all run here. |
data/ | Rooms, doors, cleaning sessions, learning notes, no-go zones, and saved routes the dashboard reads. |
docs/ | How the dashboard and the live link fit together. |
Raw sensor recordings and video stay out of git (data/recordings/, data/video/). Robot build notes live in ARK, not in this repo.
Read it top to bottom. You and the web are at the top, the Pi is the brain in the middle, the Roomba and its sensors are the body at the bottom. Your phone talks straight to the Pi through Tailscale, so the website is only the page you load.
When you say "Stella, play The Sandman on Netflix": the mic hears you, the voice part catches the wake word, the AI router picks the TV action, Roku control plays it, and Stella speaks back.
The detailed version, with the voice path, power chain and wake wire: docs/img/stella-system-detailed.svg.
I bought a secondhand Roomba 694 in August with one idea: turn a dumb vacuum into a robot that maps my place and cleans on its own, run from a dashboard I built myself. I named her Stella.
August to September: the cable hunt. The plan was simple. Talk to the Roomba over its serial port (iRobot's Open Interface) from an Arduino, then hand that to a Raspberry Pi running ROS 2. The first cable I bought was an 8-pin mini-DIN. It "kind of fit" the Roomba's 7-pin port, and it never lined up TX and RX. I burned a lot of evenings on wire-guessing, test sketches and fake wins before the right 7-pin cable showed up.
The board that wouldn't talk. With the right cable in hand, the original board still gave me nothing. Power and ground were fine, but its serial pins sat at 0 V. My 694 has the newer Wi-Fi board, and that board's firmware blocked the serial port (the Open Interface). So on September 23 I ordered a used 600-series mainboard off eBay for about $22.
September 29: the breakthrough. The new board arrived, and that day it all came together. I traced every wire with a multimeter, got two-way serial at 115200 baud, and drove the Roomba forward, back and in both spins from my own code. By that night it was streaming sensors, driving under ROS 2 with keyboard teleop, the RPLIDAR C1 was publishing laser scans, and the dashboard's Manual Drive pad was moving the real robot.
October 11: the Pi died. I'd been running the Pi off a laptop's USB port and then a cheap power bank. Neither could deliver the ~3 A a Pi 4 needs. It sat under-voltage and throttling at 85 °C, and after one power swap too many it stopped booting. The Mega and the lidar survived. A new Pi 4 is on order, and this time it gets proper power and a fan from day one.
Ground rule: make it work before making it pretty.
| Part | Role | Result |
|---|---|---|
| Roomba 694 + original Li-ion pack (14.4 V nominal) | Body, wheels, built-in sensors | ✅ Works |
| Original Roomba 694 mainboard (Wi-Fi model) | Roomba controller | ❌ Firmware blocked the serial port (Open Interface). Replaced |
| Used 600-series mainboard (fits 670–694) | Replacement controller | ✅ Serial works, Clean works |
| 8-pin mini-DIN cable | Serial cable (first try) | ❌ Wrong connector. TX/RX never lined up |
| 7-pin mini-DIN cable (Adafruit #2438) | Serial cable | ✅ Cut, traced and wired |
| Arduino Mega 2560 | USB serial bridge to the Roomba | ✅ Works |
| Raspberry Pi 4 4GB (first one) | Brain: Ubuntu Server 24.04, ROS 2 Jazzy | ❌ Died from weak power and heat |
| Raspberry Pi 4 4GB (replacement kit) | Brain | Ordered |
| RPLIDAR C1 + USB adapter | 2D lidar for mapping | ✅ Scans at ~10 Hz. Not mounted yet |
| Pi Camera Module | Camera | On hand, not set up yet |
| MPU6050 (GY-521 / Elegoo shield) | Gyro/accel for heading | On hand |
| LM2596 buck converters (3 A rated) | 5 V power | ⚠️ Too weak for the Pi. Small extras only |
| XH-M609 low-voltage cutoff | Battery protection (~12.8 V) | On hand |
| Cheap USB power bank / laptop USB | Pi power during testing | ❌ Under-voltage. Never again |
vcgencmd get_throttled should read 0x0. Anything else means power or heat trouble.create_robot driver + rplidar_ros → a small FastAPI service → this dashboard over a private network./map), with no-go zones and route editing./camera) feed view./history) of cleaning sessions./learning): a queue for verifying objects./settings) and owner sign-in (/login). Only the owner can control the real robot. Everyone else sees demo mode.cd web
npm install
cp .env.example .env.local
npm run dev
Scripts (run from web/):
| Command | What it does |
|---|---|
npm run dev | Dev server |
npm run build | Production build |
npm run start | Serve the production build |
npm run lint | ESLint |
npm test | Unit tests |
In web/, copy .env.example to .env.local and fill in your own values. Never commit real values.
ROBOT_URL: the robot API origin (server-only). Leave it unset for demo mode.OWNER_EMAIL: the one account allowed to control the robot.NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY: needed for owner sign-in.More detail on the data flow and the robot API contract: docs/ARCHITECTURE.md.