Меню

Esp8266 датчик температуры ds18b20

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

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

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

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

Для измерения этого показателя существует порядка 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.


Скетч

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

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

Источник

Датчик температуры DS18B20 к ESP8266 и отправляем данные на БД MySql

Попробуем уже сделать на esp8266 что-нибудь действительно полезное. Большой плюс от такого дешёвого чипа, что его можно легко подружить с интернетом, а это открывает огромный потенциал в мир IoT. Дисплей мы подключили в прошлой статье, ну а теперь добавим ещё датчик температуры, возьмём для этого самую популярную модель DS18B20.

Читайте также:  Подключение датчик движения для светодиодных прожекторов

Разберёмся, как подключить датчик DS18B20 к нашей ESP8266. Распиновку легко найти в даташите, у датчика всего 3 пина, питание VCC, земля GND с собственно сигнал. Между сигнальной линией и питанием рекомендуется поставить резистор от 4.7 до 10кОм.

Для начала подключим необходимые библиотеки, для работы с этим датчиком, ведь он работает по интерфейсу OneWire, который мы совсем недавно разбирали

Определим контакт, куда будет подключаться сигнальная шина датчика. GPIO5 по схеме соответствует D1

Дадим понять, что этот контакт будет работать по интерфейсу OneWire

И внесём переменную массив, temperatureCString, которая будет получать данные от датчика, в формате 8 битной посылки.

Затем переходим в setup, и вносим инициализацию датчика

Теперь нам нужно написать функцию получения температуры. Я убрал из стандартного примера получение температуры в F, и оставил только градусы Цельсия.

Попробуем отобразить на дисплее, температуру с градусником, с заполняемой шкалой. Как подключить дисплей к ESP8266, мы разобрали в прошлый раз. Но картинку BMP нам заливать бессмысленно, потому-что нам нужна изменяемая шкала. Благо в библиотеке adafruit можно легко использовать геометрические фигуры. Статья не о дисплее, поэтому просто приведу код с комментариями, кому интересно можно будет разобраться самому.

Смотрим на результат. Шкала справа отображает температуру от 0 до 50 градусов тепла, что как-раз обычно и наблюдается в домашних условиях.

Теперь нам нужно отправлять данные температуры на внешний сервер, на базу данных MySql

В принципе, я нашёл в интернете хорошее руководство про отправку данных через страницу на сервере правда на другом датчике, но в лоб оно не заработало, потому-что команды были заточены под старую версию PHP, и запрос GET также не исполнялся. Например, на строчку

я сразу получил следующую ошибку, при выполнении файла php

Так происходит, потому-что в версии php 7, формат команд немного поменялся, ко всем вставкам mysql, добавляется символ “i”, т.е. mysqli, ну и где-то добавились аргументы, поэтому подключение выполняем так

А отправку выполняем следующей строкой, здесь также меняются аргументы, необходимо указывать сначала подключение. Аргумент MySQL NOW() возвращает дату и время localhost, $temp – температуру, а $client_ip – адрес, с которого поступил запрос

Весь этот файл нужно положить в корень сайта или локалхоста, куда вы будете обращаться от esp8266. Структура файла очень простая – сначала перечисляем параметры базы данных, к которой мы подключаемся. Потом подключаемся к ней, и осуществляем отправку, где лежит переменная, которую мы передадим методом GET, с помощью esp8266

Следующие наши действия должны происходить в phpmyAdmin, где создана наша база. Нужно создать таблицу (temperature), с тремя колонками – дата, температура и ip-клиента.

Для этого нужно выбрать базу данных, перейти на вкладку SQL, скопировать туда этот код и нажать “вперёд”

Теперь нужно проверить наш скрипт, но если просто запустить его, то никакого эффекта не произойдёт. Мы должны передать переменную температуры следующим методом. Запускаем следующую ссылку, меняя url на ваш сервер. Строчка “?tempC=27” передаёт значение температуры скрипту.

Читайте также:  Какое сопротивление датчика распредвалов

Потом возвращаемся в базу данных и проверяем, записалось ли значение. Если увидите следующие записи – значит php скрипт отработал верно.

Наверное уже понятна схема отправки данных – ESP обращается к некому скрипту PHP на сервере, при этом передавая ему методом GET значения, а скрипт уже вносит эти значения в базу данных MySql. Ну что же, напишем такую функцию.

Сначала мы устанавливаем соединение с сервером, по порту 80. Затем, отправляем GET запрос, оперируя файлом /send.php. Конструкция

Отправляет GET запрос. Я продублировал в терминал, чтобы посмотреть как это выглядит в итоге

Теперь проверяем, доходя ли наши значения до базы данных

Отлично! Все значения попадают куда надо. Также в phpmyAdmin есть удобное представление данных в виде графика

Хранить данные в базе данных – это самое лучшее решение. Во первых, если связь с устройствами теряется, они всё равно останутся продублированные в надёжном источнике. Во вторых – не нагружая само устройство, вы можете предоставлять доступ к данным другим людям, через сайты, приложения и т.д.

Источник

Подключение DS18B20 к ESP32/ESP8266

DS18B20 удобный цифровой термосенсор. В промышленной эксплуатации обычно используются датчики в водонепроницаемой капсуле из нержавеющей стали. Характеристики датчиков:

    Диапазон измеряемых температур -55 °

+125 °.
Напряжение питания 3.0V

