Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Le HTU21D répond au scan mais chaque lecture d'humidité revient vide

Le HTU21D répond au scan mais chaque lecture d'humidité revient vide

Résolu 6 5

Traduit de English par IA ·

Un petit souci, mais il me rend fou. Une MKR WiFi 1010 dans un abri de tête de puits lit un breakout de capteur d’humidité HTU21D à 0x40 et envoie les données à Hermetry chaque minute. La température fonctionne. L’humidité fonctionne peut-être une lecture sur dix.Le scanner I2C trouve 0x40 à chaque fois. Analyseur logique : mon écriture de 0xF5 (humidité, sans hold) reçoit un ACK, puis l’adresse de lecture 0x81 reçoit un NACK et Wire.requestFrom(0x40, 3) renvoie 0. Sur le tableau de bord, l’humidité a des trous partout.

Wire.beginTransmission(0x40);
Wire.write(0xF5);
Wire.endTransmission();
delay(15);
uint8_t n = Wire.requestFrom(0x40, 3);   // n == 0 most of the time
Ask me about 4–20 mA.
♥ 0

Traduit de English par IA ·

Les résistances de pull-up ? J’avais des lectures instables jusqu’à ce que j’ajoute 4.7k

Still waiting for the gateway to reconnect.
♥ 1

Traduit de English par IA ·

Il y a déjà du 4,7k sur le breakout, et le scanner ne rate jamais rien, donc je doute du câblage.

Ask me about 4–20 mA.
♥ 1

Traduit de English par IA ·

J’ai eu le même problème avec un BME280, et c’était l’adresse, 0x76 au lieu de 0x77.

Ask me about 4–20 mA.
♥ 0

Traduit de English par IA ·

La carte breakout est-elle alimentée en 3,3 V ? Désolé si c’est évident, j’en ai grillé un en 5 V le mois dernier.

Timestamps in UTC or it didn't happen.
♥ 2

Traduit de English par IA ·

Le câblage est correct, ta lecture arrive trop tôt. En mode no-hold, le HTU21D envoie un NACK sur son adresse de lecture tant que la mesure n’est pas terminée, ce que montre exactement l’analyseur. Une mesure d’humidité sur 12 bits prend jusqu’à environ 16 ms ; avec la résolution par défaut et une marge, il faut attendre plus de 15 ms. La température est la plus lente, à 50 ms, et tu as probablement copié le délai d’un exemple ne concernant que l’humidité, avec un résultat qui a fonctionné par chance dans l’autre sens.Je scrute au lieu de deviner :

Wire.beginTransmission(0x40);
Wire.write(0xF5);
Wire.endTransmission();
uint8_t n = 0;
for (int i = 0; i < 10 && n < 3; i++) {
  delay(10);
  n = Wire.requestFrom(0x40, 3);
}
if (n < 3) { /* skip humidity this round */ }

Et si une lecture échoue malgré tout, omets la clé dans le message de cette minute ou envoie null. N’envoie pas 0 : Hermetry l’enregistre comme un vrai 0 % et ta règle d’alarme va en profiter. null signifie simplement qu’il n’y a pas de mesure.

Ground loops are my cardio.
Solution acceptée♥ 8

Traduit de English par IA ·

Boucle de polling en place, n atteint 3 au deuxième ou troisième essai, soit environ 20-30 ms. Deux jours sans trou. J’envoyais aussi 0 en cas d’échec, ce qui explique les étranges chutes sur le graphique. Merci Daniel.

Ask me about 4–20 mA.
♥ 2
7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager