Introduction: Simple $10 Crypto Currency Display
Want a fun way to track the prices of crypto currencies? Tired of checking the prices online? Why not get a device to do it for you!
In this Instructable I will show you how to build a device that connects directly to your WiFi and displays the latest price for multiple different crypto currencies. This device uses a library I wrote to interact with the CoinMarketCap.com Api.
I've designed this project to be as simple as possible, so you don't need to know how to solder or code, I will go through everything you need to build the device. And did I mention that the total cost of the parts for the build is less than $10?!
Check out the video to see what the device looks like when running or for more info on how to build.
Lets get to it!
Step 1: Parts Required
First off what do we need for this project, thankfully not a lot! You only need an ESP8266 based microcontroller, a screen and some wires.
If you are not familar with the ESP8266, it's an awesome Arduino compatible board that comes with built in WiFi. I recommend the NodeMCU board and the OLED Display as they come with headers pre-soldered, but the project will run on any ESP8266 device and the code should be easily adaptable to whatever screen you have.
A micro USB cable is required for programming and powering this project, I'm going to assume you already have one as they come with everything! Nearly all Android phones came with them for the last few years, check the second image if you are not sure which type of cable is micro USB.
You can get everything you need off either Aliexpress or Amazon. Aliexpress will take about 2-3 weeks to arrive, but is about 1/3 of the price.
Aliexpress (Total cost ~$9):
Amazon.com (Total cost ~$27):
Amazon.co.uk (Total cost ~£25)
* Affiliate Links - I get a couple of cents from sales made through the links but it doesn't increase the price for you.
Step 2: Software Setup
If you have never used the ESP8266 or Arduino before, we will need to a little bit of software setup. I have a dedicated video for this. It's only 5 minutes long and goes through everything you need to setup.
If videos are not really your thing, check out lesson 2 of Becky's awesome IoT Class, it goes over everything you need as well.
Before you move off this step you should be able to upload a simple sketch to your ESP8266 (such as the blink example mentioned in both the video and Becky's lesson)
Step 3: Getting the Sketch
We want to program the ESP8266 with the software that it needs to run this project, but first we will need to get the sketch loaded into the Arduno IDE
- Open the Arduino IDE and click File -> New
- Now open your browser and go to the following link.
- Select all the text at that link and copy it.
- Now back in the Arduino IDE, select all the code from the default sketch and delete it (you should have a blank sketch)
- Paste in the code you copied from the link
- In the new window that opens, click File -> Save As and name the sketch whatever you like ("crypto display" maybe?)
This is the main code that the project needs, we just need to install some required libraries and make some minor changes so it works for you, I'll cover both of these in the next steps
Step 4: Installing the Libraries
This sketch relies on some external libraries for it to run, we will need to install them before we can put the software on the board.
- In the Arduino IDE, go to Sketch -> Include Libraries -> Manage Libraries
- In the search bar, search for the "Coinmarket", install the library by Brian Lough (hey, that's me :) )
- Search for "oled ssd1306", install the library by Daniel Eichhorn
- Finally search for "arduino json", install the library by Benoit Blanchon
You now have all the libraries you need to run the code, we just need to change a couple of things and we will be good to go!
Step 5: Configuring the Sketch
- In the Arduino IDE, scroll down to the section labeled "Configurations - Update these"
- Change the ssid and password to be the name and password of your WiFi network
- If wanted, change the CURRENCY. This will change the price the crypto currency prices are shown in, for example if it's set to eur, the value will be displayed in euro and if its set to usd the value will be displayed in US dollars. Check the currency drop down on CoinMarketCap.com for supported values (just take the lower case version of it)
- If you change the currency, you might also want to change the CURRENCY_SYMBOL, this is the symbol displayed beside the price. The Euro symbol didn't work for me, but the $ and the £ do.
Now scroll down the section of the code labeled "Holdings - Add your currencies here", to add new ones, do the following.
- Open CoinMarketCap.com
- Search for the coin you want to display and select it
- Take the value from the URL as shown in the picture above and use with the addNewHolding method.
- The currencies will display in the same order they are listed here
- I've tested up to 10 of these, if you want to try more you will need to update the MAX_HOLDINGS value in the configurations section.
Now all that's left to do is upload! Plugin in your board and press the upload button and your sketch should get uploaded.
Step 6: Wiring Up the Display
Note: Unplug USB cable from the ESP8266 before starting this step, just to be on the safe side.
The screen should be wired up to the as follows:
Display Pins -> NodeMCU board
GND -> G
VCC -> 3V
SCL(or SCK) -> D5
SDA -> D3
If you are finding the table above hard to follow, check out the pictures above.
WARNING! I have seen online that sometimes these displays have a the GND and VCC pins the other way around from my diagram, make sure that you always connect GND to G and VCC to 3V or you may damage your display
Step 7: Moment of Truth!
Plug the USB cable back into the NodeMCU board, congratulations you should now have a working Crypto Currency Display! I really like this OLED screen, its really crisp, even from pretty far away.
Just to note here, the device doesn't need to be plugged into your computer anymore, it fetches data directly via the WiFi so it can be plugged into a standard phone charger or any other source of USB power.
Step 8: A Stand - the Right Way
Now we will need a stand to hold our masterpiece. I'll show two different options for this.
This way would be the more professional way. I made up a case to be printed out on a 3d printer. I am pretty terrible at 3d design, but I did my best!
You can find the files here.
Check the gifs out above for assembly, but its pretty straight forward (although i did use blu tack, aka sticky tack, to hold it all together)
Step 9: A Stand - the Bodge Way
Before I got a 3D printer, I used to be so disappointed when I came across a project online that I wanted to make that required one. This is really a project where you can do whatever you like with it, an old box or lunch box would suit it perfectly.
The quickest and bodgiest solution I could come up was to get a popsicle stick, and put some blu tack up near one end. Stick the display to the blu tack, and add more on top to hold it down. And that's it! Check out the GIF for more detail
The screen remains upright which is all you really need.
Step 10: Conclusion
Hopefully you enjoyed this Instructable!
I had a lot of fun making this project and thought it would be an interesting challenge to make so that people who might not necessarily be makers (yet) could do it. From talking to people, soldering really does put some people off.
As always, if you have any questions please feel free to ask, I will do my best to help out.
For other ESP8266 related projects and info, check out my other instructables or my YouTube channel.
2 People Made This Project!
We have a be nice policy.
Please be positive and constructive.
I made one, and its pretty cool! Thanks for the guide.
Would it be possible to add two separate displays? I'd like to make a big three ticker along side my altcoins.
Is it possible to add multiple ssids?
Hey I'm getting these error codes: Arduino: 1.6.8 (Windows 10), Board:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 9600"
In function 'void addNewHolding(String, float)':
cryptotracker:90: error: 'getNextFreeHoldingIndex' was not declared in this scope
int index = getNextFreeHoldingIndex();
C:\Users\karel\Documents\Arduino\cryptotracker\cryptotracker.ino: In function 'void displayHolding(int)':
cryptotracker:188: error: 'formatCurrency' was not declared in this scope
display.drawString(64, 20, formatCurrency(price));
exit status 1
'getNextFreeHoldingIndex' was not declared in this scope