Since I am a huge fan of starting projects and never finishing/polishing them, I decided to give ‘nfc based digital drank vouchers’ a try. I am part of an organisation that regularly organises quizzes using our own QuizWitz software, and I am constantly trying to improve and optimize the way we organise our events.
At these events we sell drinks and snacks, and since I recently got interested in NFC I decided to see if I could introduce some cashless system that would replace our current foolproof ‘paper vouchers’ system. There are ofcourse loads of existing solutions on the market, but since we have absolutely no budget for that I decided to see if I could do something DIYish.
Last year I already implemented a simple webbased cashier system that allowed us to track what drinks were sold and also allowed players to order drinks straight from there table. We would then bring the drinks to their table and demand the required amount of ‘paper vouchers’. Some people would come straight to the bar and order drinks there, but both situations were handled by a very simple web based cashier system. And now I want to play with NFC cards, so … let’s get going.
Our players have to register before they can join the quiz, so we already have the players grouped in teams of 4 (or less). My goal is to give each team a single NFC card that they can topup and use to buy drinks. At the same time, the ‘remote orders’ also still have to be possible, and I don’t want bartenders to walk around with NFC readers (since I only have 1 and it is not exactly portable). Additionally, since there is no budget, I try to keep hardware costs as low as possible and try to reuse parts I still have laying around.
- Each competing team should receive 1 NFC card that can be used to topup and buy drinks.
- Teams should be able to order drink through the existing app, so the team should be linked to the NFC card. Payment for a remote order is done at the time of the order, not at the time of drink delivery (so bartenders don’t have to walk around with nfc readers)
- Players should be able to topup their credit online (through an online payment gateway). Players should also be able to topup in cash at the entrance.
- The topup station must be connected to the internet.
- It should be possible to have multiple POS (point of sales = bars) and, while the bars should try to maintain a connection to the internet, such connection should not be required.
- The topup station at the entrance must always be connected to the internet.
- We have an android tablet that we use at the bar, and we intend to keep using that.
- I have a raspberry pi and 2 NFC card readers (ACR122U) that I intend to use. I also have 80-ish NTAG213 stickers that I want to use for this.
- The user interface must run in the browser.
Having the requirements set, it is clear that the available credit must be stored on the NFC cards, which poses.
Since I have no experience with NFC I decided to start with trying to get that working. Since I don’t want to bother with trying to get android to play nice with the external NFC readers, I decided to connect the NFC reader to a raspberry pi 3 and install a socket.io server on the pi. All NFC communication will thus go over the network trough the rasperry pi. So I bought a microsd card and connected everything up… Wish me luck.