Archives par étiquette : waveshare

Raspberry Pi Zero W : dév python en biologie

Il arrive parfois qu’un client ait besoin d’un développement particulier, ici pour effectuer des mesures biologiques. Je ne rentrerai volontairement pas dans les détails pour le moment, mais je peux vous montrer le proto en cours d’assemblage :

  • Raspberry Pi Zero W
  • Ecran LCD avec boutons et mini-joystick
  • Commande d’une LED via un GPIO
  • Sonde en I2C (visible à droite de la vidéo)

 

On presse sur le mini-joystick, un flash, le capteur mesure la luminosité du moment et enregistre la valeur dans un fichier CSV.
Bien entendu, ceci n’est qu’un proto destiné à valider une solution technique : les vrais éléments prendront place plus tard, bien plus tard.

 

Waveshare e-Paper et Raspberry Pi ZeroW

Waveshare propose des écrans e-Paper de bonne qualité et relativement faciles à installer sur un simple Raspberry Pi Zero W dans notre exemple :

Les instructions d’installation sont sur ce lien.

Le raccordement au Raspberry Pi Zero W est facilité par la présence d’un connecteur JST et de connecteurs à enficher sur le connecteur GpIO de la framboise :

Vous pourrez imprimer en 3D le boitier disponible sur Thingiverse :

En Python, la programmation est relativement simple en installant les librairies epd4in2 disponibles sur Github.

Ces librairies permettront d’afficher une image bmp que vous aurez au préalable générée avec The Gimp par exemple, mais également de venir tracer, via un script Python utilisant PIL, des lignes, des cercles, écrire du texte ou insérer des images comme sur cet exemple d’affichage :

Ici, nous avons récupéré en MQTT les températures et pression locales, via un appel curl les heures de lever et coucher du soleil ainsi que la température à Lyon :

    proc3 = subprocess.Popen(['curl -s http://domogeek.entropialux.com/sun/nantes/sunset/now'], stdout=subprocess.PIPE, shell=True)
    proc4 = subprocess.Popen(['curl -s http://domogeek.entropialux.com/sun/nantes/sunrise/now'], stdout=subprocess.PIPE, shell=True)
    proc5 = subprocess.Popen(['curl -s http://wttr.in/Lyon?format=%t'], stdout=subprocess.PIPE, shell=True)
  
    (out3, err) = proc3.communicate()
    (out4, err) = proc4.communicate()
    (out5, err) = proc5.communicate()
    out5 = out5[:-3]

Les informations récupérées sont stockées dans les variables out3, out4, et out5. A noter qu’out5 supprime les 3 derniers caractères (°C) pour ne pas perturber l’affichage e-Paper.

Pour afficher les images et les re-dimensionner :

    temperature = Image.open('/home/pi/icones/tempelogo.png')
    temperature = temperature.resize((60,60))
    qnh = Image.open('/home/pi/icones/pression.png')
    qnh = qnh.resize((60,60))
    sun = Image.open('/home/pi/icones/sun.png')
    sun = sun.resize((60,60))

    image.paste(temperature,(1,1), temperature)
    image.paste(qnh,(240,1), qnh)
    image.paste(sun,(1,70), sun)

Vous adapterez les noms de fichier selon vos besoins, bien évidemment.

Attention toutefois à ne pas actualiser trop souvent votre écran, les e-Paper ont la réputation de ne pas résister à trop d’appels, sinon passez sur un écran LCD tactile, la version 7″ du Raspberry Pi est relativement sympa et lisible, mais plus gourmande en énergie.