Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RectaBot β€” 5-Axis CNC Controller

Open-source 5-axis CNC controller based on the Raspberry Pi RP2350B microcontroller running grblHAL firmware. Designed for hobby and workshop applications.

🌐 rectabot.org β€” product, documentation and firmware configurator.

RectaBot is the first piece of an open CNC ecosystem we're actively building. New parts are shared here as they're finished and verified β€” no roadmaps, no dates, just working hardware and software.

RectaBot v1.0 β€” assembled board


πŸ“Š Project Status

Current version v1.0
Status βœ… v1.0 β€” running a machine: homing, probing, Modbus spindle, Ethernet, SD. One interface not yet exercised: the RS-422 pendant header
First production batch 5 boards (JLCPCB Economic PCBA + ENIG finish)
Firmware grblHAL fork for RP2350B
Software RectaControl β€” desktop sender built for this board
Form factor 150 Γ— 100 mm, 4-layer PCB, 1.6mm

🎯 What is RectaBot?

A 5-axis CNC controller with optical input isolation, integrated Ethernet, and a VFD interface.

Key features

  • 🧩 Single-board, fully integrated β€” no add-on driver boards, breakout modules, or level-shifter add-ons to wire up. Every active part is soldered down (only the field-wiring terminals plug in), so vibration can't work a module loose over time; high-speed step/dir and comms lines are laid out for EMI immunity. Stepper drivers stay external β€” this board commands DM556-class drivers rather than replacing them β€” and coolant needs 2–3 optocoupler-input relay modules on CN40 (which ones)
  • βš™οΈ 5-axis stepper control (X, Y, Z, A, B) β€” PIO-based step generation up to 300kHz per axis
  • πŸ”Œ Spindle 0-10V interface with overvoltage protection β€” compatible with Huanyang/Lapond/Delta/Hitachi VFDs
  • πŸ›‘οΈ Optically isolated inputs β€” all 10 field inputs through LTV-217-B-G optocouplers on a dedicated 24V_ISO rail (input side only)
  • 🌐 On-board Ethernet 10/100 Mbps β€” a discrete W5500 PHY laid out to WIZnet's reference design and their engineers' recommendations (not a plug-on module), with J1B1211CCD integrated magnetics + Bob Smith termination and controlled 100Ξ© differential pairs
  • πŸ’Ύ MicroSD slot for G-code files and configuration
  • πŸ”‹ 24V DC power input (buck-regulated to 5V) β€” ORing Schottky diodes let the 24V supply and USB-C stay connected at the same time and hand off the 5V rail automatically; no VBUS/5V select jumpers to flip by hand (also blocks USB-C back-feed)
  • πŸ“‘ RS-485 Modbus + RS-422 Pendant interfaces
  • 🚦 10 isolated inputs + 3 auxiliary 5 V outputs (Mist M7 / Flood M8 / Vac M62) β€” signal level, ~4 mA, for optocoupler-input relay modules

Detailed specification: Docs/Reference/Product_Specification_v1.0.md


πŸ“‚ Repository structure

RectaBot/
β”œβ”€β”€ Docs/                                # πŸ“š All documentation (read first!)
β”‚   β”œβ”€β”€ Assembly/                        # Build & first power-on
β”‚   β”‚   β”œβ”€β”€ Quick_Start_Guide.md         # From unboxing to first motor (2-3h)
β”‚   β”‚   β”œβ”€β”€ First_Power_On_Procedure.md  # Safe first power-on with a multimeter
β”‚   β”‚   └── Hand_Solder_Components.md     # 28 TH components for hand-soldering
β”‚   β”œβ”€β”€ Reference/                       # Electrical & design reference
β”‚   β”‚   β”œβ”€β”€ Product_Specification_v1.0.md # Complete datasheet/spec
β”‚   β”‚   β”œβ”€β”€ Pinout.md                    # RP2350B pinmap (GP0-GP47)
β”‚   β”‚   β”œβ”€β”€ Schematic_References.md       # Reference schematics for all ICs
β”‚   β”‚   β”œβ”€β”€ Hardware_Design_Guidelines.md # PCB layout guidelines
β”‚   β”‚   β”œβ”€β”€ VFD_Wiring_Guide.md          # VFD connection guide (analog 0-10V)
β”‚   β”‚   └── VFD_Modbus_Setup.md          # VFD spindle control over RS-485/Modbus
β”‚   β”œβ”€β”€ Manufacturing/                   # Send-to-fab production data
β”‚   β”‚   β”œβ”€β”€ BOM_v1.0_final.csv           # Bill of Materials (~80 components)
β”‚   β”‚   β”œβ”€β”€ CPL_RectaBot_V1.0.csv        # Component Placement List for JLCPCB
β”‚   β”‚   β”œβ”€β”€ LCSC_Additional_Order.csv    # TH parts for a separate LCSC order
β”‚   β”‚   └── Gerber_RectaBot_1.0/         # Production-ready Gerber files
β”‚   └── Brand_Assets/                    # Logo files (SVG) β€” brand reserved, not open-licensed
β”œβ”€β”€ website/                             # rectabot.org β€” landing page, deployed by Actions
β”‚   └── configurator/                    # Firmware picker: machine layout β†’ the matching .uf2
β”‚
└── (Submodules live in separate repos β€” see below)

πŸ”— Related repositories

RectaBot is split across separate GitHub repos for better modularity:

Repo Contents
rectabot/RectaBot (this one) Hardware design (Gerber), docs, BOM, brand assets, configurator tool
rectabot/RectaBot-firmware grblHAL fork with RectaBot board map + pre-built UF2
rectabot/RectaControl Desktop sender (Electron) β€” settings, probing, 3D toolpath, firmware flashing

Clone everything at once:

git clone https://github.com/rectabot/RectaBot.git
git clone https://github.com/rectabot/RectaBot-firmware.git
git clone https://github.com/rectabot/RectaControl.git

πŸ”§ Hardware

RectaBot v1.0 β€” board layout with silkscreen labels

Core components

Component Role
Raspberry Pi RP2350B (QFN-80) Dual ARM Cortex-M33 @ 150MHz, 48 GPIO, 12 PIO state machines
WIZnet W5500 Hardware TCP/IP stack, 10/100 Ethernet
74HC14D ×3 Schmitt-trigger inverters for 3.3V→5V level shift (all step/dir/en signals)
LTV-217-B-G Γ—10 Optocouplers for all input signals (limit switches, ESTOP, probe, controls)
LM358DR2G Op-amp for PWM→0-10V spindle interface
2N7002 Γ—2 Open-drain MOSFETs for VFD EN/DIR signals
SP3485EN-L/TR Γ—3 3.3V native RS-485/RS-422 transceivers (1 Modbus + 2 Pendant)
B2424S-2WR3 Isolated 24V→24V DC/DC for opto LED supply

Power Tree

24V DC IN ──┬──► TPS5430 buck ──► +5V (3A)
            β”‚                                 β”‚
            β”œβ”€β”€β–Ί B2424S-2WR3 isolation ──► +24V_ISO (opto LEDs)
            β”‚
            └──► LM358 (op-amp supply, 24V rail-to-rail)

+5V ──► AMS1117-3.3 LDO ──► +3.3V (MCU, W5500, SP3485)

System Block Diagram

                       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                       β”‚     RectaBot v1.0 β€” RP2350B MCU     β”‚
                       β”‚   (Dual Cortex-M33 @ 150MHz)        β”‚
                       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                       β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚                       β”‚               β”‚                       β”‚
       β–Ό                       β–Ό               β–Ό                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  MOTION      β”‚        β”‚  SPINDLE     β”‚ β”‚  AUX (RELAY) β”‚       β”‚  I/O & COMM  β”‚
