CNC Remote control panel V1

CNC Remote panel control panel for the Buildbotics / Onefinity CNC controller

IMPORTANT: Please read this carefully before ordering. This is a DIY soldering project. If you are not confident you can handle this project, I do not recommend buying it.

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 secondsInvert Z axis on joystick
Hold “Enable Y” button for 3 secondsInvert Y axis on joystick
Hold “Speed 1 / 2 / 3/ 4” button for 3 secondsChange default start up speed to selected button
Hold “Router” buttonChange default start up setting to: on / off / auto *
Hold “Dust Collector” button for 3 secondsChange default start up setting to: on / off / auto
Hold “ACC1” or “ACC2” button for 3 secondsChange 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

PCB Schematic V1.0

Electronic components for the PCB

These items are all included with the kit

QTYDEVICEVALUEPARTS / LOCATION
2LED 5MMGREENLED3, LED6
2LED 5MMREDLED2, LED5
2LED 5MMBLUELED1, LED4
2JST CONNECTOR2 PINARM_SPINDLE_SWITCH, CNC-IO
12JST CONNECTOR4 PINB_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
1JST CONNECTOR5 PINJOYSTICK
1SCREW TERMINAL2 PINX1
1FUSE HOLDERF1
1GLASS FUSE1AF1
4VARISTOR-510D471KVARISTOR-1, VARISTOR-2, VARISTOR-3, VARISTOR-4
6RESISTOR 1/4W330ΩR2, R3, R4, R5, R6, R7
3RESISTOR 1/4W10KΩR21, R23, R24
4RESISTOR 1/4W1KΩR18, R20, R26, R28
4RESISTOR 1/4W220ΩR17, R19, R25, R27
4RESISTOR 2W220ΩSNUBBER-01, SNUBBER-02, SNUBBER-03, SNUBBER-04
1RESISTOR 1/4W680ΩR22
4DIODE1N4004D1, D2, D3, D4
4TRANSISTOR2N2222T1, T2, T3, T4
5OPTO COUPLER4N33OPTO1, OPTO2, OPTO3, OPTO4, OPTO5
2SHIFT REGISTER74HC595NIC1, IC2
4CAPACITORCBB22 104J630VC1, C2, C3, C4
1DC-DC-STEP-DOWN 12VLM2596U$1
4RELAYSG4A-1A-E_DC12RELAY_ACC1, RELAY_ACC2, RELAY_DUST_COLLECTOR, RELAY_SPINDLE
1PIN HEADER40 PIN BREAKAWAYLEONARDO PORT, STEPDOWN MODULE

Panel components

These items are all included with the kit

QTYDEVICEVALUEPARTS / LOCATION
1PCBMAIN BOARD V1.0 
1ARDUINO_LEONARDOARDUINO_LEONARDOPCB
2LED BUTTONGREENENABLE X, ENABLE Y
4LED BUTTONBLUESPEED 1, SPEED 2, SPEED 3, SPEED 4
4LED BUTTONWHITEROUTER, DUST COLLECTOR, ACC1, ACC2
12WIRE WITH JST FEMALE4 PIN 30CMFOR BUTTONS AND LED BOARD
1WIRE WITH JST FEMALE5 PIN 30CMFOR JOYSTICK CONNECTION
2WIRE WITH JST FEMALE2 PIN 30CMFOR “ARM ROUTER” SWITCH AND BREAKOUT BOARD CONNECTOR
1SAFETY TOGGLE SWITCHARM ROUTER
1EMERGENCY STOP SWITCHOH SHIT
12 PORT USB PANEL MOUNTUSB
13 PIN XLR PANEL CONNECTOR MALEPROBE
13 PIN XLR CONNECTOR FEMALEPROBE CABLE
13 AXIS JOYSTICKX / Y / Z
1LASER CUT ACRYLIC BASE PLATE3MM WHITE
1LASER CUT ACRYLIC TOP PLATE2MM TRANSPARENT
1LASER CUT AND PRINTED DECAL
1BREAKOUT CONNECTORONEFINITY CONTROLLER
1USB CABLE1M USB MICRO => USBARDUINO LEONARDO => ONEFINITY CONTROLLER
4SCREWSFOR ACRYLIC PANEL
2BOLTS M2.5FOR XLR CONNECTOR
2NUTS 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

PCB with all components in the right orientation and location. Use the zoom function to inspect closely.

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:

LEDSThere’s a flat spot on the led. Make sure it matches the silk screen, and the colours match the example picture above.
DiodesMatch the grey line (on top in this picture) with the white line on the silk screen
Optocoupler chipsThe 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 chipsMatch the notch on the silk screen
TransistorsThe 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 connectorsOn 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 converterDC 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.

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.

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)

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).

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) .

REDLED(s) on the buttons aren’t working
Resistors soldered on the right location?
Shift register in the correct orientation?
Button connector orientation correct?
ORANGERelay spindle 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?
PURPLERelay Dust collector does not work
Optocoupler wrong orientation or defect?
Transistor wrong orientation or defect?
BLUERelay ACC1 does not work
Optocoupler wrong orientation or defect?
Transistor wrong orientation or defect?
GREENRelay ACC2 does not work
Optocoupler wrong orientation or defect?
Transistor wrong orientation or defect?
PINKNone 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 BLUEData-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.

Pricing

The kits costs €230 euro or $267 (ex fee) through PayPal. I consider this really a startup offer of a “prototype” product. Especially for such a low volume speciality device. The parts used are quite expensive . I’ve corresponded this price before, and I like to keep hold of it. But to be honest, due to shipment prices, taxes, package cost and other stuff, prices were higher than I initially calculated.
Anyhow. If there’s more demand than this first batch of 14, future prices probably will increase. I’ve put so much time in it already (writing this tutorial alone took me a week). But for now I like to keep it at this considering this is also a bit of a test case.

Shipping

(from The Netherlands)
Basic shipping inside the Netherlands (with insurance): 8,70€ (1 day)
Insured shipping inside the EU with insurance: €28 – €33,50 (1-7 days) (depends on the country zone)
Insured shipping to the USA: €35 / $41 (4-9 days)

How to order

Fill in this form and I will contact you. Please understand, there are only 13 kits (for now). If there are more than 13 enquiries I probably have to disappoint some people. If that is the case I will put you on the waiting list if you want to (Without any obligations). If there’s enough demand I will probably create a new batch. But it may take a while. First I want to wait for the response of these first panels.

EDIT: Every kit is already sold. If you enquire now, you will be on the waiting list. There were so many requests, that a next batch is highly probable. But this will be after the feedback from the first users.