Files
MultiRoombaRover/outline.md
T
2025-11-06 03:06:32 -05:00

2.1 KiB

notes and ideas

the multi-roombarover. control multiple roombas through a web UI. On each roomba is an esp32 and an IP camera.

esp32 firmware

defined in platformio.ini: rover's name server's IP address wifi connection info enable / disable for each motor

  • main brush
  • side brush
  • vacuum camera IP address battery info (for different battery behaviors):
  • full number (2068)
  • warn number (1700)
  • urgent number (1650)

esp32-s3 firmware, platformio UART hooked up to the roomba's OI port one more GPIO on the roomba's BRC pin

  • pulsing low for one second every minute to keep the roomba awake

esp-server comms

the ESP will report to the server when it connects:

rover's name enable / disable for each motor

  • main brush
  • side brush
  • vacuum camera IP address battery info (for different battery behaviors):
  • full number (2068)
  • warn number (1700)
  • urgent number (1650)

the ESP will poll the roomba for ALL sensors, decode them, and send them to the server, which will forward it to clients over socket.io

server

nodejs server, ES6 imports and exports

one entrypoint file, the only thing in this file should be a bunch of imports for our "modules", imported in the right order modules should NOT be intertwined within the entrypoint file all of the modules will import what they need from the other modules all of the modules will export what they need other modules to know

create global express, websocket, and socket.io instances for all of the modules to share. modules will add their own listeners / senders

frontend

javascript is ES6, same module style as the server.

UI is made in HTML with CDN tailwind. NO BUNDLERS.

each frontend module will have a JSON state update over socket.io each module will export a function to update it's state

use these functions to update all modules on connect, from a UI init state event. this event will be sent all of the module data at once, in JSON

split each JSON element to the UI element functions

one single system for loading and saving user settings to cookies / browser storage

the UI:

  • WASD rover movement controls
  • buttons to enable OI, enter safe mode, full mode, and seek dock