Last Updated on November 21, 2023
CNC Remote panel control panel for the Buildbotics / Onefinity CNC controller
NOTE: it’s not possible to order V1 anymore. It is replaced by V4.
This is the full info and tutorial how to assemble the remote control panel for the Onefinity / Buildbotics CNC controller V1. This is a custom project and not affiliated to Onefinity CNC.
I’ve received all the parts to create 13 DIY versions and 1 fully soldered and tested, I use this version to test components, but can be sold at a later stage. In this article I will explain every step needed to create the mainboards and the panel.
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 an surface by hand. The axis that are enabled light up.
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.
“OH SHIT” Emergency button
If there’s trouble, hit this button. This also acts like the main switch to power the system.
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 10 Amp. If you want to switch higher currents, you might want to switch a big contactor with the relay.
Speed
Select one of the 4 maximum speed modes. The speed that is selected lights up.
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 spindle
ACC 1 and ACC 2
2 extra buttons to do whatever you want with it. You can change the behaviour to latching (Press once: ON. Press again: OFF) or momentary (Press and hold: ON, release: OFF). See configuration paragraph below.
Touch probe pocket
A neat little place to place the touch probe. If you use iron screws to mount the panel you can mount the magnet in the corner.
Its just a hole in the panel, but I will provide plans to CNC cut a basket. (see links below)
Joystick
Move the gantry in X, Y and Z (turning) direction with a single stick. Very useful 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)
Arm router
This safety toggle prevents the possibility for the router to power on. It electrically disconnects the relay that powers the router
Probe connector
Replaces the Molex connector on the probe cable. (I don’t think the Molex connector is a reliable connector to plug and unplug many times). A remote connector also releases the wire strain on the Onefinity controller connector.
USB ports
Easy access to the USB ports when using USB sticks.
Feature video
The remote panel is specially designed to make a router (like the Makita) more smart. Its not designed for spindles with VFD, although it might work with spindles. The two ACC (accessories) buttons are free to use to control VFD options. Or a future firmware update might incorporate more options for spindles, but for now it does not provide special support for it. (also a hardware change / add-on might be necessary) . This video from a “pre-production” control panel has some references to “spindle”, but these need to been read as “router”
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 (see the video above)
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 behaviour from that button from latching to momentary |
* WARNING: changing the default start up behaviour to “ON” for a router would be incredibly stupid and dangerous. But I left this option in if someone wishes to use this button for other uses than a router. So please don’t do this if you attach a router.
Assembly notes
I’ve designed the PCB for my own use, I didn’t really expect that so many people were interested in the project. There are some weird design “choices” like a connector that is in another orientation as the rest or silk screen text that is obstructed. At the time of designing I overlooked these little things, or didn’t care enough to improve this. Also, colouring of the wires don’t follow colour standards. (In the prototype I used other connectors, but for this batch pre-crimped wires were more convenient)
I’ve tested every function, and it works flawlessly in my environment. But please understand that problems might arise in other situations I couldn’t have foreseen. So a bit of collaboration would be desirable if problems might arise.
The soldering isn’t complicated. No SMT (Surface Mounted Technology), its all through-hole components. Just like those classic soldering play kits (do they still exist?) But I really do not advise to buy this kit if you have no soldering experience. The core of the system is an Arduino Leonardo micro controller. I’ve preloaded every Arduino with the latest firmware. Although it isn’t necessary, some skill behind the computer is preferable. You might need to update the firmware if problems arise.
Protect yourself from ESD. Or touch at least a ground contact for a couple of seconds before handling the components.
Schematic
This is the schematic of the CNC remote controller V1.0 pcb
Electronic components for the PCB
These items are all included with the kit
QTY | DEVICE | VALUE | PARTS / LOCATION |
---|---|---|---|
2 | LED 5MM | GREEN | LED3, LED6 |
2 | LED 5MM | RED | LED2, LED5 |
2 | LED 5MM | BLUE | LED1, LED4 |
2 | JST CONNECTOR | 2 PIN | ARM_SPINDLE_SWITCH, CNC-IO |
12 | JST CONNECTOR | 4 PIN | B_ACC1, B_ACC2, B_DUST-COLLECTOR, B_HORIZONTAL-LOCK, B_SPEED1, B_SPEED2, B_SPEED3, B_SPEED4, B_SPINDLE, B_VERTICAL-LOCK, DUST_COLLECTOR_STATUS, SPINDLE_STATUS |
1 | JST CONNECTOR | 5 PIN | JOYSTICK |
1 | SCREW TERMINAL | 2 PIN | X1 |
1 | FUSE HOLDER | F1 | |
1 | GLASS FUSE | 1A | F1 |
4 | VARISTOR-5 | 10D471K | VARISTOR-1, VARISTOR-2, VARISTOR-3, VARISTOR-4 |
6 | RESISTOR 1/4W | 330Ω | R2, R3, R4, R5, R6, R7 |
3 | RESISTOR 1/4W | 10KΩ | R21, R23, R24 |
4 | RESISTOR 1/4W | 1KΩ | R18, R20, R26, R28 |
4 | RESISTOR 1/4W | 220Ω | R17, R19, R25, R27 |
4 | RESISTOR 2W | 220Ω | SNUBBER-01, SNUBBER-02, SNUBBER-03, SNUBBER-04 |
1 | RESISTOR 1/4W | 680Ω | R22 |
4 | DIODE | 1N4004 | D1, D2, D3, D4 |
4 | TRANSISTOR | 2N2222 | T1, T2, T3, T4 |
5 | OPTO COUPLER | 4N33 | OPTO1, OPTO2, OPTO3, OPTO4, OPTO5 |
2 | SHIFT REGISTER | 74HC595N | IC1, IC2 |
4 | CAPACITOR | CBB22 104J630V | C1, C2, C3, C4 |
1 | DC-DC-STEP-DOWN 12V | LM2596 | U$1 |
4 | RELAYS | G4A-1A-E_DC12 | RELAY_ACC1, RELAY_ACC2, RELAY_DUST_COLLECTOR, RELAY_SPINDLE |
1 | PIN HEADER | 40 PIN BREAKAWAY | LEONARDO PORT, STEPDOWN MODULE |
Panel components
These items are all included with the kit
QTY | DEVICE | VALUE | PARTS / LOCATION |
---|---|---|---|
1 | PCB | MAIN BOARD V1.0 | |
1 | ARDUINO_LEONARDO | ARDUINO_LEONARDO | PCB |
2 | LED BUTTON | GREEN | ENABLE X, ENABLE Y |
4 | LED BUTTON | BLUE | SPEED 1, SPEED 2, SPEED 3, SPEED 4 |
4 | LED BUTTON | WHITE | ROUTER, DUST COLLECTOR, ACC1, ACC2 |
12 | WIRE WITH JST FEMALE | 4 PIN 30CM | FOR BUTTONS AND LED BOARD |
1 | WIRE WITH JST FEMALE | 5 PIN 30CM | FOR JOYSTICK CONNECTION |
2 | WIRE WITH JST FEMALE | 2 PIN 30CM | FOR “ARM ROUTER” SWITCH AND BREAKOUT BOARD CONNECTOR |
1 | SAFETY TOGGLE SWITCH | ARM ROUTER | |
1 | EMERGENCY STOP SWITCH | OH SHIT | |
1 | 2 PORT USB PANEL MOUNT | USB | |
1 | 3 PIN XLR PANEL CONNECTOR MALE | PROBE | |
1 | 3 PIN XLR CONNECTOR FEMALE | PROBE CABLE | |
1 | 3 AXIS JOYSTICK | X / Y / Z | |
1 | LASER CUT ACRYLIC BASE PLATE | 3MM WHITE | |
1 | LASER CUT ACRYLIC TOP PLATE | 2MM TRANSPARENT | |
1 | LASER CUT AND PRINTED DECAL | ||
1 | BREAKOUT CONNECTOR | ONEFINITY CONTROLLER | |
1 | USB CABLE | 1M USB MICRO => USB | ARDUINO LEONARDO => ONEFINITY CONTROLLER |
4 | SCREWS | FOR ACRYLIC PANEL | |
2 | BOLTS M2.5 | FOR XLR CONNECTOR | |
2 | NUTS M2.5 | FOR XLR CONNECTOR |
Things you might need
These items are not provided with the kit.
- Solder
- Basic wires
- Heat shrink tubing
- Spade connectors for the relay terminals and/or joystick (I personally soldered the contacts)
- Hot glue
PCB Assembly instructions
There are two bags with components. One bag with components were the orientation does not matter, and one bag were the orientation is really important. Please take extra care soldering these parts, because if its the wrong way around you might release the magic smoke inside the Arduino. I’ve added labels with the value of the resistors on the resistors. So you don’t have to decode the colour coding.
Parts that were rotation is important:
LEDS | There’s a flat spot on the led. Make sure it matches the silk screen, and the colours match the example picture above. | |
Diodes | Match the grey line (on top in this picture) with the white line on the silk screen | |
Optocoupler chips | The small dot on the chip marks PIN1 This need to be pointed to the side of the notch in the rectangle on the silk screen. (I’ve drawn the dots black in above photo of the PCB) | |
Shift register chips | Match the notch on the silk screen | |
Transistors | The silk screen printing does NOT match the shape of the transistors. Take a good look at this picture. This is how they need to be oriented. (notice: right-bottom is out of pattern) Middle leg bended to the flat side. | |
JST connectors | On every connector place, there is a “1”. This is the location for PIN 1. PIN 1 is on the RIGHT side of the connector when looking at the side with the slots in it. (See picture how the orientation is). Be cautious with “B_SPEED1” this one is rotated compared to the rest! | |
DC to DC converter | DC to DC converter: Match in / out. The DC to DC module is already calibrated to 12V. Do not adjust the potentiometer. |
The footprint of the capacitor of the snubber circuit (between the relays) is bigger than the component. Just bend the wires through the holes.
The holes from the fuse box are a little too narrow. You need to enlarge the hole with a 1.5mm drill. But as a result the metallisation between the top and bottom of the board is gone. You need to solder the fuse box on the top side of the PCB (or do both if you want to be sure 😉)
Take a good look at the picture with all the components in the right orientation. Note: In this picture I’ve added chip sockets so I could test every chip I send out. But these sockets are not provided with the kit (nor is it necessary).
Not all resistors need to be populated. The kit comes with 5V LED buttons. But if you would like to use your own directly connected LEDs you can scratch the trace and solder a 330 ohm “ballast” resistor. Please look carefully at the picture which resistors need to be soldered because the printed silk screen markings are a bit obstructed.
The ICSP header (for the Arduino) does not need to be soldered.
Assembly instructions
Acrylic panel
Unpack the panel package, but be really careful not to damage or fold the delicate printed and laser cut inlay. Its sandwiched between the plates for transport.
Remove the protection layers from the acrylic (front and back) and sandwich the inlay print between them. When the buttons and other parts are screwed together this becomes one solid panel.
Don’t overtighten the corner screws otherwise the acrylic might break
Buttons
Make sure you solder the wires to the buttons like this. The colour of the wires must be at the same place otherwise you might create a short circuit. I also advise to use heat shrink tubing (not provided with the kit) to isolate and remove strain from the wires. (Don’t forget to put the heat shrink on the cable first 😉 )
Joystick
This is how you should solder the wires to the joystick. This is the view from the back. The blue dotted line is the back of the panel for orientation. The potentiometers are sensitive to overheat so make sure you don’t overheat them or they might malfunction. Only solder inside the red markings on the illustration, and as brief as possible. (Or use spade connectors)
There are tiny screws inside the joystick package. Don not lose them. You need to put the joystick and rubber through the hole from the back. Then screw the plastic ring from the front.
The orientation should be as shown in the images.
Status LEDs
- Make sure you are on the back side of the PCB: Solder wire from left to right: Black, Red, White, Yellow (See photo).
- Add a dab hot hot glue or epoxy.
- Cut the status-LED PCB from the main PCB
- Screw in the back panel using the supplied screws. (Don’t screw deeper than 3mm). Use the plastic rings on top of the PCB.
Or just hot glue the status-LED PCB in place. - Do not swap the button connectors with the status LEDs connectors.
Safety toggle
Solder wires like this. Only two wires (LED is unused). If you don’t to use it (I strongly discourage doing this) you can bridge the “ARM_SPINDLE_SWITCH” connector with a jumper but please do not rely on the software switches. You might think that the “off” or “auto” is sufficient, but these are all software controlled functions and you should never trust a software function. The toggle physically breaks the connection to the relay that controls the router. I didn’t like the easily trippable switch on the Makita router when changing those potential mutilating blades (And I didn’t want to pull the plug every time). So I added this switch for safety.
Probe connector Male and Female
This is an XLR connector (It has 3 pins but only 2 are used). Cut the Molex connector with about 5CM wire. Solder a new wire long enough to the XLR panel mount male, and solder the probe wire to the XLR female. Please don’t try to connect an XLR microphone or DMX disco light to the connector (Though, you might see some brief disco lightning happening 😉)
Use the supplied M2.5 nuts and bolts to mount inside the panel
Emergency switch
Press white latch to disconnect the switching mechanic. screw on the plastic nut tight and screw the two metal screws (on the nut) through the acrylic. 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). Its advisable to switch both mains power lines to the Onefinity. Use this to switch a power strip to completely shutdown everything (Router and controller).
USB ports
Just connect the two cables to the Onefinity / Buildbotics controller
DB25 connector
This connector connects to the Onefinity / Buildbotics controller. You need to attach red wire to the PIN 15 screw terminal, and the black wire to the PIN 25 screw terminal. (you might need to lengthen the wire if its too short. I couldn’t find longer cables with JST connectors on it)
Do not connect the 2 pin JST connector to the “Safety switch” socket. You might blow the cnc controller.
PCB mounting
You can mount the PCB to the back of the housing. Do not screw the panel tight against the wood. Use some plastic stand-off tubing (not included in the kit).
Overall
Please be observant when working with electronics. Especially the parts that are connected to mains voltages. Use proper isolation. Make sure there’s enough space between the relays and the buttons (if you place the PCB behind the button panel).
Connectors
Testing
Connect the USB cable to a wall plug (I don’t recommend it plugging it in a computer port at the testing stage). All the LED buttons should light up for 1 second at power up. After power up all led buttons should work also. But the relays wont work. (no clicks from the relays).
Rotate the joystick to it’s maximum. If the LEDs turn off or dim down, when pushing the stick a direction there is probably a short. If so do not plug it in a computer you might kill the port. Inspect the wiring to the joystick.
If everting works as planned, you can try a 12V adapter (not included) in the Arduino port, or put a 14-40V (Although out of spec, 12V probably work fine also) on the screw terminals (respect the polarity, there’s no reversed polarity protection). Now all the relays should function also.
To test the data port, you need to set the “Router” function to auto, and power the data port with a 3V coin cell battery. the led button should light up (and the relay should “click” if 12V is connected).
If you connect the USB to a windows computer, you can test the joystick also.
Open control panel, “Hardware and Printers”. Right click “Arduino Leonardo” and Game control settings (or whatever that is called in English)
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.
Troubleshooting
I hope this isn’t necessary but if there’s any problem you should look in these areas for mistakes. I’ve tested each Optocoupler and shift register before sending out, but if you’ve soldered a component incorrectly, something might have burned. (luckily the components on the PCB aren’t that expensive and widely available) .
RED | LED(s) on the buttons aren’t working Resistors soldered on the right location? Shift register in the correct orientation? Button connector orientation correct? |
ORANGE | Relay router does not work Is the “Arm router” switch to the on position, or if not used (not recommended), is the connector bridged? Optocoupler wrong orientation or defect? Transistor wrong orientation or defect? |
PURPLE | Relay Dust collector does not work Optocoupler wrong orientation or defect? Transistor wrong orientation or defect? |
BLUE | Relay ACC1 does not work Optocoupler wrong orientation or defect? Transistor wrong orientation or defect? |
GREEN | Relay ACC2 does not work Optocoupler wrong orientation or defect? Transistor wrong orientation or defect? |
PINK | None of the relays work Is there a 12V adapter connected to the Arduino, or is there 14 to 40V attached to the screw terminals? Is the polarity correct? Is the fuse box soldered on the top side of the PCB? Is the fuse blown? (The fuse is only used when the PCB is powered through the screw terminals) |
LIGHT BLUE | Data-in does not work Optocoupler wrong orientation or defect? Wires wrong polarity? (you can safely flip the wires without damaging the board) |
Buttons react sluggish, slow or not at al If you start up the panel connected to a computer, disconnecting the USB leaves the Arduino in a unstable connection mode. Check if there’s a problem with the USB connection. | |
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) | |
All kinds of weird and unexplainable stuff is happening Try to keep the mains voltage lines away from the electronics and signal wires. |
Software
I will publish the source code for free. You may use it for your own project as long as it is non-commercial. Feel free to create your own project with it. Adjust it for 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 its Github repository
The Arduino Leonardo comes preloaded with firmware 1.1. Just plug it on the PCB and it should be good to go.
Housing
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 downcut 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 an compression bit. Glue the probe-housing block cut-outs on top of each other.
Downloads
I personally built a small console to house the control panel. Note: this console does not contain the PCB. To save space I placed the PCB under the table. There is 30cm wire on the connectors, so you have some wiggle room to place the PCB.
Onefinity Settings
I used these settings.
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.
How to order
It’s not possible to order V1 anymore. It is replaced by V3.