The Cash-Caching Automaton, or "CasCA", is a machine designed to dispense coins to Makers for use with the drink, candy, and snack machines. Many people don't carry around cash or change, but the vending machines at the shop currently only accept coins or dollar bills. This machine will make use of personal accounts assigned to Makers that may be funded by PayPal, Bitcoin, and other manual forms of payment, like checks or cash. Below is the current list of desired features:
- The machine should be able to reliably dispense a user-selectable number of quarters (not too few, or too many)
- It should be able to offer multiple forms of user-authentication:
- Username + password
- Makers door-authentication thumbdrive (plus optional pin number/password)
- (Possible) Smartphone authentication via QR displayed on screen
- (Possible) Other smartphone authentication: NFC, Bluetooth, WiFi?
- (Possible) RFID tag
- (Possible) Google Authenticator
- Accounts should be automatically fund-able at the machine via PayPal or Bitcoin
- Accounts may be manually funded via check or cash
- Can show account balance on screen
- MUST have secure connection to a secure database for transactions
- Easy to physically refill with quarters
- Automatic email notification when low on quarters
- Display a message on a screen when low on quarters
- Able to dispense coins without an account when using PayPal or Bitcoin
- Physical and account-based intrusion detection and notification
- Only dispense $0.50
- Determine amount in machine
- Dispense change
- Don't charge if there isn't any money.
- USB Member Authentication
- Manual Deposit
- Red empty light
- Remove dollar acceptor
We've purchased a old change machine from a guy out in Trinity. It is a small, tabletop unit that should work quite well for the quarter dispenser, since it already handles giving out quarters and checking for low levels. It is also already lockable and theft-resistant. The machine's dollar acceptor did not work, so we will not be able to retain the bill-to-quarters functionality.
A previously proposed design for the dispenser was to use a tall 1" i.d. pipe (PVC) to store the quarters to be dispensed. The bottom of the pipe would have small slot where a single quarter may slide though and a sensor to detect whether there are any quarters remaining. A servo would move forward to push a quarter out of the slot, and move back to let the stack of quarters slide down.
- Arduino Uno
- Controls the change machine (dispensing, activating the light)
- Keeps track of the number of coins remaining in the machine
- Raspberry Pi or Dockstar
- Runs the transaction DB to keep track of balances
- Runs host-software that listens for USB devices and instructs the machine to dispense coins
- Two-channel relay module
- Electronically handles turning on and off the dispenser solenoid and front light
- NFC and RFID for authentication
- Tiny combined Bluetooth and WiFi USB card for connectivity
22:57, 5 November 2012 (CST): The small desktop change machine has been acquired and tinkered with. Jimshoe has hooked up a switch that will manually trigger the dispensing of up to four quarters at a time. This switch will be replaced by a transistor or relay that will be controlled electronically.
22:57, 21 November 2012 (CST): Code has been written that interprets commands over serial and calls different functions based on the commands and inputs. This code has been committed to the new CasCA git repository on GitHub.
23:17, 16 December 2012 (CST): Successfully tested relay board with some coin-dispensing Arduino code additions. Added some simple money-tracking to the Arduino code: it can now be refilled, quarters can be dispensed, coin levels checked, and no attempts to dispense coins will be made if not enough coins are in the machine.
00:21, 24 January 2013 (CST): Added basic support for the status light on the machine. When no money is available for withdrawal, the light will blink three times and then stay on. When the machine is refilled, the light will turn back off.
17:11, 10 February 2013 (CST): Separated the DEBUG messages and RETURN messages into different message-types so that the host program can interpret each message correctly. The Arduino code has a #define to compile out debug messages if needed. A Command Reference Guide (CRG) has also been started on the GitHub Wiki to provide information about interfacing with the Arduino from the host software over serial.
23:32, 13 February 2013 (CST): We're successfully dispensing coins and activating the light via serial commands on a laptop; check out the first test video. Coin counts are also now stored in the EEPROM of the Arduino, so that the count values are persisted across reboots of the Arduino, which occur any time a serial connection is established.
|id|username|email|usb_sn| create table users(id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(255), email VARCHAR(255), usb_sn VARCHAR(255));
|id|users_id|timestamp|usd| create table transactions(id INTEGER PRIMARY KEY AUTOINCREMENT, users_id INTEGER, timestamp INTEGER, usd FLOAT);