Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.
Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.
Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.
Senzor Temperatura si Umiditate SHT21 GY-21, de precizie, interfata I2C, 3-5V, 0-100%RH
Ideal pentru monitorizarea precisa a temperaturii si umiditatii in proiecte IoT si automatizari, acest modul cu SHT21 ofera masuratori stabile si rapide, comunicatie I2C pentru integrare usoara cu Arduino si Raspberry Pi, consum redus pentru functionare pe termen lung, format compact tip breakout potrivit pentru prototipare si montaj in spatii inguste.
Expediere estimata: miercuri 11 noiembrie
Cumparand acest produs primesti 0,46 € in puncte de fidelitate.
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
Produsele sunt expediate din stoc propriu
Primesti puncte la fiecare comanda, in valoare de 5%
Modulul GY-21 combina senzorul digital SHT21 cu un stabilizator de 3.3 V si cu adaptoare de nivel pe liniile I2C, intr-o placuta foarte mica pentru masurarea temperaturii si a umiditatii relative a aerului. Iesirea este digitala si calibrata din fabrica, deci nu necesita convertor analog-digital extern sau reglaje, iar modulul este potrivit pentru statii meteo de interior, termostate si higrostate, monitorizarea serelor, a depozitelor si a incaperilor cu umidificator sau dezumidificator.
Senzorul SHT21 masoara umiditatea relativa in domeniul 0 - 100 %RH, cu precizie tipica de ±2 %RH si rezolutie de pana la 12 biti, iar temperatura intre -40 si 125 °C, cu precizie tipica de ±0.3 °C si rezolutie de pana la 14 biti. Comunicatia se face pe magistrala I2C, la adresa fixa 0x40, cu frecventa de ceas de pana la 400 kHz. Timpul maxim de conversie este de 85 ms pentru temperatura (14 biti) si de 29 ms pentru umiditate (12 biti), iar fiecare valoare citita este insotita de o suma de control CRC-8. Consumul senzorului este redus, de 0.15 µA in repaus.
Printre caracteristicile principale se numara stabilizatorul de 3.3 V marcat 662K, tranzistoarele de adaptare a nivelului logic pe liniile SDA si SCL, rezistentele de pull-up pentru I2C, gaura de prindere si cele 4 pad-uri pentru pinii VIN, GND, SCL si SDA, pentru care se livreaza un conector cu 4 pini ce se lipeste de utilizator. Alimentarea se face la 3 - 5 VDC prin pinul VIN.
Prin interfata I2C, modulul se conecteaza direct la Arduino, ESP32, ESP8266, STM32, Raspberry Pi si la alte platforme cu magistrala I2C, atat cu logica de 3.3 V, cat si cu logica de 5 V.
Specificatii:
Tensiune alimentare: 3 - 5 VDC (pin VIN)
Curent senzor SHT21: 0.15 µA in repaus, pana la 330 µA in masurare
Senzor: SHT21
Interfata: I2C
Adresa I2C: 0x40 (fixa)
Frecventa ceas I2C: pana la 400 kHz
Domeniu umiditate: 0 - 100 %RH
Precizie umiditate: ±2 %RH (tipic)
Rezolutie umiditate: pana la 12 biti
Domeniu temperatura: -40 - 125 °C
Precizie temperatura: ±0.3 °C (tipic)
Rezolutie temperatura: pana la 14 biti
Timp maxim de masurare: 85 ms temperatura (14 biti), 29 ms umiditate (12 biti)
Iesire: Digitala, calibrata, cu suma de control CRC-8
Dimensiuni: 10 x 13 mm
Layout:
| Element | Functie |
|---|---|
| Senzor SHT21 | Masoara temperatura si umiditatea relativa si trimite valorile digital, prin I2C, la adresa 0x40. |
| Stabilizator 662K | Furnizeaza 3.3 V pentru senzor din tensiunea aplicata pe pinul VIN. |
| Tranzistoare de adaptare de nivel | Adapteaza nivelul logic al liniilor SDA si SCL intre senzor si microcontrolerul conectat. |
| Rezistente de pull-up | Mentin liniile SDA si SCL la nivel ridicat atunci cand magistrala este libera, deci nu sunt necesare rezistente externe pentru un singur modul. |
| Pad-uri VIN, GND, SCL, SDA | Conectarea modulului. Conectorul cu 4 pini inclus se lipeste in aceste pad-uri. |
| Gaura de prindere | Fixarea placii pe suport. |
Pinout:
| Conector | Pin | Functie |
|---|---|---|
| Header 4 pini | VIN | Alimentare 3 - 5 VDC |
| Header 4 pini | GND | Masa |
| Header 4 pini | SCL | Linia de ceas I2C |
| Header 4 pini | SDA | Linia de date I2C |
Utilizare:
Lipiti conectorul cu 4 pini inclus in pad-urile modulului, apoi verificati inscriptionarea de pe placa, deoarece la unele variante pinul de alimentare este marcat VCC in loc de VIN, cu acelasi rol.
Conectati VIN la pinul de 3.3 V sau de 5 V al microcontrolerului, in functie de tensiunea lui de lucru, GND la masa comuna, SDA la linia SDA si SCL la linia SCL. La Arduino Uno, liniile I2C sunt pinii A4 (SDA) si A5 (SCL).
Nu aplicati pe VIN o tensiune mai mare de 5 V si respectati polaritatea alimentarii.
Nu conectati doua module identice pe aceeasi magistrala I2C, deoarece adresa 0x40 este fixa.
Pentru o masuratoare, trimiteti la adresa 0x40 comanda 0xF3 pentru temperatura sau 0xF5 pentru umiditate, in modul fara blocarea ceasului, asteptati cel putin 85 ms pentru temperatura si 29 ms pentru umiditate, apoi cititi trei octeti: doi de date si unul de CRC.
Verificati suma de control CRC-8 (polinom 0x31, valoare initiala 0) si ignorati citirea daca nu se potriveste. Anulati ultimii doi biti ai valorii de 16 biti, apoi calculati temperatura in °C cu formula -46.85 + 175.72 x S / 65536 si umiditatea in %RH cu formula -6 + 125 x S / 65536.
Pentru a vedea ca modulul functioneaza, atingeti usor senzorul cu degetul sau suflati usor aer cald si umed peste el, iar valorile citite vor creste intr-o perioada scurta.
Pentru rezultate stabile, montati modulul departe de surse de caldura, inclusiv de placa de dezvoltare si de stabilizatoarele ei, folositi fire scurte pe SDA si SCL si evitati contactul direct al senzorului cu apa, cu condensul sau cu vapori agresivi.
- Tensiune de alimentare
- 3-5 V DC
- Dimensiuni
- 10 x 13 mm
- Interfata
- I2C
- Tip iesire
- Digital
- Consum
- 0.15 µA in repaus, pana la 330 µA in masurare
- Senzor
- SHT21
- Adresa I2C
- 0x40
- Domeniu de masurare temperatura
- -40-125 °C
Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.
Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.
Avertismente generale de siguranta:
Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.
Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.
Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.
Identificare produs:
Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.
Producator / Importator / Distribuitor:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
Website: www.sigmanortec.ro
Persoana responsabila in UE:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
/*
SHT21 / GY-21 temperature and humidity test
Board (Arduino IDE, Tools > Board): Arduino Uno
Board package: Arduino AVR Boards (comes with the Arduino IDE)
Libraries: none to install, only the built-in Wire library is used.
Wiring (the GY-21 module has its own 3.3 V regulator, level shifters
and pull-up resistors on the I2C lines):
Module VIN -> Arduino 5V
Module GND -> Arduino GND
Module SDA -> Arduino A4
Module SCL -> Arduino A5
*/
#include <Wire.h>
// I2C address of the sensor
const uint8_t SHT21_ADDRESS = 0x40;
// Sensor commands
const uint8_t CMD_TRIGGER_TEMP_NO_HOLD = 0xF3; // start temperature measurement
const uint8_t CMD_TRIGGER_HUM_NO_HOLD = 0xF5; // start humidity measurement
const uint8_t CMD_SOFT_RESET = 0xFE; // reset the sensor
// Waiting times in milliseconds, slightly above the maximum conversion time
const uint16_t TEMP_WAIT_MS = 100; // 14 bit temperature
const uint16_t HUM_WAIT_MS = 40; // 12 bit humidity
// CRC-8 with polynomial 0x31, start value 0
uint8_t crc8(const uint8_t *data, uint8_t length) {
uint8_t crc = 0;
for (uint8_t i = 0; i < length; i++) {
crc ^= data[i];
for (uint8_t bit = 0; bit < 8; bit++) {
if (crc & 0x80) {
crc = (crc << 1) ^ 0x31;
} else {
crc = crc << 1;
}
}
}
return crc;
}
// Send a measurement command, wait, read 3 bytes and check the CRC
bool readRaw(uint8_t command, uint16_t waitMs, uint16_t &raw) {
Wire.beginTransmission(SHT21_ADDRESS);
Wire.write(command);
if (Wire.endTransmission() != 0) {
return false; // sensor did not acknowledge
}
delay(waitMs); // wait for the conversion to finish
if (Wire.requestFrom(SHT21_ADDRESS, (uint8_t)3) != 3) {
return false; // fewer than 3 bytes received
}
uint8_t data[3];
for (uint8_t i = 0; i < 3; i++) {
data[i] = Wire.read();
}
if (crc8(data, 2) != data[2]) {
return false; // checksum error
}
raw = ((uint16_t)data[0] << 8) | data[1];
raw &= 0xFFFC; // clear the two status bits
return true;
}
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("SHT21 / GY-21 test started");
// Check that the sensor answers at its address
Wire.beginTransmission(SHT21_ADDRESS);
if (Wire.endTransmission() != 0) {
Serial.println("Sensor not found at address 0x40, check wiring");
while (true) {
delay(1000); // stop here
}
}
Serial.println("Sensor found at address 0x40");
// Soft reset, the sensor needs up to 15 ms to restart
Wire.beginTransmission(SHT21_ADDRESS);
Wire.write(CMD_SOFT_RESET);
Wire.endTransmission();
delay(20);
}
void loop() {
uint16_t rawTemperature = 0;
uint16_t rawHumidity = 0;
if (readRaw(CMD_TRIGGER_TEMP_NO_HOLD, TEMP_WAIT_MS, rawTemperature) &&
readRaw(CMD_TRIGGER_HUM_NO_HOLD, HUM_WAIT_MS, rawHumidity)) {
// Convert raw values to physical values
float temperatureC = -46.85 + 175.72 * (float)rawTemperature / 65536.0;
float humidityRH = -6.0 + 125.0 * (float)rawHumidity / 65536.0;
// Limit humidity to the physical range
if (humidityRH < 0.0) humidityRH = 0.0;
if (humidityRH > 100.0) humidityRH = 100.0;
Serial.print("Temperature: ");
Serial.print(temperatureC, 2);
Serial.print(" C, Humidity: ");
Serial.print(humidityRH, 1);
Serial.println(" %RH");
} else {
Serial.println("Read error (no answer or CRC mismatch)");
}
delay(2000); // one reading every 2 seconds
}
Acest tutorial foloseste placa Arduino Uno, pentru ca modulul GY-21 este un senzor I2C care are nevoie obligatoriu de un microcontroler care sa il interogheze. Modulul poarta senzorul SHT21 si masoara temperatura si umiditatea relativa a aerului, cu iesire digitala deja calibrata. Il veti folosi in statii meteo de interior, in monitorizarea unei sere, a unui depozit sau a unei incaperi cu umidificator, in termostate si higrostate construite singuri.
Spre deosebire de un senzor analogic, SHT21 nu cere calibrare si nu are nevoie de convertor analog-digital extern. Microcontrolerul trimite o comanda pe doua fire si primeste inapoi valoarea masurata, insotita de o suma de control. In pasii de mai jos veti conecta modulul, veti citi valorile cu o biblioteca minima (doar Wire) si veti vedea cum se transforma numerele brute in grade Celsius si procente de umiditate.

