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
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
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
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.
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.
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);
}