Saltar al contenido

¿Cómo construir un bitclock?

¿Tienes la imperiosa necesidad de saber en todo momento el precio actual del bitcoin, la altura del último bloque minado, o las fees estimadas para que tus transacciones se confirmen en el próximo bloque? Estas de suerte, vamos a explicar cómo construir un bitclock por apenas 40 €.

Lista de la compra.

Necesitaremos el siguiente material. Dejo los enlaces de Aliexpress de las tiendas donde he comprado yo cada elemento, pero en realidad lo podéis comprar donde queráis (amazon, etc…)

  • 1 x Raspberry Pi Zero W, si puede ser con el pin header ya montado, esto te facilitará las cosas enlace
  • 1 x cable micro hdmi a hdmi (o un adaptador micro hdmi a hdmi si ya tienes cable) enlace
  • 1 x fuente alimentación para Raspberry Pi Zero (si la necesitas. En caso que tengas alguna regleta donde conectarla por USB con salida de 5V no sería necesaria)
  • 1 x pantalla waveshare e-ink de 2’13 pulgadas enlace
  • 1 x teclado USB (puedes usar cualquier teclado que tengas por casa, ya que va a ser solo un momento) y un adaptador USB a mini-USB para poder conectarlo enlace
  • 1 x tarjeta microSD de 8 GB o superior

Montaje

Si hemos comprado la Raspberry Pi Zero W con el pin header ya montado, no habrá ninguna complicación. Simplemente encajaremos la pantalla en el puerto GPIO de la Raspberry y listo.

Sistema operativo de la Raspberry Pi Zero

Descargar el sistema operativo Raspberry Pi OS Lite de la siguiente dirección oficial https://www.raspberrypi.org/software/operating-systems/

Debemos grabar el Sistema Operativo en una tarjeta SD de tamaño suficiente (con una pequeña de 1 GB debe bastar). Para grabar la imagen yo personalmente uso le aplicación Etcher. Es multiplataforma y la podéis descargar aqui

Configuración y primeros pasos

Insertamos la tarjeta SD en la Raspberry Pi Zero, conectamos el cable HDMI al monitor, un teclado y conectamos a la corriente. Nos conectamos con el user: pi , password: raspberry, y ejecutamos el siguiente comando:

sudo raspi-config

En el menú configuración que aparece realizamos los siguientes cambios:

Configurar wifi System options / Wireless LAN: conectar al wifi de casa (escribir el nombre de la red y la contraseña)

Activar SSH Interface options / SSH / enable

Activar SPI Interface options / SPI / enable

Una vez hecho esto, ya podríamos en teoría desconectar monitor y teclado de nuestra Raspberry Pi y continuar todo el proceso desde un terminal SSH que abriríamos desde cualquier ordenador que tengamos en la misma red local. Para ello necesitamos primero obtener la dirección IP de la raspberry:

ifconfig

Tras la ejecución de este comando obtendremos una salida como la siguiente:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.136  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a21:977c:c3f5:8fee  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:ec:d7:d8  txqueuelen 1000  (Ethernet)
        RX packets 22986  bytes 17167770 (16.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7194  bytes 1042225 (1017.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Debemos anotar la dirección inet que aparece en el interfaz wlan0, en el caso del ejemplo sería inet 192.168.1.136

Ahora, para conectar a nuestra Raspberry Pi desde cualquier otro ordenador que se encuentre en la red local, abriremos un terminal en dicho ordenador (En windows, con el comando cmd, en Mac y linux abriendo un terminal) y ejecutaremos:

ssh pi@<dirección ip de la raspberry>

El sistema nos pedira la contraseña del usuario pi. Escribiremos raspberry

Instalar herramientas y dependencias

sudo apt-get update
sudo apt-get install git
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install libatlas-base-dev

Descarga del código del script

Descargamos el proyecto desde github

git clone https://github.com/frangb/bitclock

Instalamos los paquetes requeridos

cd bitclock
sudo pip3 install -r requirements.txt

Ejecución del script

Para iniciar el script de manera manual, ejecutaremos el siguiente comando desde la carpeta del proyecto:

python3 btc_ticker.py [-h] [-t TIME] [-c {USD,EUR}] [-d {PRICE,BLOCK,PRCBLK}] [-tz TIMEZONE]

Disponemos de los siguientes argumentos opcionales:

-h, –help: Muestra un mensaje de ayuda explicando el uso de cada uno de los parámetros opcionales.

-t, –time: tiempo de refresco (en segundos) tras el que queremos que bitclock actualice el precio. Te recomiendo no usar un intervalo muy corto ya que la página desde donde se obtienen los datos podría bloquear tu IP. Un intervalo de 5 (300) o 10 (600) minutos debe funcionar bien. Si no se indica nada, por defecto se tomarán 60 segundos.

-c, –currency: indicar USD o EUR segun la moneda que queramos utilizar. Si no se indica nada, por defecto se mostrará en USD.

-d, –display: información que mostraremos en la pantalla. Indicar PRICE si queremos unicamente mostrar el precio, BLOCK si queremos mostrar la altura del bloque actual y las fees estimadas para confirmación inmediata / 30 min / 1 hora, o PRCBLK si queremos que la pantalla vaya alternando entre ambos modos. Si no se indica nada, por defecto se mostrará el precio.

-tz, –timezone: esto se usa para que aparezca correctamente la hora de la ultima actualización en la parte superior de la pantalla. Puedes consultar las zonas horarias disponibles aqui. Elige una de las zonas de la columna «TZ database name», por ejemplo «Europe/Madrid». Si no se indica nada, por defecto se usará la zona «Europe/Madrid».

a) Si queremos que se el script inicie automáticamente al enchufar la Raspberry Pi Zero, debemos añadir la siguiente linea al archivo rc.local. Para editar el archivo utilizaremos el siguiente comando:

sudo nano /etc/rc.local

Al final del archivo, antes de la linea exit 0, añadimos la siguiente línea:

python3 /home/pi/bitclock/btc_ticker.py -t 300 -c USD -d PRICE -tz Europe/Madrid &

En este ejemplo he utilizado como intervalo de refresco 5 minutos (300 segundos) y como zona horaria Europe/Madrid, pero puedes cambiar estos parámetros a tu conveniencia.

Finalmente para guardar los cambios y salir del editor, pulsaremos «Ctrl + X», y cuando nos pregunte si queremos guardar los cambios, presionaremos «Y».

b) Si queremos poner en marcha el script nosotros manualmente, y queremos que continúe en ejecución aun después de haber cerrado la sesión SSH con nuestra Raspberry Pi, debemos ejecutarlo de la siguiente forma:

nohup python3 /home/pi/bitclock/btc_ticker.py -t 300 -c USD -d PRICE -tz Europe/Madrid

Opcional

Si la luz verde del LED de la Raspberry Pi Zero W nos parece molesta, podemos desactivarla mediante siguiente comando:

echo none | sudo tee /sys/class/leds/led0/trigger

Esta linea también la podemos añadir en el archivo rc.local si lo deseamos, para que la luz se apague siempre al reiniciar la Raspberry Pi Zero

¿Cómo actualizar?

Si el proyecto ha sufrido algún cambio y deseas actualizarlo, únicamente tienes que acceder por SSH a tu Raspberry Pi Zero, borrar la carpeta del proyecto mediante el comando:

rm -rf bitclock

y a continuación volver a descargar el repositorio con el siguiente comando:

git clone https://github.com/frangb/bitclock

Opciones para la carcasa

Si te animas a construir una carcasa hecha con piezas de LEGO, en la subcarpeta «lego» encontrarás un modelo y la lista de piezas necesarias para construirlo. Por supuesto, este modelo es sólo una sugerencia, y si lo deseas puedes echarle imaginación y construir el tuyo propio, de manera que tu bitclock se convierta en una pieza única.

bitclock
Bitclock hecho con piezas de lego

Si tienes acceso a una impresora 3D, Lunaticoin ha preparado este fantástico modelo para que tu bitclock luzca como en las siguientes imágenes:

Encontrarás todo lo necesario para imprimir las piezas del modelo 3D en https://github.com/frangb/bitclock/tree/master/cases/3d_printed

¡Y esto es todo! ¡Disfruta de tu nuevo bitclock!

Sobre el autor de este artículo

Informático y apasionado por la tecnología.
Co-fundador de https://blockchain3rs.com/
Si te ha gustado el proyecto, puedes seguirme en Twitter @fgbernal o dejarme una propina a través de Lightning Network