preset RCAN 1.6 RRN-312118357608
ESP32_Generic_WiFi_Bot
Generic ESP32 development board + motor driver — the WiFi-native evolution of the Arduino L298N combo. The ESP32 runs a WebSocket/REST server firmware that OpenCastor controls over the local network. Supports L298N, L293D, DRV8833, TB6612, or any PWM-based motor driver. Sub-$10 hardware, massive user base.
Scan to install
differentialanthropicrcan-1.6presets
Install with one command:
castor install opencastor.com/config/esp32_generic Provider
anthropic
Physics
differential
RCAN Version
1.6
Source
presets
Config (esp32_generic.rcan.yaml)
rcan_version: '1.6'
metadata:
robot_name: ESP32_Generic_WiFi_Bot
robot_uuid: 6c48f58e-0b28-4e7e-8008-769cd9ebb4b8
author: OpenCastor Default
license: Apache-2.0
tags:
- mobile
- diy
- esp32
- wifi
- websocket
- makerspace
- stem
- generic
description: 'Generic ESP32 development board + motor driver — the WiFi-native evolution
of the Arduino L298N combo. The ESP32 runs a WebSocket/REST server firmware that
OpenCastor controls over the local network. Supports L298N, L293D, DRV8833, TB6612,
or any PWM-based motor driver. Sub-$10 hardware, massive user base.
'
rrn: RRN-312118357608
rrn_uri: rrn://community/robot/opencastor/esp32-generic-wifi-bot/esp32_generic
agent:
provider: anthropic
model: claude-sonnet-4-5
vision_enabled: false
latency_budget_ms: 100
safety_stop: true
offline_provider: ollama
confidence_gates:
- scope: control
min_confidence: 0.75
on_fail: block
- scope: safety
min_confidence: 0.9
on_fail: block
physics:
type: differential
dof: 2
chassis:
wheel_base_mm: 150
wheel_radius_mm: 33
drivers:
- id: motor_driver
protocol: esp32_websocket
host: 192.168.1.200
port: 81
endpoint: /ws
channels:
left_pwm_gpio: 16
left_dir_a_gpio: 17
left_dir_b_gpio: 18
right_pwm_gpio: 19
right_dir_a_gpio: 21
right_dir_b_gpio: 22
pwm_freq_hz: 5000
pwm_resolution_bits: 8
deadband_pwm: 35
- id: ultrasonic_sensor
protocol: esp32_websocket
host: 192.168.1.200
port: 81
endpoint: /ws
sensor_type: hcsr04
trigger_gpio: 5
echo_gpio: 23
- id: servo_pan
protocol: esp32_websocket
host: 192.168.1.200
port: 81
endpoint: /ws
sensor_type: servo
gpio: 25
min_us: 500
max_us: 2500
- id: camera
protocol: mjpeg_stream
enabled: false
url: http://192.168.1.200:80/stream
connection:
type: websocket
host: 192.168.1.200
port: 81
mdns_name: esp32bot
reconnect_interval_ms: 2000
watchdog_timeout_ms: 3000
network:
telemetry_stream: true
sim_to_real_sync: false
allow_remote_override: false
rcan_protocol:
port: 8000
capabilities:
- status
- nav
- teleop
- chat
enable_mdns: true
enable_jwt: false
notes:
firmware: "Flash an ESP32 sketch/runtime that exposes /status (GET), /cmd (POST),\
\ and /ws (WebSocket) on this host/port. Arduino IDE, PlatformIO, and ESP-IDF\
\ are all valid paths as long as endpoint contracts match. Commands are JSON:\n\
\ {\"cmd\":\"drive\",\"left\":200,\"right\":200,\"duration_ms\":500}\n {\"cmd\"\
:\"stop\"}\n {\"cmd\":\"sensor\",\"id\":\"hcsr04\"}\n"
motor_driver_options:
l298n: Most common. Needs separate 12V supply. Add flyback diodes.
l293d: DIP chip. Lower current (600mA). Good for tiny motors.
tb6612fng: Preferred — efficient, low heat, 1.2A/ch.
drv8833: Tiny, efficient, 1.5A/ch. Best for small bots.
second_hand_tips: 'ESP32 dev boards are ~$3-6 on AliExpress. ESP32-WROOM-32 and
ESP32-S3 are the most common variants. Check makerspace scrap bins, STEM lab donations,
and Adafruit/SparkFun seconds on eBay.
'
tiered_brain:
fast_provider: ollama
fast_model: gemma3:1b
slow_provider: anthropic
slow_model: claude-sonnet-4-5
planner_interval: 10
agent_roster:
- id: nav_specialist
provider: ollama
model: gemma3:4b
scope: nav
- id: chat_specialist
provider: anthropic
model: claude-sonnet-4-5
scope: chat
geofence:
enabled: false
boundary:
type: none
reactive:
min_obstacle_m: 0.3
fallback_provider: ollama
cameras:
main:
type: http
url: http://127.0.0.1:8765/snapshot
safety:
local_safety_wins: true
emergency_stop_distance: 0.4
estop_bypass_rate_limit: true
watchdog:
timeout_s: 10
hardware_safety:
physical_estop: false
hardware_watchdog_mcu: false
p66:
enabled: true
loa_enforcement: true
consent_required: true
manifest:
estop_qos_bypass: true
consent:
required: true
mode: explicit
scope_threshold: control
security:
replay_protection:
enabled: true
window_s: 30
signing:
enabled: false
algorithm: Ed25519
loa:
enforcement: true
min_loa_for_control: 1
human_identity:
loa_required: 1
transport:
supported:
- http
- mqtt
constrained_enabled: false
multimodal:
enabled: true
max_chunk_bytes: 1048576
offline:
enabled: true
fallback_provider: ollama
r2ram:
scopes:
- discover
- status
- chat
- control
- safety
federation:
enabled: true
consent_bridge: false