The usual cause is a connection (or previous connection) on one of the other views. There seems to be (have not been able to reproduce on demand) a bug where creating and deleting connection wires in multiple views can end up leaving ghost wires. The problem has not been seen if connections are only created in a single view, then the rats nest wires used (turned real) in other views, instead of creating new connections.
OK, I just deleted my part above to replace it with two new ones, one SMD and one through hole:
edit: Replaced these two with new versions at the bottom of the thread!
The original part (and my first one) are through hole, for the castellated mounting holes we want a SMD part. The original parts will have pads on both sides of the board (and Fritzing will happily connect to the pads on the bottom of the board which don’t connect to anything!), believing they are through hole and will connect to the pad on the top. With the smd version it knows the pads are only on the top layer (or the bottom if pcb layer is set to bottom.) It is also possible to have one pico on the top of the board and by setting pcb layer in Inspector from top to bottom, have another independent pico on the bottom of the board in the same place. Here is a test sketch with the tht (on the right) board selected. To change to the smd board, set type (circled in red in the Inspector window in the lower right window) to smd and it will switch to the smd version. Doing this with wires connected, as in this sketch screws up though, so you need to disconnect the traces before doing it. If you only want to support one part, and use the castellated mounting holes then you want the smd part as it is the only one that will work correctly in that case.
To see the difference between the two, we need to switch to the gerber output (using gerbv in this case), first with the layers copper bottom, copper top, drill and silkscreen top selected:
other than all the traces on the top on the smd version, hard to see much difference, but when I disable the copper top layer the difference becomes obvious:
other than the .1in headers (which are through hole), there is no copper from the pico on the bottom layer and thus I could put a second instance of a pico under the one on the top (and Fritizing won’t try and connect traces on the bottom with the expectation the pad is through hole as it will in the original 2 parts!) It would be a good bet to make a board from the smd version of the part and solder a pico on to the board to make sure I have gotten the pads correct (I think they probably are, but verifying with an actual board is the only sure test!)
Hey! These parts look great. Serious improvement on my original.
I passed your comments on to the designer of the Pico and have a couple of follow ups.
If you look at the hardware design book you’ll see discussion of the VGA carrier board. There’s also good discussion about the overall Pico design there that might be helpful.
Why is it necessary to use multiple footprints, why not a single footprint as per the VGA board KiCAD? This has both through hole and extended pads on the board so the Pico can either be soldered down onto the board using the castellations, or attached via headers throughhole. We’d suggest that this is how most PCBs should be configured if you’re going to solder a Pico to it as a module.
There’s also some additional holes and copper keepouts that were specified on the VGA board, for things like where the USB pins protrude through the underside of the board, and are slightly raised, and where there are test points on the underside which we want to completely eliminate the chance of them shorting.
KiCad files are available for the VGA board if that’s helpful on the footprint side of things for either of these points.
Oh, one other point. Something I saw on SparkFun and Adafruit parts, but couldn’t replicate myself on ours, was consolidating the GND pins down to a single pin on the schematic (well apart from the AGND and the SWD ground).
How do you do this anyway?
As long as the holes are present (which they are not on the original part), that will work fine. As I set out to demonstrate this I found another problem as well (which is a Fritzing quirk) the traces don’t connect to the pad in the gerber output. Here is your original part with a 2 pin header with one trace on the top of the board and another on the bottom. To Fritzing this is fine as it thinks there is a plated through hole in the pad (but there isn’t!)
Here is the gerber output generated by the above pcb view which shows the problems:
First (the Fritzing quirk) that trace is not connecting to the pad correctly presumably because Fritzing thinks the end of the pad is square which it isn’t. Because the gerber output is done after pcb view is rendered, it is possible, as in this case, to have unexpected errors that don’t show up unless you check the gerber output from Fritzing with a gerber viewer (which many new comers don’t know to do!) The other problem is that if you solder the Pico on the top of the board in this case the connection on the bottom of the board (because there is no hole in the pad) will not connect to the pico (even if the pad was properly connected!) As well the pads all appear on the bottom of the board as well when they only need to appear on the top of the board to solder the Pico in using the castellations, that means there is much more room for routing traces on the bottom of the board (and as noted, it is also possible to mount another independed Pico on the bottom of the board if you had a reason to do so.) With the Fritzing SMD part, Fritzing is aware there are only pads on one side of the board and thus won’t allow you to make a connection on the bottom of the board. You can certainly make a single footprint board by just making sure there are plated through holes and I can modify the tht footprint to do both if you like by simply adding the pads from the smd part to the tht part so you can do either, but the smd part is more flexible and thus worth keeping I think.
I can add the 4 USB holes (non plated through) and the keepout areas in silkscreen on pcb easily enough, I didn’t know they were there previously.
This one is fairly easy (and I should do it), you just overlay the pins on top of one another. The pins all need to be present, but as long as they are in a bus they will connect together correctly (if they aren’t in a bus, problems occur though!) That is actually usually a good idea as Fritzing only allows a single connection in schematic between two buses, and if you have two Picos for instance and connect a wire between the grounds, you can’t make a connection to a second ground pin between the 2 parts and that confuses new users. I’ll make these changes in the parts (add the SMD pads to the tht part and add the keepouts and holes and fix up schematic.) and repost them.
That’d be great. I think we’d rather offer a single part.
I’ll make these changes in the parts (add the SMD pads to the tht part and add the keepouts and holes and fix up schematic.) and repost them.
OK, here are two new parts with the changes made. You folks will want the tht version, as it has both holes for .1in headers and pads to allow soldering the module to the top of the board. As well the holes for the USB connector are automatically drilled and the pcb silkscreen has the keepout areas specified. Schematic has the ground pins consolidated on a single ground pin at the bottom.
edit: 25 Aug 2021: Someone pointed out (at the bottom of this thread) that export as a pdf for home etching doesn’t have center holes. So I changed the rectangle in to a path in order to make the part more complete in that the pdf output for home etching now has a hole in the center of the pad (and gerber works the same as it did before.)
Raspberry-Pi-Pico-tht.fzpz (23.2 KB)
I`ll leave the SMD part here in case anyone wants a real SMD part later (same changes as the tht part!)
Raspberry-Pi-Pico-smd.fzpz (22.5 KB)
Many thanks. I’ll get the new part substituted for the existing part on the Raspberry Pi sites.
Thank you so much @vanepp! super helpful using this one for a circuit design to make a photography turn table how to video on YouTube much appreciated!
This is terrific @vanepp thanks so much – I’m using the SMD part in a mech keyboard design right this very moment!
While I think the footprint is correct (it was copied from the footprint the RPI folks used in their VGA card) it is safest to print the pcb out at 1:1 scale and check it against a real part as I don’ t have one before ordering boards.
Thanks, I did print it for scale and it all lines up great.
Hi @vanepp a quick follow up, the part worked perfectly for the PCBs I had made. I wrote up a guide on using Fritzing to make a Pico mechanical keyboard here. https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview
Also, huge thanks to you for your series on Fritzing part creation, it helped me a lot in figuring out how to revise the Cherry MX keyswitch part.
The guide looks very good! One minor nit, you don’t need to preload the custom parts
“You can download the full Fritzing file here, just make sure you’ve already imported the Cherry MX part and the Pico part”
The .fzz file includes the two custom parts and will load them automatically in the temp parts bin:
As long as the mine parts bin is in the same part as the temp parts bin there shouldn’t be a problem, but different parts can cause a problem if Fritzing uses the wrong one (Fritzing may prefer the mine parts bin over temp I think!) I ran in to this once when someone had different versions of the part in the mine and temp parts bins.
Oh, great tip, thank you! I’ll update the guide.
Hello, I have used the tht piece but when generating the pdf I do not see holes for the beak, I am not sure if the holes are made when generating the gerber. The swd pins for a tht mount I think are not necessary, could you verify it and if necessary correct it please?
Correct. The holes are specified in the pcb svg as having fill #ffffff (which is white) but it appears on pdf etchable (PDF) the copper pad overwrites the white hole and the entire pad is black. They export correctly on the gerbers but I don’t see any way to fix this (other than converting all the pads to a path with a hole which I am probably too lazy to do, as it may not work anyway if the fills are being converted to black!) A workaround is to export as etchable svg and then edit the resulting svgs for copper bottom and copper top to change the fill back to white which it was originally like this:
fixed, but needs to be done for all the other pins as well though, so probably a text editor on the svg is a better bet than Inkscape. The pins are all at the bottom of the svg so a global replace of fill=“black” with fill=“white” would be the most efficient way of doing this. This is basically an odd case where they wanted both through-hole and SMD in the same footprint and it looks to have run in to a Fritzing limitation.
then print the svg to get the image that you need (I don’t know how to make this change in the .pdf files, perhaps you or someone else here does!)
ok, no problem, what is really important is that when making the pcb there are effectively tht holes for the pico.
Turns out with some changes and a path in stead of the rectangle it is possible to get what you want and make this a much more complete part (usable in both gerber and home etch formats!):
the holes top clear the USB connector pins don’t have a center, but if I add one it will screw up the gerber output (by putting an undesirable copper ring around the hole) so I left it as is. I’ll replace the .tht part in the post above with the new part in a few minutes.