There has recently been some interest in getting Smoothie to run using the LPCXpresso 1769 breakout board for the LPC1769 chip, and components placed on a breadboard.

If you don’t mind the hackyness of breadboards, or if tinkering is in fact what you’re after, this can be a quite nice solution.

[!WARNING] Warning: Breadboard setups are very sensitive to Electro-Magnetic Interference, you will most probably get false readings, resets and hangs if used on an actual machine, this page is for hackers looking into learning and testing new designs.

It is not appropriate for actual machines you want to use on a daily basis and expect to be reliable.

[!DANGER] 2021 update, written after a user recently tried to build one of these not realizing it was not a viable path to a working controller, resulting in lots of tears: Please don’t build one of these, they are purely an educational thing that is not meant to actually be built, and you’re just going to cause yourself a lot of trouble. If you have any doubts and still think you should build one, please Send us an Email. The introduction above was written a decade ago, when this was the singular only way to run Smoothie on anything, making this better than anything else, since nothing else existed.

Materials needed

To make this you’ll need:

If you like to tinker with reprap/CNC electronic stuff, you probably already have most of this.

The big picture

This is what smoothie on a breadboard looks like (graphics are thanks to the awesome fritzing):

Smoothie on a breadboard

A short description:


Now instructions for a step-by-step assembly. The current design is quite compact, so there is not really much freedom on component placement, but this is mostly to say what connects to what. If you don’t understand something, or don’t see clearly what connects to where, you can look more in detail in the Fritzing file or contact by email. Warning: we will refer to the pin numbering found on the LPCXpresso PCB; this is different from the standard IC pin numbering, as both columns have increasing numbers from top to bottom instead of a counter-clockwise numbering.


You’ll need the breadboard in a bit of a special configuration, due to the dimension/pin configuration of the LPCXPresso board:

Breadboard configuration

You just need to remove one of the power supply bars, and attach the two breadboards together (will require cutting the sticky sheet at the bottom of some breadboards).

LPCPxresso board

You must solder the two long ranges of holes on that board with standard 2.54mm golden pins at the bottom. Then simply insert into the breadboard, with the first pins on the left at 6 pins from the border.

LPCXpresso board

USB-Serial cable

To flash the bootloader, and later eventually debug, you need to connect to the board via serial. That won’t work via USB directly until smoothie is flashed in there. You can use an FTDI cable, the Arduino USB2Serial board, or even directly an Arduino board, using pins 0 and 1 as TX and RX.

USB-Serial cable

Blue wire in this picture (pin 21) is RX, green (pin 22) is TX. On an FTDI cable, RX is yellow, TX orange. On the Arduino USB2Serial and Arduino boards, those are indicated. (On some generic FTDI / TTL USB2Serial modules, if you experience problems with the serial connection not connecting, then you might want to try swapping the RX and TX connections between the LPCPxresso board and USB2Serial module, TX pin connects to RX pin and RX pin connects to TX pin, also worthy of note is that there are both 5Volt and 3.3Volt I/O variants of these USB2Serial boards available) GND (black) goes into the bottom rail of the two bottom power bars, and to the GND pin on the LPCXpresso. The 5V pin goes into the VIN (4.5V-14V) pin on the LPCXpresso (orange wires). The LPCXpresso then outputs 3.3V, which is what we’ll be using for our peripherals, from the top left pin (red wires). This goes into the top rail of the two bottom power bars. The 3.3V regulator on the LPCXpresso is located on the programmer side, so if you split the boards you will have to add an external 3.3V LDO. The LED and resistor are not necessary, but it’s always nice to know you’ve connected the power correctly. The resistor value depends on your LED’s luminosity and taste: I use 1Kohm on mine. Most LEDs will want less.


You need a reset button to reset your board connected to pin 4, and a bootloader button connected to pin 51 (shown in the diagram below) to get it to enter bootloader mode in order to flash the SD card bootloader (this only needs to be done once). Also, a play/pause button is used to force the bootloader into DFU mode to flash the firmware, this is connected to pin p2.12, and is not shown in the following diagram.


Both buttons are push buttons, and connect from their respective pins to GND. Lower left is RESET, and top right is BOOTLOADER. You’ll then be able to flash the chip using lpc21isp following these instructions.

To force the bootloader into DFU mode hold the play/pause button, press reset then release the play/pause button.

MicroSD card breakout board

Exact connection will depend on the pin order for your microSD breakout board. Here pictured is an imaginary breakout board that would have the pins in the same order as the LPCXpresso, making things neatly arranged:

MicroSD card breakout board

You’ll also have to connect red and black to the bottom 3.3V power bar. It is shown here separated from the breadboard, but most breakouts will plug right on the breadboard, there is room for that.

If you have flashed the bootloader, copy smoothie as “firmware.bin” onto the SD card, it will be written to flash on reset, and you should get a nice welcome on the Serial cable.

If flashing the bootloader works, but flashing firmwares from the SD card doesn’t, you probably have an SD card problem. Try swapping DI and DO or using another SD card. SDHC may have compatibility issues, you may want to try an older card.

USB breakout board

USB connection is quite simple. It’s pretty much the same as the serial cable: 5V to VIN (orange), GND to GND (black), connect D- (green) to pin 36 and D+ (blue) to pin 37 and you’re done.

USB breakout board

If you have flashed the bootloader and then smoothie, it should show up as both Mass Storage, and USB/Serial to your computer.

Hotend control

These two circuits allow you to read the hotend’s temperature and change that temperature via a heater. You don’t need that for CNC milling and lasercutting, so use a jumper and jump it if that’s your case.

Hotend control

The bottom circuit is the thermistor circuit. From pin 20, connect a 4.7Kohm resistor to 3.3V power (orange), and a 10uF capacitor to ground. The 2.54mm screw terminal connects the pin 20 and the ground to the two wires from your thermistor. The thermistor doesn’t have a polarity so it can be connected either way. The top circuit is the Mosfet circuit, it controls the heating element in your hotend. The horizontal resistor is 10Kohm and connects from the Gate to GND (pull-down resistor) and the other one is 1Kohm and connects the Gate to pin 45 on the LPCXpresso. The left 2.54mm screw terminal is the power input for the heater element. If you want to use only one power supply for both the heater and the steppers (will work fine with most ATX Power supplies), you can connect this to the top right power bar instead where we will later have the stepper motors’ power rail. The other 2.54mm screw terminal goes to the heater.

Stepper drivers

You need:

Here shown is a picture with 4 stepper drivers:

Stepper drivers

Bit of a legend:


You are going to want to configure Smoothie to work with the pin assignment of your breadboard setup. Here is the corresponding configuration:

alpha_dir_pin                                2.7             # Pin for alpha stepper direction
alpha_step_pin                               2.8             # Pin for alpha stepper step signal

beta_dir_pin                                 2.11            # Pin for beta stepper direction
beta_step_pin                                2.12            # Pin for beta stepper step signal

gamma_dir_pin                                0.28!           # Pin for gamma stepper direction
gamma_step_pin                               2.13            # Pin for gamma stepper step signal

Also, make sure to disable current control as it will hang if enabled…

currentcontrol_module_enable                 false             #


[!WARNING] The pinouts for the motors above are an example and actually conflict with other pins in current versions of smoothie so it is recommended you use the pinouts from this chart:


And there you go!

If you have any questions or if something is wrong/missing, please don’t hesitate to email.