This is something I wanted to build for a long time: a Bitcoin price watcher and indicator as an elegant desk accessory.

Below I am going into the process which led me to a physical product and what’s next for version 2.0

Took the official image of the Bitcoin logo and imported it into FreeCAD.

Sketched the outline of the logo and extruded it for 10mm.

(In hindsight I could have used the SVG, but you know, n00bs)

I didn’t have any orange filament, so I printed it in black.

Gave it a few layers of orange spray-paint and it turned out pretty close to the original.

The spray paint gives it the glossy look, which I really like.

The color is perhaps a bit darker than the original orange, but it’s close enough.

Also, I admit the paint job didn’t turn out perfect and could have been better.

btc-freecad

The logo measures 140mm x 93mm x 10mm.

bitcoin desk watcher

The 3D printed case

btc case top

btc case bottom

The two round holes on the top are for two LEDs (green + red) to indicate a positive or negative trend since the opening of the current day.

I put them on the back to give a clean look and illuminate nearby walls on the back with the current trend.

Initially I had them in front, but then I moved them to the back, since they glaring too strong and caused unnecessary distraction.

The two square cutouts are for snapping the Bitcoin logo in place.

The rectangular cutout in the front is for the small 0.96" SSD1306 OLED display module.

On the back there is a micro-USB port for powering the ESP8266.

The lid snaps in place perfectly.

So it’s easy to put together without screws or glue, and useful for maintenance and upgrades during the testing phase.

The case measures 60mm x 60mm x 40mm.

Electronics and programming the ESP8266

The two LEDs are paired with 220 Ohm resistors to reduce current to their nominal rating.

Hooked up the SSD1306 OLED display and used the related Arduino library Adafruit_SSD1306.h and Adafruit_GFX.

To get the current Bitcoin stats, I’m using the Coinbase PRO API with the following libraries:

  • ArduinoJson.h
  • WiFiClientSecure.h

For Wi-Fi connectivity I’m using the ESP8266WiFi.h library and connect to my home network.

The rest of the program is about continuously (every 10min) get the current Bitcoin stats, determining the change/trend and displaying it on the OLED screen.

I experimented with scrolling text for the SSD1306 to display the Bitcoin price in a “Wall-street fashion”, but I preferred the static text.

To do that you can use the function display.startscrollleft and create a “marquee-style” scrolling text on the display.

After getting the Bitcoin stats from the API, I disconnect from the Wi-Fi, and connect again when needed to get fresh data.