SX1276 built-in temperature sensor

Bonjour,

je cherche comment exploiter le capteur de température embarqué dans le chip sx1276 qui équipe les module esp32/ttgo-LoRa. Je n'ai rien trouvé sur la toile excepté un code C que je ne sais exploiter.

Avez-vous une idée ?

C'est un chip SPI. Lire RegTemp à l'adresse 0x3C.
Voir la datasheet (5.5.7. Temperature Measurement).

Si tu donnais un lien sur le code en question ?

Bonjour,

oui c'est dans cette datasheet que j'ai trouvé cette info intéressante sur l'existence d'un capteur de température intégré.

Voilà le lienhttps://github.com/x893/SX1231/blob/master/SX12xxDrivers-2.0.0/src/radio/sx1276-FskMisc.c

Lacuzon:
Bonjour,

oui c'est dans cette datasheet que j'ai trouvé cette info intéressante sur l'existence d'un capteur de température intégré.

Voilà le lienhttps://github.com/x893/SX1231/blob/master/SX12xxDrivers-2.0.0/src/radio/sx1276-FskMisc.c

Bonjour
Au passage bien prendre aussi çà en compte 8) pour voir/determiner si c'est bien un capteur trés utile à tes projets :smiling_imp:

Due to process variations, the absolute accuracy of the result is +/- 10 °C. Higher precision requires a calibration procedure

Effectivement :astonished:

Oui artouste, j'avais pas noté. Cela dit cette "accuracy" est semble-t-il due aux fluctuations lors du processs ce qui signifie qu'un étalonnage est sans doute nécessaire. J'avais lu quelque part qu'il fallait étalonner. Je comprends mieux pourquoi...

Bonjour,

j'ai continué à prospecter mais je n'ai rien trouvé de vraiment simple... En conséquence, à moins que vous ayez une idée ou découvert la bibliothèque ou la commande adéquate, je vais me tourner vers une solution plus simple, l'adjonction d'un classique DHT22 qui pourra en plus me donner le degré d'humidité.

Dans mes applications (pèse-truc) la dépendance poids-température semble faible, c'est vrai dans le cas d'une balance intérieure où la température oscille autour de 19/20 degrés. Pour une ruche (ou tout dispo extérieur) les variations de température sont de l'ordre de 20 degrés sans problème. Il faut donc corriger.

Je vais m'y atteler de ce pas...

Comme d'hab merci des coups de main.

Cordialement

Ce capteur mesure la température interne du SOC. Il ne donne aucune information sur la température ambiante. Il sert à savoir si les processeurs fonctionnent dans de bonnes conditions, c’est à dire à une température inférieure à 125°C.

Pour une application dans un environnement très chaud, genre planche de bord d’une voiture au soleil, ou moteur à explosion, la température locale peut monter vers 80°C et la charge de travail des cœurs de processeur de l’ESP32 le fait chauffer encore plus. Ce capteur permet de mesurer la température et vérifier s’il faut diminuer la charge pour le tempérer.

Un périphérique SPI radio comme le SX1276 chauffe moins qu'un SOC mais quand même, il y a la partie émission radio qui dissipe de la chaleur. La température de la puce n'est pas la température ambiante , même en la mesurant au réveil juste après une longue phase de sommeil. Le réchauffement de la puce est rapide

Oui c'est bien vrai, j'avais l'expérience du capteur intégré au DS3231 qui lui colle vraiment à la température ambiante mais qui, il est clair, est sollicité de manière uniforme au cours du temps.

A contrario, j'ai l'expérience du rapsberry 3 dont la température varie brutalement de + de 10 degrés en fonction de la sollicitation.

Donc pas de regret, je pars sur un DHT22.

Désolé, je croyais qu'on parlait du capteur de température interne de l'esp32

Ah parce que le chip esp32 possède aussi un capteur thermique ?

Lacuzon:
Ah parce que le chip esp32 possède aussi un capteur thermique ?

Bonjour Lacuzon
oui , ainsi qu'un capteur hall (pour que tes abeilles ne perdent pas leur nord ? ) :grin:

Le capteur hall je savais et recueillais l'info. Si c'est aussi simple avec le capteur thermique, je vais encore pouvoir m'amuser...

Le charme de la retraite :slight_smile:

pas fait d'essai.... on lit par endroit que le capteur de température interne n'est plus présent ou plus fonctionnel , ou plus accessible....dans les ESP32 actuels, Içi par exemple :

al1fch:
pas fait d'essai.... on lit par endroit que le capteur de température interne n'est plus présent ou plus fonctionnel , ou plus accessible....dans les ESP32 actuels, Içi par exemple :

ESP32 internal temperature sensor not working · Issue #2422 · espressif/arduino-esp32 · GitHub

Bonne remarque al1
dans le dernier DS esp32 series de 2020 (V 3.3 ) , il n'y a plus de notion/mention de capteur de T° "utilisable"
sur un ancien DS de 10/2016 , il y avait cette mention

4.6 Temperature Sensor
The temperature sensor generates a voltage that varies with temperature. The voltage is internally converted via
an analog-to-digital converter into a digital code.
The temperature sensor has a range of -40°C to 125°C. As the offset of the temperature sensor varies from
chip to chip due to process variation, together with the heat generated by the Wi-Fi circuitry itself (which affects
measurements), the internal temperature sensor is only suitable for applications that detect temperature changes
instead of absolute temperatures and for calibration purposes as well.
However, if the user calibrates the temperature sensor and uses the device in a minimally powered-on application,
the results could be accurate enough

J'ai fait l'essai avec mes esp32 ttgo, ça marche effectivement et les températures de l'ordre de 53 degrés semblent cohérentes.

Le fichier d'essai piqué sur la toile est le suivant :

#ifdef __cplusplus
extern "C" {
#endif
uint8_t temprature_sens_read();
#ifdef __cplusplus
}
#endif
uint8_t temprature_sens_read();

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.print("Temperature: ");
  
  // Convert raw temperature in F to Celsius degrees
  Serial.print((temprature_sens_read() - 32) / 1.8);
  Serial.println(" C");
  delay(5000);
}

Pour les puristes qui aiment le bon anglais, évitez de corriger temprature...

Edité le 27/01/2020

Pas sûr que la température relevée soit significative... Sur deux esp32/ttgo différents, la température relevée est la même 53.33 degrés. L'un des dispos est équipé d'un radiateur donc on pourrait s'attendre à une différence de température.

Je n'ai pas creusé la chose mais j'ai des doutes sur l'existence du capteur de température.

En effet : 53.33 * 1.8 + 32 = 127.99
Trop près de 128 pour être honnête...

constatation allant dans le même sens que le lien donné plus haut en #14
mieux vaut, de mon point de vue,oublier cette 'présence de capteur' sur les premières moutures d'ESP32

Même résultat sur un module Lolin32 V1.0.0