Raspberry Pi Pico CNC Shield xSB

I do have the vision, of a cheap CNC Board. Whose creation does not require more equipment and skills as a hobbyist would have.

Similar projects worth following
With a Raspberry Pi Pico we do have a powerful controller for an affordable price. Beside grblHAL and its available driver "RP2040", I could not find (* a lot related projects or CNC Shields on the market. With the mass produced CNC Shields (for Atmel based boards) in mind, I thought ... Why not creating a CNC Shield for the Pico? It shouldn't be that complicated ... Well ...

(* maybe I simply used the wrong search terms

The goal of this project had been and still is, to provide a CNC Shield for the Pico. One that has the same capabilities like a CNC Shield for the Arduino Uno, sometimes called "Arduino Compatible CNC Shield".

The first milestone is to provide a PCB with only one layer. I call the version "Single Side Board" or for short "SSB". That's the version for the hobbyist.

The second milestone will be having a grblHAL firmware for this board.

A later milestone would be a more compact and cheaper to manufacture version of the CNC Shield. In order to make the PCB much smaller, I would have to use two layer. I call the version "Double Side Board" (DSB).

Both PCB versions (SSB & DSB) should have the same pin assignment. That why the project has the "xSB" at the end.

uf2 - 132.50 kB - 10/08/2022 at 11:18



Simple firmware for the Pico to allow, via USB-Serial, testing all features of the board.

x-arduino - 6.85 kB - 10/08/2022 at 11:18


Raspberry Pi Pico CNC Controller-B_Cu v0.3.pdf

The mask for etching the bottom copper layer.

Adobe Portable Document Format - 45.84 kB - 10/08/2022 at 08:05


Raspberry Pi Pico CNC Shield

First published version of the KiCad design for "Raspberry Pi Pico CNC Shield SSB"

Zip Archive - 84.07 kB - 10/08/2022 at 06:19



All my contribution to this project - on - is published under the "Attribution 4.0 International (CC BY 4.0)" license.

plain - 18.22 kB - 09/29/2022 at 09:04


View all 7 files

  • 1 × PCB Electronic Components / Misc. Electronic Components
  • 1 × Raspberry Pi Pico
  • 2 × PinSocket 1x20 for the Raspberry Pi Pico
  • 3 × Pololu A4988 Stepper Motor Driver Carriers & compatible version e.g. DRV8825
  • 8 × PinSocket 1x8 Connectors for the Pololu Carriers

View all 10 components

  • when updating the source code for the grblHAL build ...

    DD-Y4161310/13/2022 at 16:30 0 comments

    make sure you have a backup of your previous version!

    Why am I mention this now? Well ...

    Yesterday I reserved some time, to prepare the instructions on how to compile grblHAL for the Raspberry Pi Pico CNC Shield. Everything went fine, I do have downloaded the latest source code, made the required modifications, compiled everything and at the end I finished writing the instructions. Even so I used this time my Linux machine, I had no trouble ... until I  run the exact G-Code, from the initial test, with the newly build firmware ... a new error:24 (or was it 23?). basically the same setup like a few days back, with "only" the firmware been changed ... Shit.

    Anyhow, I do have to check the previous firmware. If needed, I would have to compare the different source code versions. bla bla bla ...

    Even if I would have compiled everything on my Windows box, which I had used for the initial firmware version, I would still have the previous version. As I do the following, when "updating" the source code with the latest changed from Github. (Might be old-school, but that's how I do it)

    --- to make it clear ... always downloading the complete source code is not the ideal way; better create a local backup and just download the new and updated files --- 

    mkdir <current date>
    cd <newly created directory>
    git clone -b master
    cd pico-sdk
    git submodule update --init
    mkdir build
    cd build
    cmake ..
    cd ..
    cd ..
    git clone -b master
    git clone --recurse-submodules
    cd RP2040
    git pull --recurse-submodules
    cd ..

  • First test run needs a case

    DD-Y4161310/09/2022 at 17:38 1 comment

    I do have published the 3D Model, for the case of the Single Side Board (SSB) version, on Raspberry Pi Pico CNC Shield SSB + Case + 80mm fan by DD-Y_41613 - Thingiverse . I have published it there to honor the two members, whose work I took and adjusted to my needs.

  • Test the CNC Shield, before using grblHAL

    DD-Y4161310/08/2022 at 11:37 0 comments

    Before I continue with the grblHAL firmware configuration and compilation, I wanted to be sure that the board itself is working as designed.

    So I wrote a simple application in the Arduino IDE ... "Test_Board.ino"

    After uploading the simple application and starting the Serial Monitor in the Arduino IDE, the Pico application reports the following:

    Controller Stepper Motors (Step +1/Step -1): X/x, Y/y, Z/z, A/a
    Controller Disable Stepper Driver (Step +1/Step -1): 1 (X-Axis), 2 (Y-Axis), 3 (Z/A-Axis)
    Controll Output (On/Off): C/c (CoolEn), D/d (SpnDir), E/e (SpinEn)
    Read Status: S/s
    Show this information: ?

    By sending the mentioned character and numbers to the Pico, the related actions are fired and the result is reported back.

    So in an easy way ...

    • I am able to test the Stepper Motor driver and outputs, but also
    • can check the inputs.

    All went fine (*

    (* Well I had trouble with two of the motor driver modules DRV8825. For what ever reason, they did not do their job. I replaced them and everything was fine.

  • take it slowly; be patient; no hurry

    DD-Y4161309/28/2022 at 18:18 0 comments

    This is part I, on what could go wrong.

    Even though sitting in from of your PC and using mouse/keyboard to interact with your CNC Router software, in my case bCNC, you do control something in the reality. This something is your CNC Router, with its motors, lead screw, drill/milling, ... And in really things can break, damage something or injure you.

    I do have ruined a couple of bits and some PCBs, so ...

    Please be patient. Yes, I know it is all so exciting ... Do, especially at the beginning, everything slowly.

  • Auto leveling: Use the full area of the PCB

    DD-Y4161309/28/2022 at 18:07 0 comments

    The photo "PCB v0.1 good and bad together.jpg" shows a good example of what can go wrong port II.

    I had chosen a smaller size for auto leveling than the PCB had been. I had increase X-Min, because  near the top (Y) the milling bit would be outside the PCBmaterial.
    And I had ignored review the result of the auto leveling the 3D view.

    In result, bCNC had calculated the surface  around the edge of X-Min is higher ... so the mill did not touched the 10mm strip on the left (X-Min).

  • The reason, why you are able to read about this project.

    DD-Y4161309/14/2022 at 19:33 0 comments

    A few days ago, I milled the first version of the PCB. The result of the milling was on one hand satisfying and on the other hand disappointing. The text and some other fine detailes (of the more relevant parts) were awesome. Unfortunately there was a kind of a "blind spot" on the PCB, where - based on my incorrect auto leveling - the V-shape bit didn't mill anything in an area of 2x4mm. That's when I decided to share my experiences, in the hope it will be of some benefit for you (the reader).

View all 6 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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