There are a lot of clones of classic Monopoly game in the world. It is an awesome table game suitable for family weekends. Some flavor comes with electronic payment system another one featured with fully electronic game cards. But the classic variant of the game equipped with cache. In this project the electronic payment system for the game will be built.
There is Arduino module in the Internet stories that is capable to read (and write) Mifare cards, MRFC-522. This module has an SPI interface and Arduino software library to simplify programming. Using this module you can read mirafre plastic or paper cards. For example, metro tickets or another Mifare compatible source.
This payment system simplifies Monopoly game by payment automation. Place your card on the reader, enter money change value and press encoder button. Also, you can pay rent to another player: place your card, enter negative amount to your account then place the recipient's card. It is simply and funny!
The module is based on Arduino microcontroller. See the schematics, it is very simple one:
All the magic is doing by Mifare module. Also there are two controlling units in the module: the rotary encoder with a push button and simple push button which is used to increment encoder 'step', simplifying big numbers entrance.
When the game starts, each player should register own plastic card in the payment module by placing the card to the card reader. While registering the card, the module asks for the player name and stores it together with the card ID and initialize the player account. In this mode rotate the encoder to select another letter in the user name, press encoder to edit next letter, long press encoder to finish name editing. As soon as all the players are registered, long press the encoder to start the new game.
During the game, the payment controller waits for next player move. "Next player, Place a card" message is displayed in this mode. The controller turns into sleep mode in several seconds to preserve the battery power. Place the player card to wake up the controller and make next move.
In case the player is going to pay or receive money, he or she places his or her card to the reader and enters the amount of money to pay or receive. Rotate encoder to enter required amount then press the encoder handle to commit operation. In case player A pays some amount of money to player B, first place the card of player A to the payment module, enter negative amount of money to be subtracted from the player A account then place player B card.money to player B, first place the card of player A to the payment module, enter negative amount of money to be subtracted from the player A account then place player B card.
Any time during the game it is possible to check the player account by placing the card to the reader. Do not touch encoder, the payment controller turns to the waiting state in a short timeout.
The backlight of the lcd display can be adjusted in register or wait state by rotating the encoder handle.
P.S. The ATmega328P-PU microcontroller is used to decrease power consumption. It could be replaced with Arduino Pro Mini 3.3 volts or similar pre-built module.