Skip to the content
2 layers67 × 45 mmMarvin PS, the printed circuit board in 3D

robot model controlled by ESP32

Size
67 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
42
Pads
113
Tracks, vias
358, 87
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
7 Nov 2025
Updated
9 Feb 2026

Overview

Marvin PS is an open-source printed circuit board by lhm0, from the lhm0/marvin_robot repository on GitHub. It is a 2-layer board of 67 × 45 mm with 20 parts on 42 nets, routed with 358 tracks and 87 vias.

It is built around the TPS63070RNM, 74HC595 and ULN2803A. Its parts include 5 ICs, 3 capacitors, 3 resistors, 3 connectors and 1 diode. It belongs with the robots and motor control boards of this library.

Main components

3

README

README.md

ESP32-Based 3D-Printed Toy Robot

WiFi-Controlled Robot with Animated Face, Audio, and Modular Architecture

Marvin Robot

This repository contains all development data for an ESP32-based, fully 3D-printed toy robot featuring an animated face, sound output, and WiFi control.

The project combines mechanical design, electronics, and embedded software in a modular and replication-friendly architecture. It was designed for hobbyists, education, and non-commercial use, with a strong focus on availability of components and ease of assembly.


📌 Project Overview

The robot features:

  • An expressive animated face using multiple displays
  • Servo-driven head and arms
  • A wheeled base driven by stepper motors
  • Audio input and output
  • WiFi connectivity with a browser-based control interface
  • Battery-powered operation with USB-C charging

All mechanical parts are fully 3D-printed and were designed using Autodesk Fusion.
The electronics are organized on two custom two-layer PCBs, avoiding SMD components to simplify manual assembly.


🤖 Key Features

  • ESP32 D1 mini as main controller
  • Dual 0.71” round LCD displays for animated eyes
  • 0.96” OLED display for mouth animations
  • MG90S servos for head rotation and arm movement
  • 28BYJ-48 (5V) stepper motors for platform movement
  • MPU6050 tilt and motion sensor
  • INMP441 microphone (clap detection, noise level)
  • MAX98357A audio amplifier with miniature speaker
  • Rechargeable Li-ion battery with USB-C charging
  • WiFi-based web interface for remote control
  • FreeRTOS-based firmware written in C++

🧩 System Architecture

The robot is built around a two-module electronic architecture:

Head Module (PCB 1)

  • ESP32 D1 mini
  • Eye and mouth displays
  • MPU6050 motion sensor
  • Microphone and audio amplifier
  • Speaker output

Body Module (PCB 2)

  • Stepper motor drivers
  • Battery charging controller (TP4056)
  • Buck-boost converter (TPS63070, 5 V output)
  • Power distribution and on/off control

Both modules are connected via a 10-pin ribbon cable.


🧠 Software Overview

The firmware is written in C++ and based on FreeRTOS.

It handles:

  • Concurrent control of motors, servos, displays, and audio
  • Sensor acquisition (motion, microphone)
  • WiFi networking and web server
  • Animation logic and behavior control

The software is built using:

  • Visual Studio Code
  • PlatformIO

See SYSTEM_OVERVIEW.md in the repository for detailed software documentation.


🛠 Repository Structure

text
marvin_robot
├─ documentation
│  ├─ datasheets
│  └─ images
│     ├─ electronics
│     ├─ eye_images
│     ├─ mechanics
│     └─ software
├─ electronics
│  ├─ marvin_MCU
│  │  ├─ marvin_MCU-backups
│  │  └─ production
│  │     └─ backups
│  └─ marvin_PS
│     ├─ marvin_PS-backups
│     └─ production
│        └─ backups
├─ mechanics
│  └─ stl_files
│     ├─ base
│     ├─ body
│     ├─ head
│     └─ legs
└─ software

🖨 3D Printing Notes

  • All mechanical parts were designed in Autodesk Fusion
  • STL files are provided for all parts
  • 3MF files (for Bambu Lab printers) include:
    • Optimized print settings
    • Required support structures
    • Automatic pauses for inserting M2/M3 nuts

🔌 Electronics & Assembly

  • Uses widely available breakout boards
  • Only through-hole components
  • No SMD soldering required
  • Assembly order matters due to double-sided PCBs

⚡ Power & Safety

  • Powered by two parallel 18650 Li-ion cells
  • Charging via USB-C
  • Charging and protection handled by TP4056

⚠️ Li-ion safety:
Handle batteries with care. Avoid short circuits, mechanical damage, and overheating.


📜 License

This project is open source for:

  • Private use
  • Education
  • Learning and experimentation

❌ Commercial use is not permitted.


🙌 Credits & Tools

  • Mechanical design: Autodesk Fusion
  • Electronics design: KiCad
  • Firmware: ESP32 + FreeRTOS
  • Development environment: VS Code + PlatformIO

Happy building! 🤖✨

Parts

20
QtyValueFootprintReferences
2100kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R8
2100nFCapacitor_THT:C_Rect_L10.0mm_W2.5mm_P7.50mm_MKS4C2, C3
228BYJ_48Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalM1, M2
110 pin IDC connectorConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalJ3
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
14017Package_DIP:DIP-16_W7.62mmU7
1470µFmy_footprints:CP_Radial_D10.0mm_P5.00mm_slim_silkscreenC1
174HC595Package_DIP:DIP-16_W7.62mmU1
1LEDLED_THT:LED_D3.0mmD1
1SW_MEC_5Gmy_footprints:OmronTasterSW1
1TPS63070my_footprints:TPS63070_breakoutU4
1ULN2803APackage_DIP:DIP-18_W7.62mmU2
1VBUS inputmy_footprints:connector_2pinJ2
1batteryConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ1
1charging controlmy_footprints:TP4056_breakoutU3
1servo leftmy_footprints:Jumper_3pinM3
1servo rightmy_footprints:Jumper_3pinM4

More from lhm0/marvin_robot

2
  • 2 layers54 × 78.8 mmMarvin MCU, the printed circuit board in 3D

    Marvin MCU

    lhm0/marvin_robot

    robot model controlled by ESP32

    17 parts2
  • 2 layers78.4 × 40.8 mm28BYJ 48 test, the printed circuit board in 3D

    28BYJ 48 test

    lhm0/marvin_robot

    robot model controlled by ESP32

    5 parts2

Similar boards

  • 4 layers86.3 × 67.8 mmGuitarProcessorBoard, the printed circuit board in 3D

    GuitarProcessorBoard

    hsetlik/GuitarProcessorH7

    Effect Pedal built on STM32H7

    134 parts
  • 2 layers28 × 36 mmBlisplay driver, the printed circuit board in 3D

    Blisplay driver

    hzeller/blisplay

    A tactile display for the blind.

    17 parts21
  • 2 layers110 × 31.5 mmMirobot, the printed circuit board in 3D

    Mirobot

    mirobot/mirobot-pcb

    The CAD files for the Mirobot PCB

    55 parts12
  • 2 layers66.7 × 61.7 mmVday, the printed circuit board in 3D

    Vday

    niteshkadyan/Hearty-LED-Necklace-Badge

    Kicad project files and Android app for the Hearty LED wearable necklace cum badge

    179 parts10MIT
  • 2 layers100 × 100 mmFlipdot brose, the printed circuit board in 3D

    Flipdot brose

    julianschick/flipdot-brose

    Microcontroller code (ESP32) and Circuit Design for controlling Brose Flipdot Modules.

    185 parts5MIT
  • 2 layers73 × 94 mm8FilPilotes Base, the printed circuit board in 3D

    8FilPilotes Base

    LudovicLemarinel/EspHomeAutomation

    Home Automation based on ESP8266 and MQTT

    75 parts3

Questions

How big is the Marvin PS PCB?

It measures 67 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Marvin PS use?

20 parts, built around the TPS63070RNM, 74HC595 and ULN2803A. 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 Marvin PS KiCad files?

From the lhm0/marvin_robot repository on GitHub, at the commit this page was made from: the board is electronics/marvin_PS/marvin_PS.kicad_pcb and its schematic electronics/28BYJ_48_test/28BYJ_48_test.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Marvin PS design in my own project?

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