Kind of a fun idea I had (actually a few months ago) to create a bit of an augmented experience when playing Dungeons and Dragons (or, well, I suppose any tabletop / Pen & Paper RPG that happens to use a 1" grid, but I play D&D, so ... this is where I'm focused ;) ).
Came across 3d-printable projects for making various tile-sets (think dungeons / caverns / taverns / etc. ) and after printing a few, realized that with some pretty minor modifications, I could cram a PCB with some RGB LEDs on it to do different things (mostly Area-of-Effect things; like your classic fireball, or lightning bolts, etc. It's always a pain with those trying to figure out on the board just "where" the borders of the effect are).
These are the boards that fit within the tiles themselves:
Not shown / drawn up yet (in KiCAD, anyway) is the MCU / Driver "Motherboard". Effectively it's an ATMega328, 3 shift registers (1ea. for the R,G,B channels) and eight FETs to drive a grid of 8x8 RGB LEDs, plus power input. (I might be missing a few bits in the description, it's done up right now as pencil and paper, with a 1-channel MWE done up on perfboard).
My two design goals were that:
- These things be easy to use for non-programmers (especially if I opted to make it into a "product" -- doubt I will, but hey, some people have more money than time). Ideally, the only programming it's going to take is defining the room dimensions (essentially the lower-right corner, given that 0,0 is the upper-left)
- The tiles be 180-degree rotationally symmetric, to reduce the need for "single-use" tiles (e.g. wall sections can be either North/South or East/West, rather than JUST N or JUST E). Maybe one day I'll figure out
90 degree symmetry to completely eliminate it.
To accomplish #1; I went with using standard LEDs with multiplexing, this eliminated two problems I faced with smart/programmable LEDs:
- Data delivery --> while you need 75% fewer control signals for "smart" LEDs, things get massively ugly when trying to divide them into rows and columns. You're either zig-zagging the signal on every other row; or having a return path on every row, so that they all start from the left (right). Conversely, with multiplexing, I just have a grid, with {0,0} being the upper-left corner. 2. Requires "Special" tiles to facilitate data flow. For example, a chasm in the middle of the room would still need some kind of carrier PCB to keep the signal flow across / around the chasm set-piece. Whereas with the multiplexing, the row/column control plane (on the carrier-board itself) is otherwise unbroken.
To accomplish #2, I went with some low-profile board-to-board connectors (cue them NOT being rotationally symmetric when I get the 10 or so I ordered :) ) ... I want to keep things relatively low-profile, so the individual boards can survive semi-rough handling (e.g. getting stacked in a case / bin / etc.) that would be problematic with pin-headers. I envision needing a few revisions here, since eventually I want to do away with the "strips", and replace those with what would amount to individual breakout boards, since the PCBs are otherwise quite big and sparsely populated due to the physical spacing of the game-board.
Likewise, I expect a few revisions on LEDs, etc (I mean, these common-anode look really nice, but there are *slightly* cheaper options that don't do the common-anode on-die).