Метеостанция на Ардуино с дисплеем

Метеостанция с дисплеем LCD 1602 и DHT11

Метеостанция на Arduino с дисплеем ► это один из самых популярных проектов. Рассмотрим, как сделать метеостанцию на DHT11 с выводом температуры на LCD монитор.

Метеостанция на Ардуино с дисплеем 1602 и DHT11 (DHT22) — это один из самых популярных проектов у начинающих мейкеров на Arduino. Рассмотрим, как сделать домашнюю метеостанцию с выводом температуры, влажности и давления на LCD монитор I2C. В скетче будут использованы русские буквы для вывода информации, все необходимые библиотеки можно будет скачать на этой странице одним архивом.

Если у вас есть в наличии Bluetooth модуль HC-06, то вы можете сделать его прошивку и получать данные со своей метеостанции уже на своем смартфоне. Данный модуль может обеспечивать передачу сигнала до 30 метров, что вполне достаточно для небольших квартир и частных домов. Пример такой метеостанции с датчиком DHT11 подробно рассмотрен в еще одном проекте Метеостанция на Ардуино и Андроид.

Сборка метеостанции с дисплеем 1602 и DHT11




Для этого проекта нам потребуется:

  • плата Arduino UNO (NANO);
  • жидкокристаллический дисплей 1602 с I2C;
  • цифровой датчик DHT11 или DHT22;
  • провода «папа-мама», «папа-папа»;
  • макетная плата (при необходимости).

К Arduino Nano и Uno все датчики и дисплей подключаются по одной схеме — распиновка и подключение уже рассматривались на нашем сайте, поэтому не будем подробно останавливаться на этом моменте. Если у вас есть вопросы, то посмотрите следующие записи: Подключение DHT11 к Ардуино и Подключение LCD 1602 к Ардуино. Соберите метеостанцию на Ардуино с дисплеем 1602 и dht11, как на схеме ниже.

Ардуино. Метеостанция на LCD 1602 и DHT11

Метеостанция на DHT22 и LCD 1602
Ардуино. Метеостанция с дисплеем LCD 1602 и DHT22

После сборки схемы, загрузите в микроконтроллер следующий скетч (здесь ссылка на скачивание архива со скетчем для метеостанции и необходимыми библиотеками). Информация с датчика DHT22 выводиться будет на монитор порта Arduino IDE и на жидкокристаллический дисплей 1602a, для отображения информации использован русский шрифт для LCD и символы (в скетче есть подробные комментарии).

Скетч для метеостанции с DHT11 на Ардуино

#include <Wire.h>                 // библиотека для протокола IIC 
#include <LiquidCrystal_I2C.h>    // подключаем библиотеку LCD IIC
LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея

#include "DHT.h"   // подключаем библиотеку для DHT11
DHT dht(2, DHT11); // к какому порту подключаем датчик

// создаем символ градуса и присваиваем имя "gradus"
byte gradus[8] = {
0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000
};

// создаем русскую букву "П"
byte P[8] = {
0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};

// создаем русскую букву "У"
byte Y[8] = {
0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000
};

// создаем русскую букву "Л"
byte L[8] = {
0b00111,0b01001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};

// создаем русскую букву "Ж"
byte ZH[8] = {
0b10101,0b10101,0b10101,0b01110,0b10101,0b10101,0b10101,0b00000
};

// создаем русскую букву "Ь"
byte znak[8] = {
0b10000,0b10000,0b10000,0b11110,0b10001,0b10001,0b11110,0b00000
};

void setup() {
  Serial.begin(9600); // запуск последовательного порта
  lcd.init();         // инициализация LCD дисплея
  lcd.backlight();    // включение подсветки дисплея

  lcd.createChar(1, gradus);
  lcd.createChar(2, P);
  lcd.createChar(3, Y);
  lcd.createChar(4, L);
  lcd.createChar(5, ZH);
  lcd.createChar(6, znak);
}

void loop() {
  // если нужны точные значение, то используйте float, вместо byte
  byte h = dht.readHumidity();    // считываем значение температуры
  byte t = dht.readTemperature(); // считываем значение влажности

  Serial.print("Temperature: ");
  Serial.println(t);   // отправляем значение температуры на монитор

  Serial.print("Humidity: ");
  Serial.println(h);   // отправляем значение температуры на монитор

  Serial.println(" "); // пустая строка

  lcd.setCursor(0,0);  // ставим курсор на 1 символ первой строки
  lcd.print("TEM");    // используем латинские буквы
  lcd.print(char(2));  // выводим русскую букву "П"
  lcd.print("EPAT");   // используем латинские буквы
  lcd.print(char(3));  // выводим русскую букву "У"
  lcd.print("PA: ");   // используем латинские буквы
  lcd.print(t);        // выводим значение температуры на LCD
  lcd.print(char(1));  // выводим знак градуса

  lcd.setCursor(2,1);  // ставим курсор на 3 символ второй строки
  lcd.print("B");      // используем латинские буквы
  lcd.print(char(4));  // выводим русскую букву "Л"
  lcd.print("A");      // используем латинские буквы
  lcd.print(char(5));  // выводим русскую букву "Ж"
  lcd.print("HOCT");   // используем латинские буквы
  lcd.print(char(6));  // выводим русскую букву "Ь"
  lcd.print(": ");     // используем латинские буквы
  lcd.print(h);        // выводим значение влажности на LCD
  lcd.print("%");      // выводим знак процент
  
  delay(1000);
}

Пояснения к коду:

  1. в скетче можно использовать до 8 русских букв и символов, при необходимости заменяйте буквы из кириллицы — латинскими буквами;
  2. скорость обновления данных замените на необходимое значение.

Заключение. Мы рассмотрели, как сделать простую домашнюю метеостанцию на Ардуино c дисплеем 1602а и датчиком температуры и влажности воздуха DHT11. Данный проект можно доработать, добавив к схеме еще больше датчиков для анализа метеоусловий. Также можно сделать беспроводную метеостанцию на Arduino Uno, используя блютуз или радио модули для передачи информации на расстояние.

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 5,00 out of 5)
Загрузка...

Примеры похожие на Метеостанция на Ардуино с дисплеем:

8 комментариев для “Метеостанция на Ардуино с дисплеем

  1. При показании температуры состоящей из одной цифры отображается два знака «градус»

    1. Добавьте команду lcd.clear(); в самом низу скетча метеостанции, чтобы очистить экран дисплея перед выводом новой информации

  2. Спасибо за нормально работающий скетч с пояснениями к 8 русским буквам, правда 1 секунда обновления мало, батарейка быстро садится, себе я поставил 5 секунд

  3. Почему то не выводит латинские буквы, и значение температуры и влажности стоит на на 3 градусах и 3% влажности. Такое ощущение что он не дописывает единичный порядок цифр ( то есть должно выводиться что вроде 30 градусов и 30% влажности)

  4. Вот еще один рабочий скейч добавлено реле для включения вентилятора. Прошу не кидаться помидорами, это мой самый первый скетч, и первое познание Ардуино вообще. Автору этого сайта, огромное спасибо, благодаря ему, я как то познал что это такое вообще.
    // указываем условие, если переменная "h" (влажность) больше 40%
    // то включаем реле, которое приводит в действие вентилятор
    if (h < 35) { digitalWrite (Relay, LOW); }
    //иначе реле будет выключено, вентилятор не работает
    else { digitalWrite (Relay, HIGH); }

    1. Я весь код не стал добавлять 🙂 Кто захочет — добавит в программу метеостанции эти два условия для включения/выключения вентилятора в зависимости от влажности воздуха.

      Спасибо.

    1. Проверьте подключение дисплея, отрегулируйте яркость экрана потенциометром на задней стороне дисплея

Добавить комментарий для admin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *