A few weeks ago I tweeted to see if anyone had put a Raspberry Pi Zero W and a PaPiRus eInk display together to make a Bitcoin Wallet. Unfortunately there were no responses, so I thought I’d see what I could do…. fortunately the answer was quite a lot…
First off the warning; This setup isn’t security hardened. If you’re going to use this on an open WiFi network, or other people are going to get hold of your device, you should look at hardening the installation of Raspbian and modifying my apps to encrypt the private key for your bitcoin address.
The parts I needed were;
- A Raspberry Pi Zero W, 16GB Micro SD Card, and 40 pin header - £19.28
- A case which allowed GPIO pins to stick through - £4.98
- A PaPiRus Zero (2.0” version) - £37.00
- Micro USB Power Supply - £7.75
Total Cost: £69.01
I temporarily needed a Mini-HDMI to HDMI adapter so I could configure the Raspberry Pi, but his isn’t an ongoing need, so I’m not going to include it in the costs. Once I’d configured the WiFi settings to connect to my home network, and set up a static IP address, I connected to the Raspberry Pi using SSH rather than typing directly to it.
You will also need a soldering iron, solder, etc. because the PaPiRus Zero connects to the Pi Zero W via the 40 pin header which needs soldering in place. Don’t worry, soldering isn’t a magic dark art though, and there are plenty of videos to help you (e.g. this one).
Once you’ve soldered on the GPIO pins you should download the Raspbian Linux distribution, follow the installation guide, and power up the pi to make sure everything is OK.
When the Pi has powered up you should follow the PaPiRus software setup instructions. This will install everything you need to control the eInk display.
The next thing to install is pybitcointools. This is a great library which gives you access to the core bitcoin features from Python (which is the language the PaPiRus examples are given in).
Finally, you can install the really simple python apps I wrote which glues it all together. The PaPiRus Zero buttons are labelled 1 to 5 from right to left, with 1 being the closest to the edge on the right. If you run main.py, the furthest left button will show you your wallet address, the next button will show you the balance, and the buttons at both ends pressed together will exit the app.
The great thing about an eInk display is that it will continue to show the last thing you displayed on it even after the power is cut, so if you press the left button (to get your wallet address), then shut-down your Raspberry Pi, you’ll still have you address on screen.
There are plenty of places I could take the project; starting main.py at boot, making sure the address is shown when the system shuts down, hardening Raspbian, etc., etc., etc., so feel free to take this little project in any direction you want and let me know how it goes.