Suivre le cours du Bitcoin (mais pas que) avec un écran LCD
Résultat
Le but de l’opération est d’obtenir un résultat similaire à celui-ci. On recupère le cours du bitcoin via une API, puis on l’affiche sur un écran LCD. On actualise cette valeur chaque minute. Même si cela peut paraître compliqué, la réalité est bien différente.
Matériel nécessaire
- Raspberry Pi
- Ecran LCD + module I2C
- 4 câbles femelle/femelle
- clef Wifi (802.11n) OU câble ethernet (pas forcément nécessaire, ça dépend du Raspberry)
- micro SD contenant Raspbian
Le matériel a été acheté sur Ebay. Ebay propose un grand nombre d’offres en éléctronique a des prix très corrects. C’est donc un très bon endroit pour acheter du matériel. Cependant, il ne faut pas être pressé au niveau des délais de livraison.
Cablage
Le cablage est très simple à effectuer. En effet, le protocole I2C le simplifie grandement. Sans I2C le cablage ressemblerait à ça :
Mais grâce au module I2C qui gère l’envoie et la réception des données on peut se contenter d’effectuer seulement ce cablage :
Pour détailler le cablage :
- Connecter la broche SCL1 du Raspberry à la broche SCL du module I2C
- Connecter la broche SDA1 du Raspberry à la broche SDA du module I2C
- Connecter la broche 5V du Raspberry à la broche VCC du module I2C
- Connecter la broche GND du Raspberry à la broche GND du module I2C
Installation des dépendances du Raspberry
Pour commencer, il va falloir effectuer les mises à jour :
sudo apt-get update sudo apt-get upgrade sudo reboot
Ensuite, on va ajouter I2C au démarrage :
sudo leafpad /etc/modules
Ajouter cette ligne à la fin du fichier :
i2c-dev
On va décommente la ligne #dtparam=i2c_arm=on du fichier /boot/config.txt :
sudo leafpad /boot/config.txt
Installer les paquets suivants qui seront nécessaires au fonctionnement du script :
sudo apt-get install python-smbus i2c-tools
Ensuite redémarrer le Raspberry pour que les changements soient pris en compte :
sudo reboot
On va maintenant récupérer l’adresse du périphérique I2C :
sudo i2cdetect -y 0
sudo i2cdetect -y 1
Sur l’image, on voit que l’adresse de notre périphérique est le 3f , on la note car on en aura besoin pour la suite.
Le code
Je vous ai préparé une archive qui contient le code pour afficher en direct le cours du Bitcoin.
L’archive contient 3 fichiers :
– i2c_lib.py (une bibliothèque qui va gérer l’écriture sur l’écran LCD)
– lcddriver.py (une bibliothèque qui va gérer le pilotage et la configuration de l’écran LCD)
– LCD.py (le fichier que j’ai développé qui récupère le cours du Bitcoin et l’affiche sur l’écran)
LCD.py , le fonctionnement
import json #On importe la bibliothèque pour lire le Json import urllib2 #On importe la bibliothèque qui va interroger l'API import lcddriver #On importe la bibliothèque lcddriver.py j = urllib2.urlopen("https://api.coinbase.com/v2/prices/spot?currency=EUR").read() #On récupère les données de l'API j = json.loads(j) #On convertit les données au format Json content = str(j['data']['amount']) + ' euros' #On crée une variable qui sera le contenu de la première ligne lcd = lcddriver.lcd() #On initialise l'objet lcd.lcd_clear() #On supprime le contenu présent sur l'écran LCD lcd.lcd_display_string("BTC",1) #On affiche "BTC" sur la première ligne lcd.lcd_display_string(content,2) #On affiche le contenu de la seconde ligne
Dans notre cas, on récupère la valeur du Bitcoin sur l’API de coinbase mais on pourrait très bien récupérer la valeur ailleurs. On pourrait aussi modifier le code pour récupérer une donnée totalement différente. Il existe des méthodes pour créer des API renvoyant des données qui ne sont pas prévues pour être lues via une API. J’ai par exemple développé un script me permettant de lire le solde de mon compte Partenaires Amazon à l’aide de CasperJS, la seule limite étant votre imagination.
Installation
mkdir BitcoinLCD cd BitcoinLCD wget https://www.securemydata.fr/download/BitcoinLCD.zip unzip BitcoinLCD.zip
Dans le fichier lcddriver, il faudra modifier la constante ADDRESS par 0x3F (dans mon cas). 3F étant à l’adresse du périphérique que l’on a récupéré un peu avant :
leafpad lcddriver.py
Maintenant que tout est bien configuré, on va configurer une tâche cron pour que le script s’éxécute toutes les minutes :
crontab -e
Et on ajoute la ligne suivante :
* * * * * python /home/pi/BitcoinLCD/LCD.py
Conclusion
On a donc réalisé un système permettant de suivre le cours du Bitcoin en très peu de temps. On peut imaginer pleins de variantes à ce système… Par exemple, on pourrait faire sonner une alarme quand le Bitcoin descend en dessous d’une certaine somme, ce qui peut permettre d’investir au bon moment.
Si vous avez aimé ce tutoriel, n’hésitez pas à le partager !