101 comments

[ 11.9 ms ] story [ 3738 ms ] thread
Just beautiful and a quick scroll seems to suggest a fairly involved undertaking. Hoping to have fun reading it but for now just enjoyed the look of it,

I think having so many sides adds a lot of visual appeal.

Beautiful.

If you're just skimming, be sure to slow down and read the "Bodge Time" section.

Really cool project and brutally honest write-up, I LOLed at "I’ll leave that for future Greg to worry about."

Keep up the good work!

Something I say when I'm thinking about what to comment:

"Screw you, future me!"

It's so easy to leave things for future me to deal with. But future me would think present me is an asshole for not documenting.

Try to not be an asshole to your future self :)

A lot of the time when I’m doing something unpleasant but necessary, I say “You’re welcome, future me!”. And now and then when I realize I’m doing something super-easily because of the hard work of past me, I say “thanks, past me!”.
This is interesting. I’ve been thinking of making an icosahedron shaped room lamp with separately controlled sides for a while and this might provide some inspiration and perhaps motivation to start thinking about it again.
I'm in awe at the amount of patience required to hand-place 2400 tiny LEDs. I don't have it in me.
Yeah, wow. It takes a special kind of person for sure. I would do three before getting tired (plus my eyes have this weird thing where the center of my vision goes blurry if I focus up close for a few minutes, so odd).
You'd probably build a machine to do that for you.
This is a one off build, where they placed the LEDs by hand.
I imagine that even one-off builds of complicated things may include specialized tools in their construction.
Most people do not appreciate that when doing custom builds, it is often the case that it takes more time to build jigs and other things to help than it takes to do the actual build.
Yes, but GGGGP suggested that the alternative would be not building it due to lack of patience. That's not "extra time" but the difference between having and not having a result.
You would be surprised that many complicated things are built manually, it’s much too expensive to build a machine to do it. Chinese hands are really cheap.
In this case there is a video of them placing the LEDs by hand. At least they didn't have to solder them individually! (They used reflow soldering.)
Many PCB services offer SMD assembly as well, though the pricing is quite high for prototypes. PCBWay e.g. quotes over 300 USD for a single board with 2400 parts, though that price goes down quickly when ordering more (e.g. when ordering 50 they will only charge 20 USD per board).
JLC offers SMD assembly and it's cheap. But maybe they didn't stock the LEDs he wanted to use.
Do you know of a tutorial on how to do assembly with KiCAD/JLCPCB? I've designed a few PCBs and tried to do assembly once, but IIRC my biggest problem was figuring out which parts they had that I could use and how to send them the info.
Here's one from JLCPCB themselves.

https://support.jlcpcb.com/article/84-how-to-generate-the-bo...

I did it for a board and it turned out pretty good. Make sure there's a pin 1 marker on your footprints so that in the preview (which they show in the submission process) you can make sure the parts are all aligned (and they will double check as well).

The parts are here:

https://jlcpcb.com/parts

Basic parts are free to use at just the assembly cost. Extended parts add an extra $3 processing per bom item (not per part). Basically as far as I can tell their parts are the same as LCSC.com.

Also, Phil's lab has a long video on assembly from start to finish from Kicad to JLCPCB

https://www.youtube.com/watch?v=t5phi3nT8OU

Fantastic, thanks for that! Especially the video will be a big help, and if I never solder a 8050 resistor again it'll be too soon.
Do you use a plumbing torch for soldering those 8050 resistors?
I have to, and my board has to be huge to boot. It's a royal pain, these 1m by 3m PCBs have got to end.
For anyone who stumbles across this later, here's a KiBot project file that will automatically export the JLCPCB-compatible BOM/CPL file:

https://gitlab.com/stavros/esp32-cnc/-/blob/master/project.k...

It does this from a field on each part in the schematic called "JLC" containing the part number. The only thing I'm unsure of is whether the "footprint" column needs to be edited manually later, though.

When I did it, the rotations were weird for me. I was thinking CW and they were CCW I think.

Simple to fix. Just keep uploading the CPL till it looks right.

Ah, I didn't realize that's what that did, but they looked right with the KiBot config above. I'll double check though, thanks!

EDIT: Yep, the config above produces parts the right way.

Is there anyone here that would assemble something like this for cheaper? I don't have a reflow station but am making something similar and would pay someone to do a prototype (hopefully less than $2400). Based in Los Angeles.
Stencil, paste, steady hand and a reflow station is all you need to be done this type of placement in just about a few hours. The surface tension from the paste will get you 90% of the way there.
OP estimated 60hrs for placements and related work.
Removing the 300 Mosfets and resoldering them with botch wires was probably a larger part of than then the 2400 LEDs
Then OP is choosing to do that themselves, not a big deal, but yea, sounds about right if you don't have paste or stencils. I've done a 3212 component board in 6 hours with handheld reflow. It's possible.
Not so different from knitting or cross-stitching or whatnot.

Lots of crafts require repeating some elementary steps thousands of times.

I’ve never understood them either. But then one of the motivations for taking a career in IT was so I could automate repetitive tasks. Little did I realise at the time that a whole industry would form around that basic motivation.
And this mindset leads you down the path of repurposing a 3d printer into an SMD piece-n-place machine, and spending 2-3 years of your 4 week project timeline getting that working properly...

:-)

(I would have totally paid $300 to get that done for me - even if it meant re laying out the pcb files to make it a practical "one big board with 2400 components, with a bunch of weird routed slots" task.)

Does anyone understand the 'footprint rotated 90 degrees' issue? I can't see it in the picture or understand what the problem is.
Each LED has four contacts on the bottom. When the solder melts, surface tension of the solder should pull those contacts into alignment with the pads on the board.

I think what they're saying is that they they accidentally laid out the contacts in the wrong orientation, and needed to rotate the LED 90 degrees to put each contact on the appropriate pad. Because the arrangement of those pads is not quite a square, the LEDs do make the connections, but they don't get aligned quite straight.

Missed edit window, but comment should say "laid out the pads in the wrong orientation"
(comment deleted)
(comment deleted)
I would make a usable display with leds like these if I could!
This is the kind of full stack developer I'd like to be. Started tinkering with electronics in earnest about a year ago but it feels like I'm a decade away from being able to build stuff like this of my own volition.
Building a pcb that lights up leds is kinda the hello world for electronics. I think you'd be surprised how close you are to this.
I think the part that is intimidating to me is the power/clock/microcontroller integration. Maybe the gateway is to design a PCB that just connects the LEDs and over time add more and more components to it.
If you’re just starting then imo it’s easier to go the other way. Start with a fully-built dev board like a Wemos D1 mini. Keep building things and as you run into roadblocks and learn how to get around them you’ll naturally develop the knowledge to get further into fabbing your own integrated PCB.
I bit this particular bullet a couple of months ago. Turns out that a very cheap board like an Arduino Nano Every has a power voltage regulator (that will accept 6-21V supply) and a built-in clock, so you don't need to integrate anything.

(As it turned out, I wanted a more stable clock signal for timing purposes than the arduino clock, so I attached a 32.768kHz crystal to one of the inputs, and that also was very easy. I also attached a 4-digit 7-segment display, as there are enough I/O pins, a thermistor, several buttons/switches, and a stepper motor controller. It was easier than I thought. Give it a try.)

You might look up various DIY arduino designs (starting on a breadboard). You can start with very barebones selection of components, move it to a proto-board, and then modify it to your needs. Adafruit and Sparkfun have great resources for how everything they sell works.
> kind of full stack developer I'd like to be

Same. It's really fun to mix high level software with hardware.

A nice "gateway drug" is an addressable (programmable) LED strip. Hook it up to a Raspberry Pi or Arduino and have at it! I bought cheap motion sensors and will be installing a strip along the inside of a staircase to light up when I approach it.

https://github.com/whyboris/Arduino-LED (see "stairs.ino")

Another project of mine is having the LEDs light up as I play piano:

https://github.com/whyboris/Digital-Piano-LED

Unsure where I'll go after I finish these projects, but LEDs are so much fun!

> This is the kind of full stack developer I'd like to be.

Me too. But I think we need to find a new term for “full stack” at this point. Full stack developer was kind of the trendy “I do JavaScript and server stuff too”—though when I visited with adherents I usually found that many migrate to one part mostly and cede the other areas to others.

I do the kind of stuff shown here, embedded C, mqtt servers, native mobile apps, etc, but I have been leery of using the term “full stack.”

But now I’m seeing the term used more often in a more general abstracted sense, like the above. I see this type of person as a polymath (https://en.m.wikipedia.org/wiki/Polymath). I’d propose the term polytech, but that term is pretty overloaded already, and polyeng just doesn’t role off the tongue very well.

OK, so I've been doing all this for years, plus chip design, can I claim "full stack plus"?
Same here. I have been daydreaming about starting from scratch and building up. Of course, everyone's definition of "from scratch" might be different, but for me the starting point would be an FPGA prototyping board. I'd start by implementing my own CPU, memory controller and IO peripherals. Then I'd move onto creating a development toolchain for the platform. Then writing an OS and so on.
As Carl Sagan might have said, "To build a platform from scratch, you must first create the universe."
Next step would be to add an IMU into it so that it can react to movement.

Like behaving as if it's half full with water and make the liquid move around when placed on the table or picked up.

If anyone is curious, the origami stellated [1] icosahedron in the second image is built from Sonobe modules [2][3], a kind of modular origami. Basic structures formed by Sonobe units have 3-sided 45-45-90 pyramids on top of an underlying polyhedra with triangular faces.

Each Sonobe unit functions as an edge in the underlying structure, so building a structure around an icosahedron, which has 20 faces and 30 edges, requires 30 units, and yields a stellated icosahedron with 60 faces and 90 edges.

You can also build a stellated octahedron from 12 pieces, and a stellated tetrahedron (which actually just appears as a cube) with 6 pieces, but that's just the beginning [4]!

[1]: Strictly speaking, it's not a true stellation, which is formed by extending the planes of faces until they intersect. [2]: https://en.wikipedia.org/wiki/Sonobe [3]: https://www.amherst.edu/media/view/290032/original/oragami.p... (instructions for folding; I believe the image uses the two-mountain folds variation on the first page) [4]: https://www.polypompholyx.com/2017/01/modularorigami/

I love HN, I stopped as soon as I saw that second image and came to the comment section hoping that there would be a comment like this one. I know what I'm doing this afternoon.
That is incredibly cool.

I'd think it would be a great programmable D&D dice, except that it might not handle being tossed around.

Wow, that's a lot of work...

Next time (LOL), maybe put a gyro-sensor inside it, and program the light such that waves mimic motion... or...

The end of the article talks about mapping the LEDs to 3D space. Once you've done that, I agree that throwing in an accelerometer would be awesome. You could take what he did on his cube[1] and then have it so the animation always flows down in gravity.

Then roll it like a die :)

[1]: https://twitter.com/esden/status/1160309492896215040

Or you could have a mode where you just tap it, and it "rolls a d20", where the RNG generates a number from 1 to 20, and then animates the faces rolling around a little and finally ending with the random number chosen on top.
From the future work aspect the author might consider adding an IMU to the device. It could mimic dice behavior or change state based on motion. Also a great opportunity to learn about dynamics and signal processing.
I wonder if the people commenting "I want one" would still agree if they knew how much it would cost to produce and assemble in small quantities. Would 1000€/piece even be enough to cover costs?
Define "small quantities". about 100? no. about 5000? maybe yes.
Imagine you're the one doing the building/assembly. Does 5000 sound small to you? Does 100?
Something like this will never be profitable to assemble by hand. It's not a matter if it being a small quantity or not.
Something like this at the 1k price point isn't profitable? If you've never done anything like this before, I can see it being daunting. However, if you'd never done something like this before, you'd be crazy to start here.

When learning anything new you do a 'hello world' version of something. Bicycles have training wheels. Electronics has starter projects as well. You work up to something like this. Being thrown into the deep end is not the best way to learn how to swim. Eventually though, you get comfortable that project like this are not daunting.

You get your stacks of PCBs, you get all of the interconnect wires, you get all of the LEDs, you get all of your tools, then you just draw the rest of the fucking owl. I would not be looking forward to making 5000 of these, but I would not be afraid of 100. It won't be done in a week, but by the time I got to 100, I'd be pretty good at it. Again, if you know you're making 100, then the added time of making the proper jig is well worth it.

Also, isn't this something that Kickstarter would be perfect for?

Oke so let's to with a bit of napkin math. First materials:

3d printed enclosure: $167.68 (unlikely to get a better price for quantities a hobbyist will self assemble) PCB for controller + parts, it's not listed in the article but let's assume it's 25$. PCB for the LED panels + parts. Let's also assume 25$.

So now we are already at $213.68. Then let's factor in labor. Someone who can create something like this would not struggle with asking $100 per hour. I dare say assembling the entire thing, correcting possible errors, testing boxing + shipping will take more then 6 hours. Only placing the LED's will take a significant amount of time.

So no I don't think it's profitable to sell this for $1000.

For $167.68 per 3D print at 100 copies, you'd easily be better off buying the 3D printer and doing the printing yourself for much cheaper. So yes, a hobbiest could get better prices. It is DIY after all.
What? The HP MJF printers start at $130,000. You are at little more then 10% of the price for 100 copies... This machine is not a hobbyist 3D printer.

Besides even if you would magically have 0 material cost. it's so labor intensive that's it's not worth it at $1000.

What's labor intensive about it? Mass producing and assembling PCBs is very cheap. A Chinese manufacturer will make you an injection mold for $2000 and then you can produce thousands of plastic parts for almost nothing.

I think the mistake you are making is that the processes that make 1000 units are completely different to making one unit ten times. The design gets streamlined for manufacturing. Nobody is going to hand solder wires to fix a botched PCB layout 1000 times. You'll just redesign the PCB layout and try again.

Did you miss something? This entire thread is PRECISELY about NOT using mass production capabilities, as in a hobbyist builds a few of them. My point earlier was that it can be profitable if you do use mass production facilities.
I've build a small run of cool electronic trinkets before and it's really a killer how economically unviable it is. My BOM cost (just raw components) was twice what the final cost of a comparable product, with free shipping, from China was.

A lot of people are into "local made, hand crafted" until they see it costs 4x as much for something that functionally isn't 4x as good.

When I was a kid, I was equally interested in hardware and software. Realized I couldn't afford the parts to play with hardware, so software it was.
It's a great write up, but is it really worth asking for free PCBs that would cost ~$5 for a project whose cost is >$100?
> I went to assemble one, and when trying to determine the LED orientation I discovered a fatal flaw. I had the footprint rotated 90 degrees. (-___-)

Why was that a problem? The leds are square, so you could just rotate them by 90 degrees?

> I attempted to assemble a board bey placing LEDs at 90 degrees, but ultimately this was a failure, the pads look reasonably symmetrical, but they’re not exactly.
That is a beautiful project.

With huge numbers of RGB LEDs I wonder if in the future using some sort of small FPGA per panel would make things easier? I have seen that done in some persistence-of-vision projects.

Man, I lived that same nightmare scenario with the flipped G-S pins on a MOSFET.

I had the board spun and excitedly soldered it all up. It was a relay logic project with a few micros, tons of LEDs, swaths of general logic chips, and a lot of relays. It was a hybrid mechanical computer, nothing massive, but a lot of components.

Fired it up for the first time and got nothing. Just like OP I narrowed it down to the relay coils not firing. No signal out of the driving MOSFETs.

Being a fool I had trusted a random online library for the MOSFET footprint, and of course the footprint had the G-S pins flipped. I painfully bodged one before deciding to just bite the bullet and spin another one. I cannot imagine doing 300 like OP did, good on him.

This made my day, after watching the assembly video:

«You assambled all 19 before testing first one?»

«….Yes. I am not a smart. -_-*»

When you are in the production flow, it is hard to stop for testing.. Good to see it’s not just me that can make this kind of mistake.

I am looking to do something like this as a Christmas gift for my son. However, this looks pretty labor-intensive (300 bodge wires!).

I have dabbled with arduino in the past but I am no expert with hardware.

Does anyone have suggestions of cool projects similar to this? Toy-like LED things :)

Or even a website I could browse to find similar projects (like Instructables maybe)?

Strings or panels of addressible LEDs would be a good place to start. Adafruit brands these as "neopixels" but the specific LED most of them use is a "WS2812", "WS2812B", or "WS2813".

With these you have a single data line from a microcontroller to control the LEDs, and there are libraries to help you do that.

I've lit some up and fiddled with them and they're pretty cool, but I haven't come up with anything more serious to use them on yet. RGB lights on stuff for the sake of it isn't my aesthetic. But maybe a clock and weather forecast station with animated rain effects or something.

Lots of info here: https://learn.adafruit.com/adafruit-neopixel-uberguide

https://www.learnrobotics.org/blog/neopixel-projects-ridicul...

WLED is also fantastic if you are using WS/APA/STK style addressable LEDs. You just need a dirt cheap ESP32/8266 and you get a wifi connected lamp with a lovely web ui, cool animations, android app, timers, home automation integrations etc etc.

https://github.com/Aircoookie/WLED

Have a look at Pixelblaze. It's a subset of JS on an ESP32 with no compilation - you code in a web browser and the LEDs just render live. I've done plenty of Arduino; this sidesteps the mundane getting-started knowledge base.

This $6 37-LED mini hexagonal board is a fun starting point, cheaper than most strips and matrices:

https://shop.m5stack.com/products/hex-rgb-led-board-sk6812

Thank you! This looks great!
My kid likes to sleep with a nightlight. But commercial nightlights all have problems: either they are too dark, or too bright, or in the wrong spot, etc. So we made her one out of a LED light string and a colored glass flower vase on the nightstand, and ran a control cable to the headboard where she can easily reach a potentiometer with a nice satisfyingly heavy metal knob.

For v2 of this I was thinking of using the Arduino PWM pins and make the mapping function from potentiometer to brightness a little more linear to the human eye. I have a prototype that works pretty well. Could probably add a little segment display to make a clock or thermometer (she likes to know the temps). Our own StavrosK's project here was super inspiring: https://www.stavros.io/posts/do-not-be-alarmed-clock/

For v3 I was wondering how to implement the transfer function in analog components because I hate the PWM flicker. Even when I use the high frequency modes I can still see it. But I'm not very good at analog design yet. :-)