Измеритель температуры и влажности на контроллере Arduino c отображением значений на LCD дисплее

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Недавно я начал изучать программирование микроконтроллера Arduino. После того, как я выполнил несколько базовых упражнений (мигание светодиодом, работа с дискретными и аналоговыми входами, вывод информации на ЖК дисплей и т.д.) мне захотелось сделать какое нибудь полезное устройство для дома.

Я решил сделать измеритель температуры и влажности в комнате, с индикацией параметров на ЖК дисплее. Также я сделал адаптивную подсветку дисплея, которая меняет яркость в зависимости от уровня освещенности в комнате. Это позволяет уменьшить энергопотребление устройства, и тем самым увеличить срок службы батарейки.

В проекте я использовал следующие комплектующие:

1. Плата Arduino Uno

image

2. Дисплей LCD1602 c модулем поддержки протокола I2C. Для того чтобы уменьшить число проводов и упростить подключение дисплея, я решил подключать его через протокол I2C, для этого я к LCD дисплею припаял специальный модуль преобразователь.

"

3. Датчик температуры и влажности DHT11. Он позволяет определять влажность от 20-80% и температуру от 0-50˚С. Датчик имеет 4 вывода, но используется только 3. Между выводом питания и выводом данных должен быть установлен резистор 10кОм. Я использовал уже готовый датчик, смонтированный на плате, с подключенным резистором, поэтому можно смело подключать его к плате Arduino.

"

4. Фоторезистор. Подключается к плате Arduino с подтяжкой к GND, через резистор 10кОм.



Схема подключения следующая:



Фоторезистор подключается к аналоговому входу А0 платы Arduino. Линия данных датчика DHT11 подключается к дискретному выводу 2, вывод питания подключается к +5В Arduino, соответственно вывод GND подключаем в земле платы Arduino. LCD дисплей подключается к питанию платы, вывод SDA подключается к А4, вывод SCL к А5. Линия управления яркостью подсветки подключается к выводу 9, на котором формируется ШИМ сигнал.

Ниже представлен исходный код:

#include "DHT.h"                  //Подключаем библиотеку для работы с датчиком DHT11
#include "Wire.h"               
#include "LiquidCrystal_I2C.h"    //Подключаем библиотеки для работы с LCD дисплеем

int LD;                           //Объявляем вспомогательную переменную

#define DHTPIN 2                  //Задаем PIN для подключения датчика DHT11
#define LED 9                     //Задаем PIN который выдает ШИМ-сигнал
#define FOTO 0                    //Задаем PIN для подключения фоторезистора

DHT dht(DHTPIN, DHT11);           //Инициализируем датчик DHT11
LiquidCrystal_I2C lcd(0x27,16,2); //Инициализируем дисплей


void setup() {
 pinMode(LED, OUTPUT);            //Настраиваем PIN LED как выход
 
 dht.begin();                     //Включаем датчик температуры и влажности
 
 lcd.init();                      //Включаем LCD дисплей
 lcd.backlight();
}


int light(int svet)               //Функция преобразования 
{                                 //значения с датчика освещенности 
  if (svet<25)                    //в значение ШИМ-сигнала
  {
    return 255;
  }

  if(svet>1020)
  {
    return 2;
  }
  else
  {
    int L=(int)(-0.2*svet+261.262);
    return L;
  }
}


void loop() {
   int f = analogRead(FOTO);              //Считываем значение с датчика освещенности
   LD=light(f);
   delay(2000);
   analogWrite(LED, LD);                  //Устанавливаем значение ШИМ 
   
   float h=dht.readHumidity();            //Считываем значение влажности
   float t=dht.readTemperature();         //Считываем значение температуры

    lcd.setCursor(0,0);                   //Устанавливаем курсор в нулевую позицию верхней строки
    lcd.print("Temp ");                   //Отображаем значение температуры
    lcd.print(t);
    
    lcd.setCursor(0,1);                   //Помещаем курсор в нулевую позицию нижней строки
    lcd.print("Hum ");                    //Отображаем значение влажности
    lcd.print(h);

}


Скомпилировав данный код, получаем вот такое работающее устройство:



В дальнейшем планирую сделать еще какие-нибудь интересные и более сложные устройства на Arduino.

Также я сделал видеоролик, где показал как работает устройство:

Источник: https://habr.com/ru/post/489722/


Интересные статьи

Интересные статьи

Купил я сыну в прошлом сезоне его первый мотоцикл. Радости не было предела. Катались мы катались, всё хорошо, но т.к. на минибайках нет ни спидометра, ни тахометра, ничего, пришла идея...
На картинке скрин из нашумевшей игры про не очень далёкое будущее. Заметили странный воротник у типа? Думаете что это такое? Признаюсь честно, я совсем не пытался выяснить назначение эт...
В этой статье я хочу рассказать как сделать очень простую bluetooth метеостанцию (куда уж без нее :) ) и написать мобильное приложение на Flutter для нее. Читать дальше → ...
Ваш сайт работает на 1С-Битрикс? Каждому клиенту вы даёте собственную скидку или назначаете персональную цену на товар? Со временем в вашей 1С сложилась непростая логика ценообразования и формирования...
Приступая к животрепещущей теме резервного копирования на «Битрикс», прежде всего хотелось бы поблагодарить разработчиков, реализовавших автоматическое резервное копирование в облачное хранилище в вер...