ESPsmart » Блог » Подключение датчика температуры DS18B20 к ESP8266
Приглашаем всех желающих, принять участие в тестировании системы управления микроконтроллерами ESP8266/ESP32. Принять участие.

Подключение датчика температуры DS18B20 к ESP8266

Для того чтобы в помещении было комфортно, а в теплице вырос хороший урожай, нужно правильно выбирать и поддерживать температуру воздуха. Датчик DS18B20 – хорошее решение для определения температуры окружающей среды.

Подключение датчика температуры DS18B20 к ESP8266

Что такое температура воздуха?

Это одна из характеристик воздуха, изменяющаяся в зависимости от скорости движений молекул, из которых он состоит: температура растет по мере увеличения скорости и уменьшается при ее снижении.

Для измерения этого показателя существует порядка 12 видов шкал. Чаще всего применяют три из них:
  • Градусы Кельвина (°К). Здесь нулю соответствует показатель абсолютного нуля, при котором движение молекул останавливается (-273,15 °С), поэтому все значения получаются со знаком «+». Этот метод применяется в метеорологии.
  • Шкалу Цельсия (°С). Раньше в ней за ноль градусов был принят показатель, при котором тает лед, а ориентиром для значения в 100 °С считался момент закипания воды. Одна сотая разницы между ними соответствовала 1 °С. Сейчас эта шкала является производной от шкалы Кельвина и за ноль принимают 273,15 К, а 100 °С определяют как 373,15 К. Разница в 1 °С и 1 К одинакова, следовательно и значение градуса в этих системах эквивалентно.
  • Градусы Фаренгейта (°F), где 1 °F приблизительно равен 1/180 разницы между температурой, при которой тает лед (+32 °F) и кипит вода (212 °F). Эта шкала применяется в США и еще в некоторых государствах.

Помимо этих шкал есть градусы Ремера, Ранкина, Делиля или Гука. Эти меры применяются редко, потому что у них специальное предназначение. Некоторые из них уже устарели.

Датчик DS18B20

DS18B20 — это популярный цифровой датчик по измерению температуры. Изготавливается в разных вариациях корпуса, особенно интересен во влагозащищённом корпусе, который значительно расширяет область применения датчика. Применяется в различных системах мониторинга температуры или узлах оборудования. Диапазон измерения температуры составляет от -55 до +125 градусов Цельсия. Погрешность датчика составляет 0.5 градуса. Датчик подключается по 1WIRE шине, поэтому возможно подключения нескольких датчиков на один пин.

Подключение датчика

Подключите датчики согласно схеме ниже. Для этого подсоединяем питание 5V и GND, подтягиваем питание к ПИН D3 через резистор 4.7 кОм и подключаем ногу DATA датчика. При подключении влагозащищенного датчика: красный – питание, черный – земля, а желтый/белый/синий – сигнал (DATA).

Примечание. Определите правильно ноги датчика при подключении. На схеме подключения представлена сторона датчика на которой нанесена модель датчика.




Подключение нескольких датчиков

Остальные датчики подключается аналогично.



Подключение библиотеки

Для работы с датчиком DS18B20 добавим в Arduino IDE библиотеку. Открываем менеджер библиотек и находим библиотеку DallasTemperature by Miles Burton, Tem Newsome, Guil Barros, Rob Tillaart.




Скетч

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 0 // Пин подключения OneWire шины, 0 (D3)
OneWire oneWire(ONE_WIRE_BUS); // Подключаем бибилотеку OneWire
DallasTemperature sensors(&oneWire); // Подключаем бибилотеку DallasTemperature

DeviceAddress temperatureSensors[3]; // Размер массива определяем исходя из количества установленных датчиков
uint8_t deviceCount = 0;

// Функция вывода адреса датчика 
void printAddress(DeviceAddress deviceAddress)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    if (deviceAddress[i] < 16) Serial.print("0");
    Serial.print(deviceAddress[i], HEX); // Выводим адрес датчика в HEX формате 
  }
}

void setup(void)
{
  Serial.begin(115200); // Задаем скорость соединения с последовательным портом 
  sensors.begin(); // Иницилизируем датчики
  deviceCount = sensors.getDeviceCount(); // Получаем количество обнаруженных датчиков

  for (uint8_t index = 0; index < deviceCount; index++)
  {
    sensors.getAddress(temperatureSensors[index], index);
  }
}

void loop(void)
{
  Serial.println();
  sensors.requestTemperatures();
  for (int i = 0; i < deviceCount; i++)
  {
    printAddress(temperatureSensors[i]); // Выводим название датчика
    Serial.print(": ");
    Serial.println(sensors.getTempC(temperatureSensors[i])); // Выводим температуру с датчика
  }
  delay(1000);
}


Монитор порта (консоль)

Загружаем скетч выше на плату и открываем "Монитор порта".

Комментарии

от 16 марта 2022 01:57
Хочу купить ds18b20 подключение к esp8266
от 25 ноября 2022 17:51
Чето скетч не компилится


C:\Users\yuzax\Documents\Arduino\libraries\OneWire/OneWire.h:108:2: error: #error "Please define I/O register types here"

108 | #error "Please define I/O register types here"

| ^~~~~

Несколько библиотек найдено для "DallasTemperature.h"

Используется: C:\Users\yuzax\Documents\Arduino\libraries\DallasTemperature

Не используется: C:\Users\yuzax\Documents\Arduino\libraries\DallasTemperature-3.9.0

Используем библиотеку OneWire в папке: C:\Users\yuzax\Documents\Arduino\libraries\OneWire (legacy)

Используем библиотеку DallasTemperature версии 3.8.0 из папки: C:\Users\yuzax\Documents\Arduino\libraries\DallasTemperature

exit status 1

Ошибка компиляции для платы Generic ESP8266 Module.

Оставить комментарий