Fantastic write up - thank you! I also love hearing about why each part was chosen. As an electronics hobbyist I often mimic portions of others' designs but I'm not always entirely sure why a certain part was chosen among the various options.
Do you prototype all this on a breadboard before making the PCB and picking specific parts? I'd be curious to hear more about your process. I feel like I always need to test everything I build on a breadboard first since I inevitably miss some small detail if I go straight to schematic + PCB design.
Great question! It really depends. If I'm working with a part I haven't ever worked with before, I'll often make a minimal breakout board that I can talk to with a devboard like an Arduino or Feather.
If I'm pretty familiar with everything, I generally dive into a rough PCB layout and debug from there. If I absolutely can't get anything to work, I'll go back to the drawing board and possibly do some little breakouts, for example: https://twitter.com/theavalkyrie/status/1457845661370568709
Edit: for this specific project I did make breakouts for testing the MOSFETs and solenoid drivers. I'm glad I did, since I was able to try out a couple of different options for each: https://twitter.com/theavalkyrie/status/1550878465876004865
Second the poster above, really enjoyed the reasoning around how and why you picked parts and the intent of various circuits..
Do you have any books you recommend on electronics? I feel I understand the basics, like what various components do in isolation, but would love to level up and understand circuit design like how you are approaching it here
I'll echo sibling's comment about just doing it. Theory only takes you so far, it's important to actually build and experiment, even if it's just in a simulator.
I can recommend Practical Electronics for Inventors as a solid base of projects to experiment with and learn from. If you want to learn how to improve circuits and optimize for specific behaviors, there is a wealth of information in manufacturer application notes. A lot of the protection circuitry used in my article follows advice found in application notes.
IMO the best way is to just pick a project and work on it. Using application notes and datasheets lets you piece together circuits, and you pick up design patterns along the way.
Usually when I read through a build-out description like this, the author writes it for an audience that has a lot more background knowledge than I do. This article, on the other hand, was lucid and the explication helped me follow along.
I got to the part about 3.3V being derived from 5V and thought to myself "why not get it from 24V?" and then just a tiny bit later, there's the bit about USB and how Starfish can just take 5V from the USB host, and it clicked.
I also learned about Sparkfun's QWIIC connector in the aside about the chosen i2c bus switch having two "extra" channels. Love it, thanks for the article, Thea.
Thank you for the kind words! I'm glad it was useful.
> why not get it from 24V?
There are DC-DC converters in that same family that can do 4.75~36V -> 3.3V, but since I needed the 5V anyway for the LEDs and I/Os, tossing an inexpensive and small LDO for 5V -> 3.3V is an easy call.
FWIW, when I was thinking more about text-based literate circuit design, one of the advantages I thought of was to leave ample place to comment upon selection rationale for (and subsequent experience with) particular components.
I'm blown away by the awesome inline KiCad visualizations. Did you use any tooling for capturing the layout view so the layers could be overlapped so easily?
Any thoughts on making a library for this so others can build sites as beautiful as yours? It'd be a great tool for sure. As noted elsewhere in the comments, your documentation is top notch.
Thank you! For the board layers I just used macOS's screenshot utility, though I would like to do something fancier in the future. The schematics are rendered using code I wrote specifically for this article, but I am planning to publish it as an open source library so others can use it. It needs a little bit more polishing before it's ready, though! You can follow me on Twitter if you wanna get updates about it.
I wish there was an easy way to embed a KiCad layout to a webpage in a zoomable format for design reviews. One way is to export an SVG file and show it on the web, but in my experience this starts to choke on large boards.
This website has a cool implementation of a KiCad web viewer:
That one seems a bit cumbersome. Drawing schematics and drawing layouts have much different hurdles in terms of performance, it would definitely be a fun challenge. :)
As much as I love seeing this kind of hardware stuff, the problem with "pick and place" is the vision integration, not the motor control. That's where everybody gets stuck.
It's not a "pick and place" until you've got the cameras and alignment working.
You're not wrong, but it's also not the focus of the article. There's a lot of complexity in a pick and place system, for example I didn't even touch on the entirely separate board that's controlling the tool head. If I tried to capture all that at once, I'd be writing an entire textbook, not an article.
If you're interested in how the LumenPnP handles vision, you can check out the OpenPNP project which handles all of the computer vision involved.
Those are the same non-functional machines I have seen for the past decade in some cases. All of them got to vision and got stuck.
I truly hope your machine gets past that point, because it would be really good to have a genuine, open-source pick and place machine. With the current advances in ML/AI and running on graphics cards, it should be within the realm of a hobbyist nowadays.
I wish you good luck and hope to see your stuff on one of the crowdfunding sites one day.
I think you're working on some outdated assumptions. As mentioned in the article, the LumenPNP project is successful. Myself and many others have been successfully assembling boards with it since earlier this year. Lumen isn't my project, it's just the machine that the board I designed is intended to work with.
> Starting from the left, the power comes in through screw terminals (J201, J202). The extra screw terminal is for daisy-chaining power to other boards.
Sopa-box time! Screw terminals suck. They're just... the default.
I’d be happy to read about the software part of the project. How was the firmware created? Which language was used and why? How does it communicate with the host and what software do you need to run on the host?
Hi! I'm planning on talking about that in an upcoming post. There's options - you can run 3d printer firmware like Marlin (C++/Arduino) or Klipper (Python & C), the tricky bit is getting those to talk to the vacuum sensors. Communication is via gcode commands sent over USB serial. Most folks are running their Lumen with OpenPNP on the host.
I'm actually running completely custom firmware that I wrote specifically for this board that's written in C and uses Raspberry Pi's pico SDK. It's similar to Marlin/Klipper in that the host communicates via gcode over USB serial and that movement commands are more or less done the same, but it gives me the flexibility to simplify the whole host view of the pneumatics. It absolutely wasn't necessary for me to this, I just wanted to.
The interactive schematics and gerbers are subtle but very effective.
Overall a very clear design and tone I really need to follow for my own PCB projects.