Cheap Networked RFID Reader(s) and cloud-free server for arcade cabinet credit payments. Uses card serial number for ID and local server to manage cards and balances
At this time, I don't take responsibility for any damages caused if this is used commercially. Once this warning is removed you can consider the software to be "production" ready. More testing and feedback is still required
Please create issues to address feature requests and report bugs.
Supports various other ACR developed Arcade solutions
npm install
config.json
{
"arcade_name": "Arcade Name",
"device_key": "API_KEY_FOR_CARD_READERS",
"web_key": "WEB_ACCESS_API_KEY", /*If removed there is no login required*/
"show_delete_actions": false /*Shows the Delete Card and Delete User Options*/
}
node ./card-server.js
http://localhost:1777/?key=WEB_ACCESS_API_KEY
Use something like pm2 or systemd to run as a daemon
Here are card readers that I have made and implemented as an example
The card reader is mounted in the extra open window beside the coin slot
All The hardware in this example is in-assessable to the user
The relay is mounted flat to prevent bumping to insert credits
The card reader is mounted inside the ground slider, Foam backing is to prevent reader from getting to close to the metal backplate and causing issues with the reader
LED is mounted next to the "per play" indicator and is boxed to increase brightness
OLED Display is mounted over the coin slot
Button is added for future features
The relay is mounted flat to prevent bumping to insert credits
Using the coin slot replacement reader design mounted on project box with the MCU inside.
Mounting screws are designed to work with most coin slots
See the included STL files inside the ./printable
folder
It is expected that th card readers and the server are on there on dedicated wireless network in the case that this is running in a public arcade. As this is updated more security will be added.
Create config.h
inside the CardReader-* folder
const char *ssid = "OCI_NET";
const char *password = "OCI_NET_SECURE029587";
const char *apiUrl = "http://192.168.0.2:1777/"; // URL to access central server
const char *deviceKey = "API_KEY_FOR_CARD_READERS"; // device_key from config.json
// Enable Remote Access
#define REMOTE_ACCESS
// Use Slimline 128x32 display
//#define DISPLAY_I2C_128x32
// Use alternative I2C card reader
//#define RFID_I2C
// Enable Multicore Tasking
#define MULTICORE_ENABLE
Any Optional hardware can be ommited and the reader will work the same
Use the following URLs to set settings with your server
Add Commands need key=API_KRY
to authenticate
/set/arcade/cost/<NUMBER>
: Set Per Play Cost
/set/machine/cost/<MAC_ADDRESS>/<NUMBER>
(Per Machine)/set/arcade/low_balance/<NUMBER>
: Set Low Balance Alert
/set/arcade/currency/<NUMBER>
: Set the currency to credit multiplier (use "null" as value to disable)
/set/arcade/freeplay/<enable or disable>
: Sets global freeplay mode
/set/machine/freeplay/<MAC_ADDRESS>/<enable or disable>
: (Set Machine Freeplay)/set/arcade/cooldown/<Credits:NUMBER>/<Minutes:NUMBER>
: Cooldown timeout - Sets max number of credits per X minutes/set/arcade/antihog/<Credits:NUMBER>/<Minutes:NUMBER>
: Antihogging per machine timeout - Sets max number of credits per X minutes
/set/machine/antihog/<Credits:NUMBER>/<Minutes:NUMBER>
: (Set Machine)/set/arcade/japanese/<enable or disable>
: Enable Japanese Text and Currency
/set/machine/japanese/<MAC_ADDRESS>/<enable or disable>
: (Set Machine)/create/pos/<MAC_ADDRESS>
: Set up a POS reader
name=
: Reader Namelocation=
: Reader Location/set/machine/vfd/<MAC_ADDRESS>/<VFD_IP>/<VFD_PORT>
: Set VFD connection/set/machine/blocked_callback/<MAC_ADDRESS>/<URL_ENCODED_URL>
: URL to call on blocked tap/set/machine/withdraw_callback/<MAC_ADDRESS>/<URL_ENCODED_URL>
: URL to call on credit dispensed