Raccordement sonde PT100 sur GPIO du Raspberry

Bonjour
Petit message aux électroniciens ; je désire moi aussi essayer d’intégrer des sondes PT100 sur un Raspberry.

J’ai vu qu’il existait dans le commerce pas mal de convertisseurs; entre 2 et 15€, à base de 31865, prévue pour, on dirait qu’il n’y a que 4 fils à brancher sur le GPIO, à confirmer? et comment en raccorder plusieurs (3) ?
@stephtrids semble l’avoir fait mais il ne parle pas du hardware, j’imagine que si on raccorde bien, il sera possible de lire cela dans HomeAssistant?
Merci de vos infos…

Salut,

Une recherche sur google ou youtube devrait te remonter des tutos ou des démos pour faire ça.
Tu trouvera surement plus facilement des exemples avec des DS18B20 ou des DHT pour la température.
Ca va dépendre de ton besoin que tu ne précise pas, les sondes numériques semblent plus faciles à mettre en place sur Pi.

Concernant le GPIO, si c’est pour brancher directement sur le Pi qui fait tourner HA, il faut savoir que HA a arrêté de supporter et déconseille l’accès aux GPIO en standard il y a quelques mois. Y’a une version sur HACS cela dit.
Si c’est pour mettre sur un Raspberry autre que le serveur HA, un petit script python qui fait du MQTT c’est faisable facilement aussi.

Bonjour
oui je sais que je pourrais trouver d’autres sondes mais dans mon cas, c’est une rénovation, refaire une régulation de récupérateur de chaleur, pour un ami, un petit truc tout simple avec 3 sondes et un relais. Mais ses sondes sont déjà en position alors on ne peut pas changer la technologie. Google, me donne beaucoup d’exemple pour en connecter une, mais pas trop d’info pour en lire plusieurs, et surtout si ca sera intégrable dans HomeAssisant.
Je pensais que quelqu’un avait peut être déjà pu faire cela.

En regardant sur Adafruit, leur tuto pour utiliser leur ampli dit sur la 2ème page:

If you want to connect multiple MAX31865’s to one microcontroller, have them share the SDI, SDO and SCK pins. Then assign each one a unique CS pin.

Donc c’est possible d’en utiliser plusieurs sur un Pi ou ESP, mais il faut plusieurs amplis… ça chiffre vite.
En plus faut 6 fils vu que ça communique en SPI.

Pour revenir sur l’intégration dans HA. comme je disais faire ça sur le serveur HA est faisable mais pas recommandé.
En passant soit un un Pi dédié c’est faisable facilement en MQTT, l’autre possibilité c’est de faire ça en ESP32 avec ESPHome, il sais gérer l’ampli par défaut pas besoin de programmation.

Bonjour @AlexHass ; merci merci.
Oui ca j’avais trouvé, mon problème est d’en lire plusieurs.
C’est facile avec un module mais je n’ai pas trouvé comment raccorder plusieurs modules sur le même RPI ?
En parallèle? j’imagine qu’il leur faut un adressage à chacune ?
Et comment écrire le soft pour faire tout ca ?
Tu proposes de les mettre sur un RPI dédié, mais le problème reste le même, quel logiciel faut il utiliser dans ce RPI pour lire toutes les sondes ?

C’était expliqué dans la citation que j’avais mis avant… tous les fils peuvent être partagés entre plusieurs modules, sauf le pin CS qui doit être sur un GPIO différent pour chaque module. C’est ça qui fait office d’adressage.

Ah ben là comme j’ai aussi écris avant:

  • Sur Pi il faut trouver une librairie python pour le MAX31856 et faire un script qui va bien. (Adafruit en a surement une)
  • Sur Arduino ou ESP il y a la librairie donnée par Adafruit directement disponible.
  • Sur ESP avec ESPHome, il y a le lien que j’ai donné avec des exemples.

Y’a l’embarras du choix :slight_smile:

Merci merci, je vais aller bien relire cela en profondeur…!

bonjour Jippy
J’utilise un esp32 avec 2 max31865 et 2 sonde PT100. L’esp32 est intégré à Home Assistant

voici le code :

sensor:
  - platform: max31865
    name: "Temperature ECS Haut"
    cs_pin: GPIO5 
    update_interval: 10s
    id: ecs_haut
    reference_resistance: 430.0
    rtd_nominal_resistance: 100.0
    rtd_wires: 2
    mains_filter: 50 Hz
    
  - platform: max31865
    name: "Temperature ECS Bas"
    cs_pin: GPIO4
    update_interval: 10s
    id: ecs_bas
    reference_resistance: 430.0
    rtd_nominal_resistance: 100.0
    rtd_wires: 2
    mains_filter: 50 Hz
    
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 10s
    unit_of_measurement: dB
    accuracy_decimals: 0
    force_update: false
    icon: mdi:wifi
    
  - platform: uptime
    id: uptime_seconds
    name: "Uptime Sensor"
    update_interval: 30s
    unit_of_measurement: s
    accuracy_decimals: 0
    force_update: false
    icon: mdi:timer
    
text_sensor:
  - platform: template
    name: Uptime
    update_interval: 30s
    icon: mdi:clock-start
    lambda: |-
      int seconds = (id(uptime_seconds).state);
      int days = seconds / (24 * 3600);
      seconds = seconds % (24 * 3600);
      int hours = seconds / 3600;
      seconds = seconds % 3600;
      int minutes = seconds /  60;
      seconds = seconds % 60;
      if ( days ) {
        return { (String(days) +"d " + String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( hours ) {
        return { (String(hours) +"h " + String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else if ( minutes ) {
        return { (String(minutes) +"m "+ String(seconds) +"s").c_str() };
      } else {
        return { (String(seconds) +"s").c_str() };
      }
1 « J'aime »

super, merci beaucoup