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.