• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено HTU21D - модуль влажности и температуры

ivy

New member
HTU21D не хочет работать с LUA по спецификации. Пробовал:
- Обе прошивки NodeMCU: целочисленную и с плавающей запятой.
- i2c сканер выдает разные адреса после каждой перезагрузки.
- Шину пуллапил и отпускал - без разницы.
- Пробовал модули этот и этот - без разницы. В каждом модуле были свои баги. Пофиксил, но безрезультатно.
- Пробовал общаться с сенсором через разные адреса - не отвечает ни на какие.
- Пробовал опрашивать с локом и без лока шины (E3, E5 -> F3, F5).
- Поменял сам сенсор (чтоб исключить проблему железа).
- Пробовал поменять клок и дата местами - а вдруг? Не прокатило.
- На англоязычном форуме ничего полезного не нашел.

Кто-нибудь подружился с HTU21D? Что я упускаю? Помогите, пожалуйста.
С другими типами i2c сенсоров общаюсь без проблем по спецификации.
 
Последнее редактирование:

ivy

New member
Разобрался. Оказывается, когда SDA и SCL назначены на GPIO 0 и 2 соответственно, HTU21D работает с NodeMCU.
Хотя под Arduino IDЕ он работает с любыми пинами.
Еще одна рабочая пара: SDA, SCL = 14, 12.

Если даже просто поменять пины местами физически и в программе, то не работает. Т.е. 0 и 2 работает, 2 и 0 не работает. Может поможет кому-нибудь.
 

sweeper

New member
Разобрался. Оказывается, когда SDA и SCL назначены на GPIO 0 и 2 соответственно, HTU21D работает с NodeMCU.
Хотя под Arduino IDЕ он работает с любыми пинами.
Еще одна рабочая пара: SDA, SCL = 14, 12.

Если даже просто поменять пины местами физически и в программе, то не работает. Т.е. 0 и 2 работает, 2 и 0 не работает. Может поможет кому-нибудь.
Спасибо, помогло, тоже долго голову морочил этот htu хотя bmp работал без проблем в любом сочетании на этих же gpio
 

Anatoliy_chel

New member
Имею похожую проблему. Использую скетч от библиотеки SparkFunHTU21D. Подключаю HTU21D к Arduino Uno - работает. Тот же скетч к NodeMCU LUA v3 на D1 и D2 не видит датчик (выдает 998). Вешаю на эти же контакты T6703 - работает. Пробовал другую библиотеку - аналогично не видит. Пробовал указывать разные gpio - никакого эффекта. Именно HTU21D не хочет работать ни на каких. В чем может быть дело?
#include <Wire.h>
#include "SparkFunHTU21D.h"


//Create an instance of the object
HTU21D myHumidity;

void setup()
{
Serial.begin(9600);
Serial.println("HTU21D Example!");

myHumidity.begin();
}

void loop()
{
float humd = myHumidity.readHumidity();
float temp = myHumidity.readTemperature();

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

При этом рабочие примеры из интернета обычно сделаны на V2. Неужели именно в V3 что то изменилось?
 

p.p.g

New member
Добрый всем день.

Что то у меня так и не получилось
Подключил вот по такойсхеме https://kit.alexgyver.ru/tutorials/htu21d/ показывает 999 температуру и 999 влажность вне зависимости ни от чего, попробовал этот же датчик на ардуино нано всё работает как часы. Где @ivy что меняли?
 
Сверху Снизу