Building a Meckie: the v3 Parts Kit
Meckie is a tracked companion robot: a face on a belly screen, a head that looks at you, ears that know where your voice came from, a lidar that maps your house, and tank tracks that go where you go. This post is the hardware half of the story — every printed part and every component on the robot, so you can build one.
The whole shell is 28 printed parts (about 3.8 MB of STL, roughly a spool of filament), designed to print on a standard 220×220 bed with no supports on most parts.
Bill of Materials
Pinned: Meckie v3 reference build, August 2026. This is the open hardware list for the tracked robot body. Meckie OS (the software that makes it a Meckie) is separate and proprietary.
Links are to product pages verified as of this writing; Amazon listings churn, so if one is dead, the part name gets you to the equivalent. Prices are approximate street and will drift.
⚠ Two things before you build. (1) This build runs bare RC LiPo packs. That's a development compromise, not a consumer design — you need to be comfortable with LiPo charging, storage, and a fire-safe bag. (2) Bench ritual that has been paid for in dead boards: set every buck regulator unloaded, read it with a multimeter, verify barrel plug polarity, then connect the load. Every rail, every time.
Compute & comms
| Part | Qty | Link | Notes |
|---|---|---|---|
| Seeed reComputer Industrial J3011 (Jetson Orin Nano 8GB, fanless) | 1 | Seeed · Amazon | Main brain. Industrial variant for the passive cooling and screw-down I/O. Power adapter not included — we run it off the 4S rail anyway. |
| Lonely Binary ESP32-S3 N16R8, 3-pack | 1 pack | Amazon | Track brain (drive + encoders, odometry to the Jetson over Bluetooth via the Hideez dongle). 3-pack with screw, screwless, and 2.54 mm bases. Buy the 3-pack; this build ate two before the bench ritual existed. |
Drive
| Part | Qty | Link | Notes |
|---|---|---|---|
| Swaytail TS300 tracked chassis w/ suspension + 2× encoder DC motors | 1 | Amazon | Metal frame, sprung bogies, bearing road wheels. Ships unassembled. 7 V encoder motors included. |
| Cytron MDD10A dual 10 A motor driver | 1 | Amazon | 4 signal lines (DIR + PWM per channel), screw terminals, up to 30 V motor side. Replaced the TB6612 in v3. |
| 2× VL53L0X ToF sensors, down-facing | 2 | — | The cliff eyes, front + rear on the Track Brain. The lidar handles obstacles and mapping; these handle drop-offs, which no 2D lidar can see. Both run — belt and suspenders, different failure modes. |
| Crazepony 2S 7.4 V 2200 mAh 50C LiPo, XT60 (2-pack) | 1 pack | Amazon | Drive domain. Shorty soft-pack; the 2-pack gives you a swap battery. |
| Panel-mount 5×20 mm fuse holder + slow-blow glass fuse | 1 | — | Drive trunk fuse, 8–10 A slow-blow. Tug-test glass holders after install; blade holders are the eventual upgrade for vibration. |
| Toggle switch, drive domain | 1 | — | Any panel-mount SPST rated ≥10 A DC. |
Head (servos + audio + vision)
| Part | Qty | Link | Notes |
|---|---|---|---|
| FEETECH STS3215 serial bus servo, 7.4 V | 2–3 | Seeed (C044, 1:191) · Seeed (C001, 1:345) | Pan/tilt. Magnetic encoder, daisy-chain TTL bus, position/current/temp feedback. Pick the 7.4 V variants, not the 12 V. |
| FEETECH FE-URT-1 USB→TTL servo driver | 1 | Seeed · Amazon (DIYmall) | Talks to the STS3215 bus from the Jetson over USB. Servo power comes in on its own terminal from the 7.5 V rail — it is signal conversion only. |
| ADuM4160 USB isolator module | 1 | Amazon | Goes only between the Jetson and the FE-URT-1. Full-speed USB only (12 Mbps) — do not put it on the mic array or camera. |
| ReSpeaker XVF3800 USB 4-mic array | 1 | Seeed | Far-field pickup, on-board AEC/beamforming/DoA, USB Audio Class. The 3.5 mm jack feeds the speaker so the array sees its own playback for echo cancellation. |
| MEIRIYFA USB-powered wired speaker, 3.5 mm in | 1 | Amazon | 5 V USB powered, 3.5 mm input, front volume knob. Cheap and fine; the point is wired 3.5 mm from the ReSpeaker so AEC works, not Bluetooth. |
| Logitech Brio 4K webcam | 1 | Logitech · Amazon | Head camera for face tracking/recognition. Open it at 1080p, not the VGA default, or faces at range are invisible. |
Navigation & display
| Part | Qty | Link | Notes |
|---|---|---|---|
| WayPonDEV FHL-LD19 360° DToF LiDAR kit | 1 | Amazon · datasheet | 12 m range, ~10 Hz, 0.9 W. USB-powered through the included CP2102 adapter off the hub — no separate rail. Mount on top with a clear 360° sightline. Feeds SLAM, following, and every obstacle gate. |
| Eyoyo 7" 1024×600 IPS HDMI touchscreen | 1 | Amazon | Belly screen. Renders the face; voice-triggered admin mode swaps to a touch config UI on the same panel. 5-point capacitive touch, micro-HDMI adapter, detachable bracket, 3.5 mm out. |
| Powered USB 3 hub, 7-port | 1 | — | Any name-brand powered hub with a barrel-jack input. Required: Brio + ALFA + Hideez + FE-URT-1 + LD19 + ReSpeaker + touch = 7 devices vs. 3 ports on the J3011. Fed from the Pololu 5 V rail via barrel pigtail — confirm 5.5×2.1 mm center-positive against your hub before wiring. |
| ALFA AWUS036ACM USB WiFi adapter | 1 | Rokland | The Industrial J3011 has no onboard WiFi. Buy the ACM specifically — MediaTek MT7612U, in-kernel mt76 driver, plug-and-play on JetPack 6. ACH/ACS/AX variants are Realtek and need an out-of-tree driver build. |
| Hideez USB Bluetooth adapter (CSR, BT 4.0) | 1 | Amazon · Hideez | Bluetooth link between the Jetson and the ESP32-S3 track brain. Stock btusb driver, no setup. Keep it physically away from the USB 3 ports and the ALFA — 2.4 GHz interference is real. |
Power
| Part | Qty | Link | Notes |
|---|---|---|---|
| OVONIC 4S 14.8 V 6500 mAh 130C LiPo, XT60 (2-pack) | 1 pack | Amazon | Compute/head domain. Jetson takes 4S direct on its 12–24 V input; hub and servo rails come off the Pololu bucks. 2-pack = one on the robot, one on the charger. |
| Pololu D36V50F7 — 7.5 V, 5 A step-down | 1 | Pololu #4093 | Servo rail. |
| Pololu D36V50F5 — 5 V, 5 A step-down | 1 | Pololu #4091 | USB hub / peripheral rail. |
| SMBJ TVS diodes (crowbar on each rail) | 2 | — | SMBJ5.0A on the 5 V rail, SMBJ7.5A on the 7.5 V rail. Parallel across the rail at the load end, cathode band to +. DigiKey: SMBJ5.0A, SMBJ7.5A. |
| 1000 µF 16 V low-ESR electrolytic | 2 | — | One per buck output. Nichicon/Panasonic. |
| 20 A kill switch, 4S domain | 1 | — | Panel-mount, rated for 16.8 V DC. |
| XT60 connectors, 14–16 AWG silicone wire, heat shrink | — | — |
What it costs
Direct-vendor prices verified today; Amazon hides prices from robots (fittingly), so those are street estimates marked ~. Everything drifts.
| Part | Price | Source |
|---|---|---|
| reComputer Industrial J3011 | $1,035.99 | Seeed, verified |
| ReSpeaker XVF3800 | $60.99 | Seeed, verified |
| STS3215 servos (×2) | $43.98 | Seeed, verified ($21.99 ea) |
| FE-URT-1 | $10.00 | Seeed, verified |
| Pololu D36V50F7 (7.5 V) | $39.95 | Pololu, verified |
| Pololu D36V50F5 (5 V) | $39.95 | Pololu, verified |
| ALFA AWUS036ACM | $46.97 | Rokland, verified |
| Swaytail TS300 chassis | ~$150 | est. |
| Logitech Brio 4K | ~$130 | est. |
| OVONIC 4S 6500 mAh (2-pack) | ~$100 | est. |
| FHL-LD19 lidar kit | ~$100 | est. |
| Eyoyo 7" touchscreen | ~$70 | est. |
| Lonely Binary ESP32-S3 (3-pack) | ~$35 | est. |
| Cytron MDD10A | ~$30 | est. |
| Crazepony 2S (2-pack) | ~$30 | est. |
| Powered USB 3 hub | ~$30 | est. |
| ADuM4160 isolator | ~$20 | est. |
| MEIRIYFA speaker | ~$17 | est. |
| Hideez BT dongle | ~$15 | est. |
| 2× VL53L0X | ~$12 | est. |
| Switches, fuse, TVS, caps, XT60, wire | ~$40 | est. |
All in: roughly $2,050 street — half of it is the Jetson. A non-industrial Orin Nano dev kit (~$249) drops the build under $1,300 if you can live with a fan and no screw-down I/O.
Shop
| Part | Notes |
|---|---|
| Multimeter | Not optional. See warning at top. |
| LiPo charger (balance) + fire-safe charging bag | |
| Crimper for JST/XT60 |
The printed parts
Frame (the skeleton)
| Part | Footprint (mm) | Notes |
|---|---|---|
| meckie-adapter-plate | 208×218×6 | Chassis-to-frame interface — everything stacks on this |
| meckie-corner-post | 199×184×20 | Vertical structure |
| meckie-cross-rail | 164×195×20 | Frame stiffener |
| meckie-side-rail | 178×55×20 | Frame stiffener |
| meckie-under-tray | 146×194×42 | Electronics bay |
| meckie-grid-tray | 170×80×3 | Ventilated component tray |
| meckie-battery-shelf | 204×64×6 | Battery sits low — center of gravity matters on tracks |
| meckie-vesa-strap | 176×16×5 | Screen retention |
Skins (the look)
| Part | Footprint (mm) | Notes |
|---|---|---|
| meckie-panel-front-lower | 184×47×2 | |
| meckie-panel-chest | 184×56×3 | |
| meckie-panel-rear | 184×206×2 | |
| meckie-panel-side (+ -right) | 218×206×3 | Mirrored pair |
| meckie-panel-top | 190×212×4 | |
| meckie-screen-bezel | 184×116×4 | Frames the face |
| meckie-wedge-cheek (+ -right) | 52×110×18 | Mirrored pair |
| meckie-wedge-sill | 184×51×10 |
Head & neck (the personality)
| Part | Footprint (mm) | Notes |
|---|---|---|
| meckie-head-shell | 134×80×77 | Houses camera + servo horn |
| meckie-head-faceplate-v2 | 130×80×21 | Print v2; v1 included for reference |
| meckie-head-yoke | 156×64×98 | Pan/tilt gimbal frame |
| meckie-neck-tower | 78×64×33 | Servo mount |
| meckie-tilt-hub | 24×24×5 | Servo horn adapter |
| meckie-mic-ring | 68×68×6 | Mic array mount — keep it clear of the speaker |
Sensor mounts
| Part | Footprint (mm) | Notes |
|---|---|---|
| meckie-lidar-mast | 48×48×188 | Prints vertical — use a brim. Lidar height defines what he can and cannot see |
| meckie-lidar-cradle | 70×62×10 | LD19 seat |
| meckie-speaker-cradle | 104×50×6 |
Print settings that worked: PLA+, 0.2 mm layers, 3 walls, 20% infill. Panels print flat and fast; the mast and yoke want a brim. Filament brand and colors: TBD.
Pin map — the Track Brain (ESP32-S3 DevKitC-1)
Every GPIO below is read straight from the shipping firmware, not from memory. The choices deliberately avoid every strap pin (0/3/45/46), the native USB pair (19/20), UART0 (43/44), and the flash/PSRAM window (26–37).
Motor driver (Cytron MDD10A)
| MDD10A pin | ESP32-S3 GPIO | Notes |
|---|---|---|
| DIR1 (left) | 15 | Direction, plain digital |
| PWM1 (left) | 16 | 20 kHz LEDC, 8-bit |
| DIR2 (right) | 17 | |
| PWM2 (right) | 21 | Board doesn't break out 18 |
| GND | GND | Common ground with logic — non-negotiable |
Left motor runs inverted in firmware (LEFT_MOTOR_INVERTED 1) — tank motors mount mirrored, so identical wiring counter-rotates. Flip the flag, never resolder.
Track encoders (quadrature, x2 decode)
| Encoder | ESP32-S3 GPIO |
|---|---|
| Left A / B | 4 / 5 |
| Right A / B | 6 / 7 |
Left encoder sign is flipped in firmware (ENC_LEFT_SIGN -1) so forward counts positive on both sides. These encoders power the straight-line closed loop and the stall "virtual bumper" — commanded duty with no ticks means he's pressed against something no sensor saw.
Cliff eyes (2× VL53L0X, one I²C bus each)
| Sensor | SDA / SCL | Notes |
|---|---|---|
| Front (down-facing) | GPIO 8 / 9 | Both sensors are addr 0x29 — separate buses instead of readdressing |
| Rear (down-facing) | GPIO 10 / 11 | Wire VIN, GND, SDA, SCL only — leave XSHUT/GPIO1 alone |
Motor loom color code (JGA-style 6-wire, verified on THIS harness)
| Wire | Meaning |
|---|---|
| Black | Motor + |
| Red | Motor − |
| White | Encoder GND |
| Yellow | Encoder VCC (3.3 V) |
| Orange | Channel A |
| Green | Channel B |
This table is why rule #1 exists. Internet color conventions for these looms are backwards from this harness and killed four boards. Verify with a meter against the silkscreen before first power, every time, on every new loom.
Links, not wires
The Track Brain talks to the head over BLE (Nordic UART service, device name trackbrain) — the same console protocol as USB serial and the TCP net console (port 2323). No data cable between body and head: the robot works in buildings you don't control.
Hard-won assembly wisdom
- Trust silkscreen and a multimeter, never wire colors. Motor loom color conventions off the internet killed four ESP32 boards on this project before the lesson stuck. Meter every pin before power.
- Stage your power-up. Continuity-check, then logic only, then motors — never everything at once on a fresh harness.
- One power source at a time. USB for flashing or the buck for running. Both at once lets the smoke out.
- Put the lidar height decision first. A 2D lidar sees one horizontal plane: mast height decides whether chair legs, table tops, and booth edges exist in his world. (Nothing at any height sees a drop-off — that's what the ToF cliff eyes are for.)
- The physical kill switch is not optional. Every software stop — voice stop, deadman, stall detection — sits above a trunk switch that cuts motor power dead.
The software
The body is half the robot. The other half — mapping, waypoint navigation, "come here," person following, the face, the voice — is the Meckie software stack, which gets its own posts. Short version: everything above runs on the robot; a cloud brain adds conversation depth when a network exists, and the robot stays a robot when it doesn't.
Schematics
Harness diagram (v3.1) and power architecture ship alongside this BOM — see the build docs repo.
Downloads
- meckie-all-parts.zip — all 28 STLs, 3.9 MB