Bonjour à tous, comment allez-vous?
Aujourd’hui au programme, je vous propose un test hardware qui sera mélangé à un tuto . Effectivement, je vais vous parler du Sense Hat pour Raspberry Pi et de comment l’utiliser avec un peu de python. Effectivement comme le Raspberry Pi n’a pas de convertisseur analogique-numérique, on aurait pût penser qu’il serait difficile d’y brancher des capteurs mais c’était sans compter sur les ingénieurs de la fondation Raspberry.
Du coup, comme le Raspberry Pi est complètement à l’ère digitale, il ne dispose pas d’origine de convertisseur analogique-numérique. C’est d’ailleurs une grosse différence par rapport aux Arduino qui eux en possèdent un. Effectivement, le convertisseur analogique numérique permet très facilement de récupérer des données de divers capteurs afin de mesurer des grandeurs physiques en convertissant un signal électrique en bits.
Malheureusement, les Arduinos souffrent également de leur manque de puissance ce qui les rend assez limités pour développer des applications complexes connecté à internet. Ce qui n’est pas du tout un problème pour le Raspberry Pi vu son couple CPU, GPU et RAM…
Les ingénieurs ont été bien inspirés car la plupart des capteurs sont utilisés sur le bus I2C en 3V3 du Raspberry Pi :
- LSM9DS1 : accéléromètre, gyroscope et magnétomètre
- LPS25H : Capteur de pression
- HTS221 : Capteur de température et d’humidité
Par contre pour piloter le joystick et la matrice de led il a fallut ruser car tout est en analogique… Du coup on retrouve un aTTiny88-MUR qui permet la gestion du joystick et des leds. Ce mini Arduino est piloté par SPI depuis le Raspberry Pi directement. J’ai mis le lien vers le schéma électronique dans le paragraphe sources.
Forcément, vous vous doutez bien qu’entre la matrice de led, les capteurs de pression,de température et d’humidité j’étais obligé de faire un petit quelque chose… Surtout que la fondation Raspberry Pi fournit une librairie python très pratique pour piloter facilement ce shield… 👍
Pour vous aider à comprendre à quel point ce shield peut avoir un intérêt, il suffit de savoir qu’un Raspberry Pi et ce shield sont actuellement utilisés dans un programme spatial : https://astro-pi.org/
Seul point noir que j’ai trouvé pour le moment, la chaleur du SOC, pertube les valeurs, j’ai dût faire un offset dans le code. 🙁
Pour l’heure, devinez à quoi ce shield me sert??? Et oui une station météo comme d’habitude… Mais celle-ci est connectée… En effet, le script python envoie les données sur ThingSpeak et la matrice LED sert à afficher les informations utiles. 😀
Concrètement, le script python lit les valeurs de température, d’humidité et de pression atmosphérique du Sense Hat. Puis il lit les valeurs d’utilisation du processeur, de la température du processeur et de la quantité de RAM libre grâce à psutil. En fonction de la température mesurée, l’écriture change de couleur : plus il fait froid plus on va vers le blanc, plus il faut chaud plus on va vers le rouge… Enfin, on affiche ces données sur la matrice led avant d’envoyer les données sur ThingSpeak.
J’ai fait deux versions du script python sur mon repo git. L’une sans animations et l’autre avec une animation random en début et un arc-en-ciel à la fin… Rien de bien compliqué, ce sont les fonctions utilisés en exemple dans la librairie python Sense Hat.
L’avantage de ce modèle de station météo? La rapidité de montage et la facilité de mise en place… Voyez plutôt :
Préparation RPI :
- Enfoncez le Sense Hat sur le Raspberry Pi et branchez les différents câbles clavier, souris, HDMI, Ethernet etc…
- Préparez et configurez votre carte SD comme à votre habitude avec Raspbian.
- Soyez sûr d’avoir la liste des paquets à jours :
sudo apt-get update sudo apt-get upgrade
- Puis on va installer les librairies python requises pour le script :
sudo apt-get install sense-hat python-psutil
Préparation de votre compte ThingSpeak :
- Rendez-vous sur https://thingspeak.com/ et créez-vous un compte si vous n’en n’avez pas déjà un.
- Créez ensuite un channel pour votre station :
- Dans Channel Settings, rentrez les informations nécessaires :
- Enfin il vous faut récupérer votre clé API d’écriture dans API Keys :
Configuration script :
- Récupérez mon fork du repo github officiel pour le Sense Hat:
git clone https://github.com/Anderson69s/python-sense-hat.git
- Rendez-vous dans le dossier python-sense-hat avec :
cd python-sense-hat
- Ouvrez et éditez avec nano par exemple le fichier weather_station_sensor_hat_animations.py ou weather_station_sensor_hat.py et insérez à la ligne 80 votre clé ThingSpeak :
'key':'VOTRE_CLE_THINGSPEAK'
devient par exemple :
'key':’WAZ96RDKQ34T6H8A’
- Puis enregistrez le fichier modifié.
- Enfin pour tester si tout fonctionne bien (toujours dans le dossier python-sense-hat) :
python weather_station_sensor_hat_animations.py & ou python weather_station_sensor_hat.py &
Normalement vous devriez voir arriver des informations sur Thingspeak !!!
Automatisation au démarrage :
Dernier point à voir, comment lancer le script tout seul au démarrage sans que l’on touche à quoi que ce soit? Comme il y a deux techniques en fonction de la distribution que vous utilisez : Raspbian Wheezy ou Raspbian Jessie. Je ne vais pas vous réexpliquer toute la technique.
- Pour Wheezy, vous pouvez passer sans aucun problème par le fichier crontab. En utilisant @reboot cela fonctionne très bien.
- Pour Jessie, il faut passer par systemd. Cela demande un peu plus de manipulations de fichiers mais c’est loin d’être infaisable. Je n’ai pas encore rédigé de tutoriel dessus malheureusement… Mais comme la communauté est géniale, généreuse et qu’il y a des personnes très compétentes, voici le lien magique qui vous aidera grandement : http://www.raspberrypi-spy.co.uk/2015/10/how-to-autorun-a-python-script-on-boot-using-systemd/
Source :
- Schéma Electronique du Sense Hat : https://www.raspberrypi.org/wp-content/uploads/2015/08/Sense-HAT-V1_0.pdf
- Références de la librairie python : http://pythonhosted.org/sense-hat/
- Repo officiel github ce trouve ici : https://github.com/RPi-Distro/python-sense-hat
- Github ThingSpeak de Sirleech : https://github.com/sirleech/thingspeak
- Tutoriel de Matt pour Jessie et systemd : http://www.raspberrypi-spy.co.uk/2015/10/how-to-autorun-a-python-script-on-boot-using-systemd/
@Bientôt Anderson69s













