Go Down

Topic: probleme fonctionnement sonde SHT20  (Read 462 times) previous topic - next topic

jenny09

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

le code:
Code: [Select]
/*!
 * @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

dfgh

#1
Sep 18, 2020, 01:06 pm Last Edit: Oct 06, 2020, 10:24 am by dfgh
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
Quote
#define ERROR_I2C_TIMEOUT                     998
#define ERROR_BAD_CRC                         999
#define SLAVE_ADDRESS                         0x40
chez ton fournisseur,
ICI
 il est précisé:
Quote
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"


jenny09

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

fdufnews

Quote
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.

Quote
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.

jenny09

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
 


jenny09

le scan donne une reponse positive :

fdufnews

#6
Oct 08, 2020, 08:58 am Last Edit: Oct 08, 2020, 09:14 am by fdufnews
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.

al1fch

#7
Oct 08, 2020, 11:54 am Last Edit: Oct 08, 2020, 11:54 am by al1fch
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



fdufnews

#8
Oct 08, 2020, 01:16 pm Last Edit: Oct 08, 2020, 01:18 pm by fdufnews
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.

al1fch

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

jenny09

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. 

jenny09

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

dfgh

hello
veux tu tester celle ci ?


dfgh

fonctionne chez moi avec une 21

mais quand on voit la déclaration dans l'exemple, on se dit que tout espoir est possible
Code: [Select]
#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);
}

kamill

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?

Go Up