The goal of this project is to be able to display all the SAOs I collected at Supercon. I'm inspired by the SAO Wall at Supercon, but it's too big for my home and I want something more modular so I can fit it in various locations and expand as needed. I also didn't want to deal with batteries (replacing real ones, or permanently powering fake ones), so I wanted external power. I settled on a hexagon PCBA that has ports for 4 SAOs, and can be powered via USB-C connector providing 5V. And then, in order to provide the mechanical mounting solution, a 3D Printed frame to insert the PCBA into. The separate frame let me decouple solving mounting from solving the circuit. I originally considered directly mounting the PCBAs to each other and avoiding cables, but I didn't figure out a good connector to use, and didn't trust myself to line up all the connectors on all 6 faces of the hexagon correctly (to allow for custom tiling). USB-C with two-pass-through ports provides arbitrary daisy-chaining and arrangement. I'm hoping the design is flexible enough that people can make upgrades that are backwards compatible and there can be variants of the design that can be used together. I want others to be able to also display their SAOs at home, and I hope this can make that easier. I work primarily in software, so this was a fun electrical and mechanical design and manufacturing challenge.
Size and shape:
Hexagons are bestagons, and tile nicely with themselves. Tiling hexagons is also slightly more interesting than tiling squares. I made the PCBA 50mm to a side because it was a convenient round number, and approximately the size of the 2024 Supercon badge. The frame is 110mm to a side, because that provided enough room to hide even stiff USB cables inside without feeling too bad bending them to fit.
Ports:
4 SAO ports because they can be spaced out across a single tile to provide room for larger SAOs, and 6 felt too crowded. 3 doesn't feel dense enough.
Power:
USB-C is popular, cables are easy to find, and USB power supplies are plentiful. Each board has resistors on the CC pins of one connector so a USB-PD supply will provide up to 3A, which should be plenty for even sizable displays. Onboard is a 3.3V regulator for the SAOs providing 0.5A, but a component swap can easily change that. The SAO 1.69bis spec says SAOs can draw up to 0.25A, but in my experience they mostly pull much less than that. So you can install up to two powerhungry SAOs on one board, or four normal ones.
Control:
I added pads for a Pi Pico W (1 or 2), and connected it to the I2C and GPIO ports for all the SAOs on the board. Additionally, one GPIO pin on the Pico is connected to the enable (well, !shutdown actually) pin of the 3.3V regulator so it can be turned off (but that's nominally pulled high). I also added a touch point on the front of the board that is connected to an ADC pin of the Pico so it could be used as an input. I figure a modified version of the 2024 badge firmware could be used at first, but I haven't invested in testing any of this yet because I primarily want power, and pads are cheap.
Manufacturing:
I wanted it hand-solderable without too much struggle, so I picked mostly 0805 components (based on my experience at the SMT challenge). The USB-C ports only expose the power and CC pins for easiest soldering. I printed the frame on a Prusa MK4S because that's what I have access to, but the design is simple so any printer with a large-enough bed should work. Printing it front-down requires only a minimum of support material that is mostly easy to remove by hand and minimal tools. The clips for connecting the frames together are also small and easy to print.
Mounting:
The PCBA press-fits tightly and securely into the frame, but can also be easily extracted. Because I'm not good at this, the PCBA is not a perfect hexagon (I grabbed the hexagon image from wikipedia and manually placed the lines on the board edge layer over it). However, it is close enough to securely fit, and the imperfection of the 3D printed layers gives the right amount of friction. Easy to press in or out with thumbs. There are ports for the USB-C connectors to provide support so they hopefully don't get ripped off the board (like I did with one during initial board test). Again, because I'm not good at the board design, the USB connectors are not perfectly spaced, so the spaces in the frame had to be adjusted to match. There's a notch in the top of the frame to support hanging on a nail, and all sides but the top have 3 ports for clips and cable pass-through (the top only has 2 ports because the nail notch is in the middle). The clips press-fit into their ports (again, nice and tight due to 3D printing texture and imperfection), but can also be removed with a bit of force without damaging anything.
Design iterations:
Originally I wanted to have 5V power and I2C pass from tile to tile, and have the PCBAs connect directly to each other to avoid cables. This was infeasible because routing all the signals was challenging, as was lining up the connectors on all six hexagonal faces. Squares are for cowards. I wanted to have a single microcontroller in charge of the whole wall, which meant more data and power signals. In the end, since most SAOs only need power and I2C is challenging enough going from card to card, I listened to advice and switched to only distributing power from tile to tile, which meant I needed fewer pins, and USB-C with a power-only connector or cable became the obvious solution. I don't have to manufacture the cables and they are common enough to procure, especially because they only need power. Even the CC lines are optional, because you can power a few tiles likely (with non-extreme SAOs) with 0.5A of default USB power. Once I settled on that design, the board came together nicely, and other than some tweaks for available component selection and trying to optimize the SAO GPIO ports, it wasn't too bad. I purchased parts for 10 boards, assembled 10, and 9 worked, and then I broke one. I still need to debug the non-functional one (outputs the wrong voltage to the SAOs), and the broken one is usable (the "in" USB port got ripped off, but the "out" ports work just as well for daisy-chaining, since they only lack the CC resistors).
The frame took many tries (10 or so) to get something I'm happy with. But yay 3D printers for rapid iteration. I wanted it to be as small as possible, but also large enough that the cables can all be hidden inside without being bent too much. It's probably a little bigger than necessary if using thinner cables, but once I tiled a few together, it doesn't look too bad. It was a fun experience learning FreeCAD in the process. After predicting I'd need strain relief on the USB ports, followed by breaking one off, I was sure to add support for the connectors so they can't be easily separated from the PCB. The one final issue is mis-aligning one of the pass-through ports so they can be used with the clips, but overall I think this design will work.