Super tuto. Avez vous résolu le pb de chauffe du raspberry par rapport aux capteurs ?
Bonjour Zig, j’espère que vous allez bien.
Il n’y a pas vraiment de solution pour ce problème… La seule technique que j’ai trouvé, étant de mettre un offset sur la valeur afin de coller à la réalité.
Cordialement, Anders
Bonjour Anders !
merci pour ce bon tutoriel très complet (mise en place, utilisation de Thingspeak, démarrage automatique, …)
et les codes fournis en python 😉
Je compte essayer rapidement cette station : je me demande si avec une nappe de fils on ne pourrait pas mettre de la distance entre le Sense hat et le Raspberry ?
Ok on perd en ergonomie mais on peut gagner en précision .
Sinon, pour le température et l’hygrométrie, on peut aussi utiliser une sonde DHT22
et un peu de montage électronique.
voir là par exemple http://electronicshobbyists.com/temperature-and-humidity-sensor-dht22-raspberry-pi-interfacing/
cordialement
René
Nb: sinon, que pensez vous du développement avec node red ?
Bonsoir René, j’espère que vous allez bien.
Pas de quoi pour le tutoriel, j’ai toujours aimé faire ce genre de chose.
Pour répondre à votre question, il est tout à fait envisageable de déporter le Raspberry du shield grâce à une nappe. En fonction de l’intégration de votre station, cela ne posera pas spécialement de problèmes à mon avis. 🙂
Le DHT22 est bien, mais manque de précision d’après moi, la série des BMP85 et BME280 sont certes un peu plus chers, mais ils sont plus précis et offrent la possibilité d’avoir la température, l’humidité et la pression atmosphérique.
Pour Node Red, j’en entends pas mal parler, mais je n’ai pas eu le loisir de m’y intéresser de plus près… Je ne suis pas spécialement fan, de la programmation en format objet de NodeJS même si je l’utilise en domotique chez moi. C’est très compliqué à maintenir par rapport à un script Python par exemple. De plus pour piloter les GPIO depuis Node-Red sur un Raspberry, il faut installer une librairie Python… Autant tout faire en Python d’après moi…
Après c’est avant tout des préférences personnelles en fonction de votre expérience en programmation…
@Bientôt Anders
Salut Anders !
Bien noté tes remarques sur les sondes
je compte utiliser une sonde HDC1080 ou (voire et !) une sonde BME280
je me demande si les 2 sondes sont possibles sur un seul Raspberry ?
sinon, il y a le « cloud » ‘ Adafruit io qui semble pas mal
https://cdn-learn.adafruit.com/downloads/pdf/adafruit-io-air-quality-monitor.pdf
à+
René
Bonsoir René, j’espère que vous allez bien.
Normalement, le HDC1080 et le BME280 fonctionnent tous les deux en i2c, s’ils n’utilisent pas la même adresse, cela ne doit pas poser problème de les utiliser en même temps sur le même Raspi.
J’ai déjà vu le cloud de Adafruit, je n’ai jamais testé, mais il faut que je regarde cela de plus près.
@Bientôt Anders