Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
DIY RGB Icosahedron (gregdavill.com)
573 points by blutack on Sept 22, 2021 | hide | past | favorite | 98 comments


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.


This is super bad ass.

I made 8 LED icosahedra and 12 octahedra for a permanent lighting install in Boulder. They’re much larger (and thus were easier to make albeit much harder to handle ;) ) than this. I still gotta do the case study but some pics: https://www.instagram.com/p/Bv0dYbdH0yw/ https://www.instagram.com/p/Bv-sF0oH4Rd/ https://www.instagram.com/p/B5czvt_n3ME/

[edit: less unintentionally self-aggrandizing]


I'm in awe at the amount of patience required to hand-place 2400 tiny LEDs. I don't have it in me.


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


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.


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.


Their parts library is available for download and search https://jlcpcb.com/parts

They have instructions on how to generate the BOM and placement files as CSV too https://support.jlcpcb.com/article/84-how-to-generate-the-bo...


Ah, I'll try again, thanks!


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.)


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.


There are a few people working on open source pick-and-place machines. Here’s one example https://youtu.be/y14pdfjYsyo


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.)


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.


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!


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.


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.)


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.


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.


> 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."


> kind of full stack developer I'd like to be

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


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.


Beautiful.

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


If you're not familiar with electronics the macro photographs might confuse you as to how small all of this is. The MOSFETs he reworked by hand are 1 mm across the longest edge. Wire looks like 0.1 mm, the individual strands in most stranded wire are this thick.


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.


I came across this randomly on kitspace (https://kitspace.org/boards/github.com/gregdavill/d20-hardwa...) and thought other people might be as impressed as I was!


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!”.


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"


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.


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?


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.


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.


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.


I'd love to design and build something like this myself, but all of the electronic design seems so daunting.

Where's a good place to get started with this?


I am in the same spot as you are. I enjoy channels like Great Scott, Carl Bugeja, ElectroBoom and EEVblog. They make it working with electronics seem quite easy.

Planning to get some GPIO headers for my raspberry Pi, breadboards and led lights to just get started.


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


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. :-)


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!


tindie.com has some cool little projects.


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.


This Amazing, pure Art. Kudos.


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.


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.


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, amazing end result. It would be cool if it could detect orientation and change the animation based on that.


Is there any available resources in which I can jump start my way into making these kinds of creations?


If you want to make an icosahedron, you're on your own, if you want to play with grids of LEDs, then there is a lot of stuff you can buy and write a little bit of code for.

You could get something like the Matrix Portal and an off-the-shelf LED matrix to make an Internet-connected sign: https://www.adafruit.com/product/4745 (I use one of these to show the indoor and outdoor temperature, and it's only a few lines of Python.)

If you already have a microcontroller in mind and just want a grid of LEDs, these are great: https://www.adafruit.com/product/3444. I have a bunch of them wired in tandem to serve as a display for my GPS clock: https://raw.githubusercontent.com/jrockway/beaglebone-gps-cl...

Also, you probably don't need an FPGA to drive LED matrixes anymore. The RP2040's PIOs do a great job (the RP2040 is a $1 dual-core microcontroller), and honestly even a plain Cortex M0 does a perfectly fine job with cycles left over to run user code (for 64x32 grids anyway). The project this post documents probably could have been done with APA102s and a simple microcontroller spitting out a SPI signal to change their colors. No FPGA, no MOSFET bodges, etc. 2400 pixels is 7.2kB of data, which you can easily output many times per second.


> 7.2kB of data, which you can easily output many times per second

I found that this adds up quick if you attempt variable brightness via PWM. At 1Khz this is 7.2MB/s of data.


Yeah, that's why FPGAs typically drive the matrix of dumb LEDs. But if you use APA102s, they remember their PWM setting, and a little chip inside each LED handles that. You just burst the data out over SPI, and the LEDs remain lit until you inform them of a new color to display. Expensive, but easy to use!


I would make a usable display with leds like these if I could!


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?


Spectacular!


This is magical! This level of focus is impressive.


> 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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: