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