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

Отваливается на OneWire 3 датчика DS18B20

Привет!
На плате esp32 WeMos LOLIN32 собрал 3 датчика температуры DS18b20 на пине 25 с развязывающим резистором и фотодиод в режиме источник на пине 34. Время беру по интернету. Данные записываю в SPIFFS файл, имя которого формируется по получаемой по NTPClient дате. Несколько раз все проработало на столе рядом с ПС. Две попытки записать данные за целую ночь окончились прекращением записи в максимуме через 13 часов. После первой неудачи я пытался прогнать ряд программ, работающих с DS18b20 и ранее сообщающих всю информацию о линии, адресах и т. п. Но после несколько таких неудачных запусков различных программ вдруг все заработало!
После второй ночной неудачи мне пока не удалось восстановить работу с датчиками. Блокирует ds.reset_search();
Что делать не знаю! Почему предыдущая попытка восстановиться прошла успешно не понятно.
 

ghost21

Member
в 456 строке знак = замените на >=
и зеленый провод поменяйте местами с желтым
 

Ildarmustafin86

Active member
Я думаю там логика такая, что четная попытка проходит успешно, а нечетная - не успешно.
 
Извините, но оба предыдущих ответа я не понял.
Зато появилась дополнительная информация о восстановлении работы. После ряда безуспешных попыток запустить несколько разных программ, ранее работавших с данным набором датчиков, я подсоединил провод ЮСБ к идентичной "голой" плате , то есть без каких-либо датчиков. Загрузил ту же программу. К удивлению, получил не работающий вариант. Однако, после возврата к основной плате с обвеской без повторной загрузки ранее не работающая программа, заработала, все пошло как надо. Чудеса!
Возможно влияет органнизация опроса датчиков. Я использую if(millis()- last_time > time_period), можно использовать delay(time_period), но тогда может возникнуть проблема с запросом времени.
Пока проверка идет успешно второй день.
 

Ildarmustafin86

Active member
Смысл предыдущих сообщений такой, что вы не приложили ни код, ни схему. И приходится гадать
 
Сверху Снизу