Project 3+Pi

6DoF stepper motor driver module PiHat or standalone feature. Optional closed loop 6DoF sensing available too.

Public Chat
Similar projects worth following
3+Pi (Read as: Three Plus Pi) is a 6 Degrees of Freedom Pi Hat designed to drive 6 stepper motors for custom purposes such as 3D printing, CNC milling, laser cutting and more.

Conceptualised as a personal project, 3+Pi has had major scope creep allowing various other features.

Such features include an additional long range 6 DoF MEMS sensing, ability to run as a standalone and potentially run on a USB-C 18W based power bank. Other features include a standalone Python based interface allowing the option to toggle stepper driver settings and save preferences onto the onboard SPI Flash.

Currently established by myself, this project is run on my own time, budget and knowledge. I am always willing to accept more people onboard to accomplish the objective.


3+Pi is nothing conceptually new. This is just as any 3D printer-based board which talks through UART. Except instead of having a USB to UART layer, this is directly using the UART port on the Raspberry Pi.

Designed specifically to act as a Raspberry Pi Hat. 3+Pi conceptually means, 3 Axis or more (thus the +) and mounted onto the Pi… as a hat. (umm... Thus the +Pi again.) 

With an ARM Cortex M4 STM32F302CBT6, the 3+Pi will be able to handle all the low-level logic and real-time aspects of driving the motors for whatever purpose you might want... Hopefully. Using the TMC2041's ‘dual in one package’ stepper drivers, communicating with the STM through SPI, the option to add 6 Degrees of Freedom will not be an issue... Unless you're driving the stepper coils hard then yeaaaahhhh… probably not a good idea ☹

Optional CAN controller will let you use the 3+Pi for any CAN-able devices in the bus allowing you to directly talk to the STM for stepper feedback and monitoring or stepper driving. With the optional feature to talk to the Pi and ask it nice questions like ‘how is the temperature going?’ and ‘how much resources are you drawing?’ ‘how are you feeling?’ It's good to talk... especially for this hardworking board.

Finally, with the whole doctrine of USB-C motivation, I have succumbed and made the board support USB-C 100W full usage. I mean, it will be able to negotiate a whopping 20V 5A if the supply grants it but will be able to be programmed to drop the power draw should there be an issue. If there isn't any 20V or high current supply the board will work functionally with a normal 5V 3A supply, which will only power the Pi, then prompt the user about low power input - thus putting the STM32 to deep sleep until next power up, hoping that the power supply is enough juice both up.

