Open Bitcoin ATM
Intro: Open Bitcoin ATM
The world's first completely open-source Bitcoin ATM for Education and Experimentation.
http://openbitcoinatm.org for more information.
STEP 1: Fabricate Box and Faceplate
Out of a piece of 12″x12″ aluminum sheet metal, cut two rectangles and drill six rivet holes and four holes to attach the bill acceptor.
Cut aluminum angle into two 11 1/2″ lengths.
For each aluminum angle, drill and tap two holes; drill three faceplate rivet holes.
Rivet the two aluminum angles to each side of the faceplate. Allow room (about 1/8″) to overlap with the front of the box to create flush surface; make sure aluminum angles are positioned to lie flush on the inside of box.
Drill four holes through the box that exactly align with tapped holes in aluminum angle. (tip: if using acrylic, set drill to reverse, and gently apply pressure to prevent cracking).
Measure 16″ leads, solder one end to barrel plug and other end to J2 connectors. Attach barrel plug to back of box. Tape leads to base of box.
Cut aluminum angle into two 11 1/2″ lengths.
For each aluminum angle, drill and tap two holes; drill three faceplate rivet holes.
Rivet the two aluminum angles to each side of the faceplate. Allow room (about 1/8″) to overlap with the front of the box to create flush surface; make sure aluminum angles are positioned to lie flush on the inside of box.
Drill four holes through the box that exactly align with tapped holes in aluminum angle. (tip: if using acrylic, set drill to reverse, and gently apply pressure to prevent cracking).
Measure 16″ leads, solder one end to barrel plug and other end to J2 connectors. Attach barrel plug to back of box. Tape leads to base of box.
STEP 2: Attach Bill Acceptor and Printer
Position printer in faceplate and attach using bracket provided.
Position bill acceptor and attach using four screws, washers and nuts.
Position bill acceptor and attach using four screws, washers and nuts.
STEP 3: Provision Arduino
Download and install Arduino environment from here.
Download openbitcoin.ino from here https://github.com/mayosmith/openbitcoinatm
Attach Arduino Uno to computer USB port.
Upload openbitcoin.ino to Arduino Uno.
http://openbitcoinatm.org for more information.
Download openbitcoin.ino from here https://github.com/mayosmith/openbitcoinatm
Attach Arduino Uno to computer USB port.
Upload openbitcoin.ino to Arduino Uno.
http://openbitcoinatm.org for more information.
STEP 4: Attach Resistor and Leads
Solder resistor and leads to SD shield as shown (note updated circuit diagram with pull up resistor)
STEP 5: Attach SD Shield and Components
Attach SD shield to Arduino Uno.
Cover back of Arduino Uno with insulating tape.
Attach 5V power supply to back of faceplate (high strength velcro works well).
Attach Arduino/SD shield to back of faceplate with (high strength velcro).
Connect J2 connectors.
STEP 6: Create QR Codes
Create a few dozen private keys at bitaddress.org.
Convert private keys to 176 x 176 pixel QR codes (sample pictured above).
Convert QR codes to thermal printer format. Sample QR code in thermal printer format: BTC_4.btc (see http://openbitcoinatm.org for more information)
Here’s a hack that makes this process a snap:
https://github.com/mayosmith/BitcoinQRMaker
Here’s a wallet that can read the QR code:
https://blockchain.info/wallet/
Convert private keys to 176 x 176 pixel QR codes (sample pictured above).
Convert QR codes to thermal printer format. Sample QR code in thermal printer format: BTC_4.btc (see http://openbitcoinatm.org for more information)
Here’s a hack that makes this process a snap:
https://github.com/mayosmith/BitcoinQRMaker
Here’s a wallet that can read the QR code:
https://blockchain.info/wallet/
STEP 7: Provision SD Card
Copy logo.oba to root directory of SD card. (file is here https://github.com/mayosmith/openbitcoinatm)
Name QR code files sequentially, then copy to root directory of SD card.
Name QR code files sequentially, then copy to root directory of SD card.
STEP 8: Configure Bill Acceptor
Print the a configuration card at the end of the Apex 7000 manual
Using a dark marker, fill in the ovals on the configuration card.
Hold the reset button down for at least ten seconds.
When the lights on the front of the acceptor blink, feed the configuration card (pictured above) into the acceptor bill slot.
Acceptor will reject the card.
Acceptor will blink rapidly if successfully configured.
Using a dark marker, fill in the ovals on the configuration card.
Hold the reset button down for at least ten seconds.
When the lights on the front of the acceptor blink, feed the configuration card (pictured above) into the acceptor bill slot.
Acceptor will reject the card.
Acceptor will blink rapidly if successfully configured.
STEP 9: Watch the Magic!
Load up the Bitcoin addresses created in step six, stand back and watch the magic!
For more information and updates see: http://openbitcoinatm.org
For more information and updates see: http://openbitcoinatm.org
34 Comments
DaniO11 4 years ago
mayosmith 4 years ago
Here's a more detailed tutorial that includes a wiring diagram/schematic. Hope this helps!
https://openbitcoinatm.wordpress.com/tutorial/
robertlee0707 8 years ago
Couldn't you just take oout the money and do it again for endless bitcoin
IAMSUPERCUTE 9 years ago
This is AMAZING, but, how do you get the money out...
brendio 9 years ago
So you would need to have a fixed BTC<->USD exchange rate. Not easily able to change it without resetting the whole thing and using new QR codes, right?
mayosmith 9 years ago
1) charge a reasonable conversion rate buffer
2) datestamp the BTC with future dates and adjust the amount of BTC in the wallet as the rates change (this requires small change in the arduino program)
Neither option requires resetting with new QR codes.
Best,
/jm
brendio 9 years ago
Parzivail 9 years ago
Couldn't I just re-feed the same bill in over and over? Its a good idea, but I see why its only for education xD
tmikk 9 years ago
hello can i purchase this unit for a thesis project prototype can you ship it on the phillipines
littleshop 10 years ago
Has anyone built this? I have had problems with the dollar bill interfacing with the Arduino. The unit never delivers pulses. It acts wierd (finds pulses and crashes) if I make the resistor a PULL UP resistor. Nothing happens if it is a pull down resistor. Is the diagram correct?
mayosmith 9 years ago
While the photo is accurate there was an error in circuit diagram ver 1.5. This is fixed in diagram ver 1.6.0. Note: pull up resistor is shown; removed violet connection to pin 3 (this will eventually be needed to turn off bill acceptor when BTC inventory is depleted).
mayosmith 9 years ago
While the photo is accurate there was an error in circuit diagram ver 1.5. This is fixed in diagram ver 1.6.0. Note: pull up resistor is shown; removed violet connection to pin 3 (this will eventually be needed to turn off bill acceptor when BTC inventory is depleted).
orsd 9 years ago
are you using the right bill acceptor?
you should probably use the 12 volt pulse, however there are may may more like 120v single price, executive, 24v MDB, etc.
SawyerRoper 10 years ago
so would this be able to recognize different bills? like you're using a $1 in this, but could it also accept $20 bills?
rishton9 10 years ago
I was looking on their website and the qr code assigner has a form you fill out to tell it what to accept, long-story-short the bills it will accept are completely customizable
evansss 10 years ago
Muniosi 10 years ago
Wow, this is genius! Cool concept!
orsd 10 years ago
are you using the Pyramid technologies "phoenix" thermal printer?
ReconIII 10 years ago
Cool but how accurately can it look at the money coming in? What about fake bills? :P
orsd 10 years ago
the bill validator he is using, the apex 7000, is used in many commerical machines, so it will be able to detect counterfeit currency
http://pyramidacceptors.com/apex-7000/