probleme fonctionnement sonde SHT20

Coucou la compagnie , j'ai achété une sonde de température / humidité SHT20 sur alibaba ( x12962)
j'ai trouvé un code sur github :

le code:

/*!
 * @file  DFRobot_SHT20_test.ino
 * @brief DFRobot's SHT20 Humidity And Temperature Sensor Module
 * @n     This example demonstrates how to read the user registers to display resolution and other settings.
 *        Uses the SHT20 library to display the current humidity and temperature.
 *        Open serial monitor at 9600 baud to see readings.
 *        Errors 998 if not sensor is detected. Error 999 if CRC is bad.
 * Hardware Connections:
 * -VCC = 3.3V
 * -GND = GND
 * -SDA = A4 (use inline 330 ohm resistor if your board is 5V)
 * -SCL = A5 (use inline 330 ohm resistor if your board is 5V)
 */

#include <Wire.h>
#include "DFRobot_SHT20.h"

DFRobot_SHT20    sht20;

void setup()
{
    Serial.begin(9600);
    Serial.println("SHT20 Example!");
    sht20.initSHT20();                                  // Init SHT20 Sensor
    delay(100);
    sht20.checkSHT20();                                 // Check SHT20 Sensor
}

void loop()
{
    float humd = sht20.readHumidity();                  // Read Humidity
    float temp = sht20.readTemperature();               // Read Temperature
    Serial.print("Time:");
    Serial.print(millis());
    Serial.print(" Temperature:");
    Serial.print(temp, 1);
    Serial.print("C");
    Serial.print(" Humidity:");
    Serial.print(humd, 1);
    Serial.print("%");
    Serial.println();
    delay(1000);
}

J'ai tout branché comme il faut avec les resistance et tout , et j ai l erreur 998 qui veut dire que la sonde n est pas detecté ... j'ai regardé sur internet mais je trouve pas des masses d'infos
est ce que quelqu un(e) aurai deja eut ce probleme ou pourrai m aider ?
merci

hello

pour lancer le débat

1/ le lien sur ta sonde aurait été utile
ainsi que le type de carte que tu utilises.
pour info, dans la lib que j'ai regardé,
le source .h
l'erreur 998 est un time out i2c
l'adresse i2c de la sonde est fixée à 0x40

#define ERROR_I2C_TIMEOUT 998
#define ERROR_BAD_CRC 999
#define SLAVE_ADDRESS 0x40

chez ton fournisseur,
ICI
il est précisé:

Les broches A0/A1 placent les 2 bits inférieurs de l'adresse i2c. Il y a des résistances à tirette sur la carte donc connectez-les au Vin pour régler les bits sur '1'. Ils sont lus sur mise sous tension, donc dé-alimentation et re-alimentation pour réinitialiser l'adresse

tu n'as rien bricolé ?

autre piste, croiser les fils scl et sda, car tout dépends dans l'interprétation de la sérigraphie si on les vois "entrant" ou "sortant"

Hey désole pour la réaction tardive ! et merci pour ta répons !
alores oui j ai pas mit de lien car je ne le trouvais plus sur ali !
mais oui je travail sur une mega à la base, mais c est le même problème avec une uno !
alors oui j ai bien essayé d inversé les branchement aussi mais sans succés ...
pour le reste , j'avoue que j ai commandé ce produit en me disant que ca serai simple ... genre des sortie analogique mais le protocole I2c , je capte vraiment pas grand chose ! ... donc pour les resistance a tirette tout ca , je suis perdu snif

autre piste, croiser les fils scl et sda, car tout dépends dans l'interprétation de la sérigraphie si on les vois "entrant" ou "sortant"

Avec l'I²C, il n'y a aucune ambiguïté SCL c'est l'horloge, SDA c'est la donnée. Il n'y a pas de raison de croiser les fils.

donc pour les resistance a tirette tout ca , je suis perdu snif

C'est pas une fermeture éclair il n'y a pas de tirette. Sur le bus I²C il faut prévoir des résistances de polarisation du bus (des résistances de tirage) connectées entre SCL et le + et SDA et le +. Les résistances en question sont sur la carte si j'en crois le lien donné par dfgh.

Est-ce qu'un coup de scanner détecte le composant sur le bus?

Un petit dessin des connexions réalisées permettrait peut-être de trouver une erreur de câblage.

salut fdufnews et merci pour les infos , j ai joint une photo du montage.
en clair :
SDA, le fil vert de la sonde est branché sur la pin A4 de l'arduino avec une resistance en ligne de 330 ohm
SDL , le fil jaune de la sonde est branché sur la pin A5 de l'arduino avec une restance idem
le fil rouge de la sonde est branché sur le 3.3v de l'arduinoi
le fil bleu est branché a la masse de l'arduino

IMG_1119[1].JPG

le scan donne une reponse positive :

Si le scan donne une réponse positive, cela valide l'interconnexion.
Donc le problème doit se situer dans ton programme ou dans la librairie.

Sensirion propose une librairie pour ses senseurs de la famille SHTxx peut-être pourrais-tu l'essayer. Il ya aussi quelques exemples de code.

Bonjour

-est-il certain qu'un véritable capteur Sensirion SHT20 soit présent à l'intérieur du boitier de la sonde ?

-sur la photo du montage il me semble voir deux résistances de tirage de valeur 270 Ohm

sonde.png

sonde.png

Les 270 Ohms ne sont pas pour le tirage mais elles sont en série entre le SHT, alimenté en 3,3V et l'ATmega328 alimenté en 5V. C'est pas très propre comme solution mais c'est ce qui est préconisé dans le soft de DFRobot et que Jenny09 a appliqué.
Et il semble que ça fonctionne puisque le scanner identifierait le composant.

OK, limitation de courant... si ça fonctionne pourquoi pas....

fdufnews :
salut j ai bien essayé la nouvelle librairie shtxx
aucun des exemples ne fonctionnes :
la console arduino me renvoit :
init() : failed
alors après je me demande si cette librairie supporte le sht 20 car il y a liste des sondes supporté et le sht 20 n y est pas pas presente.

al1fch :
salut d’après la description du produit c est bien un SHT20
https://fr.aliexpress.com/item/32962527456.html

hello
veux tu tester celle ci ?

SHT21.zip (14.7 KB)

fonctionne chez moi avec une 21

mais quand on voit la déclaration dans l'exemple, on se dit que tout espoir est possible

#include <Wire.h>
#include <SHT2x.h>

void setup()
{
     Serial.begin(9600);
     Wire.begin();
}

void loop()
{
     Serial.print("Temperature: ");
     Serial.print(SHT2x.readT());
     // On the following line, \260 is the octal code for the degree sign. If
     // you would just write °, this would not work, as the Arduino IDE would
     // save it as an UTF8 character, resulting in two characters in the serial
     // transmission.
     Serial.print("\260C, Humidity: ");
     Serial.print(SHT2x.readRH());
     Serial.println("%RH");
     delay(1000);
}

Bonjour,

Chez moi ton programme avec la librairie DFRobot_SHT20 fonctionne sans problème.

Avec le scanner I2C quelle est l'adresse de ton SHT20?

salut^^
tu as bien de la chance !
l'adresse est bien 0*40

A noter, le SHT20 fait de l'allongement de cycle en bloquant l'horloge peut-être que la librairie ne le gère pas bien.