Какие бывают датчики температуры и влажности для Arduino. Как подключить и использовать датчики DS18B20, DHT11, DHT22. Примеры проектов с датчиками климата на Arduino.
Обзор популярных датчиков температуры и влажности для Arduino
Arduino позволяет легко создавать устройства для измерения температуры, влажности и других параметров окружающей среды. Рассмотрим наиболее популярные датчики, которые часто используются в проектах с Arduino:
- DS18B20 — цифровой датчик температуры с интерфейсом 1-Wire
- DHT11 — недорогой датчик температуры и влажности
- DHT22 — более точный датчик температуры и влажности
- BMP180 — датчик атмосферного давления с функцией измерения температуры
- HTU21D — высокоточный датчик влажности и температуры
Каждый из этих датчиков имеет свои особенности и области применения. Рассмотрим их подробнее.
Подключение и использование датчика DS18B20
DS18B20 — это популярный цифровой датчик температуры с интерфейсом 1-Wire. Его основные преимущества:
- Диапазон измерений от -55°C до +125°C
- Точность ±0.5°C в диапазоне от -10°C до +85°C
- Разрешение 9-12 бит (настраиваемое)
- Уникальный 64-битный серийный номер
- Возможность подключения нескольких датчиков на одну линию данных
Для подключения DS18B20 к Arduino необходимо:
- Подключить VCC датчика к 5V Arduino
- Подключить GND датчика к GND Arduino
- Подключить линию DATA датчика к цифровому пину Arduino (например, D2)
- Установить подтягивающий резистор 4.7 кОм между VCC и DATA
Для работы с DS18B20 удобно использовать библиотеки OneWire и DallasTemperature. Пример кода для считывания температуры:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
Serial.print("Температура: ");
Serial.print(tempC);
Serial.println("°C");
delay(1000);
}
Работа с датчиком температуры и влажности DHT11
DHT11 — это бюджетный датчик для измерения температуры и относительной влажности воздуха. Его характеристики:
- Диапазон измерения влажности: 20-80% с точностью ±5%
- Диапазон измерения температуры: 0-50°C с точностью ±2°C
- Частота опроса не более 1 Гц (1 раз в секунду)
- Напряжение питания 3-5В
Схема подключения DHT11 к Arduino:
- VCC датчика к 5V Arduino
- GND датчика к GND Arduino
- DATA датчика к цифровому пину Arduino (например, D4)
Для работы с DHT11 можно использовать библиотеку DHT. Пример кода:
#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Ошибка чтения датчика!");
return;
}
Serial.print("Влажность: ");
Serial.print(h);
Serial.print("% Температура: ");
Serial.print(t);
Serial.println("°C");
}
Использование датчика DHT22 для точных измерений
DHT22 (также известен как AM2302) — это улучшенная версия DHT11 с более высокой точностью и диапазоном измерений. Его характеристики:
- Диапазон измерения влажности: 0-100% с точностью ±2-5%
- Диапазон измерения температуры: -40…+80°C с точностью ±0.5°C
- Частота опроса не более 0.5 Гц (1 раз в 2 секунды)
- Напряжение питания 3.3-6В
Подключение DHT22 аналогично DHT11. В коде достаточно изменить тип датчика:
#define DHTTYPE DHT22
DHT22 обеспечивает более точные и стабильные показания по сравнению с DHT11, поэтому рекомендуется для проектов, требующих высокой точности измерений.
Измерение атмосферного давления с помощью BMP180
BMP180 — это цифровой барометрический датчик давления, который также может измерять температуру. Его основные характеристики:
- Диапазон измерения давления: 300-1100 гПа
- Точность измерения давления: ±0.12 гПа
- Диапазон измерения температуры: -40…+85°C
- Интерфейс I2C
Для подключения BMP180 к Arduino используется интерфейс I2C:
- VCC датчика к 3.3V Arduino
- GND датчика к GND Arduino
- SCL датчика к пину SCL Arduino (A5 на Uno)
- SDA датчика к пину SDA Arduino (A4 на Uno)
Пример кода с использованием библиотеки Adafruit_BMP085:
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("BMP180 не найден!");
while (1) {}
}
}
void loop() {
Serial.print("Температура = ");
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print("Давление = ");
Serial.print(bmp.readPressure());
Serial.println(" Па");
Serial.print("Высота = ");
Serial.print(bmp.readAltitude());
Serial.println(" метров");
Serial.println();
delay(5000);
}
Примеры проектов с датчиками климата на Arduino
Датчики температуры, влажности и давления находят широкое применение в различных проектах на базе Arduino. Рассмотрим несколько интересных идей:
Домашняя метеостанция
Объединив датчики DHT22 и BMP180, можно создать полноценную домашнюю метеостанцию, измеряющую температуру, влажность и атмосферное давление. Данные могут отображаться на LCD дисплее или передаваться на смартфон через Bluetooth модуль.
Система мониторинга теплицы
Датчики DS18B20 можно использовать для контроля температуры почвы и воздуха в теплице. DHT22 поможет следить за влажностью. При отклонении показателей от заданных значений система может автоматически включать полив или вентиляцию.
Умный инкубатор
Точный контроль температуры и влажности критически важен при инкубации яиц. Датчик DHT22 в сочетании с реле для управления нагревателем и увлажнителем позволит создать автоматизированный инкубатор.
Регистратор климатических данных
Arduino с датчиками и модулем SD-карты может использоваться для долговременной записи климатических параметров. Это полезно для научных исследований или мониторинга условий хранения чувствительных материалов.
Как выбрать подходящий датчик для вашего проекта
При выборе датчика температуры и влажности для проекта на Arduino следует учитывать несколько факторов:
- Требуемая точность измерений
- Диапазон измеряемых значений
- Условия эксплуатации (влажность, запыленность)
- Скорость опроса датчика
- Энергопотребление
- Стоимость
Для большинства домашних проектов отлично подойдет DHT22, обеспечивающий хороший баланс точности и стоимости. Если важна только температура, то DS18B20 предоставляет отличные характеристики и возможность подключения нескольких датчиков к одному пину. Для промышленных применений или научных исследований стоит рассмотреть более профессиональные датчики с высокой точностью и надежностью.
Заключение
Датчики температуры и влажности значительно расширяют возможности проектов на базе Arduino. Они позволяют создавать системы мониторинга окружающей среды, автоматизировать управление климатом и реализовывать множество интересных идей. Правильный выбор датчика и его корректное подключение — ключ к успешной реализации проекта.
Климатические датчики Arduino — гарантия качества
Климатические датчики Arduino
Сортувати: За замовчуванням Назва (А — Я) Назва (Я — А) Ціна (низька > висока) Ціна (висока > низька) Рейтинг (починаючи з високого) Рейтинг (починаючи з низького) Модель (А — Я) Модель (Я — А)
Показати 25 50 75 100
Показано з 1 по 2 із 2 (1 сторінок)
Климатические датчики подходят для измерения параметров окружающей среды. Они позволяют проектировщику собрать устройство, с помощью которого можно постоянно мониторить:
- влажность;
- температуру;
- давление.
В связи с этим для выбора электротехнику представлены датчики температуры Ардуино, сенсоры для измерения атмосферного давления, влажности воздуха. Существуют комплексные микросхемы, которые позволяют измерять несколько параметров одновременно.
Как работает датчик атмосферного давления Ардуино
Модули представляют собой высокоточные устройства, которые зачастую программируются на разные режимы. Датчик атмосферного давления Arduino может функционировать:
- с определенной периодичностью;
- в режиме экономии энергии;
- в режиме активации с подачи определенного сигнала.
За основу цепи, в которой будет работать сенсор давления, можно взять любой подходящий микроконтроллер Ардуино, например, Uno, Leonardo, Mini. Это правило также распространяется на любой датчик температуры и влажности Ардуино. Для коннекта на микросхеме обозначены выходы для питания, заземления и аналогового/цифрового входа.
Датчик температуры и влажности Ардуино
На поверхности микросхемы данных устройств располагается чип, способный выполнять преобразование определенного сигнала в цифру, таким образом позволяя пользователю получать нужные показатели. В зависимости от вида установленного чипа, можно приобрести температурные сенсоры:
- Инфракрасный датчик температуры Ардуино. В его конструкцию встроен чип, который способен зафиксировать инфракрасную энергию, излучаемую объектом. Полученные данные преобразуются и посредством микроконтроллера передаются пользователю. Иными словами, это бесконтактный датчик температуры Arduino, с помощью которого часто собираются приборы для измерения температуры без прямого контакта с объектом.
- Цифровой сенсор. Улавливает температуру при прямом контакте с объектом (воздухом). Затем подключенный датчик температуры к Ардуино передает полученные данные на плату, которая выдает точный показатель.
Также можно приобрести датчик температуры почвы Ардуино, он активно применяется в сельском хозяйстве, в частных условиях, например, на приусадебных участках. Устройство работает по принципу цифрового модуля для измерения температуры воздуха.
Подключение сенсоров осуществляется в стандартном порядке при наличии микроконтроллера, соединительных проводов. В качестве основы подойдет беспаечная макетная плата. Также следует заранее запрограммировать микроконтроллер: прежде чем эксплуатировать датчик температуры и влажности Ардуино, скетч прописывается в программном обеспечении Arduino IDE, которое устанавливается на ПК. После прошивки плата сможет считывать полученные данные и выводить их пользователю на нужное устройство.
Зачастую схемотехники используют Ардуино и датчик температуры, влажности, атмосферного давления в одном устройстве. Модуль используют для сборки климатических станций и при организации системы “Умный дом”.
Преимущества сенсоров
- Простое подключение. Используя сенсор давления, влажности или датчик температуры для Ардуино, своими руками вы можете собрать полноценную метеостанцию. При необходимости цепь можно наполнить функциональными устройствами — в зависимости от целей.
- Отсутствие погрешности. Несложно подобрать точный датчик температуры Arduino, так как большинство моделей, в том числе измеряющих другие показатели воздуха, работают безошибочно.
- Широкий рабочий диапазон. Любой атмосферный или датчик влажности и температуры на Arduino, способен измерять определенный показатель в широком диапазоне. Например, температурный параметр большинства сенсоров варьируется в пределах от -40 до +85 градусов Цельсия. Давление — от 300 hPa до 1100 hPa. Датчик влажности воздуха Arduino способен точно определить показатель от 20 до 95%.
- Надежность. Как показывает практика, если схема собрана правильно, и готовое устройство хорошо защищено от негативных влияний, ИК, цифровой датчик температуры Ардуино, как и другие сенсоры, способен отработать ни один год.
- Компактность. Абсолютно все сенсоры имеют небольшие габариты. Например, одна из самых популярных моделей DHT11 — это датчик температуры и влажности Arduino с размерами всего 15,5*12 мм.
- Доступная цена. При своей многофункциональности и простоте конструкции, микросхемы имеют доступную стоимость, которая не окажет существенного влияния на бюджет всего проекта.
Arduino: датчик температуры и влажности, атмосферного давления на Ekot.
com.uaИнтернет-магазин Ekot.com.ua предлагает широкий выбор климатических сенсоров с разными техническими особенностями. В нашем каталоге подходящий модуль смогут подобрать не только опытные ардуинщики, но и начинающие любители робототехники. Микросхемы, определяющие температуру, давление, а также датчики влажности Ардуино или комплексные решения, имеют подробные технические описания, из которых вы узнаете:
- Какой диапазон параметров способен фиксировать сенсор.
- При каких условиях осуществляется подключение датчика температуры Ардуино.
Стоимость представленных изделий доступна, осуществляется доставка в разные города Украины. При необходимости обратитесь к нашим специалистам за консультацией.
Цифровой датчик температуры и влажности. Модуль для Arduino на DHT11 (KY-015) From 49.4 UAH
Product id: 106937
Manufacturer: Arduino
Описание: Цифровой датчик температуры и влажности. датчик содержит в себе АЦП для преобразования аналоговых значений влажности и температуры. Определение влажности: 20-90% RH ± 5%, определение температуры: 0-50 ºC, частота опроса: не более 1 Гц. Назначение выводов: 1. VCC (3-5VDC) 2. Data Out – Вывод данных 3. NC – не используется 4. GND. Габариты: 15,5x12x5,5 мм
Тип: Датчик
on stock: 398 pcs
372 pcs — stock Kyiv
9 pcs — RADIOMAG-Kyiv
10 pcs — RADIOMAG-Lviv
7 pcs — RADIOMAG-Kharkiv
1+ | 60.5 UAH |
10+ | 54.9 UAH |
100+ | 49.4 UAH |
Technical description Цифровой датчик температуры и влажности. Модуль для Arduino на DHT11 (KY-015) Arduino
With this product buy
I2C LCD adapter Product id: 84467 |
Constructors and kits > Arduino
Описание: Интерфейсный модуль на микросхеме PCF8574T для расширения количества портов ввода/вывода, может использоваться как интерфейсная плата для подключения ЖКИ 1602 и 2004 так и как самостоятельное устройство. Интерфейсная микросхема: PCF8574AT/T, интерфейс: I2C, диапазон адресов I2C: PCF8574T — 0x20-0x27, PCF8574AT — 0x38-0x3f, максимальное количество подключаемых однотипных модулей: 8, напряжение питания: 5 В, размер: 52x18x14мм. Совместимость: ЖКИ 1602 и 2004
50 pcs — stock Kyiv
6 pcs — RADIOMAG-Kyiv
5 pcs — RADIOMAG-Lviv
2 pcs — RADIOMAG-Kharkiv
1 pcs — RADIOMAG-Odesa
|
Related products |
QC1602A 16×2 Character LCD Display синяя подсветка (на контроллере HD44780) Product id: 58369 |
Датчик углекислого газа MQ135 Product id: 109707 |
Constructors and kits > Arduino
Описание: Датчик углекислого газа, цифровой и аналоговый выход, 32x22x27мм
Тип: Датчик
1 pcs — stock Kyiv
3 pcs — RADIOMAG-Kyiv
2 pcs — RADIOMAG-Lviv
2 pcs — RADIOMAG-Kharkiv
2 pcs — RADIOMAG-Odesa
1 pcs — RADIOMAG-Dnipro
20 pcs — waiting 12. 05.2023
|
BMP 180 модуль Product id: 51931 |
Constructors and kits > Arduino
Описание: Датчик атмосферного давления, интерфейс I2C. Выходные данные: 16 бит давление и температура, разрешение по давлению 0.01hPa, разрешение по температуре 0,1°C. Питание: 5V
Тип: Датчик
24 pcs — stock Kyiv
4 pcs — RADIOMAG-Kyiv
3 pcs — RADIOMAG-Lviv
5 pcs — RADIOMAG-Kharkiv
2 pcs — RADIOMAG-Dnipro
|
Датчик касания (сенсорная кнопка) TTP223B, Arduino Product id: 103094 |
Manufacturer: Arduino
Constructors and kits > Arduino
Описание: Цифровой датчик касания TTP223B. Используется для коммутации электрических цепей (включатель/выключатель), является отличной заменой традиционным механическим кнопкам. Питание:2…5,5V, габариты:24x24x7,2мм
Тип: Датчик
41 pcs — stock Kyiv
14 pcs — RADIOMAG-Kyiv
11 pcs — RADIOMAG-Lviv
7 pcs — RADIOMAG-Kharkiv
|
Arduino Uno — R3 Product id: 62300 |
Manufacturer: Arduino
Constructors and kits > Arduino
Описание: Микроконтроллер: ATmega328. Рабочее напряжение контроллера: вход USB:5В, вход VCC:5В, вход Vin:7,5В-12В. Цифровых входов/выходов:14 (6 из них ШИМ), аналоговых входов:6. Интерфейсы: I2C/TWI, SPI, PWM, Flash память программ: 32Кб, оперативная память: 2Кб, частота: 16 МГц. Размер: 68х53х15мм
Тип: Отладочная плата
234 pcs — stock Kyiv
8 pcs — RADIOMAG-Kyiv
7 pcs — RADIOMAG-Lviv
2 pcs — RADIOMAG-Odesa
|
Related products |
OV-A003 5V/1A Product id: 67293 |
Related products |
Плата расширения для Arduino Uno Product id: 148905 |
Related products |
Кабель USB для arduino Uno/Mega. USB type B Product id: 150496 |
Монитор температуры воды Arduino DS18B20
Датчики окружающей среды имеют большое значение во встроенных приложениях. Многие датчики температуры измеряют температуру окружающей среды или температуру поверхности. Для измерения температуры воды и других жидкостей требуются водонепроницаемые датчики температуры. Одним из таких датчиков температуры является DS18B20. Этот датчик может измерять температуру воздуха, жидкостей, таких как вода, и земли. Датчик поставляется в двух форм-факторах, один из которых представляет собой водонепроницаемый модуль. Его можно использовать для измерения температуры в таких приложениях, как электрические паровые плиты, электрические чайники и резервуары для хранения воды с регулируемой температурой.
В этом проекте мы продемонстрировали работу DS18B20, связав его с Arduino. Датчик не требует каких-либо внешних компонентов для взаимодействия с контроллером/компьютером. Он использует однопроводной интерфейс для двусторонней передачи данных с контроллером, что упрощает взаимодействие. Датчик поставляется в упаковке ТО-92. Он доступен в двух форм-факторах — в одном он поставляется в простом транзисторном корпусе, а в другом — в водонепроницаемом корпусе.
Примеры цифрового термометра 1-Wire DS18B20
Для демонстрации на макетной плате в этом проекте мы используем транзисторный форм-фактор. Показания температуры с датчика считываются Arduino, которые отображаются на OLED-дисплее SSD1306.
Необходимые компоненты
- Arduino UNO x1
- DS18B20 1-проводной датчик температуры x1
- SSD1306 OLED-дисплей x1
- Резистор 4,7 кОм x1
- Макет
- Соединительные провода/перемычки
DS18B20 1-проводной датчик температуры
DS18B20 — это 1-проводной цифровой термометр от Dallas Semiconductor Corp. Он основан на 1-проводном интерфейсе, для подключения которого требуется только один контакт. Датчик имеет 64-битный уникальный серийный код для адресации интерфейса 1-wire. Он поддерживает многоточечную связь, что позволяет подключать множество датчиков DS18B20 к одной линии передачи данных в виде распределенной сети. Возможно даже запитать датчик от самой линии передачи данных.
Датчик выводит измерение температуры с разрешением от 9 до 12 бит. Диапазон рабочих температур DS18B20 составляет от -55°C до 125°C с точностью +/-0,5°C. Разрешение датчика по умолчанию составляет 12 бит, что позволяет ему измерять температуру с точностью до 0,0625°C. Этому датчику температуры требуется менее 750 мс для преобразования показаний. Таким образом, можно легко получать измерения температуры с интервалом в 1 секунду из сети датчиков.
Рабочее напряжение DS18B20 составляет 3,3~5 В, а потребляемый ток составляет около 1 мА. Следовательно, его можно легко подключить к любому микроконтроллеру или микрокомпьютеру, если для этой платформы доступна программная библиотека для интерфейса 1-wire. При таком минимальном потреблении тока и простом интерфейсе 1-wire можно даже подключить DS18B20 к маломощным микрокомпьютерам, таким как Raspberry Pi.
DS18B20 имеет следующую схему контактов:
Схема контактов DS18B20 1-проводной датчик температуры
В водонепроницаемой версии датчика контакты обозначены цветовой маркировкой. Линии GND, Data и VDD обозначаются черным, желтым и красным проводами. Следует отметить, что в наличии есть и некоторые китайские модели сенсора. В этих моделях конфигурация контактов обратная, т. е. на виде спереди левый контакт — это VDD, затем Data, а крайний правый — GND.
Соединения цепей
В этом проекте мы соединяем DS18B20 и SSD1306 OLED с Arduino UNO. Для взаимодействия с DS18B20 подключите контакты GND и VDD датчика к контактам заземления и выхода 5V на Arduino соответственно. Контакт данных датчика может быть подключен к любому GPIO. В этом проекте контакт данных подключен к D2 Arduino. Для стабилизации линии данных рекомендуется использовать подтягивающий резистор 4,7 кОм для связи между выводом данных и выводом питания. Встроенных в Arduino подтягивающих резисторов недостаточно для реализации протокола 1-wire. Если внешний резистор не подключен во время взаимодействия с Arduino, плата может неправильно считывать данные с датчика. Также важно обеспечить правильные соединения для подачи напряжения. Обратное напряжение, подаваемое на датчик, может легко нагреть его до необратимого выхода из строя.
OLED-дисплей подключен для отображения показаний температуры. SSD1306 взаимодействует с Arduino через физический SPI-порт Arduino. Для взаимодействия с OLED-дисплеем SSD1306 через физический порт SPI подключите контакты D0/SCK и D1/MOSI OLED-дисплея SSD1306 к контактам D13 и D11 Arduino соответственно. Подключите контакты DC, RESET и CS SSD1306 к контактам D9, D10 и D8 Arduino соответственно.
Принципиальная схема монитора температуры воды DS18B20 на базе Arduino
Библиотеки Arduino для DS18B20
Прежде всего, для работы с DS18B20 требуется одна библиотека проводов. Его можно найти в менеджере библиотек Arduino IDE. Его также можно вручную загрузить в формате ZIP по этой ссылке. Библиотека one-wire предназначена для управления передачей данных по интерфейсу 1-wire. Другая библиотека, необходимая для DS18B20, — это аппаратная библиотека для реализации протокола Dallas 1-wire. Его можно найти в менеджере библиотек как DallasTemperature или загрузить в виде ZIP-файла по этой ссылке.
Эскиз Arduino
Как это работает
Датчик имеет аппаратно-зависимый протокол 1-wire, который реализован библиотекой Dallas Temperature. Arduino взаимодействует с DS18B20 по протоколу 1-wire. Протокол может быть реализован на любом GPIO. Arduino считывает температуру с датчика, обнаруживая специфичные для протокола сигналы на выводе данных и сохраняя значение в переменной. Считанное измерение температуры затем отображается на OLED-дисплее SSD1306.
Руководство по программированию
Скетч начинается с импорта библиотек OneWire и DallasTemperature для работы с датчиком температуры DS18B20. Затем импортируются библиотеки SPI, Wire, Adafruit_GFX и Adafruit_SSD1306 для работы с OLED-дисплеем. Определена константа, указывающая линию данных для датчика температуры. Создается экземпляр объекта класса OneWire, и этот же объект используется для создания экземпляра объекта класса DallasTemperature. Определены константы для разрешения экрана и соединения контактов OLED-дисплея. Объект класса Adafruit_SSD1306 создается с использованием SPI, явно указанного в качестве протокола взаимодействия. Объявлена глобальная переменная «temp» для хранения значений температуры. Растровое изображение хранится в PROGMEM для лога сайта, и для него определяется массив.
В функции setup() DS18B20 инициализируется вызовом метода sensor.begin(). Скорость передачи данных составляет 9600 бит/с при вызове метода Serial.begin(). OLED-дисплей инициализируется вызовом метода display.begin(), а логотип сайта отображается на OLED-экране вызовом метода display.drawBitmap().
В функции loop() показания температуры из DS18B20 берутся путем вызова метода Sensors.requestTemperatures(), а доступ к полученному значению осуществляется в переменной с помощью метода Sensors.getTempCByIndex(0). Считанное значение температуры передается на последовательный порт и отображается на OLED-дисплее.
Результат
Схема монитора температуры воды DS18B20 на базе Arduino.
Демонстрационное видео
Рубрики: Arduino, Electronic Projects
С тегами: Arduino, Arduino DS18B20, проекты Arduino, датчик температуры DS18B20, DS18B20
Датчик температуры Arduino DS18b20 — Pi My Life Up
В этом уроке я расскажу, как настроить датчик температуры Arduino DS18b20, а также все, что вам нужно о нем знать.
Этот проект очень хорош, если вы хотите установить регистратор данных или просто что-то для контроля температуры в определенной комнате. Вы можете объединить этот урок с другим, чтобы создать довольно крутой интеллектуальный датчик.
Вы можете использовать что-то вроде пьезозуммера, чтобы предупредить вас, например, если температура выйдет за пределы определенного диапазона.
В этом уроке я покажу вам основы правильного подключения DS18B20 к Arduino. Я также добавлю несколько светодиодов, чтобы продемонстрировать функциональность схемы и кода.
Если вы хотите быть в курсе всех моих проектов и многого другого, то обязательно подпишитесь на меня в любой из основных социальных сетей.
Оборудование
В этом уроке я собираюсь использовать несколько светодиодов для отображения текущей температуры датчика температуры. Если вы просто хотите использовать только программное обеспечение, вам не нужно добавлять их.
Полный список оборудования вы можете найти ниже.
Рекомендуется
Дополнительно
- 3 резистора 100 Ом
- Красный светодиод
- Зеленый светодиод
- Желтый светодиод
Видео
В приведенном ниже видео показаны все шаги, необходимые для запуска и запуска этого замечательного проекта датчика температуры.
Если вы предпочитаете письменные руководства, вы можете найти их прямо под видео.
Adblock удаляет видео? Поддержите нас, подписавшись на наш сервис без рекламы.
Схема Arduino DS18B20
Схема датчика Arduino DS18B20 довольно проста, и если вы не хотите, чтобы светодиоды просто не включались в эту часть схемы.
Ниже я кратко опишу датчик температуры, однако остальное оборудование довольно простое и не требует объяснений.
Если вы читали мое руководство по DS18B20 с Raspberry Pi, то вы точно знаете, что это за устройство. Для тех, кто не знает, DS18B20 — это цифровой датчик температуры, способный считывать температуру с точностью до 0,05 °C.
DS18B20 также поддерживает один провод, что означает, что он может использовать один провод совместно с другими устройствами, которые также поддерживают один провод.
В этом уроке я использую водонепроницаемую версию DS18B20, поэтому она выглядит как длинный толстый провод с тремя проводами, торчащими с одного конца. Если вы получаете устройство без каких-либо дополнений, оно просто выглядит как обычный транзистор.
Теперь приступим к сборке схемы.
1. Сначала подключите контакт 3v3 от Arduino к положительной шине, а контакт заземления — к шине заземления на макетной плате.
2. Теперь поместите датчик DS18B20 на макетную плату.
3. Поместите резистор 4,7 кОм между положительным проводом (красный провод) и выходным проводом (белый провод) датчика.
4. Затем поместите провод от положительного вывода (красный провод) к положительной шине 3 на 3.
5. Подсоедините провод от выходного провода к контакту № 5 на Arduino. Поместите провод от провода заземления (черный провод) к шине заземления.
6. Следующие несколько шагов являются необязательными и требуются только в том случае, если вам нужны светодиоды.
7. Поместите провод от шины заземления к шине заземления на противоположной стороне макетной платы.
8. Поместите 3 светодиода на макетную плату. (Красный, желтый и зеленый)
9. Подключите резистор 100 Ом к каждому светодиоду и подключите его к шине заземления.
10. Теперь подключите провод от следующих контактов Arduino: контакт 2 к зеленому светодиоду, контакт 3 к желтому светодиоду и, наконец, красный к контакту 4.
11. Теперь, когда схема настроена, пришло время перейти к коду. Если у вас возникнут какие-либо проблемы со схемой, обратитесь к схеме ниже или оставьте комментарий внизу этой страницы.
Установка поддержки для одного провода
Теперь по умолчанию в Arduino нет поддержки для одного провода, поэтому для этого нам нужно загрузить и установить библиотеку. Если вам нужна подробная информация о том, что такое один провод, обязательно посетите официальный сайт Arduino.
Итак, это довольно простой процесс, через который я вас сейчас проведу.
1. Во-первых, скачайте последнюю версию библиотеки One Wire, скачать ее можно здесь. (Зеркало)
2. После загрузки откройте скетч.
3. Здесь перейдите к эскизу , включите библиотеку , а затем добавьте библиотеку . zip .
4. Теперь должно быть написано что-то вроде Библиотека добавлена в библиотеки. Проверьте меню «включить библиотеку» .
5. Теперь вернитесь к эскиз , включает библиотеку , а затем под добавленными библиотеками вы найдете onewire , щелкните по нему.
6. Этот процесс добавит #include вверху вашего файла и будет добавлен в Arduino при следующей загрузке.
Установка библиотеки температуры Dallas
Чтобы упростить задачу, я предлагаю установить библиотеку для обработки данных, поступающих от датчика. Эта библиотека сделает это намного проще, чем писать код обработки данных самостоятельно.
Если вы хотите сделать это самостоятельно без дополнительной библиотеки, обязательно ознакомьтесь с этой страницей для получения дополнительной информации. В качестве альтернативы вы можете посмотреть на аналоговый датчик, такой как TMP36, который очень легко запустить на Arduino.
Если вы довольны библиотекой датчиков температуры Далласа, просто сделайте следующее.
1. Сначала загрузите библиотеку датчика температуры Dallas, ее можно скачать отсюда. (Зеркало)
2. Теперь, когда все загружено, войдите в приложение Sketch и повторите шаги, которые мы делали ранее.
3. Перейти к эскизу , включить библиотеку , а затем добавить библиотеку .zip .
4. Теперь должно быть написано что-то вроде Библиотека добавлена в библиотеки. Проверьте меню «включить библиотеку» .
5. Итак, теперь вернитесь к эскизу, включите библиотеку, а затем в добавленных библиотеках вы найдете DallasTemperature . Нажмите здесь.
6. Это автоматически добавит #include вверху скрипта. Библиотека будет синхронизирована с вашим Arduino, когда вы ее загрузите.
Теперь давайте перейдем к написанию остальной части кода, чтобы получить температуру от датчика и включить правильный светодиод.
Arduino DS18B20 Код
В следующей части руководства я рассмотрю код для считывания показаний датчика. Это довольно просто, однако, если вы новичок в программировании, это может быть немного ошеломляющим.
Если вы хотите скачать код, вы можете найти его на GitHub.
Для начала нам нужно включить заголовки OneWire
и dallasTemperature
, чтобы мы могли использовать их в коде. Они уже должны быть там, если вы выполнили шаги, описанные выше.
Далее мы объявляем все переменные, которые нам нужно будет использовать в скрипте. Первый из них представляет номера контактов, к которым подключены устройства.
Переменная температуры с плавающей запятой — это место, где мы будем хранить значение температуры.
Переменные LowerLimit и upperLimit представляют наши пороговые температуры. Все, что ниже нижнего предела, приведет к включению желтого светодиода. При превышении верхнего предела загорается красный светодиод. Что-нибудь между ними включит зеленый светодиод.
Затем мы создаем объект OneWire, используя наш контакт, который мы определили ранее (5). Если у вас есть большое количество однопроводных датчиков, рекомендуется разделить их на несколько контактов. Для каждого датчика создайте новый объект Onewire, например, OneWire oneWirePin2(temp_sensor2) ;
Теперь мы создаем наш объект датчика температуры Далласа, передав ссылку OneWire в класс.
В нашей функции настройки мы активируем последовательный интерфейс Arduino, чтобы мы могли отслеживать выходные строки в коде. Здесь также нам нужно настроить наши светодиоды, чтобы все они действовали как выходы. Наконец, мы вызываем sensor.begin() , это настроит наш датчик, чтобы мы могли начать запрашивать у него данные.
В этом сегменте у нас есть несколько выходных линий, чтобы сообщить нам, когда он успешно запросил все температуры датчиков, подключенных к нашему контакту onewire (5).
Затем мы сохраняем значение из sensor.getTempCByIndex(0) в переменную температуры. Если вы хотите получить температуру по Фаренгейту, просто измените C на F. Например, sensor.getTempFByIndex(0) . Кроме того, 0 относится к тому датчику, от которого мы хотим получить информацию. 0 = первый датчик, если у вас есть второй датчик, то это будет 1.
Затем мы переводим все светодиоды в низкий уровень, чтобы только правильный светодиод оставался включенным, когда мы запускаем следующий сегмент кода. Мы также печатаем два утверждения, первое из которых представляет собой простую строку, которая говорит Температура — это и затем сама температура. Мы завершаем этот текст в следующем сегменте кода, описанном ниже.
В этом последнем разделе наши значения температуры сравниваются с предварительно заданными значениями. В зависимости от результата загорится соответствующий светодиод. Например, первый оператор if
говорит, что если температура ниже или равна значению lowerLimit , то сделайте это.
Наконец, мы также делаем задержку на 500 мс перед повторным циклом выполнения процесса.
Устранение неполадок
Если вы столкнетесь с какой-либо проблемой, вы обнаружите, что обычно есть несколько вещей, которые могут пойти не так. Я просто перечислю некоторые проблемы, с которыми вы можете столкнуться.
- Если вы обнаружите, что от датчика температуры DS18B20 возвращаются странные результаты, возможно, он не получает достаточного питания или вы запрашиваете данные слишком быстро.
- Чтобы решить проблему с питанием, я бы предложил уменьшить нагрузку на шину, подающую питание на датчик. Чтобы уменьшить количество запросов данных от датчика, увеличьте время задержки до чего-то большего.
- Если датчик постоянно показывает высокие температуры, возможно, он неправильно подключен к макетной плате. Перед перезапуском Arduino убедитесь, что соединения безопасны.
Эти проблемы не должны возникать со схемой по умолчанию и кодом из этого руководства, но они могут возникнуть, если вы что-то измените.