electronics

Star Wars Armada Correllian Conflict campaign improvements

In December, Fantasy Flight Games released one of the best miniature game expansions that I have ever seen. The Corellian Conflict allows up to six Star Wars Armada players to battle for control of the Corellian sector, Han Solo's home system. Over the course of several campaign turns, the players build and destroy bases and outposts throughout the sector. In order to track who controls what planet, the designers gave you a folded map and a whole bunch of stickers.

Since we have multiple people at the local game store that want to play, I thought it would be frustrating at best to use stickers. Along came my idea to make a smart map that loads map data from the web and then changes LED colors to convey information. The map will be mounted at the store very soon.

IMG_5727.JPG
IMG_5739.JPG

On the left is a close up from the front of the map where you can see the Neopixels I used for the colors. I'll be adding some 3D-printed items to diffuse the light a little better. The right photo shows the control button, the display, and the ESP8266. The ESP8266 is the brain of the whole thing. The button is used to switch between games that are displayed. It is also used to refresh the data with a long press. If there are no button presses for 30 minutes, it starts rotating through all the maps every 15 seconds.

IMG_5729.JPG
IMG_5722.JPG

Each Neopixel is soldered to the next. To help me when it came time for programming, I labelled every Neopixel from behind. The photo on the right shows the whole 25-LED strip. Painters tape was great for holding everything in place.

Parts
ESP8266 Thing from Spark Fun ($15.95, https://www.sparkfun.com/products/13231)
OLED yellow/blue display ($9.99, https://www.amazon.com/Diymall-Yellow-Serial-Arduino-Display/dp/B00O2LLT30/)
Neopixel RGBW strip ($17.95, https://www.adafruit.com/products/2832)
Micro USB wall charger ($12.90, https://www.amazon.com/gp/product/B009STIJWA/)

Supplies
1000 uF capacitor
560 and 10K Ohm resistors
Jumper wires
Push button
22 AWG bulk wire
Solder

Tools
Wire cutter
Wire stripper
Soldering iron
Hobby exacto knife
3D printed plastic disc, 15mm across
Computer (for programming and uploading to the ESP8266)

Services
Laminate and dry-mount map on foam core (unknown price because Fed Ex did it for free after they botched the first attempt)

Skills
Soldering
Cutting with the exacto knife

Time
I estimate that I spent a total of 20 hours on this project. The bulk of that was on cutting the holes and soldering the Neopixels, probably about 8 hours.

Debouncing - what is it, doing it in software

It was bugging me that I couldn't change the speed of the dance party effect for my workbench lighting, so I added the ability to adjust the beats per minute. I also converted the switch to an interrupt so that it behaved better while doing other work. Interrupts are a simple concept - stop whatever the device is doing and do this other thing right now. However, this also means I had to learn a bit about debouncing.

When an electrical circuit is closed by a button, the voltage fluctuates slightly until it flattens out. This fluctuation means that one button press can look like 3 or 4 button presses over the course of a couple hundred milliseconds. This behavior is called bouncing.

Debouncing uses either hardware to smooth out the voltage or software to ignore the bounces. Since I didn't have the components necessary for hardware debouncing, I used a software method that works pretty well. When the interrupt is triggered - the voltage from pressing the button rises, including from bouncing, check for when the last voltage rise was detected. If it's shorter than 200ms, ignore it. Debounced!