DWG
STL-001
REV
F · 2026-10-17
BY
K. Sharif
STATUS
Online · learning
SRC
github/stella
LIVE
/dashboard
Fig. 1 — Stella as built. Drag to rotate · scroll to zoom · tap a part.

1. The Roomba that kept hitting the same wall

I got a Roomba 694 off Facebook Marketplace. Then I watched it work.

It bumped into a wall, went around, came back, and bumped the same wall again. It wasn't smart at all.

The engineer in me knew a Raspberry Pi and an Arduino could make it way better. I used to love watching Pi and Arduino DIY videos. This time, with AI, I didn't have to watch five to ten videos just to figure out if I had the right model. I ordered the wire and got started.

Base
Roomba 694, $40
Li-ion 14.4 V (16.8 V full)
iRobot Open Interface
serial · 115200 baud

2. What I added

Raspberry Pi 4

The brain. Ubuntu, ROS 2 Jazzy, mapping and voice.

RPLIDAR C1

Spins 360° to map the apartment.

Pi Camera

Looks forward from just in front of the Pi.

CP2102 adapters

Two tiny USB-serial boards. One talks to the Roomba, one to the lidar.

600-series board

A used main board with a serial port that works. This was the unlock.

Mini-DIN cable

Adafruit's 7-pin cable. It carries the Roomba's serial.

Speaker + mic

A voice. Wake word: "Stella".

Power chain

Fuse → cutoff → switch → 5 A buck. Clean 5.15 V from the Roomba battery.

3. How it fits

Fig. 2 — Top view of the 10 in deck, redrawn Oct 17 without the Mega. Hover or tap a part.

The main board and battery live inside the Roomba. Lidar sits on four 35 mm posts so its beam clears everything (≈ 65 mm above the plate). The two red adapters sit where the Mega used to be.

4. How it's wired

Fig. 3 — Power, serial, USB and camera, redrawn Oct 17. Red dots are solder joints; squares are connectors. Hover or tap a part. Swipe sideways →

Mini-DIN colors are from my cable, traced with a meter. VPWR is raw battery (~15 V): never on the adapters or the Pi. Green (BRC) is taped off for now. No buzzer: the Roomba plays beeps itself (OI Song/Play).

The first drawing had an Arduino Mega between the Roomba and the Pi, plus an LCD and a motion sensor. The Mega died on Oct 13, so I took it out: the Roomba and the lidar now each plug into the Pi through a CP2102 adapter. The old drawing is in the blog.

5. Timeline

  1. 2026-08-20Brought the Roomba home from Facebook Marketplace ($40), set it up in the iRobot app, and watched it hit the same wall. That night I asked Claude what it would take to make it smart.
  2. 2026-08-21 · day 1 blog · part 1Ordered the lidar and a cable, picked up a multimeter and a switch, flashed Ubuntu Server 24.04 on the Pi and fought ROS 2 Jazzy until it installed. Most of the expensive parts (Pi 4, Mega, camera, MPU6050) came from a robotics kit my friend Eback gave me.
  3. 2026-08-22 → 08-23Arduino blink test, first turtlesim run between the Pi and my laptop, and the first web dashboard repo (mock data).
  4. 2026-08-24 → 08-25 · day 2The cable arrived: an 8-pin MD8. The Roomba's port is a 7-pin mini-DIN. It kind of fits, which made it worse. Days of wire-guessing and silence.
  5. 2026-08-26 · day 3The RPLIDAR C1 arrived and spun up over USB on the first try.
  6. 2026-08-27The right cable came in: Adafruit #2438, purpose-built 7-pin.
  7. 2026-08-31 → 09-03Still no data. Signal pins on the original board sat at 0 V. It's the Wi-Fi model, and its firmware blocks the serial port. I took the wheel out, researched how the board works, and looked at replacements.
  8. 2026-09-23Ordered a used 600-series main board on eBay (~$22).
  9. 2026-09-29 blog · part 2Swapped the board, traced every wire with a meter, and got two-way serial. By night the Roomba was driving from my code, streaming sensors, and the lidar was publishing scans in ROS 2. Manual drive went live on the dashboard.
  10. 2026-10-11Locked out of the Pi after a 10-day break; reset it headless and switched to key login. Named her Stella and gave her a logo.
  11. 2026-10-11 blog · part 3The Pi died. Weeks on laptop USB and a weak power bank: under-voltage, throttling at 85 °C, then no boot. The Mega and lidar survived.
  12. 2026-10-11Redesigned power around the Roomba battery: 3 A fuse, XH-M609 cutoff, rocker, DROK 5 A buck at 5.15 V. Planned the 10 in deck and ordered the last parts.
  13. 2026-10-12Finished the diagnosis, ordered a replacement Vilros Pi 4 kit, wrote the safety and rebuild plan.
  14. 2026-10-13 blog · part 4The new Pi came up and I named it stella. Then the Mega died too: hot chip, no more uploads. I used an Uno for a few days so the Roomba still had a link, and found the old lidar board was shorted 5 V to ground.
  15. 2026-10-15 blog · part 5Cheap red CP2102 adapters fixed everything. The lidar spins at 10 Hz again, and the Roomba talks straight to the Pi at 115200 baud. Six services start by themselves at boot. I said "Stella, stop" and she stopped.
  16. 2026-10-16The speaker came and she talks. She can turn on the TV, open Netflix and press remote buttons over my Wi-Fi. I also gave her an optional cloud brain (Claude) for normal sentences. It can only pick from a short list of safe actions.
  17. 2026-10-17 dashboardThe new dashboard went up: battery, a map of my apartment, the lidar view, remotes for all three TVs, the Nest thermostat, and a call window to talk to her. The Pi fan kept making her hear random commands, so now she ignores noise and answers to "Kalani bear."
  18. NextMake the first real map with the lidar, then teach her to clean on her own and "go to the kitchen." The camera comes after that.

