Ds18b20 подключение датчика температуры к arduino: инструкция

Содержание

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

В этой статье мы собрали 8 доступных датчиков температуры, совместимых с Arduino и другими платами разработки (такими как ESP32 или ESP8266).

1. DHT11

ds18b20 подключение датчика температуры к arduino: инструкция

DHT11 это цифровой датчик температуры, который измеряет температуру и относительную влажность воздуха.

Этот датчик содержат микросхему, которая выполняет аналого-цифровое преобразование и выдает цифровой сигнал с температурой и влажностью. Это делает его очень простыми в использовании с любым микроконтроллером, включая Arduino.

ds18b20 подключение датчика температуры к arduino: инструкция

Цифровой мультиметр AN8009

Большой ЖК-дисплей с подсветкой, 9999 отсчетов, измерение TrueRMS…

Ниже приведены наиболее важные технические характеристики датчика температуры DHT11:

2. DHT22

ds18b20 подключение датчика температуры к arduino: инструкция

Датчик температуры DHT22 очень похож на DHT11. Он также измеряет температуру и влажность, и его распиновка такая же. Он немного дороже, но более точен и имеет более широкий диапазон измерения температуры и влажности.

Ниже приводим наиболее важные характеристики датчика температуры DHT22:

3. LM35DZ, LM335, LM34

ds18b20 подключение датчика температуры к arduino: инструкция

LM35DZ представляет собой линейный датчик температуры, который откалиброван непосредственно в градусах Цельсия. Аналоговый выход прямо пропорционален температуре в градусах Цельсия: 10 мВ на каждый градус Цельсия.

Этот датчик очень похож на LM335 (откалиброванный в Кельвинах) и LM34 (откалиброванный в градусах Фаренгейта).

Далее приведены наиболее важные характеристики датчика температуры LM35:

  • Протокол связи: аналоговый выход
  • Диапазон питания: от 4 до 30 В
  • Диапазон температур: от -55 до 150ºC
  • Точность: +/- 0,5ºC (при 25ºC)
  • Интерфейс с Arduino: analogRead ()

4. BMP180

ds18b20 подключение датчика температуры к arduino: инструкция

Хотя BMP180 является датчиком атмосферного давления, он также может измерять температуру. Это очень удобно при создании проекта метеостанции.

Ниже приведены наиболее важные характеристики датчика BMP180, когда речь идет о показаниях температуры.

  • Протокол связи: I2C
  • Диапазон питания (для чипа): от 1,8 до 3,6 В
  • Диапазон питания (для модуля): от 3,3 до 5 В
  • Диапазон температур: от 0 до 65ºC
  • Точность: +/- 0,5ºC (при 25ºC)
  • Библиотеки Arduino: Adafruit BME085, Adafruit Unified Sensor Library

5. TMP36

ds18b20 подключение датчика температуры к arduino: инструкция

TMP36 — аналоговый датчик температуры. Он выводит аналоговое значение, пропорциональное температуре окружающей среды. Он очень похож на датчик температуры LM35.

Вот его основные характеристики:

  • Протокол связи: аналоговый выход
  • Диапазон питания: от 2,7 В до 5,5 В
  • Диапазон температур: от -40 ° C до + 125 ° C
  • Точность: +/- 1ºC (при 25ºC)
  • Интерфейс с Arduino: analogRead ()

6. LM75

ds18b20 подключение датчика температуры к arduino: инструкция

Датчик LM75 — еще один полезный датчик температуры. Он работает по шине I2C, то есть с Arduino этот датчик соединяется по линиям SDA и SCL.

Взгляните на следующую таблицу, где приведены сводные технические характеристики датчика LM75:

  • Протокол связи: I2C
  • Диапазон питания: от 3,0 до 5,5 В
  • Диапазон температур: от -55 до 125 ° C
  • Точность: +/- 2,0 ° C (в диапазоне от -55 до 125 ° C))
  • Библиотеки Arduino: Temperature_LM75_Derived

7. BME280

ds18b20 подключение датчика температуры к arduino: инструкция

BME280 является барометрическим датчиком, который также измеряет температуру и влажность. Он может обмениваться данными с микроконтроллером по шине I2C или SPI. Питание модуля BME280 составляет 3,3 В или 5 В.

