HomeTeam FeaturesNova ContactAbout Download
SYSTEM OVERVIEW

Every Subsystem.
Explained.

A distributed real-time architecture with no cloud dependency — built for reliability in environments where connectivity cannot be assumed.

System Architecture

Raspberry Pi 4B Central orchestrator. Runs all Python modules (wakeword, odometry, mapping, viewer). I²C master to both ESP32s. MQTT broker via Mosquitto. 4GB RAM
ESP32 PCBmotori I²C slave 0x08. Controls 4× JGA25-370 motors via TB6612FNG drivers. Quadrature encoder feedback. 28-byte TX buffer to Pi at 10Hz. I²C 0x08
ESP32 PCBsens I²C slave 0x09. Manages 6× HC-SR04, MPU-6050 IMU, TCRT5000 line sensors, PCA9685 arm servos, relay/pump. I²C 0x09
ESP-Drone CRTP/UDP at 192.168.43.42:2390 over dedicated wlan1. Watchdog auto-landing after 8s without commands. UDP CRTP
ReSpeaker 2-Mic HAT WM8960 codec at I²C 0x1A. Stereo 48kHz/S16_LE. GCC-PHAT DOA estimation for voice direction. seeed-voicecard DKMS on kernel 6.12. WM8960
Power System 3S LiPo 5500mAh. 12V motors, 5V logic via XL4015, 3.3V via LM2596. Schottky diodes for bench/battery hot-swap. PCBalim 2-layer. 3S LiPo
LagmaBills assemblato

Real-time Data Flow

I²C Bus

High-frequency local data: Pi polls both ESP32s at 10Hz. Wire0 (GPIO 21/22) as slave toward Pi; Wire1 (GPIO 32/33) as master toward PCA9685/MPU-6050.

MQTT (Mosquitto)

Event-driven high-level messaging on localhost:1883. Topics: robot/motori/cmd, robot/sensori/distanze, robot/odometria, robot/nav/goal, drone/cmd/rpyt and more.

WebSocket

Audio streaming to Whisper server (pure binary PCM16, no framing). Web dashboard map viewer on ws://pi:8765. Occupancy grid pushed at 1Hz.

Tailscale VPN

Remote access to Pi at 100.100.61.49 without port forwarding. Transparent to MQTT — ESP32s communicate on local WiFi only.

LagmaBills assemblato

Hardware Specifications

ComponentRoleInterfaceNotes
HC-SR04 ×6Obstacle + cliff detectionGPIO (TRIG/ECHO)ECHO 5V → 10k+20k divider to ESP32
MPU-60506-axis IMU (acc + gyro)I²C Wire110ms update, auto calibration on boot
TCRT5000 ×3Line following / cliffGPIO digitalSX, CENTRO, DX — mask byte in I²C buf
NEO-6M GPSWorld-frame positioning/dev/ttyS0 9600bdGGA+RMC fusion, Leaflet.js live track
OV5647 CSIMJPEG camera streamCSI ribbonrpicam-vid → Flask MJPEG on :8080
PCA96856× servo PWM driverI²C Wire1 0x4050Hz, 27MHz oscillator, SERVO_MIN=150

Custom KiCad PCBs

  PCBmotori

4-layer. TB6612FNG ×2, encoder headers, 10kΩ pull-downs on GPIO 2 & 12. 1.5mm traces for motor outputs, 2.0mm for 12V rail.

  PCBsens

2-layer. All sensor headers, relay driver, TCRT connectors. Wire1 for PCA9685 + MPU-6050. Voltage dividers for HC-SR04 ECHO lines.

  PCBalim

2-layer power distribution. XL4015 (12V→5V), LM2596 (5V→3.3V). Schottky OR diodes for seamless bench/battery switching.

All boards manufactured by JLCPCB. THT-only assembly. Trace standards: 0.3mm signal / 0.5mm 3.3V / 1.0mm 5V / 1.5mm motor / 2.0mm 12V. Copper pour on high-current rails.

Foto PCBmotori
Foto PCBsens
Foto PCBalim