6. Parts

#PartJobFrom
01iRobot Roomba 694Body, wheels, batteryFacebook Marketplace, $40
02Used Roomba 600-series main boardRoomba controller with working serialeBay, ~$22
03Adafruit #2438 mini-DIN 7-pin cableRoomba ↔ adapter serialAdafruit, $6.95
04CP2102 USB-serial adapters, 3-pack (red HW-598A)Roomba link + lidar link (one spare)Amazon
05Vilros Raspberry Pi 4 4GB Basic Starter Kit, fan-cooled caseBrain (replacement Pi)Amazon
06Raspberry Pi Camera Module V2VisionEback's kit *
07WayPonDEV RPLIDAR C1 360° lidarMappingAmazon, $71.90
08MPU6050 (GY-521)Spare. Heading, laterELEGOO kit *
09LCD1602 16x2 moduleSpare. Status screen, laterELEGOO kit *
10XH-M609 low-voltage disconnect moduleBattery protectionOn hand *
11KCD1 mini rocker switch, 2-pin SPSTMain on/offOn hand *
12DROK adjustable 5 A buck converter5.15 V for the PiAmazon
13ABSOPRO 3 A inline fuse holderShort protectionAmazon
14ADTDA 10 in clear acrylic discs, 1/8 in (2-pack)The deckAmazon
15HELIFOUNER M2.5 brass standoff kit35 mm lidar posts, camera mountsAmazon
16Luxify VHB 5952 tape padsPlate → Roomba, no drillingAmazon
17ASHATA mini pillow speakerVoice outAmazon
18JOUNIVO JV808 USB microphoneVoice inAmazon
19USB-C cable, strippedBuck → PiMy own cable

* Already on hand or from a kit, so there's no order of mine to link. The link is a matching Amazon listing (same model), not necessarily the exact one I have.

7. What it took

I didn't think it would be easy, but I didn't expect how much patience it would take. The worst part is getting a part and it's the wrong one, or it's a whole different issue, and then waiting again.

I learned a lot: hosting servers on a Pi, the Arduino, every part of the robot and how it all connects to the motherboard, in a smart but messy way. I learned the hard way why the newer 694 board won't work: on the Wi-Fi model, the firmware locks you out of the serial port (the Open Interface). An older 600-series board fixed it.

After a month or two, I believe I have all the parts. I spent a lot more money than I thought I would.

Rules I learned
Get the right part the first time.
Ground first, always.
Never trust wire colors.
Never power a Pi from a power bank.

8. After the hardware worked

Once she could move and see, the rest was software.

Everything runs on the Pi. A small web server sits on top of ROS 2 and the dashboard talks to it over Tailscale, a private tunnel. There's no login: if my phone is on my tailnet I see her live, and everybody else gets the demo.

The Roomba, the lidar, the TVs and the thermostat all hang off that one server. The TVs and the Nest stay on my home network, so no cloud account is needed. Only the optional Claude brain leaves the house, and it only sees text.

On the Pi
roomba-driver
roomba-api
stella-lidar
stella-charge
stella-safety
stella-voice
stella-matter
Fig. 4 — Where everything lives. Blue is software, green is hardware, orange is optional cloud. Hover or tap a part. Swipe sideways →

9. Teaching her to listen

She listens all the time but only wakes up for her name: "Stella" or "Kalani bear." Short commands like stop, go home and TV volume work with no internet at all.

Anything else goes to Claude as text. It can only pick from a short list of safe things to do, and if the internet drops she falls back to the simple commands. She can also check on herself and tell me what's wrong: heat, power, mic, Wi-Fi, the TV, the thermostat.

The hard part was the Pi's own fan. It made her hear random commands, so now she ignores anything that isn't loud and clear, except her name.

What I learned
A fan will happily "say" stop.
Her name needs a looser bar than commands.
Let the AI pick from a list. Never let it run commands.
Fig. 5 — From a spoken word to an action.

10. The dashboard

The website is her control room, built for a phone: a map of my apartment with no-go zones, the lidar view, one Clean/Stop button, a Charge button, remotes for all three TVs, the thermostat, and a call window to talk to her.

Open it anywhere and you see demo data. Open it on my tailnet and it goes live.

Open the dashboard →

Live now
Battery and charging
LiDAR scan
3 TVs
Nest thermostat
Voice and self-check

Not yet
Map built from the lidar
Cleaning on her own
Stella dashboard home screen with the apartment map
Fig. 6 — The dashboard home. Tap to open the real thing.

11. Why Stella

One Piece is one of my favorite anime. Dr. Vegapunk is one of the smartest people alive in that world, so smart he split his mind into six satellite bodies. Stella is the name of the original Vegapunk, the main body.

In the same sense, Stella has a part of me in her. We really learned and grew together.