Exemple d'un afficheur SPI

Pour tester un afficheur OLED sur Home Assistant, j’ai fait un petit programme qui affiche l’élévation et l’azimuth du soleil.
Pour cela, j’ai pris un ESP32 DEVKITV1 et un afficheur OLED 1306 SPI

Câblage pour l'utilisation

Installation dans Home Assistant

(Celle que j’ai faite le 29/10/2024)

  • Tout d’abord, copier la police « BebasNeue-Regular.ttf » dans le répertoire « CONFIG/esphome/ ».
  • Ouvrir l’onglet ESPHome dans Home Assistant.
  • Dans le cadre de l’entité choisie, cliquer sur « EDIT« .
  • Ajouter le programme suivant à la fin du « de base » (après « captive_portal:« ).
  • Cliquer sur « SAVE », puis sur « INSTALL ».
  • Dans la fenêtre qui s’ouvre, choisir « Wirelessly ».
  • Si tout va bien, cela doit fonctionner !!!

Le programme final après ajout de la partie spécifique

# Example configuration entry
spi:
  clk_pin: GPIO18
  mosi_pin: GPIO23
font:
  – file: « gfonts://Roboto »
    id: roboto_20
    size: 20
  – file: « gfonts://Roboto »
    id: roboto_30
    size: 30
sensor:
  – platform: homeassistant
    id: Elevation
    entity_id: sun.sun
    attribute: elevation
  – platform: homeassistant
    id: Azimuth
    entity_id: sun.sun
    attribute: azimuth
   
display:
  – platform: ssd1306_spi
    model: « SSD1306 128×64 »
    update_interval: 10s
    cs_pin: GPIO5
    dc_pin: GPIO4
    reset_pin: GPIO22
    lambda: |-
      it.print(0, 7, id(roboto_20), « Elev. »);
      it.print(0, 43, id(roboto_20), « Azim. »);
      it.printf(it.get_width(), 0, id(roboto_30), TextAlign::TOP_RIGHT, « %.1f° », id(Elevation).state);
      it.printf(it.get_width(), 36, id(roboto_30), TextAlign::TOP_RIGHT, « %.0f° », id(Azimuth).state);