Site icon Voina Blog (a tech warrior's blog)

#RaspberryPi #Pimoroni Unicorn Hat HD #Bitcoin Banner

Advertisements

I all this BTC craze I wanted a nice way to get all the time the latest Bitcoin value and the value of my BTC stash ๐Ÿ™‚

Because I had laying around an old Raspberry Pi 3 and a Pimoroni Unicorn Hat HD this was easy to do and the result is spectacular.

STEP 1: Get the BTC quote

This is easy to do using the free information from following URL. Note that a JSON with several currencies is returned.

https://blockchain.info/ticker

STEP 2: Write the code

I started from the example that comes with the Unicorn Hat HD that displays your IP.

The only method I wrote is in fact get_latest_bitcoin_price(). This method simply calls the free API call from blockchain.info and extracts the latest BTC/EUR quotation from the JSON.

Note that under BITCOIN_STASH variable you can put the value of your stash in BTC so you will know how โ€œrichโ€ you are every 10 minutes.

See the full code python attached.

import socket
import time
import unicornhathd
import requests
try:
    from PIL import Image, ImageDraw, ImageFont
except ImportError:
    exit('This script requires the pillow module\nInstall with: sudo pip install pillow')
BITCOIN_API_URL = 'https://blockchain.info/ticker'
BITCOIN_STASH = 0.5
def get_latest_bitcoin_price():
    response = requests.get(BITCOIN_API_URL)
    response_json = response.json()
    # Convert the price to a floating point number
    response_string = "{0:.2f}".format(float(response_json[u'EUR'][u'last'])*BITCOIN_STASH)
    return "BTC: "+str(response_json[u'EUR'][u'last'])+" EUR" + "......... BTC STASH: "+response_string+" EUR"
def create_image_from_text(in_text):
    colours = (255, 255, 250)
    font_file = '/usr/share/fonts/truetype/freefont/FreeSansBold.ttf'
    font_size = 10
    font = ImageFont.truetype(font_file, font_size)
    w, h = font.getsize(in_text)
    text_x, text_y = width, 0
    text_width, text_height = width, 0
    text_width += w + width                # add some padding so the ticker scrolls off the unicorn hat
    text_height = max(text_height, h, 16)  # no more than the size of the unicorn hat
    image = Image.new('RGB', (text_width, text_height), (0, 0, 0))
    draw = ImageDraw.Draw(image)
    draw.text((text_x, text_y), in_text, colours, font=font)
    return (image, text_width)
# DISPLAY
def scroll_txt(image, text_width):
    unicornhathd.rotation(90)
    for scroll in range(text_width - width):
        for x in range(width):
            for y in range(height):
                pixel = image.getpixel((x + scroll, y))
                r, g, b = [int(n) for n in pixel]
                unicornhathd.set_pixel(width - 1 - x, y, r, g, b)
        unicornhathd.show()
        time.sleep(0.04)
    unicornhathd.off()
# one stop call for scrolling text
def scroll_text(in_txt):
    image, text_width = create_image_from_text(in_txt)
    scroll_txt(image, text_width)
if __name__ == '__main__':
    width, height = unicornhathd.get_shape()  # 16, 16 by default
    ticker = get_latest_bitcoin_price()
    scroll_text(ticker)
    scroll_text(ticker)
    scroll_text(ticker)
    scroll_text(ticker)
    scroll_text(ticker)

STEP 3: Create a Linux service that will retrieve the quotation every 10 minutes

Create a file show_btc.service

 [Unit]
 Description=display IP on the unicorn HD hat
 [Service]
 Type=idle
 ExecStart=/usr/bin/python3 /home/pi/Pimoroni/unicornhathd/George/show_btc/show_btc.py
 Restart=always
 RestartSec=600
 [Install]
 WantedBy=multi-user.target

Then copy it to the systemd services directory and register it as a service

sudo cp show_btc.service /etc/systemd/system/
sudo systemctl enable show_btc.service
sudo systemctl start show_btc.service

STEP 4: Enjoy your new BTC banner !!!

BTC scrolling banner


STEP 5: Download full setup

See the link to download the whole setup.

Exit mobile version