Sensiron SHT30 — уникальный датчик температуры и влажности. Подключение к Ардуино

На сегодняшний день существует множество различных датчиков температуры и влажности. Самыми популярными являются DHT11 и DHT22, однако у них есть ряд недостатков. У них не самая лучшая точность, протокол связи очень чувствительный к временным интервалам.

Одним из настоящих комбайнов для считывания значений температуры и влажности является датчик Sensiron SHT30.

Датчик связывается с микроконтроллером по шине I2C (т.е. устранена проблема временной зависимости). Обладает довольно высокой точностью, имеет очень компактные габариты.

Характеристики Sensiron SHT30

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

Благодаря этому на основе этого датчика мы можем создавать простые устройства, даже не используя микроконтроллер.

Стартовый набор для Arduino Uno R3
Большой набор: датчики, кнопки, сервоприводы...

Датчик SHT31
Датчик SHT31-D имеет отличную относительн...

Если точность SHT30 слишком низкая, то имеется датчик SHT31, который программируется точно так же, как описанный здесь SHT30, но обеспечивает большую точность.

Ниже приведена таблица отличия между модификациями SHT30 и SHT31:

Построение системы на базе Arduino

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

Подключение SHT30 к Ардуино

Когда наш модуль будет готов, мы можем подключить его к Ардуино Uno. Сначала мы будем использовать только 4 контакта: VCC, GND, SDA и SCL. Соединение должно выглядеть, как показано ниже:

Подключение библиотеки и загрузка первой программы

Для работы с модулем потребуются библиотеки. Мы будем использовать  SHT3x и ClosedCube SHT31-D.

В первом примере мы используем библиотеку SHT3x, где наша программа будет считывать температуру и влажность, и результаты будут отображаться в Serial Monitor.

Скетч, который мы загрузим в Arduino, будет модифицированным примером из библиотеки SHT3x под названием «Absolute_Humidity».

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

#include <SHT3x.h>
SHT3x Sensor;
void setup() {
  Serial.begin(9600);
  Sensor.Begin();//начало работы датчика
}
void loop() {
  int temp = Sensor.GetTemperature();// переменная для температуры
  int wilg = Sensor.GetRelHumidity();//переменная для влажности
  Sensor.UpdateData();
  Serial.print(Sensor.GetTemperature());//загрузка температуры, по умолчанию в градусах Цельсия
  Serial.write("\xC2\xB0");
  Serial.print("C");
  Serial.print(" | ");
  Serial.print(Sensor.GetRelHumidity());//сбор значений влажности воздуха
  Serial.print("%");
  Serial.println();
  delay(1500);
}

Программирование модуля и подготовка к автономной работе

После загрузки предыдущей программы в Serial Monitor должны отображаться данные о температуре и влажности воздуха. Если это так, то  мы можем перейти к следующему примеру использования модуля SHT30.

Как уже упоминалось ранее, модуль может работать независимо, без Arduino или другого микроконтроллера. В таком варианте он действует как своего рода термометр и гигрометр и может управлять другим устройством.

Конечно, функции модуля здесь довольно ограничены, но в большинстве случаев их достаточно. На этот раз мы будем использовать библиотеку ClosedCube SHT31-Dю

Нам нужно подключиться к шине I2C и подать питание для программирования датчика. Датчик будет запрограммирована таким образом, что на выходном выводе будет сигнал высокого уровня, когда температура воздуха превысит 25 °C, и отключится, когда температура снизится  до 20 °C. Благодаря этому мы сможем смоделировать запуск, например, вентилятора.

#include <Wire.h>
#include "ClosedCube_SHT31D.h"
ClosedCube_SHT31D sht30;
void setup()
{
  Wire.begin();
  sht30.begin(0x44);//начало работы датчика
}

void loop()
{
  sht30.writeAlertHigh(25, 20, 0, 1); //установка значения
  delay(500);

}

Самая важная для нас строка кода :

sht30.writeAlertHigh (25, 20, 0, 1);

Эта часть кода отвечает за настройку пина сигнала тревоги в нашем модуле. Значения в скобках поочередно указывают: заданная температура, сброс температуры, заданная влажность, сброс влажности.

Что касается влажности, в данном случае она просто не учитывается. Если же мы хотим, чтобы датчик также учитывал влажность, то нам необходимо изменить значения.

Разобрав  программу, мы можем перейти к самой схеме. Здесь изменения небольшие —  мы только подключим светодиод к сигнальному выводу, который будет имитировать включение вентилятора Соединение должно выглядеть следующим образом:

 

Добавить комментарий

Ваш электронный адрес не будет опубликован.


*