1,3 USD)

  • Однопроводной интерфейс 1Wire.
  • Точность ±0.5°C в диапазоне от -10°C до +85°C.
  • Программируемое разрешение от 9 Bits до 12 Bits.
  • Уникальный 64 битный серийный номер у каждого датчика исключающий конфликты на одной шине.
  • Можно напрямую подключать к микроконтроллерам без дополнительных конвертеров.
  • Распиновка DS18B20

    Выходы у датчика в нержавейке : Red (VCC), yellow (DATA), black (GND)

    Схема подключения крайне простая. Датчик подключается к цифровому входу через резистор 4,7 К на +питания.

    Я приобретал датчики в металлических водонепроницаемых капсулах оптом, 10 шт. у этого продавца на Aliexpress. Цена

    1,3 USD за шт. с оперативной доставкой в Россию. Если время доставки не критично, то датчик можно заказать по цене порядка 1 USD у множества продавцов на Aliexpress с бесплатной доставкой.

    Получение адресов датчиков DS18B20

    Опрос датчиков DS18B20

    Если на одной шине висит несколько сенсоров, код будет несколько посложнее. В данном случае тестируется два DS18B20 датчиков подключенных к GPIO32 микроконтроллера ESP32.

    Результат работы кода опроса датчиков DS18B20:

    Разброс показаний датчиков DS18B20

    Не смотря на то, что датчики цифровые — они не калиброванные. Для примера снятие данных с 12 датчиков DS18B20 в течении 8 часов.

    Разброс показаний датчиков DS18B20

    Как видно по графикам, разброс в показаниях составляет почти 2 градуса. Я не нашел в командах DS18B20 вариантов прописать калибровочные коэффициенты непосредственно в датчик, так что придется поправлять значения «снаружи».

    Источник

    Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$

    В последнее время всё большую популярность набирают Wi-Fi модули на основе ESP8266. Я тоже решил приобщиться к прекрасному, задумав реализовать термометр, отдающий данные по HTTP. Итак, поехали.

    Читайте также:  После замены датчика скорости не работает спидометр нексия

    Hardware

    Особенно приглянулись:
    ESP-01 — удобен для прототипирования (есть разъем под макетку), но выведен всего 1 GPIO;
    ESP-03 — много выводов, плюс керамическая антенна;
    ESP-07 — то же самое что и ESP-03 + экран и разъем под внешнюю антенну.

    DS18B20

    Как вариант, можно купить уже с проводом и в герметичном корпусе.

    Питание 3.3В
    Необходим источник питания как минимум на 200мА.

    USB-UART
    Для прошивки и отладки. Я использовал преобразователь на основе CP2102

    Подключение

    Подключаем питание на ESP8266. На ногу CH_PD так же подаем плюс.
    Внимание! У кого модули не ESP-01, необходимо подать GPIO15 — GND; GPIO2 -3.3V. У ESP-01 это уже сделано. RX и TX подключаем к USB-UART преобразователю для прошивки и отладки кода:

    Подключаем DS18B20 к ESP8266. Если смотреть на маркировку: левая — земля, средняя — сигнал (GPIO12 на ESP-03), если у вас ESP-01, подключайте к GPIO0, правая — питание(3.3V). Между питанием и сигнальной линией желательно подключить резистор 4.7 кОм (у меня работает и с 10 кОм):

    thingspeak.com

    Регистрируемся на thingspeak.com, создаем канал, копируем оттуда 16-символьный ключ. Он нам пригодится для отправки данных о температуре в облако.

    Прошивка NodeMCU

    NodeMCU — это прошивка, позволяющая запускать Lua скрипты на ESP8266. Качаем последний NodeMCU Flasher и запускаем его.
    Подключаем GPIO0 на землю. Выбираем нужный COM порт и скорость 74880 или 115200 (как я понимаю, у некоторых версий ESP8266 бутлоадер работает на 74880). Нажимаем Flash и передергиваем питание на ESP8266. Если прошивка не запускается, проверяем корректность подключения RX,TX, запустив PuTTY на скорости 74880. В момент подачи питания в консоль должна валится строка вроде «ets Jan 8 2013,rst cause:1, boot mode:(1,0)«. После корректной прошивки отключаем GPIO0 от земли:

    Заливка Lua скриптов и запуск

    Скачиваем и запускаем LuaLoader. Выбираем COM-порт и скорость 9600, если нет соединения — пробуем передернуть питание у модуля ESP8266. Проверяем соединение, нажав на кнопку ChipID. В консоль должен вывестись идентификатор чипа.

    Заливаем нужные файлы (кнопка UploadFile):

    1. ds18b20.lua — библиотека для взаимодействия с DS18B20;
    2. httpsender.lua — наш скрипт, читающий данные температуры и отправляющий их на thingspeak.com. Не забываем заменить YOURAPIKEY на свой ключ.
    gpio=6 — в случае подключения датчика к GPIO12, в случае GPIO0 — gpio=3 (таблица):

    3. init.lua — скрипт инициализирующий WiFi и запускающий httpsender.lua. Не забываем прописать свои SSID и пароль для WiFi:

    Планы

    Это первый опыт работы с ESP8266. В планах попробовать следующее:

    1. Найти альтернативу thingspeak. Графики хочется двигать и масштабировать. Может, кто-то знает аналоги?
    2. Датчик влажности (возможно, DHT22). Вроде уже есть в стандартных библиотеках.
    3. Датчик CO2 на основе датчика K-30.
    4. Управляемый рассвет без дополнительного контроллера, управление с ESP8266. Вдохновила публикация «Искусственный рассвет».

    Источник

    Adblock
    detector