Простой измеритель влажности и температуры на Arduino

Простой измеритель влажности и температуры на Arduino

Пример построения простого портативного измерителя влажности и температуры на Arduino с применением сенсора GY-21.

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

Конструкция

Под рукой обнаружилось:

Arduino Uno - плата контроллера на ATmega328. В моем случае это качественная китайская реплика оригинальной платы.

Arduino Uno

LCD Keypad Shield - модуль двустрочного экрана

LCD Keypad Shield

Экран используется для вывода информации об измеряемых параметрах. Кнопки, присутствующие на плате, задействованы не будут. Просто данный экземпляр был в наличии.

GY-21 - сенсор температуры и влажности. 

GY-21

Представляет собой высокоточный модуль на основе датчика SHT21 для измерения температуры и влажности. Обладает очень низкой погрешностью в своём классе: при измерении температуры  - 0.4%, влажности - 2%. Использует интерфейс I2C.

Конструкция экрана в сочетании с Arduino Uno удобно складываются в компактный "бутерброд", а датчик аккуратно подпаяем навесным монтажом.

Arduino Uno и модуль lcd-экрана

Готовое устройство

Портативность и мобильность будет обеспечивать обычный повербанк на 5В для зарядки гаджетов.

Прошиваем и включаем устройство.

Простой измеритель температуры и влажности на Arduino

Программа

Для работы с LCD-экраном будем использовать библиотеку LiquidCrystal . Для нашей платы требуется использовать такой вариант конфигурации выводов: LiquidCrystal lcd(8, 9, 4, 5, 6, 7).

Для работы с датчиком поможет библиотека GY-21.

Весь код программы:

// обмен по I2C
#include <Wire.h>
// подключаем библиотеку экрана:
#include <LiquidCrystal.h>
// библиотека датчика
#include <GY21.h>

// конфигурируем выводы arduino Uno
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
// инициализируем библиотеку
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// инициализируем сенсор
GY21 sensor;

void setup() {
  // количество столбцов и строк экрана:
  lcd.begin(16, 2);
  
  // вывод сообщения на экран.
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.setCursor(8, 0);
  lcd.print("H:");
  
  Wire.begin();
}

void loop() {
  // получение и вывод температуры
  float temp = sensor.GY21_Temperature();
  lcd.setCursor(2, 0);
  lcd.print(temp);
  // получение и вывод влажности
  float hum = sensor.GY21_Humidity();
  lcd.setCursor(10, 0);
  lcd.print(hum);
  // задержка 1 сек
  delay(1000);
}

Наше устройство готово!