Last Updated on November 21, 2023
CNC Remote control panel V3 for the Buildbotics / Onefinity CNC controller
NOTE: it’s not possible to order V3 anymore. It is replaced by V4.
This is the full assembly guide of the new V3 remote control panel for the Onefinity / Buildbotics* CNC controller. The biggest improvements compared to the first release are the preassembled PCB and components. For the full list of changes compared to V1 see the “What’s new” tab below.
This is a partial DIY project, please read this carefully before ordering.
*Satoer Creations has no affiliation with the Onefinity or Buildbotics company.
Feature video
List of features
Enable X / Y
Activate the X , Y or both axis to control with the joystick. Very useful if you want to do a quick straight cut in the X or Y direction. Or flatten a surface by hand. The axis that are enabled light up.
Speed selection
Select one of the 4 maximum speed modes. The selected speed lights up.
Joystick
Move the gantry in X, Y and Z (turning) direction with a single stick. Convenient if you want to use your other hand for other things. The stick is analog, the further you move it away the faster it goes (but not faster than the selected speed mode).
Router ON / OFF / AUTO
- On: Router is on (if “Arm router” is enabled).
- Off: Router is off.
- Auto: Router start and stops automatically when CNC program is started.
Dust collector ON / OFF / AUTO
- On: Dust collector is on.
- Off: Dust collector is off.
- Auto: Dust collector start and stops automatically when CNC program activates the router. In “Auto” mode the dust collector activates 1 sec behind the router. This will limit power surges.
Arm Router
This safety toggle prevents the possibility for the router to power on. It electrically disconnects the relay that powers the router. Always disarm the router if you want to change bits.
OH SHIT Emergency button
If there is trouble, hit this button. This also doubles like the main switch to power the system.
ACC 1 and ACC 2
Two extra buttons to do with whatever you want. You can change the behavior to latching (Press once: ON. Press again: OFF) or momentary (Press and hold: ON, release: OFF). See configuration paragraph below.
Probe connector
Replaces the Molex connector on the probe cable. (The Molex connector is not designed to reliably plug and unplug many times). A remote connector also releases the strain on the wire of the Onefinity controller connector.
Relays
There are 4 relays. The relays are rated for max 20A / 250V. The relay contact does contain a “snubber” circuit (to prevent sparks and electrical interference noise) but I discourage switching higher currents than 12 Amps. If you want to switch higher currents, you might want to switch a big contactor with the relay.
Touch probe pocket
A neat little pocket to hold the touch probe. You can mount the magnet on the corner screw.
It its just a hole in the panel, but cnc plans to route out a pocket are included. (see links below)
USB ports
Easy access to the USB ports when using USB sticks.
Improvements and changes compared with V1:
*V2 was an unreleased closed internal version.
Complete populated PCB
No need for hand soldering the components anymore. The newly designed PCB is fully populated and preassembled. The new schematic is still backwards compatible with the original firmware
Presoldered buttons and switches
The buttons and switches now come with a presoldered connector.
Prewired Joystick
The joystick now comes with its own PCB with a connector.
Printed panels
The panels are now silk screen printed directly on the acrylic plate.
Prewired DB25 cable
The DB25 connector now comes prewired.
Accessory port
There is a new port for expansion options
Power icon removed
Because it is possible to use the buttons for uses other than powering on and off devices, the power icon on the button is removed and replaced by a generic white button.
Logical connector layout
The connector layout on the PCB is now more logical. Some connectors are also replaced for screw terminals for more ease of use. It is no longer possible to connect a wrong item in a connector because they use a different number of pins.
Slight changes in panel
Layout is still the same, but there are some minor changes in the panel design.
Compatible Routers
The On / Off / Auto feature of the panel is compatible with the Makita RT0700C and Makita RT0701C router. Or any other router without “Anti-restart function”. You can test if your router is compatible by turning it on, pulling the plug, wait a couple of seconds and reinserting the plug. If the router turns on again, than it’s compatible. The Makita RT0702C is not directly compatible because it features an “Anti-restart function”, but with a simple hack it can be made compatible.
Spindle / VFD information
The remote panel is designed to make a “stupid” router (like the Makita) more smart. It is not specifically designed for spindles with a VFD, although it might work with spindles. It’s a tough subject because there are so many VFD’s with their own set of (programmable) options. The panel does also have two extra ACC (accessories) buttons and are free to use to control VFD options if you wish. A future firmware update (or hardware add-on) might incorporate more options for spindles, but for now it does not provide “official” support for it. If you do use it with a spindle, please share some experience with it.
Kit contents
These items are all included with the kit:
PCB Mainboard V3.0
Completely populated and soldered.
Arduino Leonardo
Preprogrammed with firmware 1.5.
Joystick
With soldered connector PCB and screws.
5-Pin JST Cable
Joystick cable.
2 metal green LED buttons
Wired with connector.
4 metal blue LED buttons
Wired with connector.
4 metal white LED buttons
Wired with connector.
Safety switch
Wired with connector.
Acrylic front panel
Silkscreen printed.
Dimensions:
W: 257mm / 10.12in
L:182mm / 7.17in
H:2mm / 0,08in
Acrylic back panel
With status LEDs PCB
Dimensions:
W: 257mm / 10.12in
L:182mm / 7.17in
H:3mm / 0.12in
7-Pin JST Cable
Status LEDs cable.
4 Screws
For screwing the acrylic panel inside a cabinet.
5 plastic standoffs
For securing the main PCB inside the cabinet.
XLR male panel mount
With screws. For the probe connector replacement.
XLR female cable mount
Probe connector replacement.
Emergency button
Double make double break.
DB25 cable
Wired.
USB Cable
For connecting the Arduino Leonardo to the controller.
Dual USB extension
Things you might need
(These items are not provided with the kit.)
- Solder
- Screws
- Basic wires
- Heat shrink tubing
- Spade connectors for the relay terminals
- Hot glue
- 12V Adapter (if not using the build-in power supply inside the controller)
- Fuse cable
- Power strip
- Mains plugs
Tools you might need
- Screw drivers (hex, Philips and flat)
- Soldering iron
- Wire stripper / cutter
- Crimp tool
- Drills
Assembly notes
Protect yourself from ESD. Or touch at least a ground contact for a couple of seconds before handling the components.
Connection map
Assembly instructions
Acrylic panels
Remove the protective sheet from the panels before assembling. The two panels are stacked together. No glue necessary.
WARNING: Do not tighten the corner screws too much, otherwise the acrylic might break.
Buttons
Push the buttons through the holes. and secure with the nut. You don’t need the supplied rubber rings.
Button LED color | Location |
---|---|
Green | Enable X Enable Y |
Blue | Speed 1 Speed 2 Speed 3 Speed 4 |
White | Router Dust Collector Acc 1 Acc 2 |
Joystick
Push the head of the stick with the rubber gaiter through the hole from the back in the orientation of this image. Use the 4 screws and the plastic ring to secure the joystick.
Connect the joystick to the main board using the 5-pin JST cable.
Status LEDs
Connect the status LEDs to the main board using the 7-pin JST cable.
Probe connector Male and Female
This is an XLR connector (It has 3 pins but only 2 are used). This is the only part that needs a little soldering because you need to replace the original wire. Cut the Molex connector with about 5CM wire. Reattach this Molex connector to a new wire, and solder that to the XLR male panel mount.
Use the supplied M3 nuts, rings and bolts to mount inside the panel.
Do not plug in a microphone or DMX peripheral.
Blue: Original probe cable. Green: New cable
Emergency switch
Press white latch to disconnect the switching mechanic. Screw on the plastic nut tightly and secure it with the two metal screws (on the nut). But before screwing in the two metal screws, make sure the text on the button is in the correct orientation.
This is a double break / double make contact. Use terminals 11/12 (red). Switch both mains power lines (live and neutral). Use this to switch a power strip to completely shutdown everything (Router and controller). See “High voltage diagram” below.
USB ports
Just connect the two USB cables to the Onefinity / Buildbotics controller. Use a drop of dish soap on the threads if the nut is too tight to screw on.
DB25 connector
This connector connects to the Onefinity / Buildbotics controller. Connect the brown wire / red connector to the “SIGNAL” screw terminal on the PCB (point 20 in the connection map). Connect the blue wire / black connector to the GND screw terminal (point 21 in the connection map) .
WARNING: Do not swap the power screw terminal (Point 18 & 19) with the DB25 screw terminals (Point 20 & 21). If you do, you will blow the optocoupler. (part U7)
Relays
Use isolated spade connectors (not included) or solder directly to these contacts to switch the router, dust collector or other peripherals like lights or VFD functions with them. (VFD’s not officially supported).
Use heat shrink tubing to isolate the exposed metals. (The unused relays contacts can be left exposed). Keep the high voltage wires away from the low voltage wires.
PCB mounting
You can mount the PCB to the back of the housing. Do not screw the panel tight against the wood. Use the 5 included plastic standoffs. (Screws not included)
Power
If you don’t use the relay driven functions (Router, Dust Collector, Acc 1, Acc 2), only the USB connection to the controller is sufficient. If you do use the relay driven functions you need to add extra power to the board. There is a step-down circuit incorporated in the PCB design. You can connect 12V to 40V to the power screw terminals (point 18 and 19 in the connection map). You can route the 36V from the Onefinity / Buildbotics controller’s power supply directly into these screw terminals. It is advisable to fuse this line with an 1A fuse near the power supply (Fuse cable not supplied with the kit). If you don’t want use the build-in 36V power supply from the Onefinity / Buildbotics controller, you can use an adapter with at least 12V / 1,5A
There is a secondary way to power the PCB board by connecting a 12V power supply directly to the Arduino. However, this is less advisable. There are linear voltage regulators on the Arduino, and these are not efficient to convert the voltages and might become really hot. If you do wish to power the PCB this way, you need to change the “USB POWER OVERRIDE” jumper (Point 23 in the connection map) in the left position. I didn’t encounter problems using the linear regulator this way during testing. But it is better to use the efficient build-in step down converter and screw the power wires directly to the screw terminals.
If the OS is complaining that the connected USB device draws to much power, you can set the “USB POWER OVERRIDE” jumper in the left position (only when external power is connected to the terminals). But during testing the current draw never exceeded 300mA. (The Raspberry Pi 3 inside the controller can deliver 1500mA total).
USB Power override
The PCB ships with the jumper in the right hand position. Which is the correct setting. It’s also fine to remove this jumper. Only change this in circumstances explained in the power paragraph above.
Accessory port
The PCB includes an accessory port for future or personal use.
Pinout:
GND | +3.3V | +5V | +12V | D0 RX | D1 TX |
Low-voltage connection diagram
High-voltage connection diagram
Please be observant when working with electronics. Especially the parts that are connected to mains voltages. Use proper isolation and insulation. Make sure theres enough space between the relays and the buttons (if you place the PCB behind the button panel). And keep the low voltage wires away from the high voltage (mains) wires.
Configuration
You can configure several settings as desired on power up. For every setting you like to adjust you need to re-power the board while holding the desired function button down.
Hold “Enable X” button for 3 seconds | Invert X axis on joystick |
Hold “Enable X” button for 10 seconds | Invert Z axis on joystick |
Hold “Enable Y” button for 3 seconds | Invert Y axis on joystick |
Hold “Speed 1 / 2 / 3 / 4” button for 3 seconds | Change default start up speed to selected button |
Hold “Router” button | Change default start up setting to: on / off / auto * |
Hold “Dust Collector” button for 3 seconds | Change default start up setting to: on / off / auto |
Hold “ACC1” or “ACC2” button for 3 seconds | Change the behavior from that button from latching to momentary |
* WARNING: changing the default start up behavior to “ON” for a router would be incredibly stupid and dangerous. But this option is left in if someone wishes to use this button for uses other than a router. So please don’t do this if you attach a router.
Testing
All PCB’s are tested before shipping, but if you want to test the panel before hooking it up to the Onefinity / Buildbotics controller, you can connect the Arduino USB to a Windows computer.
Open control panel, “Hardware and Printers”. Right click “Arduino Leonardo” and Game control settings (These are Dutch screenshots)
Choose “Arduino Leonardo” and then “Properties”
Note: A couple times per second you see a button light up. This is because the panel re-transmits settings.
To test the DB25 input terminals (Point 20 & 21 in the connection map), you need to set the “Router” function to auto, and power the data port with a 3V lithium coin cell battery. + on 20 and – on point 21 (GND). The LED button should light up (and the relay should “click” if 12V is connected).
Software
The “brains” of this project is a ATmega32u4 micro-controller incorporated on a Arduino Leonardo development board. (included)
The source code is published for free. You may use it for your own project as long as it is non-commercial. Feel free to create your personal project with it. Adjust it to your own needs. Even with hardware I didn’t provide. But you may not create a commercial product with it. If you have great ideas to improve the firmware, let me know. Or code it yourself, and I might merge it. You can find the firmware on the Github repository. at a later stage I will probably sell PCB only kits for the users who want to create their own panel with their specific needs.
The supplied Arduino Leonardo comes preloaded with firmware 1.5.
Enclosure
Here are some plans for a cut-out to inset the panel nicely inside a cabinet. The cut-out also provides a space for the probe block. I used 18mm (approx 3/4 Inch) MDF. Use a straight or down cut bit. An up cut or compression bit probably leaves ugly borders. The inset is with 5mm (3/16 inch) probably not deep enough to use a compression bit. Do not forget to add holding tabs. Glue the probe housing block cutouts on top of each other.
Downloads
You can build a small console to house the control panel.
Onefinity Settings
Use these settings:
Troubleshooting
Relay “Router” does not work
Is the “Arm router” switch to the on position, or if not used (not recommended), is the connector bridged?
Relay “Dust collector” has a delay
This is by design. If Router and Dust Collector both are in “auto”-mode, the dust collector activates after a 1 second delay. This way the router and the dust collector won’t start at the same time. This will prevent a high surge current.
If you do not want this behavior, you need to change firmware code:
#define dustCollectorDelay 1000;
to
#define dustCollectorDelay 0;
None of the relays work
Is there 12 to 40V attached to the screw terminals (recommended), or is there a 12V adapter connected to the Arduino (not recommended)?
Is the polarity correct? (There is a reverse polarity protection diode, so this should not damage the PCB)
Is the in-line fuse (if used) from the power supply blown?
Signal in from DB25 connector does not work
Wires wrong polarity? (you can safely flip the wires without damaging the board)
Does it work if you connect a 3V coin cell battery to the signal and gnd?
If by accident more than 5V where provided to these screw terminals the optocoupler is probably blown. Replace part U7 on the PCB (under the Arduino)
Is the brown wire inside the DB25 connector connected to Pin 15 and the blue to Pin 25?
Buttons react sluggish, slow or not at all
If you start up the panel connected to a computer, disconnecting the USB leaves the Arduino in an unstable connection mode. Check if there is a problem with the USB connection.
CNC does not react on joystick
Did you use the supplied USB cable? If not, the cable might be a charging-only cable and does not transfer data signals. Replace cable with a USB data cable, and restart the Onefinity / Buildbotics controller.
X and Y axis on joystick are switched
Rotate joystick 90 degrees
Joystick X, Y or Z axis is inverted
You can change this in the configuration (see configuration)
Joystick drifts
Do not touch the joystick at power up. Every time the control panel starts up, the center of the joystick is calibrated. If you push it to a side while starting up, the panel assumes that this is its center position.
The panel resets or does not respond anymore after activating devices connected to the relays
Sounds like an EMI problem. The connected device probably has bad interference suppression. But also bad carbon brushes in the motor can cause EMI problems. Make sure the wires carrying main voltage are as far away from PCB, the low voltage and signal wires as possible.
You can also loop the wires from and to the problematic device a couple of time through a ferrite core to eliminate electric noise
Relay does not disengage even if button (and LED) is switched off
The start-up current of the connected device probably over exceeded the maximum rated 20A and spot welded the relay contacts together. Flicking the relay with a finger can break the connection, but the contacts are damaged. It is better to replace the relay. If you are using high current devices you need to connect a contactor that switches the high current device.
Attached LED light to ACC1 or ACC2 flickers when in off position.
There’s a “snubber” circuit connected to the relay contacts. This prevents sparks inside the relay, and eliminates electronic noise when switching high and inductive loads like motors. (Routers, dust collectors, compressors etc.) But, this also can create a tiny leakage current. If you attach a really low wattage load like a LED light, it might flicker or slightly light up the light in the off position. If you encounter problems like this, you can use a small wire cutter to cut the snubber resistor-leg for that relay to eliminate this problem. The snubber circuit isn’t necessary anyway for peripherals like led lights. Cut the leg from the resistor as near to the PCB as possible so you can easily solder it back on if you want to restore it in the future.
- Cut for Acc1 Relay
- Cut for Dust Collector Relay
- Cut for Acc2 Relay
- Cut for Router Relay
Support
For hardware support post a message on the Onefinity forum in this topic, and I (or other users) will try to resolve it.
For software support (problems or suggestions), use the Issue tracker on the Github repository.
Pricing
The kits costs as introductory offer €280 (ex VAT) euro or approx. $293 (ex VAT). + Shipping.
How to order
You can order over here:
-
Onefinity / Buildbotics CNC Remote control panel V4 kit€ 280,00 ex. VAT