• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

WeMosD1R1 зависает в неопределенный момент.

Автор установите вот эту библиотеку https://github.com/enjoyneering/AHTxx

И в инициализации AHT10 увеличитьте stretching interval (по умолчанию он 1000usec)

aht10.begin(100000, 1000); //100KHz, 1000usec by default
Я уже давно ей пользуюсь. Только Begin делаю без параметров. А на сколько увеличивать? 2000 поставить или 10000?
Одно меня смущает. В библиоте стартуется Wire. Но у меня Wire стартуется в скетче раньше. У меня ведь там еще часы и BME280. Я даже пробовал убрать из библиотеки старт Wire. В принципе все так же работало. В смысле так же зависало.
 

enjoynering

Well-known member
aht10.begin(100000, 1000);

Должен быть последним, чтобы эти настройки остались и не затерлись другими библиотеками использующими wire.h.

насколько увеличивать? Это надо подобрать,так, чтоб у вас перестала перегружаться ESP8266. Пробуйте поставить 150 000...250 000 usec. Если не поможет, то уменьшайте скорость с 100 000Гц до 50 000Гц.
 
Подскажите, как проверять подключен датчик или отвалился?
Какой код будет?
aht10.getStatus();
Или что то другое?
 

enjoynering

Well-known member
Если отвалился он выдас 255 вместо Т и RH. Если дальше интересно, что и почему отвалилось вызываем getStatus(). Вы примеры смотрели? Там все разжеванно.
 
Вы примеры смотрели?
Код:
 switch (aht10.getStatus())
  {
    case AHTXX_NO_ERROR:
      Serial.println(F("no error"));
      break;

    case AHTXX_BUSY_ERROR:
      Serial.println(F("sensor busy, increase polling time"));
      break;

    case AHTXX_ACK_ERROR:
      Serial.println(F("sensor didn't return ACK, not connected, broken, long wires (reduce speed), bus locked by slave (increase stretch limit)"));
      break;

    case AHTXX_DATA_ERROR:
      Serial.println(F("received data smaller than expected, not connected, broken, long wires (reduce speed), bus locked by slave (increase stretch limit)"));
      break;

    case AHTXX_CRC8_ERROR:
      Serial.println(F("computed CRC8 not match received CRC8, this feature supported only by AHT2x sensors"));
      break;

    default:
      Serial.println(F("unknown status"));  
      break;
  }
Сделаю так
if (AHT10.getStatus() != AHTXX_DATA_ERROR || AHT10.getStatus() != AHTXX_ACK_ERROR) {
//чтение данных с сенсора
} else {
//датчик утерян
}
 

enjoynering

Well-known member
какой стыд... чем вам метод из примера не понравился? он проще и исполняется за меньше тактов те быстрее.
 

enjoynering

Well-known member
я не про это. вы поняли что написано ниже?
Если отвалился он выдаст 255 вместо Т и RH. Если дальше интересно, что и почему отвалилось вызываем getStatus().
найдите эквивалент этого текста в примерах и покажите здесь.
 

papsi789

New member
Yes the full one and R1. I could not find it anywhere hopefully the R2 is not that much different . I did say it would not work with usb or the power jack.
 
Сверху Снизу