В следующей таблице приведены сводные технические характеристики датчика BME280, когда речь идет о датчике температуры:

8. DS18B20

ds18b20 подключение датчика температуры к arduino: инструкция

DS18B20 — цифровой дтчик температуры работающий по протоколу 1-Wire. Это означает, что для связи с Arduino требуется только одна линия данных (и GND).

Каждый датчик температуры DS18B20 имеет уникальный 64-битный серийный код. Это позволяет подключить несколько датчиков к одному проводу передачи данных. Таким образом, вы можете получать температуру от нескольких датчиков, используя всего один цифровой вывод Arduino.

Ниже приведены наиболее важные характеристики датчика температуры DS18B20:

  • Протокол связи: 1-Wire
  • Диапазон питания: от 3,0 до 5,5 В
  • Диапазон рабочих температур: от -55ºC до + 125ºC
  • Точность: +/- 0,5 ºC (в диапазоне от -10ºC до 85ºC)
  • Библиотеки Arduino: DallasTemperature, OneWire

Цифровой термометр DS18B20 и ARDUINO UNO

Казалось бы, что может быть интересного и нового в измерении температуры при помощи Ардуино? Написаны сотни статей, объемом десятки мегабайт, может чуть меньше, а может и чуть больше скетчей… А вот еще и моя статья.

Зачем? Честно говоря, я тоже думал, что вопрос этот «разжеван вдоль и поперек», пока сам не столкнулся с измерением температуры. А тут полезло. Что-то не работает, что-то работает не так, возникает масса вопросов, на которые ответы приходится «выцарапывать» перерывая половину интернета, причем не только русскоязычного.

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

Зачем, собственно измерять температуру чем-то новым, когда термометров продается – на любой вкус и кошелек? А дело в том, что температуру, зачастую, приходится не только измерять, но потом, на основе полученных данных что-то делать, либо просто регистрировать с целью отслеживания изменений.

Соединив, при помощи Ардуино, термодатчик с релейным блоком получим простейший терморегулятор, а если данный терморегулятор сможет отслеживать температуру по нескольким точкам (зонам) и действовать по определенному алгоритму получим довольно серьезный прибор, промышленный аналог которого стоит сопоставимо со стоимостью неплохого ноутбука. Однако, целью данной статьи не является создание заумно-сложных устройств. Цель в другом — предложить новичку простое, проверенное на практике, решение для измерения температуры. Также, как и предыдущие статьи эта будет состоять из частей. В каждой из которых будет рассмотрен свой вопрос. Части будут идти по возрастанию сложности.

Часть первая. Простейшая, но тоже полезная

Итак, от слов к делу! Для реализации данного проекта на первом этапе нам понадобится цифровой термодатчик DS18B20, ARDUINO UNO, резистор на 4,7 кОм (мощность особого значения не имеет, от 0,125 до 2 Вт целиком подходит, но имеет значение точность, чем точнее – тем лучше), кусочек 3-жильного провода (и отдельные проводки на этапе эксперимента тоже подойдут), а еще — несколько штырьков для платы. Хотя и без них тоже можно, если аккуратно, конечно. Выбор данного датчика не случаен. Дело в том, что он может отслеживать температуру в диапазоне от -55оС до +125оС с точностью в основной части диапазона 0,5оС, что вполне хватает для управления, как бытовым отоплением, так и разнообразными морозильными и холодильными установками, а также банями, саунами, теплицами, инкубаторами, рассадниками и прочим. Напоминаю, что ARDUINO UNO можно свободно приобрести здесь: arduino-kit.com.ua/uno-r3-new.html или здесь: arduino-kit.com.ua/arduino-leonardo-original-italiya-new-rev3.html , термодатчик DS18B20 — arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html , хотя лично у меня – такой:arduino-kit.com.ua/cifrovoy-datchik-temperatury-odnozhilnyy-ds18b20.html достоинство моего — малые размеры, сопоставимые с размерами кабеля. Недостатки – отсутствие платы, что в некоторых условиях отрицательно сказывается на удобстве монтажа и жизнеспособности датчика. Также – у датчика arduino-kit.com.ua/18b20-sensor-datchik-temperatury-dlya-arduino.html встроен резистор и больше никаких резисторов паять не нужно, зато исчезает возможность подключить несколько датчиков «цепочкой». Подключение датчика к Ардуино видно на Рис. 1 и указано в Таблице 1. На термодатчике определить контакты просто. Нужно взять его так, чтобы смотреть на срез с цифрами, а ножки были внизу. Крайняя левая ножка будет GND, средняя DQ, а крайняя правая VDD.

Пин Ардуино Уно Пин DS18B20 Примечание
GND GND «-»
+5V VDD +5V, также подпаивается одна ножка резистора 4,7 кОм.
10 DQ Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 1. Подключение одного термодатчика.

На рисунке видно, что было использовано два резистора. Это связано с тем, что найденный мной резистор с маркировкой «4К7», на самом деле имел довольно высокую погрешность, которую и пришлось компенсировать вторым резистором.

Общее сопротивление данной сборки составило 4,695 кОм, что я считаю вполне приемлемым. Также на рисунке можно видеть, что датчик не подпаян непосредственно к проводам (обрезок шлейфа), а вставлен в разъем. Сделано это было из соображений развития эксперимента.

Паять данные датчики настоятельно рекомендуется. Сам скетч также получился довольно компактным:

Всего 14 строчек кода с ми. Любому новичку будет по силам разобраться. В результате работы программа выдаст нечто подобное:

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 2. Результат работы с одним датчиком.

Часть вторая. Немного усложненная

Усложним мы эту часть тем, что добавим еще один датчик. Предположим, что нам нужно измерять температуру на улице и в помещении. Для этого всего лишь допаиваем один датчик «в цепочку». Очень напоминает параллельное подключение. Знатоки электрики поймут, о чем я. Но отличие есть: в данном случае выводы от центрального провода должны быть как можно короче.

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 3. Плата с двумя датчиками.

Скетч вырос всего на 3 строчки. Теперь в нем 17 строк:

Результаты работы этого скетча видно на Рисунке 4.

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 4. Работа с двумя датчиками.

Часть третья. Заключительная

А теперь подключим к Ардуино светодиод, который будет загораться при достижении определенной температуры. Такой себе «пороговый сигнализатор». Для этого нужен обычный светодиод и токоограничивающий резистор.

Мне под руку попался на 100 Ом, его я и использовал, подключив к 7-у контакту Ардуино. Длинную ножку светодиода (анод) подпаиваем к резистору, а короткую (катод) подключаем к контакту GND Ардуино.

Должно получиться, примерно, как на рисунке 5.

ds18b20 подключение датчика температуры к arduino: инструкция

Скетч также вырос совсем не на много:

Работа данной программы на компьютере отображается точно также, как показано на Рисунке 4. Естественно переменной sensors.getTempCByIndex(1) можно оперировать в очень широких пределах и управление светодиодиком лишь самый простой пример из всех возможных.

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

В идеальных условиях – 300 метров, но создание «идеальных» условий – довольно дорогостоящее удовольствие. В реальных условиях – не рекомендуется превышать 10 метров. Для обычного «комнатного» термометра этого более чем достаточно, но если речь идет о каком-либо более серьезном оборудовании – этого катастрофически мало.

Тем более, что для стабильной работы необходимо, чтобы датчики располагались как можно ближе к проводникам шины – «гирляндой». Отводить, конечно, тоже можно, но точность и помехозащищенность в этом случае будут крайне низкими.

Итак, подключаем мы несколько «гирлянд» именно для того, чтобы собрать информацию с большого числа точек, при этом сохранив достаточную точность и помехозащищенность. Добавляем контакты согласно таблице 2:

Пин Ардуино Уно Пин DS18B20 Примечание
GND GND «-»
+5V VDD +5V, также подпаивается одна ножка резисторов 4,7 кОм.
10 DQ Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.
8 DQ Цифровой ввод, также подпаивается вторая ножка резистора 4,7 кОм.

Как видно из таблицы – ничего сложного нет, точно такая же шина, только на другой цифровой вод. Не стал паять на 9-й контакт только из соображений удобства и скорости пайки.

  • Вряд ли скетч нуждается в излишних х.
  • Результат работы скетча выглядит так:

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 6. Работа одновременно двух линий датчиков.

  1. А плата с подключенными двумя линиями выглядит так:

ds18b20 подключение датчика температуры к arduino: инструкция

