Skip to the content
2 layers90.1 × 85.5 mmPCBsens, the printed circuit board in 3D

A Mecanum-wheeled robot for civil protection, powered by a Raspberry Pi orchestrating two custom ESP32 PCBs, sensors, a robotic arm, and a drone companion over MQTT. It navigates autonomously, maps its environment, avoids obstacles, and is controlled via voice AI, a MAUI app, or browser dashboard.

Size
90.1 × 85.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
41
Nets
39
Pads
131
Tracks, vias
128, 9
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
29 May 2026
Updated
24 Oct 2026

Overview

PCBsens is an open-source printed circuit board by Dragonyx118, from the Dragonyx118/LagmaBills repository on GitHub. It is a 2-layer board of 90.1 × 85.5 mm with 41 parts on 39 nets, routed with 128 tracks and 9 vias.

Its parts include 19 connectors, 16 resistors and 2 capacitors. It belongs with the home automation and IoT and robots and motor control boards and the ESP32 boards of this library.

README

README.md

L.A.G.M.A. B.I.L.L.S.

Land And Ground-to-Midair Agent — Built for Intelligent Linked Local Support

Platform Firmware Python MQTT App KiCad AI License

A Mecanum-wheeled robot for civil protection, powered by a Raspberry Pi orchestrating two custom ESP32 PCBs, sensors, a robotic arm, and a drone companion over MQTT. It navigates autonomously, maps its environment, avoids obstacles, and is controlled via voice AI, a MAUI app, or browser dashboard.

Presentato ad Arduino Day 2025.

Team

  • Daniele Cerioli (Dragonyx) — firmware, software, PCB, integrazione di sistema
  • Simone Panelli (Tabella_Brodosa) — componenti AI
  • Andrei Corduneanu — modellazione 3D, falegnameria

Repositories

RepoContenuto
lagmabills (questo)Firmware ESP32, codice Python Raspberry Pi, PCB (KiCad), modelli 3D
lagmabills-appApp companion LagmaIpp (.NET MAUI, Windows + Android)
lagmabills-webSito web del progetto

Struttura del repository

text
lagmabills/
├── firmware/
│   ├── firm_esp32_motori/     # Firmware PCBmotori (PlatformIO)
│   └── firm_esp32_sensori/    # Firmware PCBsensori (PlatformIO)
├── raspberry/
│   ├── odometria.py           # Odometria encoder Mecanum
│   ├── occupancyGrid.py       # Mappatura locale log-odds
│   ├── navigator.py           # Navigazione autonoma Potential Field
│   ├── GPS.py                 # Lettura NEO-6M → MQTT
│   ├── myViewerServer.py      # Dashboard web (HTTP + WebSocket + Leaflet)
│   ├── rasp_cam/              # Streaming camera OV5647
│   ├── odo_module/            # Moduli navigazione/mappatura aggiuntivi
│   └── Bamberg/
│       ├── ESP-IDF/           # Firmware ESP-Drone (ESP-IDF)
│       └── firm_drone/        # Bridge MQTT ↔ CRTP/UDP drone + test
├── AI_Bepo/                   # Server AI vocale (wakeword, STT, LLM, TTS)
├── AmazingArm/                # Modelli e risorse braccio robotico
├── PCB/
│   ├── PCBmotori/             # KiCad — ESP32 motori (4-layer)
│   ├── PCBsensori/            # KiCad — ESP32 sensori
│   └── PCBalim/               # KiCad — distribuzione alimentazione
├── Hardware/                  # Datasheet, pinout, power budget, BOM
├── models_3d/                 # Modelli 3D stampabili
└── docs/
    ├── img/                   # Foto e video dimostrativi
    └── LAGMABILLS.pptx        # Presentazione progetto

Hardware

ComponenteDescrizione
Raspberry Pi 4B (4GB)Cervello centrale, broker MQTT, Tailscale VPN
PCBmotori (ESP32, 4-layer)4× JGA25-370 Mecanum + encoder, 2× TB6612FNG, I2C slave 0x08
PCBsensori (ESP32)6× HC-SR04, MPU-6050, 3× TCRT5000, PCA9685 → braccio 6DOF, I2C slave 0x09
PCBalimDistribuzione alimentazione custom, 2× LiPo 3S 5500mAh
ESP-Drone (ESP32-S2)Ricognizione aerea, CRTP/UDP
OV5647 CSICamera RPi, stream MJPEG
ReSpeaker 2-Mic HATWM8960, wakeword ONNX, DOA GCC-PHAT
NEO-6M GPSTracciamento posizione world frame
Display 7" HDMIFaccia animata responsiva (RPi)
Speaker BluetoothAudio stereo, musica / sirene / TTS

Dettagli completi in Hardware/BOM.xlsx e Hardware/pinoutEsp32.xlsx.

Architettura software

Tutto comunica via MQTT (Mosquitto su RPi, localhost:1883, accessibile anche via Tailscale).

text
              ┌─────────────────────────┐
              │  Mosquitto Broker (RPi) │
              └────────────┬────────────┘
     ┌──────────┬──────────┼──────────┬──────────┐
     │          │          │          │          │
odometria   occupancy   navigator  drone_bridge  GPS
     │        grid.py      .py        .py       .py
     │          │
  robot/     robot/
 motori/     mappa/
 stato       grid
TopicDirezioneDescrizione
robot/motori/cmdPi → ESP32Comandi movimento
robot/motori/statoESP32 → PiEncoder + PWM
robot/sensori/distanzeESP32 → PiDistanze HC-SR04 (cm)
robot/sensori/imuESP32 → PiAccelerometro + giroscopio
robot/odometriaPi → tuttiPosa X, Y, θ
robot/mappa/gridPi → viewerOccupancy grid JSON
robot/cliff/statoPi → tuttiStato sensori cliff
robot/nav/cmdapp → Pistart / stop / reset_goal
robot/nav/goalapp → PiGoal {x, y} in world frame
drone/cmd/rpytapp → PiRoll, pitch, yaw, thrust

Installazione (Raspberry Pi)

bash
# Dipendenze Python
pip install paho-mqtt numpy sounddevice onnxruntime websockets \
            flask flask-socketio pyserial pynmea2 faster-whisper psutil

# Mosquitto broker
sudo apt install mosquitto mosquitto-clients
sudo systemctl enable mosquitto

# Driver ReSpeaker 2-Mic HAT
# Seguire istruzioni in Hardware/ o repo seeed-voicecard

# Avviare i moduli (esempio)
python3 raspberry/odometria.py &
python3 raspberry/occupancyGrid.py &
python3 raspberry/navigator.py &
python3 raspberry/GPS.py &
python3 raspberry/myViewerServer.py &

Dashboard web: http://<ip-pi>:8080

Firmware ESP32 (PlatformIO)

Le cartelle in firmware/ sono progetti PlatformIO completi e pronti da compilare (pio run).

Librerie richieste (platformio.ini):

  • PubSubClient
  • ArduinoJson
  • MPU6050_light
  • Adafruit PWM Servo Driver
  • Preferences

Le credenziali WiFi e broker MQTT vengono salvate in NVS e possono essere aggiornate via I2C dal Pi senza reflashare.

📦 Non vuoi compilare tu stesso? Scarica le cartelle sorgente aggiornate automaticamente ad ogni modifica dalla sezione Releases.

Pipeline AI vocale

text
ReSpeaker mic → wakeword ("hey nova") → DOA GCC-PHAT (stima direzione)
    → WebSocket stream PCM16 raw
    → Whisper STT → LLM (Ollama) → Piper TTS (voce "Miro" italiano)
    → audio risposta → Speaker Bluetooth

Demo

Primi test di movimento

https://github.com/Dragonyx118/LagmaBills/raw/main/docs/img/first_test_move.mp4

Prototipo in movimento

https://github.com/Dragonyx118/LagmaBills/raw/main/docs/img/proto_move.mp4

Test braccio robotico

https://github.com/Dragonyx118/LagmaBills/raw/main/docs/img/test_arm.mp4

Struttura in legno

https://github.com/Dragonyx118/LagmaBills/raw/main/docs/img/wood_body.mp4

