Цели урока:
- Познакомиться с датчиками температуры и их использованием.
- Научиться подключать и считывать данные с датчиков.
- Закрепить знания на практике, создав проекты с использованием датчиков.
Теоретическая часть
Что такое датчики?
Датчики — это устройства, которые преобразуют физические величины (температуру, влажность, расстояние, освещенность и т.д.) в электрические сигналы, которые могут быть обработаны микроконтроллером, таким как Arduino.
Примеры датчиков:
- Датчик температуры и влажности (DHT11/DHT22): Измеряет температуру и влажность окружающей среды.
- Ультразвуковой датчик расстояния (HC-SR04): Измеряет расстояние до объекта с помощью ультразвуковых волн.
- Фоторезистор (датчик освещенности): Измеряет уровень освещенности.
Почему это важно?
Датчики позволяют Arduino взаимодействовать с окружающим миром, собирая данные и реагируя на изменения в окружающей среде.
Подключение и использование датчиков
Датчик температуры и влажности (DHT11/DHT22)
Назначение:
Датчик DHT11/DHT22 измеряет температуру и влажность окружающей среды.
Как подключить:
- Подключите пин VCC датчика к 5V на Arduino.
- Подключите пин GND датчика к GND на Arduino.
- Подключите пин данных датчика к цифровому пину на Arduino (например, 2).
Библиотека:
Для работы с DHT11/DHT22 используется библиотека DHT.
Для подключения библиотеки перейдите во вкладку "Library Manager" и через поиск добавьте библиотеку DHT sensor library
Пример кода:
#include "DHT.h" // Подключение библиотеки DHT для работы с датчиками температуры/влажности
// Библиотека содержит необходимые функции для считывания данных с датчика
#define DHTPIN 2 // Определение пина Arduino, к которому подключен выход DATA датчика
// В данном случае используется цифровой пин 2
#define DHTTYPE DHT22 // Определение типа используемого датчика (DHT22/AM2302)
// DHT22 имеет более высокую точность по сравнению с DHT11
DHT dht(DHTPIN, DHTTYPE); // Создание объекта dht класса DHT с указанием параметров:
// - Пин подключения (DHTPIN = 2)
// - Тип датчика (DHTTYPE = DHT22)
void setup() { // Функция инициализации, выполняется один раз при старте
Serial.begin(9600); // Инициализация последовательной связи с компьютером на скорости 9600 бод
dht.begin(); // Инициализация датчика DHT22
// Настройка пина и подготовка к считыванию показаний
}
void loop() { // Основной цикл программы, выполняется постоянно
float h = dht.readHumidity(); // Считывание показания влажности в процентах (%)
// Результат сохраняется в переменную h типа float (дробное число)
float t = dht.readTemperature(); // Считывание показания температуры в градусах Цельсия (°C)
// Результат сохраняется в переменную t типа float
Serial.print("Влажность, %: "); // Вывод текстовой метки для влажности в последовательный порт
Serial.println(h, 1); // Вывод значения влажности с одним знаком после запятой
Serial.print("Температура, °C: "); // Вывод текстовой метки для температуры
Serial.println(t, 1); // Вывод значения температуры с одним знаком после запятой
delay(3000); // Пауза 3000 миллисекунд (3 секунды) перед следующим измерением
}
Объяснение кода:
#include "DHT.h: Подключаем библиотеку DHT, которая упрощает работу с датчиком.#define DHTPIN 2: Определяем пин, к которому подключен датчик.#define DHTTYPE DHT22: Указываем тип датчика (DHT11 или DHT22).DHT dht(DHTPIN, DHTTYPE);: Создаем объектdhtдля работы с датчиком.Serial.begin(9600);: Инициализируем монитор порта для вывода данных.dht.begin();: Инициализируем датчик.float h = dht.readHumidity();: Читаем значение влажности.float t = dht.readTemperature();: Читаем значение температуры.
Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation", изменяйте значения температуры и влажности двигая соответствующими ползунками датчика.
Датчик температуры NTC (Analog temperature sensor: NTC)
Назначение:
Термистор NTC (Negative Temperature Coefficient) измеряет температуру за счет изменения сопротивления при нагреве/охлаждении. При повышении температуры сопротивление уменьшается.
Как подключить:
- Подключите один вывод термистора к пину 5V на Arduino
- Подключите второй вывод термистора к аналоговому пину A5
- Добавьте подтягивающий резистор 10 кОм между пином A5 и GND
Пример кода:
const float BETA = 3950; // Константа с бета-коэффициентом термистора (уникальный параметр для каждого термистора)
void setup() {
Serial.begin(9600);
}
void loop() {
int analogValue = analogRead(A5); // Считывание аналогового значения с пина A5
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15; // Преобразование аналогового значения в температуру в °C:
Serial.print("Температура: ");
Serial.println(celsius);
delay(3000);
}
Объяснение кода:
const float BETA = 3950;: Установка бета-коэффициента для конкретного термистора (указывается в даташите).int analogValue = analogRead(A5);: Считывание аналогового значения с термистора (0-1023).float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;: Формула преобразования, основана на уравнении Стейнхарта-Харта для термисторов NTC.
Вот готовый проект на Wokwi, нажмите кнопку "Start the simulation", изменяйте значения температуры двигая соответствующими ползунками датчика.
Вопросы для закрепления:
- Какие датчики используются для измерения температуры и влажности?
- Как подключить датчики к Arduino?
- Какие библиотеки используются для работы с датчиками DHT11/DHT22?
Домашнее задание:
- Создайте проект с каждым видом изученных датчиков, где светодиод включается, если температура больше 50 градусов.
Что мы узнали:
Теперь вы знаете, как работать с датчиками температуры в Arduino! Вы научились подключать и считывать данные с датчиков 😊.