Рисунок 7. Плата с двумя шинами.

  • Из рисунка видно, что резистор 4,7кОм для повышения точности также выполнен составным.
  • Библиотеки, примененные для написания скетчей рассмотренных в статье находятся здесь:

Обзор подготовил Павел Сергеев

Термометр с помощью arduino и датчиков LM35 и DS18B20

Я писал недавно статью, где подключал к arduino 4-разрядный 7-сегментный индикатор hs420561k-32, тогда упоминал, что хочу сделать градусник с выводом температуры на этот индикатор, только проблема была в отсутствии датчиков.

И вот наконец-то приехала посылка с недостающими запчастями и можно продолжить проект. Температурных датчиков у меня три штуки – dht11, LM35 и DS18B20.

Но использовать буду только LM35 и DS18B20, поскольку dht11 очень неточный, в даташите написано, что отклонения от реальной температуры составляют плюс-минус два градуса, а так же он работает только с положительной температурой.

Температурный датчик LM35. Подключение к arduino

Первый датчик, который будем использовать – это LM35, использовать его очень просто, тут даже дополнительные библиотеки не требуются, достаточно подключить к нему питание и считать данные на выходе с помощью аналогового пина arduino. LM35 работает с температурами от -55 до 150 градусов Цельсия и если верить даташиту, то погрешность составляет всего плюс-минус 0,25 градуса.

Хоть датчик и обрабатывает до +150 градусов, но считать ардуиной сможем только до +110, хотя и это более чем достаточно для домашнего градусника. Поскольку этот датчик имеет высокую точность, но находится в корпусе TO92, без какой-либо дополнительной защиты, использовать его будем для измерения температуры в помещении.

Официальный мануал arduino рекомендует использовать для снятия показаний этого датчика опорное напряжение 1,1 В. Чтобы настроить arduino подобным образом достаточно использовать команду analogReference(INTERNAL) в функции setup. Далее достаточно просто, с нужным интервалом, считывать напряжение с выходной ножки(OUT) датчика.

LM35 формирует напряжение 10 милливольт на один градус, таким образом имея опорное напряжение в 1,1 В легко обработать, довольно точно, данные.

void setup() <
// меняем опорное напряжение на 1.1 В, относительно которого происходят аналоговые измерения
analogReference(INTERNAL);
>
void loop() <
reading = analogRead(A0); // LM35 подключен к пину A0
temperature = (1.1 * reading * 100.0) / 1024; // получаем значение в градусах Цельсия
>

Ниже на картинке показано, какая нога датчика LM35 за что отвечает.

ds18b20 подключение датчика температуры к arduino: инструкция

Температурный датчик DS18B20. Подключение к arduino

Второй датчик, который будет использован – это цифровой DS18B20. Точность в этом случае не на много ниже — плюс-минус 0,5 градуса, а диапазон измерения температуры практически такой же: от -55 до +125 градусов Цельсия.

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

Еще из плюсов сюда можно добавить возможность подключение одновременно до 127 датчиков на один пин ардуино, только я даже предположить не могу, где это может пригодиться :).
Считывать данные с DS18B20 немного сложнее, чем с LM35, для удобства можно воспользоваться библиотекой OneWire.

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

На картинке ниже показано, как подключать датчик DS18B20. Основным моментом является то, что необходимо использовать резистор сопротивлением 4.7 кОм для соединения провода, передающего данные и плюсовым.

ds18b20 подключение датчика температуры к arduino: инструкция

Проблема вывода температуры на индикаторе hs420561k-32

Пока я разбирался с каждым датчиком по отдельности, а также когда подключал к arduino 4-х разрядный 7-сегментнтый индикатор, проблем ни каких не было, все прекрасно работало. Но стоило мне собрать все в кучу, на одну макетную плату и собрать код воедино, как сразу появилась серьезная проблема.

Я писал в прошлой статье, что для одновременного вывода данных сразу на 4-х разрядах hs420561k-32 необходимо очень быстро по очереди выводить по одному разряду, тогда создается впечатление одновременного вывода четырех цифр, глаз не успевает уловить смену разрядов.

В связи с таким способом вывода возникла сложность с одновременной работой датчика DS18B20, для его опроса требуется чуть больше секунды времени – в двух участках кода используется delay, который заставляет микроконтроллер ждать, 250 и 1000 миллисекунд.