GitHub riproduce automaticamente i link diretti .mp4 di un repository quando incollati su una riga propria nel README, mostrando un player inline.

Licenza

Hippocratic License 3.0 (HL3-CL-ECO-LAW-MIL-SV) — © 2025 Dragonyx

Parts

41
QtyValueFootprintReferences
610kOhmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR7, R8, R9, R10, R11, R12
620kOhmResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6
44.7kΩResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR13, R14, R15, R16
1100nF 50VCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC2
1100µF 25VCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC1
1AlimServoTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ19
1AlimentazioneTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ17
1Giroscopio/AccelerometroConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ10
1MG996R connTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalJ12
1MG996R conn2TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalJ18
1PCA9685 (1)TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4_1x04_P5.00mm_HorizontalJ8
1PompaTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalJ16
1SensSeguiLineaCENConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ14
1SensSeguiLineaDXConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ15
1SensSeguiLineaSXConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ13
1SensUltraDestraConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ3
1SensUltraFronteConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ1
1SensUltraFronteGiùConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ2
1SensUltraRetroConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ4
1SensUltraRetroGiùConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ6
1SensUltraSinistraConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ7
1Socket Esp32 1Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_VerticalJ5
1Socket Esp32 2Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_VerticalJ9
1i2cTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalJ11

The 37 most common of 41 parts.

More from Dragonyx118/LagmaBills

2
  • 4 layers92.3 × 100 mmPcbMotori, the printed circuit board in 3D

    PcbMotori

    Dragonyx118/LagmaBills

    A Mecanum-wheeled robot for civil protection, powered by a Raspberry Pi orchestrating two custom ESP32 PCBs, sensors, a robotic arm, and a drone companion over MQTT.

    24 parts1
  • 2 layers78.3 × 60.8 mmPCBalim, the printed circuit board in 3D

    PCBalim

    Dragonyx118/LagmaBills

    A Mecanum-wheeled robot for civil protection, powered by a Raspberry Pi orchestrating two custom ESP32 PCBs, sensors, a robotic arm, and a drone companion over MQTT.

    21 parts1

Similar boards

  • 2 layers70 × 35 mmTLF35584 breakout, the printed circuit board in 3D

    TLF35584 breakout

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    41 parts1.2k
  • 2 layers270 × 11 mmDaylight Disco, the printed circuit board in 3D

    Daylight Disco

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    41 parts1.1kGPL-3.0
  • 2 layers27.5 × 48.3 mmICE40DevBoard, the printed circuit board in 3D

    ICE40DevBoard

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    41 parts915
  • 2 layers45 × 25 mmEasy PD Sink, the printed circuit board in 3D

    Easy PD Sink

    openwch/ch32v003

    CH32V003 is an ultra-cheap RISC-V MCU with 2KB SRAM, 16KB flash, and up to 18 GPIOs that sells for under $0.10

    41 parts599
  • 2 layers97 × 78.5 mmDumbpad, the printed circuit board in 3D

    Dumbpad

    imchipwood/dumbpad

    Simple 4x4 numpad with rotary encoder. Powered by QMK via ATmega32u4 Pro Micro

    41 parts517GPL-2.0
  • 2 layers37 × 15 mmCanTactDist, the printed circuit board in 3D

    CanTactDist

    bondus/KlipperToolboard

    A 3D printer tool head controller board

    41 parts373GPL-3.0
  • 2 layers20.3 × 69.7 mmPG attiny404, the printed circuit board in 3D

    PG attiny404

    fabiansteiner/OpenValve

    3D-printable pinch valve for irrigation and sensor-driven liquid control.

    41 parts276CERN-OHL-S-2.0

Questions

How big is the PCBsens PCB?

It measures 90.1 × 85.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PCBsens use?

41 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PCBsens KiCad files?

From the Dragonyx118/LagmaBills repository on GitHub, at the commit this page was made from: the board is PCB/PCBsens/PCBsens.kicad_pcb and its schematic PCB/PCBalim/PCBalim.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PCBsens design in my own project?

Its repository states no licence, so its author keeps all rights: ask Dragonyx118 before reusing the design.