Temperatuuti andur
Эксперимент по измерению температуры с помощью датчика температуры.
Компоненты:

Температурный датчик
Схема:

Код:
// Объявляем номер аналогового пина, к которому подключён температурный датчик
const int temperaturePin = 0; // A0
// Функция setup() выполняется один раз при запуске
void setup()
{
Serial.begin(9600); // Инициализируем последовательную связь на скорости 9600 бод
}
// Главный цикл программы, выполняется бесконечно
void loop()
{
// Объявляем переменные для напряжения, температуры в Цельсиях и Фаренгейтах
float voltage, degreesC, degreesF;
// Считываем напряжение с датчика и сохраняем в переменную
voltage = getVoltage(temperaturePin);
// Преобразуем напряжение в температуру по Цельсию
// Формула подходит для TMP36: 0.5 В при 0°C, каждый градус = 0.01 В
degreesC = (voltage - 0.5) * 100.0;
// Альтернативная формула
// degreesC = voltage * 100.0;
// Перевод температуры из Цельсия в Фаренгейты
degreesF = degreesC * (9.0 / 5.0) + 32.0;
// Выводим данные в монитор порта
Serial.print("voltage: ");
Serial.print(voltage); // Показываем напряжение
Serial.print(" deg C: ");
Serial.print(degreesC); // Показываем температуру в °C
Serial.print(" deg F: ");
Serial.println(degreesF); // Показываем температуру в °F и перенос строки
delay(1000); // Ждём 1 секунду перед следующим измерением
}
// Функция для преобразования результата analogRead() в напряжение (0–5 В)
float getVoltage(int pin)
{
// analogRead() возвращает значение от 0 до 1023
// Умножаем его на коэффициент пересчёта в вольты (5.0 / 1023.0 ≈ 0.004882814)
return (analogRead(pin) * 0.004882814);
}
180 kraadine servo mootori kasutamine
Серво — это мотор, который может точно поворачиваться на заданный угол (обычно от 0° до 180°). Он часто используется в робототехнике, моделизме и автоматизации.
Компоненты:

Серводвигатель
Схема:

Код:
// Многие доступные библиотеки можно найти по адресу: http://arduino.cc/en/Reference/Libraries
#include <Servo.h> // Сообщаем среде Arduino IDE, что используем библиотеку Servo.h для управления сервоприводами
// После подключения библиотеки мы можем сразу использовать её функции.
// Список функций библиотеки Servo: http://arduino.cc/en/Reference/Servo
// Большинство библиотек доступны в меню "File / Examples".
Servo mootor; // Создаём объект с именем "mootor", с помощью которого управляем сервоприводом
void setup()
{
// Связываем управление мотором с цифровым пином 9.
// Если используется больше одного мотора, каждый должен быть подключён к отдельному цифровому пину.
mootor.attach(9); // Подключаем управление мотором к цифровому пину 9. Он должен поддерживать PWM.
}
void loop()
{
int asend;
mootor.write(90); // Поворачиваем мотор в положение 90 градусов
delay(1000);
mootor.write(180); // Поворачиваем мотор на 180 градусов
delay(1000);
mootor.write(0); // Возвращаем мотор в положение 0 градусов
delay(1000);
// Медленное вращение мотора по часовой стрелке (от 0 до 180 градусов)
for(asend = 0; asend < 180; asend += 2)
{
mootor.write(asend); // Изменяем положение мотора
delay(20); // Короткая пауза для плавного движения
}
// Медленное вращение мотора против часовой стрелки (от 180 до 0 градусов)
for(asend = 180; asend >= 0; asend -= 1)
{
mootor.write(asend); // Изменяем положение мотора
delay(20); // Короткая пауза для плавного движения
}
}
Как работает программа:
- Сервопривод поворачивается резко в 90°, потом 180°, потом обратно в 0°.
- Затем он медленно поворачивается до 180° и медленно возвращается обратно.
- Цикл повторяется бесконечно.
Temperatuuritundlik servolülitus(Kasvuhoone temperatuuri reguleegimine)
Автоматизированная теплица
Цель:
Создаем автоматизированную миниатюрную тепличную систему, реагирующую на температуру окружающей среды и освещенность.
Система должна иметь возможность управлять серводвигателем в зависимости от изменения температуры и включать или выключать свет в зависимости от интенсивности света с помощью фоторезистора.
Этот проект позволяет связать реальные условия окружающей среды с электроникой и смоделировать автоматический уход за растениями в небольшой теплице.
Компоненты:


- Датчик температуры (например, LM35, DHT11 или TMP36)
- Фоторезистор (LDR – светочувствительный резистор)
- Серводвигатель (маленький, например SG90)
- Светодиод (для имитации света или дополнительного освещения)
- Ардуино Уно
- Резисторы (для LDR и светодиодов)
- Провода и макетная плата
- Корпус или заземляющий элемент для размещения датчиков и компонентов
- Источник питания (USB, батарея или аккумулятор)
Схема:

Описание схемы Arduino-проекта
- Температурный датчик (A1) – измеряет температуру воздуха.
- Фоторезистор (A2) – определяет уровень освещённости в окружающей среде.
- Сервопривод (пин 6) – открывает или закрывает окно (или крышу теплицы) в зависимости от температуры.
- Светодиод (пин 9) – автоматически загорается при низкой освещённости.
- Резисторы – используются с фоторезистором (делитель напряжения) и светодиодом (ограничение тока).
- Питание через Arduino Uno, подключённое по USB.
Как работает код:
- Температурный датчик считывает текущую температуру воздуха.
- В зависимости от температуры:
- При температуре ≤ 20°C: сервопривод поворачивается в положение 0° (окно закрыто).
- При температуре ≥ 30°C: сервопривод поворачивается в положение 180° (окно открыто).
- При температуре от 20°C до 30°C: угол выбирается пропорционально температуре.
- Движение серводвигателя происходит плавно, по шагам.
- Фоторезистор измеряет уровень освещённости:
- Если освещённость < 500: светодиод включается.
- Если освещённость ≥ 500: светодиод выключается.
- Все данные о температуре и освещённости выводятся в Serial Monitor для отладки.
Ниже расмотрим код:
#include <Servo.h>
// --- Пины ---
const int LDRPin = A2; // Фоторезистор (аналоговый пин A2)
const int ledPin = 9; // Светодиод
const int temperaturePin = A1; // Температурный датчик LM35
const int servoPin = 6; // Серводвигатель
Servo servo;
int currentAngle = 0;
bool scanningUp = true;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
servo.attach(servoPin);
servo.write(currentAngle);
delay(1000);
}
void loop() {
// --- Чтение температуры ---
int sensorValue = analogRead(temperaturePin);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage * 100;
Serial.print("Temp: ");
Serial.print(temperature);
Serial.println(" C");
// --- Чтение освещения ---
int lightLevel = analogRead(LDRPin);
Serial.print("Light: ");
Serial.println(lightLevel);
// --- Если темно ---
if (lightLevel < 500) {
digitalWrite(ledPin, HIGH); // Включаем светодиод
// Серводвигатель двигается туда-сюда
if (scanningUp) {
currentAngle++;
if (currentAngle >= 180) scanningUp = false;
} else {
currentAngle--;
if (currentAngle <= 0) scanningUp = true;
}
servo.write(currentAngle);
delay(15); // Плавное движение
} else {
// --- Светло ---
digitalWrite(ledPin, LOW); // Светодиод выключен
// Управляем сервоприводом по температуре
if (temperature > 20) {
int targetAngle;
if (temperature >= 30) {
targetAngle = 180;
} else {
targetAngle = map(temperature, 21, 30, 1, 180);
}
targetAngle = constrain(targetAngle, 0, 180);
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
servo.write(currentAngle);
} else {
// Если температура ≤ 20, не двигаем
servo.write(0);
currentAngle = 0;
}
delay(15);
}
delay(100);
}
Подключение библиотеки
#include <Servo.h>
Подключаем стандартную библиотеку Servo, чтобы управлять сервоприводом.
Объявление пинов и переменных
const int LDRPin = A2; // Пин фоторезистора
const int ledPin = 9; // Пин светодиода
const int temperaturePin = A1; // Пин температурного датчика LM35
const int servoPin = 6; // Пин сервопривода
Servo servo; // Создаём объект сервопривода
int currentAngle = 0; // Текущий угол сервопривода
int previousTempReading = 0; // Переменная (не используется в этом коде)
Назначаем пины для подключения компонентов.
Servo servo; // Объект для управления сервоприводом
int currentAngle = 0; // Текущий угол поворота серво
bool scanningUp = true; // Направление движения при «сканировании» в темноте
setup()
void setup() {
pinMode(ledPin, OUTPUT); // Светодиод будет выходом
Serial.begin(9600); // Включаем монитор порта на скорости 9600 бод
servo.attach(servoPin); // Подключаем серво к пину 6
servo.write(currentAngle); // Устанавливаем начальный угол
delay(1000); // Небольшая задержка на запуск
}
loop()
int sensorValue = analogRead(temperaturePin);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage * 100;
analogRead читает напряжение от LM35.
LM35 выдаёт 10 мВ на каждый °C → формула: температура = напряжение * 100.
Serial.print("Temp: ");
Serial.print(temperature);
Serial.println(" C");
Печатаем температуру в монитор порта.
Чтение освещённости
int lightLevel = analogRead(LDRPin);
Serial.print("Light: ");
Serial.println(lightLevel);
Считываем значение с фоторезистора. Меньше 500 — темно, больше — светло.
Если темно (освещённость < 500):
if (lightLevel < 500) {
digitalWrite(ledPin, HIGH); // Включаем свет
// Серводвигатель сканирует угол от 0 до 180 и обратно
if (scanningUp) {
currentAngle++;
if (currentAngle >= 180) scanningUp = false;
} else {
currentAngle--;
if (currentAngle <= 0) scanningUp = true;
}
servo.write(currentAngle);
delay(15); // Плавность движения
}
Включаем светодиод.
Серво постоянно двигается туда-сюда, имитируя «работу» или «проветривание ночью».
Если светло:
else {
digitalWrite(ledPin, LOW); // Выключаем свет
Если температура выше 20°C:
if (temperature > 20) {
int targetAngle;
if (temperature >= 30) {
targetAngle = 180;
} else {
targetAngle = map(temperature, 21, 30, 1, 180);
}
targetAngle = constrain(targetAngle, 0, 180);
Устанавливаем targetAngle на основе температуры.
Используем map для пропорции между 21°C и 30°C.
if (currentAngle < targetAngle) {
currentAngle++;
} else if (currentAngle > targetAngle) {
currentAngle--;
}
servo.write(currentAngle);
}
Серво плавно двигается к нужному углу в зависимости от температуры.
Если температура ≤ 20°C:
else {
servo.write(0);
currentAngle = 0;
}
delay(15);
}
Серво остаётся в нулевом положении.
Двигатель не работает, если температура ниже или равна 20°C.
Задержка между циклами
delay(100);
Маленькая пауза перед следующим циклом.
Как пользователь видит работу:
✅ Итоговая логика:
| Условие | Действие сервопривода | Светодиод |
|---|---|---|
| Темно | Серво двигается всегда | Включён |
| Светло + температура > 20°C | Серво реагирует на температуру | Выключен |
| Светло + температура ≤ 20°C | Серво стоит в нуле | Выключен |
Несколько изменений, что были проделаны во время работы с платой.
Изменила:
float temperature = voltage * 100;
На:
float temperature = (voltage - 0.5) * 100;
Я изменила delay(100); -> delay(1000); значения, чтобы пауза была секунда. Чтобы было удобнее считывать значения на Serial Monitor
Так же я меняла показытели температуры, т.к. мне было не нагреть самостоятельно дачик больше чем 25-27 градусов, а т.к если холоднее тогда бы включался двигатель (нашей поливалки)
В темноте не было проблем, один раз только почему то звук был, мотор не крутил 🙁