Сначала я сделал запрос к датчику раз в 30 секунд, но это не решило проблему – два раза в минуту датчик по секунде показывал непонятно что. Поэтому пришлось отказаться от delay и добавить другую аналогичную конструкцию в код, которая будет выполнять определенные куски кода с задержкой, а остальной код будет выполняться без задержек.

Многопоточности в arduino, как оказалось, нет, но есть псевдомногопоточность, добиться ее можно используя не хитрую конструкцию с таймером, который отмеряет время в миллисекундах от старта работы микроконтроллера. Пример такого кода я приведу ниже:

bool flag = false; // флаг
unsigned long previousMillis = 0; // время последнего срабатывания
const long interval = 1000; // интервал срабатывания кода, задержка.

void loop() <
// получаем время в миллисекундах, которое прошло
// с момента начала работы МК
unsigned long currentMillis = millis();
// проверяем сколько прошло врмени
if (currentMillis &#8212; previousMillis >= interval) <
// если прошло нужное количество миллисекунд,
// то записываем в переменную количество прошедшего времени
previousMillis = currentMillis;

// меняем положение флага,
// это может быть вкл и выкл светодиода, например
flag = !flag;
>
>

Что использовалось в проекте:

Скетч уличного и комнатного термометра на arduino

Все сложные моменты, с которыми возникали сложности, в процессе создания термометра я описал, теперь остается только написать скетч, его код приведен ниже, а также доступен для скачивания тут: скачать.

#include // библиотека для работы с датчиком DS18B20

OneWire ds(10); // подключаем уличный датчик к 10 пину

//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к ST_CP входу 74HC595
int latchPin = 7;
//Пин подключен к DS входу 74HC595
int dataPin = 8;
int tempHomePin = A0; // градусник в помещении

// Пины разрядов цифер
int pins_numbers[4] = <2, 3, 4, 5>;
// Биты для отображения цифер от 0-9, минуса и символ градуса Цельсия
byte numbers_array[22] = <
B00111111, B00000110, B01011011, B01001111, // 0 1 2 3
B01100110, B01101101, B01111101, B00000111, // 4 5 6 7
B01111111, B01101111, B01000000, B01100011, // 8 9 &#8212; о
// цифры с точкой внизу (+12 к индексу элемента)
B10111111, B10000110, B11011011, B11001111, // 0 1 2 3
B11100110, B11101101, B11111101, B10000111, // 4 5 6 7
B11111111, B11101111 // 8 9
>;

int cel_celsius = 0; // переменная для хранения градусов на улице
float tempHome = 0; // переменная для хранения градусов в помещении

const long tempInterval = 3000; // интервал запроса актуальной температуры
unsigned long previousMillis = 0; // время предыдущего запроса
unsigned long previousMillis_delay = 0; // хранения последней даты срабатывания, для второй задержки
bool startQuery = false; // флаг, для обозначения начала запроса температуры
bool firstQuery = true; // флаг первого запуска, при котором получаем температуру без задержек

bool showhome = true; // флаг, который указывают какую температуру показывать &#8212; комнату или улицу
int sec_show = 5000; // интервал смены отображения погоды
unsigned long showhomeMillis_delay = 0; // хранения последней переключения градусников

// функция для вывода чисел на индикаторе
void showNumber(int numNumber, int number) <
// зажигаем нужные сегменты
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, numbers_array[number]);
digitalWrite(latchPin, HIGH);

// включаем нужный разряд(одну из четырех цифр)
int num_razryad = pins_numbers[numNumber-1];
for(int i; i= tempInterval) || startQuery || firstQuery) <
previousMillis = currentMillis;

// читаем данные от датчика на улицы
if ( !ds.search(addr)) <
ds.reset_search();
//delay(250);
return;
>

// если ни чего не получили или получили не понятные данные
if (OneWire::crc8(addr, 7) != addr[7]) <
return;
>
// читаем первый байт и определяем тип датчика
switch (addr[0]) <
case 0x10: // DS18S20
type_s = 1;
break;
case 0x28: // DS18B20
type_s = 0;
break;
case 0x22: // DS1822
type_s = 0;
break;
default:
return;
>

