Last year my son had to make a board game for a middle school science fair, and the theme was Ancient Egypt. I just figured it was an opportunity to introduce him to electronics. My initial suggestion was to replace the conventional dice with an electronic dice, but my kid and his classmates are very creative, so when their idea began to emerge, I didn’t want to prune their ideas. Therefore, the things became a little more complex.
The kids did the project concept, game and enclosure design and I helped them with my electronics expertise.
The brain of this project is an Arduino Nano, that coordinates some other modules and circuits (display, MP3 player, buttons, and LEDs).
Just like any schoolwork, the kids had to do a lot of research about ancient Egyptian history, because they needed to formulate a lot of questions for the quiz that was part of the game. They also had a lot of work to do drawing the map of the board, especially considering they used MS-Word to do it. It was printed on vinyl adhesive.
For the enclosure design, the kids were inspired by pinball machines. They wanted to make it with a large area for the map and an inclined display, which also hides the pharaoh’s sarcophagus. The sarcophagus is only revealed when a player reaches the end of the trail.
The enclosure was made of plastic (polyethylene) and acrylic sheets, due to its ease of cutting and folding.
The circuit design was created with Fritzing software. I do not like to use jumpers, so usually I make double-sided PCBs. But, as the time was short, I chose to simplify making single-side PCB, using toner transfer method.
This project has 24 LEDs, so I had to use a multiplexer IC. The MAX7219 solved the LEDs problem, but caused a loud noise to come from the speakers. To fix this issue the MAX7219 was replaced by its “brother” MAX7221, which has protection against electro magnetic interference (EMI).
The questions of the quiz are shown in a 20×4 LCD display as well as played through the speakers with the kids’ voices, which we recorded and distorted to sound scary like a mummy.
The first programming challenge was to display Portuguese language accents, since the LCD displays has no native support for accents. Despite the fact that the LCD display allowed 8 customizable characters, it wasn’t enough. So to work around this problem I had to dynamically load the custom characters as required.
Another programming challenge I had to overcome was the Arduino 2KB RAM limitation, since I needed lot of memory to hold the quiz strings, which can neither be solved by progmem tricky. I had to store these strings into an external 32 KB EEPROM (Microchip 24LC256). I wrote some Arduino sketches that was executed once, to store these strings into EEPROM, and after it was retrieved by the main program, using their memory addresses.
After all, I think that Arduino Nano was pushed to its limits. More than that, only using an Arduino Mega.
From conception to finish, the project took 30 days.