ESP32 для начинающих: Умный дом своими руками - страница 24

Шрифт
Интервал


Пример кода с несколькими датчиками будет выглядеть так:

```cpp


#include "DHT.h"


#include


#include

#define DHTPIN 4


#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);


BH1750 lightSensor;

void setup() {


....Serial.begin(115200);


....dht.begin();


....Wire.begin();


....lightSensor.begin();


}

void loop() {


....// Считываем данные DHT


....delay(2000);


....float h = dht.readHumidity();


....float t = dht.readTemperature();

....// Считываем данные BH1750


....float lux = lightSensor.readLightLevel();

....if (isnan(h) || isnan(t)) {


........Serial.println("Ошибка считывания с датчика DHT!");


....} else {


........Serial.print("Влажность: ");


........Serial.print(h);


........Serial.print("%..Температура: ");


........Serial.print(t);


........Serial.println("°C");


....}

....Serial.print("Уровень освещения: ");


....Serial.print(lux);


....Serial.println(" люкс");


}


```

Практическое применение полученных данных

Помните, что данные, полученные от датчиков, можно использовать не только для вывода в консоль, но и для управления другими устройствами. Например, если температура в помещении превышает заданный предел, можно автоматически включить вентилятор или кондиционер. Это можно реализовать с помощью обычного реле или транзистора, управляемого ESP32.

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

```cpp


if (t > 25) {


....digitalWrite(relayPin, HIGH); // Включаем вентилятор


} else {


....digitalWrite(relayPin, LOW); // Выключаем вентилятор


}


```

Цифровые и аналоговые датчики

Не забывайте, что датчики делятся на цифровые и аналоговые. В то время как DHT11 и BH1750 работают с цифровыми данными, в вашем проекте могут быть и аналоговые компоненты, такие как фотодиоды или аналоговые температурные сенсоры. Для подключения аналоговых датчиков к ESP32 используйте аналоговые входы (ADC), которые позволяют считывать значения в диапазоне от 0 до 4095.

Пример кода для считывания аналогового значения с датчика выглядит так:

```cpp


int analogValue = analogRead(A0);


Serial.println(analogValue);


```

Итоги

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