// делаем запрос на получение данных от датчика
ds.reset();
ds.select(addr);
ds.write(0x44);
// ждем
startQuery = true;
// delay(1000);
if ( currentMillis &#8212; previousMillis_delay >= 1000 ) <
previousMillis_delay = currentMillis;
>else <
return;
>

startQuery = false;
// и получаем ответ
present = ds.reset();
ds.select(addr);
ds.write(0xBE);

// берем только первые 9 байт
for ( i = 0; i Читайте также: Датчик коленвала ВАЗ 2110: расположение, проверка, замена

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

ds18b20 подключение датчика температуры к arduino: инструкция

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

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

//устанавливаем подключение к MySQL
$connect = mysql_connect($dbhost, $dbuser, $dbpass);

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

Fatal error: Uncaught Error: Call to undefined function mysql_connect()

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

$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

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

mysqli_query($connect, INSERT INTO temperature VALUES (NOW(), '$temp', '$client_ip'));

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

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

Arduino HC-06 + DS18B20 (Терморегулятор)

Статьи » Arduino » Arduino HC-06 + DS18B20 (Терморегулятор)

При помощи Bluetooth модуля HC-06 и платы Arduino можно осуществить управление различными исполнительными механизмами c помощью смартфона. В данном случае речь пойдет от терморегуляторе. В качестве датчика температуры используется цифровой датчик DS18B20, температура регулируется при помощи реле (модуля реле) которое управляет нагревательным элементом.

ds18b20 подключение датчика температуры к arduino: инструкция ds18b20 подключение датчика температуры к arduino: инструкция

На плате Arduino осуществляется измерение температуры и регулировка температуры срабатывания реле, а так же передача текущей температуры и температуры регулирования в Android приложение.

Android приложение в свою очередь осуществляет соединение с Bluetooth модулем HC-06, изменение температуры регулирования и получение данных от платы Arduino о текущей температуре и температуре регулирования.

Фактически плата Arduino работает автономно, измеряет температуру, управляет реле и хранит в памяти значение температуры регулирования. При изменении температуры регулирования на экран смартфона выводится уже подтвержденная и принятая платой Arduino температура.

Схема всего уст-ва очень простая, она содержит плату Arduino Nano (Uno), Bluetooth модуль HC-06 (подключение) и датчик DS18B20 показания которого передаются на вход A0. Выход управления реле (D13) и подключение датчика температуры можно изменить.

Для установки приложения на смартфон скачайте архив 18b20regapk.zip, распакуйте архив приложения и установите его.

DS18B20 подключение к Arduino | Технохрень

  • #include
  • #include
  • // Пин Arduino куда подключен датчик
  • #define ONE_WIRE_BUS 10
  • // Объявляем переменные
  • OneWire oneWire(ONE_WIRE_BUS);
  • DallasTemperature sensors(&#038;oneWire);
  • // тут будет хранится адрес нашего датчика. Каждый DS18B20 имеет свой уникальный адрес, зашитый на заводе
  • DeviceAddress insideThermometer;
  • void setup(void)
  • <
  • Serial.begin(9600);
  • Serial.println(Dallas Temperature IC Control Library Demo);
  • // Поиск устройств на выбранном пине

// определяемся с режимом питания датчиков. Они кстати могут питаться по тому же проводу, по которому отправляют данные

Serial.print(Parasite power is: );

if (sensors.isParasitePowerMode()) Serial.println(ON);

  1. else Serial.println(OFF);
  2. // тут можно прописать адрес вручную
  3. // Есть 2 варианта:
  4. // 1) oneWire.search(deviceAddress) – сразу если известен адрес датчика
  5. // 2) sensors.getAddress(deviceAddress, index) – по номеру подключения, начиная с 0
  6. //insideThermometer = < 0x28, 0x1D, 0x39, 0x31, 0x2, 0x0, 0x0, 0xF0 >;
  7. // Мы будем использовать 2 вариант – поищем первый датчик (номер=0):

if (!sensors.getAddress(insideThermometer, 0)) Serial.println(Не найден адрес датчика 0);

  • // Показываем адрес, который нашли
  • Serial.print(Адрес датчика 0: );
  • printAddress(insideThermometer);
  • Serial.println();

// устанавливаем разрешение датчика на 9 бит. Можно попробовать 10 поставить. Эта штука отвечает за точность показаний. Чем выше точность тем меньше скорость получения температуры.


Источник: avtolev.ru