Далее можно посмотреть как все было видно на Serial Monitor


Видео
Видео схемы, как работает код на www.tinkercad.com
Видео, во время видео менялись показатели delay(100), float temperature и меняла в ходе видео работу датчиков:
if (temperature > 20) { // меняла на 30
int targetAngle;
if (temperature >= 30) { // меняла на 40
На двух видео, т.к. сначала снимала один ролик и решила, что он работает не достаточно хорошо, не меняла показателей кроме паузы и температуры, и чуть лучше поставила фоторезистр тогда датчик в темноте работал всегда.
Применение проекта:
1. Личная мини-теплица дома / на балконе
- ✅ Автоматически “поливания” или открытия “окна”, если внутри слишком жарко.
- ✅ Включает свет в сумерках, если освещения недостаточно (для фотосинтеза).
- 🪴 Подходит для выращивания трав, рассады, цветов и мини-огородов в условиях квартиры.
2. Учебный проект для школ и колледжей
- 🎓 Демонстрация работы датчиков (температуры, света), исполнительных механизмов (сервопривод).
- ✅ Отличный пример интеграции физики, программирования и экологии.
- 💡 Используется для курсов по робототехнике, автоматике и “умному дому”.
3. Промышленное применение (модель)
- В более крупном варианте можно подключить:
- 💨 Вентиляторы / окна
- 💧 Полив по температуры внутри
- ☁️ Системы мониторинга через интернет
- Такая система имитирует умное сельское хозяйство, где поддерживаются климатические условия.