So where can this be used? Possibly for 3D Printers, CNC machines, laser cutters or virtually any low power demanding 6DoF applications. I have so many outlandish plans for this project such as adding the potential to respond to physical motion feedback on said 6DoF to have a good closed loop control system. I hope this inspires you to design your own crazy project (please feel free to let me know about it and I'll try to support you with my skills as much as I possibly can.)

This is a rapid prototype for now, so it's been designed quickly and will likely have some bugs/hiccups here and there. I’ve been working on this after my usual day time job, so... I'd say there isn't much time put into this yet. Regardless, I intend to do it no matter how long it takes because of I love doing such projects.

Thanks for reading...


 Here is the extract of the original board - I think it's important to show improvements/non-improvements of a project through archiving and less deletion.

{  The board consists of:

  • The Cortex M4 STM32F401RE chip mostly handling the grunt of the lower-level tasks needed to create the signals for the 4x TMC2100 stepper driver modules.
  • A bunch of bulk Aluminium caps to smooth out the power supplied and be rated to handle 24V input. This will reduce the need for thicker current power supplies rated at 12V. [Edit: 18-02-2019 This was the original idea with Prototype V1.0-1.2p]

My power target is to go lower than 96W total... For now. [Edit: 18-02-2019 This was the original idea with Prototype V1.0-1.2p]  }

  • 2 × TPS54340DDAR Power Management ICs / Switching Regulators and Controllers
  • 3 × TMC2041-LA-T Dual Stepper Motor Driver
  • 1 × MCP2562T-E/SN Application Specific ICs / Telecom ICs (CAN)
  • 1 × STM32F302CBTx Microcontroller
  • 1 × Raspberry Pi 3 B Single Board Computer

View all 7 components

  • Update 15-08-2019

    Tobius08/15/2019 at 06:00 0 comments

    Project 3+Pi has been featured on a Hackaday article here. As soon as I heard about it, I could not help but feel so overwhelmed with joy seeing my work being acknowledged! Thank you Tom and the rest of the hackaday team for that. I am very humbled. :D

    On to the updates of 3+Pi. I'll be honest, there hasn't been any update so far since I've been working on StuPD which honestly has been very, very slow. I have been bogged down with my usual Engineering 9-5 job which hardly gives me time to work on these projects. 

    After seeing the comments talking about how to integrate it with klipper3d and adding limit switches, fan drivers and heaters (for a 3D printing setup to which I completely forgot about! Unbelievably so.) I will have to revamp the design to add those on board. 

    I'd like to work on some additional features/modifications such as:

    - Modifying the powersupply unit to accommodate both USBC and DC barrel.

    - Test it's compatibility with the Raspberry Pi 4 and power it too

    - Expand the board to allow more heat sinking for the drivers, thus exceeding the template I used from KiCAD. 

    - And others I have to sit down and think about. 

    As the article mentions and I mentioned earlier, I am looking for any help externally should they wish to help out. There is a lot if so much, to do on the software side of things. Speaking of which, the Rpi3B+ has a 'shared' UART with the BLE/WI-FI module which makes it annoying so I have to compensate for that.

    In addition to all this and perhaps more of a madman idea: 

    I'd like to make a custom SBC unit that can support the 3+Pi alongside creating a proper eco-system of a standalone 6DoF, multi-functional device to fit the need.

    Now that is not easy and to be honest, I'd want to work on that AFTER I've carefully done lots of tests with 3+Pi entirely. However, It's something I've wanted to do for a while now and cannot find any perfect use of an MPU (Thinking of A53/A57 units..maybe perhaps RISC-V? hmmm) for something other than a breakout board similar to any other pi.

    Thank you again everyone for following this project and your feedback. I will do my best to keep updates and see if there will be any progress later. But I must iterate that I hardly have time to spare... But I'll still do something.

  • Introducing Spine for 3+Pi

    Tobius04/21/2019 at 14:03 0 comments

    Hi everyone. 

    I've finally made the Hackaday page for Spine. Here it is: 

    Parallel to working on the 3+Pi, Spine will be an optional unit for closed loop 3D space sensing. Ideally to be used with the 3+Pi, I plan on releasing the designs for anyone anywhere to use it.

    Thanks, have a good day!

  • Minor Updoot 09-04-2019

    Tobius04/09/2019 at 01:27 0 comments


    I've been busy lately and haven't gotten much time to work on the Spine board yet. I will get to it as soon as I can while I sort some normal day chores out first and get sometime.

    In other news, 3+Pi has entered the 2019 Hackaday competition! woo! So many amazing project entries from others which is really awesome! 

  • Feedback is nice

    Tobius03/25/2019 at 06:57 0 comments

    Good Evening. 

    So I was thinking about adding some sort Motion feedback from the motion created by the stepper motors allowing a closed feedback loop if the system is going to be used as a 3D space instrument.

    Essentially it will be a plug in board which will be remounted onto a distribution board which will connect two sensors on each side whilst the distribution board contains a different yet similar approach to the other sensors. 

    Hmm, knowing that this will bump the pricing overall up, it will be an optional setting which is why it will be a 'plug in'. 

    Again with the close-no-budget that I have right now they will remain in software phase without any testing done in real-life. I am not sure if a go-fund-me or kickstarter would suffice because I don't know or like marketing exaggeration and my projects are very niche, let alone completely over saturated now times. 

    Oh well, if anyone would be interested in conversing about this, please send me a message/comment and I will hopefully get back to you very soon. 

  • now redirects to this page

    Tobius03/12/2019 at 01:45 0 comments

    Minor Updoot. now redirects to this very hackaday page. 

    Other than that, no changes or updoots. Still working on other stuff for now. 

  • Updoot 26-02-2019 | Want to beta test?

    Tobius02/26/2019 at 03:12 0 comments

    Good evening. 

    The last few days have been quiet as I haven't done much. I am still looking for ways to get this funded to be released. I am not really that keen on doing over-the-top advertising and would prefer a small niche market anyway. 

    I'm always open to anyone willing to join the team, unfortunately I am not really a marketing person so I do not have the finances to pay for your time. I ---however--- promise to make it up for it later when something comes out of it and will be as transparent as the air that's between your eyes and the screen that you are using to read these texts... Assuming you're not in a smoggy area...or wearing sunglasses...or... Okay that was a terrible analogy. 

    If you're keen to be a beta tester and are willing to make your project using this board, feel free to contact me here by leaving a comment, sending me a message here.

    Thank you for reading, hope you have a good day.

  • V1.3p Prototype designed! [Edited with more info]

    Tobius02/17/2019 at 07:11 0 comments

    Okay so major changes on the new board. I've changed project image to replicate that. 

    I'll add in the changes after making an actual change list with the project itself and the BOM cost.

    Additional Edit [10-02-2019]

    Good Evening. 

    Version 1.3p (p = prototype) has been designed with some massive considerations and changes whilst still keeping in mind of the the same concept of 3+Pi original idea. The reasoning behind these changes were to reduce the BOM Costs and try to optimise the maximum usage of components available. As you will notice later on the that the Components listing will change to adhere with these potential replacements. 

    They are as follows: 

    STM32F401RE ---> STM32F302CBT6

    This is a 48 pin count lesser 'expensive' variant from ST Electronics. 

    May also make it obvious that this is a personal bias choice of mine because I happen to have a knock-off STLINK from ebay that will let me program with this chip. I would have loved to program with the Microchip's variants which have quite an appealing price. But not only do I not have a ICE board or the ace of all cards: JLink. 

    This drops the price by about $4.00AUD from Digikey listing (individual piece).

    TMC2100 --> TMC2041-LA-T

    This Trinamic chip contains dual Stepper driver modules in one chip. Not only is this great for space factoring but also I happened to have found that they also do use the SPI Ctrl system to drive the motors leaving me to use the SPI control mechanism of the STM listed above. Besides the fact that I limited the current to about .9A per coil, this should be plenty for small applications and less torque demanding applications. I will have to do some serious testing on this platform to make sure it works. 

    MAX17574ATG --> TPS54340DDAR

    TI Chip allows more current to be pumped out without the need of external MOSFET drivers. I chose this for the sake of space and also reducing development timing. I will need to do some testing and see if things work out and if the supply is as regulated as expected and actually am recording the right amount of voltage. Which is why I used to 2.54mm jump headers to measure current draw.

    With those changes made. Here are some new additions to the board:

    Read more »

  • Hmm... Something something USB-Type-C Power...

    Tobius02/14/2019 at 12:41 0 comments

    Hmmm 100W MAX...

    Negotiable power draw.... 

    Potential reduction of e-waste by using current on the shelf power supplies.

    Yup. I'm working on getting a power delivery mechanism working to allow USB-C Sink whilst taking advantage of that 100-60W power range. Fun fun!

    ... If only I had time :( bah! I'll do it anyway no matter how long it takes!

  • Updoot 09-02-2019

    Tobius02/08/2019 at 14:38 0 comments

    Hello people of the internet...reading this.... hehe

    Some major changes to the board. It's as if I went totally mental and threw everything from the table and started all over again... Except I did this by copying the folder and making a new prototype. 

    It obviously seemed like the F401RE was too expensive paired with 4x Trinamic individual drivers. This was seriously an issue I overlooked... because well I don't really have much time to work on this that much.

    I've changed the MCU to the F334C6... Drivers to 2041-LA ... PSUs to TPS54340s. And also added a CAN transceiver since that 334 came with it. I've also had to reduce the pin count for the MCU so I can try to squash in as many stuff onto leaving nothing down. 

    Still planning on making it a 4 layer board too.

    Well that's it for now. 

    Weekend sorted! I'll keep you all posted :D

    As always, happy to have anyone who is interested to join and help out! Send me a message.

    Cheers and have a good one!

  • Updoot 02-02-2019

    Tobius02/02/2019 at 06:43 0 comments

    Hello again, 

    Got the digikey parts in, just now waiting for some parts from RS to come in and the first prototype board should be good! yay. Here is some progress:

View all 13 project logs

Enjoy this project?



Carl Mueller wrote 08/13/2019 at 23:21 point

Keep in mind that for 3D printers or CNC's, you also need various I/O's for:
- 3 or 6 or more digital inputs for limit switches, surface probe
- 3 or more digital outputs for switching heaters, fans, motors, lasers on/off
- 2 or more analog inputs for temperature feedback
- 1 or more pwm outputs for optional servos (to position probes, for example)

- tx/rx for locally-attached control panel (smart lcd/touchscreen)
Folks may overlook your board if it doesn't have these features.

  Are you sure? yes | no

Tobius wrote 08/15/2019 at 05:48 point

I totally forgot about limit switches! Thank you so much for letting me know about that. I was under the impression that the TMCs will have an auto shutdown when experience more than set torque. But it's best to go with limit switches given how many extra pins I have laying around on the MCU. 

Indeed I also forgot about other implementations such as the heaters/fans/motors/etc. I was designing it under the impression that 3+pi would be used as a 6DoF robotic arm or some sort. Which you'd also say that they might need limit switches too. 

Thanks for the feedback! 

  Are you sure? yes | no

Nicolas Tremblay wrote 08/13/2019 at 21:00 point

Great project!

As suggested by the Hackaday post, I would take a look at

I would seem to be a perfect compliment for this board.

Klipper handles de RasPi side and you board as the driver for the printer or other CNC.

  Are you sure? yes | no

Tobius wrote 08/15/2019 at 05:44 point

Thank you for that. I have not heard about klipper3d but I'll have a look. I intended to use a modified version of the Marlin Firmware but wasn't sure about how to implement it. I've got an update on my project log about the project overall.

  Are you sure? yes | no

Andreas Setterlind wrote 06/27/2019 at 06:20 point

@Tobius Daichi Cool project! I have been looking for an available commercial replacement controller board for Creality 3D-printers that either fully integrate with a Raspberry Pi for OctoPrint or a replacement controller board that can also fully replace a Raspberry Pi to run OctoPrint on its own. I have a couple of tips from my reading up on replacement 3D-printer controller boards (so as a disclaimer please note that these tips are not from my own personal experience so I cannot take any credit).

First tip, you should know that TMC recently announced their new TMC2209 which are relatively inexpensive stepper drivers that are specifically targeted and optimized for FDM/FFF 3D-printers. Quoting and pharaprasing @warlockd here; Compared to the older TMC2208, TMC2209 apparently is supposed to supports “multiple chips being on the same UART bus so no more having to use software uart or a mux, you use the MS1/2 pins to choose what the address of the chip is and you can send read to individual chips.  Only 4 addresses though so not sure what to do about E1 but I guess its ok for it to be sharing the E0. Sensorless homing  works so much better with interrupts, especially with Marlin's software design. Seems TMC went all out with the 2209, better stealthchop switchover. 2amp rms.“

Second tip, will you be using/recommending a using a 2oz copper thickness for all the layers of the board? I read on Reddit that Griffin_459 (Paquette Engineering) who designed the newly announced TH3D EZBoard Lite (formerly "TH3D Tough Controller") used 2oz copper thickness on all 4 layers of their board instead of only 1oz copper thickness to specifically deal with the heat dissipation of TMC2208 and TMC2209 stepper drivers, that way they do not even need to use heatsinks at all as the whole board act as a heatsink. See his comments

Third and last tip, as an alternatively to making this board as a "hat" for Raspberry Pi you could at least in theory replace the STM32F3 MCU with an MPU from the new STM32MP1 series which has an very fast integrated MCU for a totally integrated solution as that series combines one or two Cortex-A7 processors alongside a Cortex-M4 MCU. STMicroelectronics claims STM32MP1 architecture enables developers to use the same software as STM32 MCU series, and theoretically, with the STM32MP1 MPU series having both a Cortex-A7 CPU and a Cortex-M4 MCU you could run both OctoPi with OctoPrint or similar Linux distribution as well as either Marlin or Klipper 3D-printer firmware on the same board, without the need for a Raspberry Pi at all. Should be noted though that even the fastest Dual Cortex-A model of STM32MP1 only run at 650MHz per core and supports up to 1GB of external RAM so that part is on paper maybe only twice as powerful as a Raspberry Pi Zero when considering STM32MP1 are based on Cortex-A7 instead of the older ARMv6., but that should still be enough to run OctoPrint smoothly The available STM32MP157C-DK1 and STM32MP157C-DK2 $99 discovery kit are relatively cheap at $69 and $99.

  Are you sure? yes | no

Tobius wrote 07/01/2019 at 06:39 point

First of all: apologies for not being able to respond earlier ... and second most crucial of all: Thank you so very much for the wonderful feedback. 

3+pi has been dusting up as there hasn't been any interest in the concept from virtually anyone I know, claiming it to be a very niche project which would not be easily sustainable.  Therefore I'd not say I abandoned to but left it 'hibernating until the requirement comes up'. Again thanks for leaving your wonderful comment here as it's nice to know that someone's been interested in this design.

Now to address some of your points. Indeed I had a look at the UART based TMC2208 series but did not prefer it due it's limited if not fixed amount of addressable conditions similar to an I2C based chip. This is why I went with the SPI variants instead and found out that the TMC54340 series sufficed as I could slave them to whenever I need them as soon as possible. This would allow the user to have more than 6 drivers on 3 chips on a small board and wouldn't have any issues with UART addresses limit. 

As of making the copper layer dense. That is indeed a great point! Thanks for that. I hadn't even consider it because I completely forgot that the TMC series steppers have a massive epad sinking its heat to the board. Thank you again! :D

The variant to use STM's A7 series would be more or less costly and difficult to develop alone, needless to say about how to customise the linux distro to house everything in one package, isolate the EMC/EMI from drivers and the HS Data layer. This would be difficult but possible. However due to the lack of time and low if not no interest in the project that is present, I am not motivated to work further on it... 

I am currently working on a USB-C adjustable powersupply for the time being hoping to target hobbyists and students on a budget and space constraint that is my current focus.

Thanks again for the feedback. I really, really appreciate it! :D

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates