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

ESP 8266 + BLYNK + DS18B20. Не адекватно работает при обращению по адресу

Resok123

New member
При обращении к датчику по его индексу все работает четко и без нареканий. Но как только идет запрос по адресу датчика показывает температуру -127. Помогите пожалуйста разобраться что не так.
#define BLYNK_TEMPLATE_ID "
#define BLYNK_DEVICE_NAME "

#define BLYNK_FIRMWARE_VERSION "0.1.0"

#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG

#define APP_DEBUG

#include "BlynkEdgent.h"


#include <OneWire.h>
#include<DallasTemperature.h>
#define ONE_WIRE_BUS 4 // DS18B20 подключаем на 2 на плате
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
double temp_0;
uint8_t sensor1[8] = { 0x28, 0xDD, 0x85, 0x48, 0xF6, 0xCB, 0x3C, 0xA3 };



void setup()
{
Serial.begin(115200);
delay(100);

BlynkEdgent.begin();


DS18B20.begin();

Serial.println(" ");
Serial.println("Testing Sensor data");
}


void loop() {
BlynkEdgent.run();
delay(1000);
DS18B20.requestTemperatures();
delay(1000);
temp_0 = DS18B20.getTempC(sensor1);

delay(1000);
Serial.print("Temp_0: ");
delay(1000);
Serial.print(temp_0);
delay(1000);
Serial.println(" oC ");
delay(1000);

Blynk.virtualWrite(0, temp_0);

}
Вот что выдает монитор
Testing Sensor data
[1501] Connecting to WiFi: Pechenyushka
[5889] Using Dynamic IP: 192.168.0.107
[5889] CONNECTING_NET => CONNECTING_CLOUD
Temp_0: 20.38 oC
[6493] Current time: Mon Feb 21 17:01:27 2022
[6494] Connecting to blynk.cloud:443
[7613] Ready (ping: 11ms).
[7728] CONNECTING_CLOUD => RUNNING
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: -127.00 oC
Temp_0: 20.38 oC
 

NeOnegin

New member
Что не так с датчиком не скажу, но с delay(1000) явный перебор. Зачем они?
Эти задержки были добавлен в ходе экспериментов ибо после первого цикла они просто начинают игнорироваться. Без блинка все работает исправно.
 

NeOnegin

New member
В таком виде тоже не работает

Код:
#define BLYNK_TEMPLATE_ID "
#define BLYNK_DEVICE_NAME "
#define BLYNK_FIRMWARE_VERSION        "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG
#define APP_DEBUG

// Uncomment your board, or configure a custom board in Settings.h
//#define USE_SPARKFUN_BLYNK_BOARD
//#define USE_NODE_MCU_BOARD
//#define USE_WITTY_CLOUD_BOARD
//#define USE_WEMOS_D1_MINI

#include "BlynkEdgent.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup()
{
  Serial.begin(115200);
  delay(100);
  BlynkEdgent.begin();
  sensors.begin();
}
void  getTemp () {
    sensors.requestTemperatures(); // Send the command to get temperatures
    float tempC = sensors.getTempCByIndex(0);
    Serial.println(tempC);
    delay(1000);
  }
void loop() {
  BlynkEdgent.run();
  getTemp ();
}
 

Ut1900

New member
Без блинка все работает исправно.
Попробуйте перенастроить DS18B20 на другой пин.
#define ONE_WIRE_BUS 5 //например

Библиотека BlynkEdgent.h при определенных условиях использует 4 пин и перенастраивает его при запуске BlynkEdgent.begin().
В файле Settings.h можно посмотреть.
 

LekSPS

New member
Всем доброго времени суток!
Люди добрые, подскажите никто не встречал готовый проект (схема, прошивка, описание) по сборке многоканального термометра на контроллере ESP8266 (или аналогичных ESP32, NodeMCU-CH340 и т.п.) с применением датчиков DS18B20 (4-5 датчиков) с выводом измеряемой температуры на страницу Web-сервера, поднятого на самом контроллере. Одноканальный и двухканальный вариант подобного девайса встречал на необъятных просторах интернета, а на 4-5 каналов сколько не искал, готового решения не нашел. Самому нечто подобное сваять к сожалению не хватает знаний и понимания. Быть может есть и такой вариант, когда на базе каждой из плат контроллера ESP8266 собирается отдельный термометр с одним датчиком DS18B20, т.е. 4-5 плат, и потом показания каждого из термометров передаются на один сервер какого-либо контроллера и при открытие страницы отображаются показания всех 5-и термометров (с экономической точки зрения такой вариант по-дороже по железу, чем первый, но не настолько критично, чтобы его не рассматривать в моей ситуации). Либо есть альтернативные решения данного вопроса, MQTT, Blynk, но повторюсь нужен рабочий готовый вариант с подробной инструкцией, чтобы после сборки с бубном не прыгать, а если все же придется немного попрыгать, то хотя бы понимать в каком месте это делать. Был бы благодарен за помощь!
 

svs2007m

Active member
На форуме много коммерческих. Любой каприз за Ваши деньги. Поиск и удачи :)
 

pvvx

Активный участник сообщества
Быть может есть и такой вариант
Берете пачку термометров (или в другом месте – ищите дешевле или финт с оплатой в $ - будет по 300 руб шт.) и перепрашиваете с телефона.
Далее, если вы любитель ESP, возможно использовать ESPHome или Tasmota с лозунгами и т.д. (Ныне многое ПО связанное с ESP пишет лозунги или делает разные пакости)
Можно просто программу на смартфон – типа MijiaTemp, или, если надо сложно управлять от термометров – типа Home Assistant…
 

miks69

Member
Всем доброго времени суток!
Люди добрые, подскажите никто не встречал готовый проект (схема, прошивка, описание) по сборке многоканального термометра на контроллере ESP8266 (или аналогичных ESP32, NodeMCU-CH340 и т.п.) с применением датчиков DS18B20 (4-5 датчиков) с выводом измеряемой температуры на страницу Web-сервера, поднятого на самом контроллере. Одноканальный и двухканальный вариант подобного девайса встречал на необъятных просторах интернета, а на 4-5 каналов сколько не искал, готового решения не нашел. Самому нечто подобное сваять к сожалению не хватает знаний и понимания. Быть может есть и такой вариант, когда на базе каждой из плат контроллера ESP8266 собирается отдельный термометр с одним датчиком DS18B20, т.е. 4-5 плат, и потом показания каждого из термометров передаются на один сервер какого-либо контроллера и при открытие страницы отображаются показания всех 5-и термометров (с экономической точки зрения такой вариант по-дороже по железу, чем первый, но не настолько критично, чтобы его не рассматривать в моей ситуации). Либо есть альтернативные решения данного вопроса, MQTT, Blynk, но повторюсь нужен рабочий готовый вариант с подробной инструкцией, чтобы после сборки с бубном не прыгать, а если все же придется немного попрыгать, то хотя бы понимать в каком месте это делать. Был бы благодарен за помощь!
Вам нужно только читать датчики?
 
Сверху Снизу