Cum functioneaza:
In interiorul SHT21 se afla un element capacitiv cu polimer pentru umiditate si un senzor de temperatura de tip bandgap. Un convertor analog-digital integrat transforma ambele marimi in numere, iar circuitul de procesare aplica calibrarea din fabrica. Rezultatul iese pe magistrala I2C, la adresa fixa 0x40, cu frecventa de ceas de cel mult 400 kHz.
O masuratoare are patru etape. Microcontrolerul trimite adresa 0x40 si o comanda: 0xF3 porneste masurarea temperaturii si 0xF5 porneste masurarea umiditatii, ambele in modul fara blocare a ceasului (no hold master). Apoi asteapta cat dureaza conversia, cel mult 85 ms pentru temperatura la 14 biti si cel mult 29 ms pentru umiditate la 12 biti. Dupa aceea citeste trei octeti: doi octeti de date si un octet CRC. In final, calculeaza valoarea reala din numarul brut.
Ultimii doi biti ai celui de-al doilea octet sunt biti de stare si trebuie anulati inainte de calcul. Cu numarul brut S, formulele sunt: temperatura in °C = -46.85 + 175.72 x S / 65536 si umiditatea relativa in %RH = -6 + 125 x S / 65536. Numarul 65536 este 2 la puterea 16, adica numarul de valori pe care le poate avea un cuvant de 16 biti. Exemplu: pentru S = 26000 la temperatura rezulta -46.85 + 175.72 x 26000 / 65536 = 22.86 °C, iar pentru S = 31000 la umiditate rezulta -6 + 125 x 31000 / 65536 = 53.13 %RH.
Suma de control CRC-8 foloseste polinomul x la 8 + x la 5 + x la 4 + 1 (in cod, constanta 0x31) si porneste de la valoarea 0. Daca CRC-ul calculat difera de cel primit, citirea a fost afectata de zgomot si trebuie ignorata.
Conectare:
Chipul SHT21 functioneaza la 2.1 - 3.6 V, dar modulul GY-21 are pe placa un stabilizator de 3.3 V (marcat 662K) si adaptoare de nivel cu tranzistoare pe liniile I2C. De aceea il alimentati direct de la pinul 5V al placii Arduino Uno, iar liniile SDA si SCL se conecteaza direct, fara convertor extern de nivel logic. Modulul are si rezistente de pull-up proprii, deci pentru un singur modul nu aveti nevoie de rezistente externe. Lipiti mai intai conectorul cu 4 pini inclus pe placa modulului. Pinii de pe modul sunt, in ordine, VIN, GND, SCL si SDA.
| Pin produs | Se conecteaza la | Rol |
|---|---|---|
| VIN | Pin 5V Arduino Uno | Alimentarea modulului |
| GND | GND Arduino Uno | Masa comuna |
| SDA | Pin A4 Arduino Uno | Linia de date I2C |
| SCL | Pin A5 Arduino Uno | Linia de ceas I2C |
Pe Arduino Uno, pinii A4 si A5 sunt aceleasi linii cu pinii SDA si SCL din dreapta antetului de sus, deci puteti folosi oricare dintre ele. Placa se alimenteaza prin cablul USB de la calculator. Pe unele variante ale modulului pinul de alimentare este marcat VCC in loc de VIN, rolul este acelasi. Verificati inscriptionarea de pe placa inainte de lipire si de conectare.
Placa si biblioteci:
In Arduino IDE selectati la Tools > Board placa Arduino Uno, din pachetul Arduino AVR Boards, care vine instalat odata cu Arduino IDE. Daca nu apare in lista, il instalati din Tools > Board > Boards Manager, cautand Arduino AVR Boards. La Tools > Port alegeti portul serial al placii.
Programul foloseste doar biblioteca Wire, care vine cu Arduino IDE, deci nu trebuie instalata nicio biblioteca. Comunicarea cu senzorul este scrisa direct, ceea ce permite sa vedeti fiecare pas al protocolului.
Codul:
Programul de mai jos citeste temperatura si umiditatea o data la 2 secunde, verifica suma de control si afiseaza rezultatul pe monitorul serial.
/*
SHT21 / GY-21 temperature and humidity example
Board (Arduino IDE, Tools > Board): Arduino Uno
Board package: Arduino AVR Boards (comes with the Arduino IDE)
Libraries: none to install, only the built-in Wire library is used.
Wiring (the GY-21 module has its own 3.3 V regulator, level shifters
and pull-up resistors on the I2C lines):
Module VIN -> Arduino 5V
Module GND -> Arduino GND
Module SDA -> Arduino A4
Module SCL -> Arduino A5
*/
#include <Wire.h>
// I2C address of the sensor
const uint8_t SHT21_ADDRESS = 0x40;
// Sensor commands
const uint8_t CMD_TRIGGER_TEMP_NO_HOLD = 0xF3; // start temperature measurement
const uint8_t CMD_TRIGGER_HUM_NO_HOLD = 0xF5; // start humidity measurement
const uint8_t CMD_SOFT_RESET = 0xFE; // reset the sensor
// Waiting times in milliseconds, slightly above the maximum conversion time
const uint16_t TEMP_WAIT_MS = 100; // 14 bit temperature
const uint16_t HUM_WAIT_MS = 40; // 12 bit humidity
// CRC-8 with polynomial 0x31, start value 0
uint8_t crc8(const uint8_t *data, uint8_t length) {
uint8_t crc = 0;
for (uint8_t i = 0; i < length; i++) {
crc ^= data[i];
for (uint8_t bit = 0; bit < 8; bit++) {
if (crc & 0x80) {
crc = (crc << 1) ^ 0x31;
} else {
crc = crc << 1;
}
}
}
return crc;
}
// Send a measurement command, wait, read 3 bytes and check the CRC
bool readRaw(uint8_t command, uint16_t waitMs, uint16_t &raw) {
Wire.beginTransmission(SHT21_ADDRESS);
Wire.write(command);
if (Wire.endTransmission() != 0) {
return false; // sensor did not acknowledge
}
delay(waitMs); // wait for the conversion to finish
if (Wire.requestFrom(SHT21_ADDRESS, (uint8_t)3) != 3) {
return false; // fewer than 3 bytes received
}
uint8_t data[3];
for (uint8_t i = 0; i < 3; i++) {
data[i] = Wire.read();
}
if (crc8(data, 2) != data[2]) {
return false; // checksum error
}
raw = ((uint16_t)data[0] << 8) | data[1];
raw &= 0xFFFC; // clear the two status bits
return true;
}
void setup() {
Serial.begin(9600);
Wire.begin();
Serial.println("SHT21 / GY-21 test started");
// Check that the sensor answers at its address
Wire.beginTransmission(SHT21_ADDRESS);
if (Wire.endTransmission() != 0) {
Serial.println("Sensor not found at address 0x40, check wiring");
while (true) {
delay(1000); // stop here
}
}
Serial.println("Sensor found at address 0x40");
// Soft reset, the sensor needs up to 15 ms to restart
Wire.beginTransmission(SHT21_ADDRESS);
Wire.write(CMD_SOFT_RESET);
Wire.endTransmission();
delay(20);
}
void loop() {
uint16_t rawTemperature = 0;
uint16_t rawHumidity = 0;
if (readRaw(CMD_TRIGGER_TEMP_NO_HOLD, TEMP_WAIT_MS, rawTemperature) &&
readRaw(CMD_TRIGGER_HUM_NO_HOLD, HUM_WAIT_MS, rawHumidity)) {
// Convert raw values to physical values
float temperatureC = -46.85 + 175.72 * (float)rawTemperature / 65536.0;
float humidityRH = -6.0 + 125.0 * (float)rawHumidity / 65536.0;
// Limit humidity to the physical range
if (humidityRH < 0.0) humidityRH = 0.0;
if (humidityRH > 100.0) humidityRH = 100.0;
Serial.print("Temperature: ");
Serial.print(temperatureC, 2);
Serial.print(" C, Humidity: ");
Serial.print(humidityRH, 1);
Serial.println(" %RH");
} else {
Serial.println("Read error (no answer or CRC mismatch)");
}
delay(2000); // one reading every 2 seconds
}
Cum functioneaza codul:
La inceput sunt definite adresa senzorului (SHT21_ADDRESS, 0x40), comenzile de masurare (CMD_TRIGGER_TEMP_NO_HOLD si CMD_TRIGGER_HUM_NO_HOLD) si comanda de resetare (CMD_SOFT_RESET). Constantele TEMP_WAIT_MS si HUM_WAIT_MS stabilesc cat asteapta programul dupa comanda, putin peste timpii maximi de conversie ai senzorului.
Functia crc8 calculeaza suma de control cu polinomul 0x31, pornind de la valoarea 0, peste cei doi octeti de date primiti. Functia readRaw trimite comanda, asteapta conversia, cere trei octeti cu Wire.requestFrom, compara CRC-ul calculat cu cel primit si, daca totul este corect, formeaza numarul brut din cei doi octeti de date si anuleaza cu masca 0xFFFC cei doi biti de stare. Functia intoarce false daca senzorul nu raspunde, daca se primesc mai putin de 3 octeti sau daca suma de control nu se potriveste.
In setup se porneste portul serial la 9600 baud si magistrala I2C cu Wire.begin. Programul verifica apoi daca senzorul raspunde la adresa 0x40 si, daca nu raspunde, se opreste cu un mesaj despre verificarea conexiunilor. In caz de succes, trimite comanda de resetare software si asteapta 20 ms, cat are nevoie senzorul sa reporneasca.
In loop se cer pe rand temperatura (rawTemperature) si umiditatea (rawHumidity). Valorile brute sunt convertite in temperatureC si humidityRH cu formulele din sectiunea despre functionare, iar umiditatea este limitata la intervalul 0 - 100 %RH. Rezultatul se afiseaza pe monitorul serial, iar la o citire gresita apare un mesaj de eroare. Pauza de 2 secunde dintre masuratori se face cu delay(2000).
Rezultat:
Deschideti monitorul serial din Arduino IDE (Tools > Serial Monitor) si setati viteza la 9600 baud. La fiecare 2 secunde apare o linie cu temperatura si umiditatea masurate, ca in exemplul de mai jos.
SHT21 / GY-21 test started
Sensor found at address 0x40
Temperature: 23.41 C, Humidity: 48.7 %RH
Temperature: 23.43 C, Humidity: 48.6 %RH
Temperature: 23.44 C, Humidity: 48.8 %RH
Temperature: 23.46 C, Humidity: 51.9 %RH
Temperature: 23.52 C, Humidity: 56.3 %RH
Temperature: 23.49 C, Humidity: 53.1 %RH
Temperature: 23.45 C, Humidity: 49.5 %RH
Probleme frecvente:
Apare mesajul ca senzorul nu a fost gasit la adresa 0x40. Cauza cea mai frecventa este o conexiune gresita sau lipsa masei comune. Verificati ca SDA merge la A4 si SCL la A5, ca nu sunt inversate, ca GND este legat si ca pinii conectorului sunt lipiti corect pe placa modulului.
Apare mesajul de eroare de citire (fara raspuns sau CRC gresit). Cauza este de obicei zgomotul de pe fire lungi sau contacte slabe. Scurtati firele SDA si SCL, indepartati-le de cabluri de putere sau de motoare si verificati lipiturile.
Temperatura afisata este mai mare decat cea reala. Senzorul preia caldura de la placile din apropiere, de exemplu de la stabilizatorul placii Arduino. Montati modulul la distanta, de preferat pe fire mai lungi, si lasati-l cateva minute sa se stabilizeze.
Umiditatea ramane la 100 %RH sau creste brusc. Senzorul a fost expus la condens sau la apa. Lasati-l sa se usuce intr-un loc ventilat, iar la montaj protejati-l de stropi si de contact direct cu lichide.
Nu apare nimic pe monitorul serial. Verificati ca ati ales portul corect la Tools > Port, ca placa selectata este Arduino Uno si ca viteza monitorului serial este 9600 baud.
Limitari si sfaturi:
Precizia tipica este de ±2 %RH pentru umiditate si de ±0.3 °C pentru temperatura, in domeniile 0 - 100 %RH si -40 - 125 °C. Senzorul nu este destinat masurarii in lichide sau in prezenta condensului si nu reactioneaza instantaneu, deoarece umiditatea se stabilizeaza in cateva secunde. Adresa 0x40 este fixa, deci pe aceeasi magistrala I2C poate exista un singur astfel de modul.
O citire la 2 secunde este suficienta pentru majoritatea aplicatiilor ambientale. Mai departe puteti afisa valorile pe un afisaj OLED sau LCD, le puteti inregistra pe un card SD sau puteti comanda un releu pentru un umidificator sau pentru o ventilatie in functie de pragurile dorite, cu o histereza de cativa procente pentru a evita comutarile dese.