A wireless sumo robot system built with ESP8266 NodeMCU V3, the robot creates its own WIFI access point and serves web-based joystick controller that can be accessed from any device. Communication between the web interface and the robot is handled in real-time using WebSocket for low-latency control.
- NodeMCU V3
- Dual H-Bridge Motor Driver (e.g., L298N)
- 2x DC Motors (differential drive)
- External power supply (6–12V for motors)
| ESP8266 Pin | Motor Driver |
|---|---|
| D1 | Right Motor Forward |
| D2 | Right Motor Backward |
| D3 | Left Motor Forward |
| D4 | Left Motor Backward |
Defined in include/config.h.
- PlatformIO
- Node.js
- Node Package Manager (NPM) or pnpm (recommended)
- Python
git clone https://github.com/Siotics/Sumo
cd Sumo
cd web
npm install
npm run build
cd ..
pio run -t upload
After uploading firmware and filesystem, power on your ESP8266
- Look for a WIFI network named
SUMO-XXXXXXXX(where X's are the chip ID) - Default Password is
12345678
- Open a web browser and go to any website (you'll be redirected)
- Or directly navigate to 192.168.4.1
- Touch/Mouse: Use the central joystick for analog control
- Keyboard: Use WASD or arrow keys for digital control
- Touch Buttons: Use the directional buttons around the joystick
├── include/
│ ├── config.h # Pin definitions and WiFi settings
│ └── README
├── lib/
│ ├── DNS/ # Captive portal DNS server
│ ├── WebServer/ # HTTP and WebSocket server
│ ├── WheelController/ # Motor control logic
│ └── WifiAP/ # WiFi access point setup
├── src/
│ └── main.cpp # Main application entry point
├── web/ # Web interface (SvelteKit)
│ ├── src/
│ │ ├── lib/
│ │ │ ├── components/ # Svelte components
│ │ │ └── stores/ # WebSocket and state management
│ │ └── routes/ # SvelteKit pages
│ ├── package.json
│ └── vite.config.ts
├── extra_scripts.py # PlatformIO build automation
└── platformio.ini # PlatformIO configuration
See include/config.h