The problem with copper board, of course, is that it's not magnetic, so we had to fix some thick steel bolts to the underside of the board in order to get the magnets to pull our top and bottom layers together.
Once this was working, we etched some massive double-sided PCBs to test the theory out with a "proper" circuit board.
This time, we tried using pennies instead of bolts on the underside of the board, to give the magnets something to pull onto.
We then had some professional PCBs manufactured, added our own separator layer and placed a printed sheet on the top.
The result? Because of the thickness of the PCB, we needed to use two pennies to provide enough steel, and a 3mm thick, 10mm magnet to get the contacts to close. This means that the cost of building each board has immediately gone up by 2x88 = £1.76, just in pennies (post-1992 pennies are still the cheapest source of round discs of steel we can find!). That wasn't the problem. The problem was no-one is likely to want to stick massive thick 3mm magnets to the undersides of their treasured miniatures to use as playing pieces.
So we tried something else - getting custom keypad membranes manufactured. They took a while to arrive, but looked very promising when they did
The final keypad membranes have a tiny 0.125mm gap between the top and bottom layers - perfect for use with 1mm thick magnets.....
Unfortunately, because of the manufacturing process - and because they are designed to be pressed by a human finger, not a piece of plastic with a magnet on it - the vacuum between the layers means that they need quite a press to get the contacts to close. In fact, they need a piece of steel and a 2mm thick magnet to get the playing piece to register it's position above any one square.
As part of the construction, using a custom membrane, we still have to introduce steel somewhere in or around the material that the keypad will be mounted onto (and still have the small matter of connecting the membrane to a PCB on the underside).
It's becoming obvious that using steel (or a similar, ferrous/magnetic metal) in the construction needs to be given more consideration, and not just included as an afterthought. Which has brought us full circle right back to where we started - with small discs of steel being set into a rigid playing surface.
Now, if we're going to the trouble of constructing each board section, instead of buying in parts from overseas (something that some of us were not always entirely comfortable with, given we have the expertise, if not the workspace - yet - to print and etch our own circuits) then perhaps it's time to review the whole project. Back to the drawing board, as it were.
Instead of trying to build our entire board game system in one go, re-purposing the board sections for different board game styles and genres, maybe we should be looking less at the cost of production, and more on actually getting some production done and optimising to reduce costs from there. Instead of creating loads of the same board sections, then changing the way the software reads the boards, for different games, we're going to focus on just one game - and then re-use the technology, but not necessarily the construction methods - for the others.
So we're back to building a space-ship based shoot'em up: Laser Squad on a board game.
But since we're moving away from having just a few large board sections, with different artwork on them for different games, to custom board game sections for each game.... why not go the whole hog and make different board game sections for the same game?
What about some kind of Laser Squad/Space Hulk mash-up?
Space Hulk had this great game mechanic - the boardgame was made from loads of smaller sections, which meant each game could be played out across a different spaceship. It was a simple idea, but one that worked (and still works) really well. Even with just a few different board sections, it's possible to have a really interesting playing surface.
Here's some preliminary sketches of how we might incorporate different board game sections into a Space Hulk/Laser Squad mash-up, that we've tentatively called Starship Raiders (ok, it's only called that because it was the only spaceship themed URL we could get hold of, but it's not a bad name!)
Our board game sections are
- 4x4 room with one exit
- 4-way corridor crossroads
- Single corridor section (all corridors will be two squares wide)
- 4x4 room with two exits
- 4x4 room with four exits
- Corridor right angled turn
One thing we need to consider is that not all board game sections will be able to connect on all sides.
On the left and right hand edges, the pins need to be in the same order (so that two board edges can connect together). Likewise, the pins on the top and bottom of each piece need to be in the same order, for the same reason.
The problem comes when board sections are rotated (and is not immediately obvious from a piece which is symmetrical in more than one axis). Let's consider connecting a room piece to a "crossroads".
Connecting this way is fine - the connectors all line up. But what if we connect the room to the right hand edge of the crossroads piece?
Bzzzt! We've got a dead short!
So we need to make sure that our power and ground pins are on pins 1 and 3, so that when the board is flipped over and connected to an edge that it shouldn't, these pins line up to 2 & 4 on the other board section, rendering them harmless.
If we continue adding board sections without correcting this problem first, it may lead to some pretty funky data being passed back and forth, but at least there's no dead short threatening to kill our power supply (or worse still, damage the hardware that talks to the rest of the home network). From top-to-bottom (or left-to-right) our connectors read "pigo" - power, data in, ground, data out.
So our current thinking is that when a board section is first powered up (i.e. added to an existing, powered, board section) a one-off message is sent back to the host controller, telling it the ID of the piece just connected. On receiving this message, the host app can play a wav sample to let the user know that their board section has been accepted. If you connect a board piece and - after a short delay - hear a ting, ting, ting success message, you know you've connected it the right way round. If, however, you connect a piece and there's silence after a few seconds, the new board section hasn't been connected the right way (because it's either not powered up, or - if by some miracle it takes power from the data lines of the previous section - it's not able to send the "connect ok" message back to the host). Or, there's always the possibility that the code is buggy or something's just gone wrong ;-)
With all this in mind, it's time to make some PCBs and try this whole new fangled way of working out!
We're thinking of using "penny washers" for our steel discs. These are typically 25mm in diameter and 1.5mm thick, with a hole for an M5, M6 or M7 bolt.
If we use a pin in the centre of the hole, our top layer doesn't need to connect to anything on the board - it can just be a series of conductive dots which, when pressed, cause the pin in the centre of the washer to connect to the ring around it. By powering each row (or column) of washers one at a time, and reading the data inputs from the pins, we should be able to tell which washers have a magnet above them (since the signal from the washer will be conducted through the pin, back to the mcu).
Here's a design for a 6x2 corridor section (for some reason, we added some LEDs along the edges of the corridor, controllable by an HC595 shift register - this probably won't make it into the final version, but it seemed like a bit of fun)
As this PCB is quite large (160mm x 70mm) it's going to be a bit of a nightmare to press-n-peel (the old blule paper doesn't like transferring large areas of filled toner as it tends to smudge a bit during transfer) so this will have to wait until the next BuildBrighton session, where we'll do some PCB mask etching on the laser cutter.
Updates and debriefing (on whether it was a success, or another miserable failure) will be posted soon!