β”‚              β”‚        β”‚              β”‚ β”‚              β”‚       β”‚              β”‚
β”‚ PIO step gen β”‚        β”‚ PWM @ 25kHz  β”‚ β”‚ GP0-2 β†’      β”‚       β”‚ SPI0 W5500   β”‚
β”‚ GP8-22 β†’     β”‚        β”‚ GP27 β†’       β”‚ β”‚ 74HC14D      β”‚       β”‚ UART1 RS485  β”‚
β”‚ 74HC14D Γ—3   β”‚        β”‚ LM358 op-amp β”‚ β”‚ Mist/Flood/  β”‚       β”‚ UART0 RS422  β”‚
β”‚ (Schmitt inv)β”‚        β”‚ + 2N7002 Γ—2  β”‚ β”‚ Vacuum       β”‚       β”‚ SPI1 microSD β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚                       β”‚                β”‚                      β”‚
       β–Ό                       β–Ό                β–Ό                      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CN34-CN38    β”‚        β”‚ CN39 (VFD)   β”‚ β”‚ CN40 (AUX)   β”‚       β”‚ RJ45 + USB-C β”‚
β”‚ 5Γ— Stepper   β”‚        β”‚ 0-10V analog β”‚ β”‚ Mist/Flood/  β”‚       β”‚ + CN32 RS485 β”‚
β”‚ STEP/DIR/EN  β”‚        β”‚ EN/DIR open- β”‚ β”‚ Vacuum +     β”‚       β”‚ + CN41 RS422 β”‚
β”‚ (5V CMOS)    β”‚        β”‚ drain MOSFET β”‚ β”‚ 5V/VAC/GND   β”‚       β”‚ + microSD    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

     ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ INPUT-SIDE ISOLATION (10Γ— OPTO) ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─

                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚  10Γ— ISOLATED       β”‚
                              β”‚  INPUTS             β”‚
                              β”‚                     β”‚
                              β”‚ LTV-217-B-G opto    β”‚
                              β”‚ + 24V_ISO domain    β”‚
                              β”‚ (B2424S-2WR3 DC/DC) β”‚
                              β”‚                     β”‚
                              β”‚ Limits, ESTOP,      β”‚
                              β”‚ Probe, Controls     β”‚
                              β”‚                     β”‚
                              β”‚ β†’ CN22-CN31         β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Note: v1 isolates the input side only.

πŸš€ Quick Start

πŸ“¦ Status: The first batch of five v1.0 boards has been assembled, and a board has been driving a machine since: homing and hard limits, probing cycles, a Modbus VFD spindle, Ethernet, the SD card and the coolant outputs. Everything documented below is verified on hardware, with one exception β€” nothing has yet been connected to the RS-422 pendant header (CN41). Its transceivers are populated and its pins are documented, but the link has never carried traffic, so treat that one interface as untested. Follow the assembly and wiring guides below.

Main guides:

Main steps (summary):

  1. Visual inspection of the board (10 min)
  2. Hand-soldering 28 TH components (list, 60-90 min)
  3. Pre-Power-On continuity tests (15 min)
  4. First Power-On + LED + voltage verification (10 min)
  5. Firmware flash via BOOTSEL+USB (15 min) β€” the configurator names the .uf2 your motor layout needs
  6. grblHAL configuration ($$ parameters for RectaBot, 20 min) β€” RectaControl's Settings panel, with a steps/mm calculator
  7. First axis test with a DM556 driver (10 min)
  8. VFD wiring β€” analog 0-10V or RS-485/Modbus

🀝 Acknowledgments

  • grblHAL community β€” for the incredible open-source firmware
  • Raspberry Pi Foundation β€” for the RP2350 chip and accessible pricing
  • JLCPCB & LCSC β€” for accessible prototype manufacturing
  • EasyEDA β€” for the CAD tool that made this project possible for a solo developer

πŸ“œ License

  • Code, documentation: MIT (see LICENSE)
  • Hardware design files (Gerber, BOM, CPL): CERN-OHL-S v2 (see LICENSE.hardware)
  • Brand assets (the name "RectaBot" + logo SVGs): reserved β€” all rights reserved, not open-licensed (see Docs/Brand_Assets/README.md)
  • grblHAL firmware fork: GPL-3.0 (inherits from upstream, in the separate RectaBot-firmware repo)
  • RectaControl sender: GPL-3.0 (separate RectaControl repo)

πŸ“¬ Contact

Project lead: Filip Perić Website: rectabot.org Email: hello@rectabot.org Location: Kragujevac, Serbia

About

Open-source 5-axis CNC controller. RP2350B + grblHAL

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages