Skip to content

Reference Design NULLLAB Maker ESP32 PRO

hippo5329 edited this page Oct 22, 2026 · 10 revisions

Reference Design: NULLLAB Maker-ESP32 PRO (ESP32, mecanum or 4WD)

Overview · Hardware · Wiring · Setup · Status

Config nulllab_esp32_pro_config.yaml
Drivetrain 4WD mecanum, or a 4WD skid steer with kinematics.base_type: skid_steer (the same pins)
MCU ESP32-WROOM-32E, CH340G USB serial
Firmware image esp32-jazzy / esp32-lyrical plus the design's env block
micro-ROS link USB serial (CH340G, 1.5 Mbaud; the chip runs to 2 Mbaud); syslog and OTA run only on the Wi-Fi transport (udp4)
LiDAR LD19 on the robot computer's USB (/dev/ttyUSB1, 230400 baud)
Status ⬜ the bare module runs on the bench; motors and encoders not yet driven

Overview

NULLLAB's Maker-ESP32 PRO: an ESP32-WROOM-32E with four dual-input motor bridges (3 A per motor) and four encoder-motor ports (E0-E3), so it carries a four-wheel robot on its own. This design runs it as a mecanum robot; set the base type to skid_steer for a 4WD skid steer on the same wiring. No IMU and no battery sense.

It is a controller design: applied to a robot that still has the one default chassis, it brings that chassis too; applied to a robot with its own chassis, it brings only the controller. Pins are from nulllaborg/maker-esp32-pro.


Key Hardware Specifications

Component Specification Notes
MCU ESP32-WROOM-32E, 4 MB flash CH340G USB serial, auto-reset on DTR/RTS
Motor driver 4 × RZ7889 (schematic) or SS6625E (vendor README) BI/FI with PWM on both, no enable (RZ7889, the dual-PWM scheme)
Encoder motors E0-E3 ports (GH1.25, 6 pins) VCC is 3.3 V, so 3.3 V hall encoders plug straight in; 1 A per pin (see The encoder-motor ports)
DC motors M0-M3 ports (PH2.0) the same bridges as E0-E3: one motor per port pair, never both
IMU none fitted (AUTO) add one on the IIC headers; the boot scan finds it
Battery sense none the DC jack (6-16 V) reaches no ADC pin
Supply DC 6-16 V 5.5 × 2.1 mm jack

Wiring

Function GPIO Notes
Motor 1 (front left) A / B 27 / 13 E0 (+27, −13)
Motor 2 (front right) A / B 4 / 2 E1 (+4, −2)
Motor 3 (rear left) A / B 17 / 12 E2 (+17, −12), DIP switch on Motor
Motor 4 (rear right) A / B 15 / 14 E3 (+15, −14), DIP switch on Motor; the DC port M3 is wired the other way round (14, 15)
Encoder 1-4 A / B 18/19, 5/23, 35/36, 34/39 E0-E3; 34-39 have no internal pull-ups
I2C SDA / SCL 21 / 22 IIC and OLED headers
Status LED none (led: -1) the board has no user LED: its two yellow LEDs are the CH340's TX/RX activity lights, which no GPIO drives (GPIO 2 is motor 2)

The DIP switch SW1 must be on Motor: on IO, GPIO 17, 12, 14 and 15 are header pins and the rear wheels do nothing. GPIO 2, 12 and 15 are strapping pins on motors 2-4, the vendor's own wiring through 1 kΩ into the bridges: confirm the board still boots and flashes with the motors connected.

The encoder-motor ports (E0-E3)

Each E-port is a 6-pin GH1.25 (1.25 mm) connector. Read from the PCB's pin 1:

Pin 1 2 3 4 5 6
Signal M− VCC (3.3 V) ENC B ENC A GND M+

Some harnesses number the pins the other way round, M+, GND, ENC A, ENC B, VCC, M−: match the wire colours to the motor's own pinout, not the pin numbers. Motor A in the config is M+, the bridge's FI input. For E3 that is GPIO 15, the reverse of the DC port M3. With M3's order, an encoder motor on E3 runs backwards against its own encoder.

Current: a GH1.25 pin carries 1 A continuous (JST GH, AWG #26 wire; 0.5-0.75 A on thinner wire), not the bridge's 3 A. That suits N20, 370-class and similar gear motors (0.15-0.6 A running). A 520-class motor that stalls at 2.5 A or more overheats the E-port's crimps: run it from the PH2.0 DC port of the same number, and bring only its encoder (VCC, GND, A, B) to the E-port.


Setup, step by step

  1. Install the cockpit on the robot computer: Installation & Docker.
  2. Run the bare module first, in simulation mode: plug the board in by USB (/dev/ttyUSB0). The header detects its MCU and selects the bare module; keep No design and press 🚀 Start 1-Click (step 2). This proves the board and micro-ROS before anything is wired.
  3. Name your robot and select the design. Type a name in the header's Robot field and press Enter, then pick NULLLAB Maker-ESP32 PRO under Reference Designs on MCU & Sim (tab 1). Your robot is real from then on (🔧 Real).
  4. Enter the Wi-Fi keys in the Secrets tool tab only if the robot uses the Wi-Fi transport (udp4). On USB serial the firmware never starts the radio: no Wi-Fi, no syslog, no OTA.
  5. Motors: lift the robot and run All motors in the tool on Hardware Tests (tab 6). Each wheel must go forward in FWD with a positive RPM; fix them with the invert flags on Drive & Motors (tab 3).
  6. LiDAR: plug the LD19 into the robot computer and check the scan on LiDAR / Scan (tab 7).
  7. First drive: leave the tool with Back to robot (base), start Bringup (tab 8) and drive gently with Teleop (tab 9). With no IMU there is no /imu/data, and the health check says so.
  8. Speed check: run the speed check against the LiDAR and put its ratios into the config before the first Nav2 goal.
  9. SLAM and Nav2: press 🚀 Start 1-Click.

Status

The pin map is from the vendor's schematic and README and passes the pin check and the env generator. The E-ports' 3.3 V supply is measured on a board. The board itself runs on the bench as a bare module (nothing wired). Its motors and encoders have not been driven yet: their directions are confirmed the first time a built robot is driven.


All reference designs · Pin Matrix & Wiring · Building a Real Robot

Clone this wiki locally