-
-
Notifications
You must be signed in to change notification settings - Fork 6
Сенсори клімату (температура, вологість, тиск)
З версії 3.7 у прошивці додалась підтримка цифрових сенсорів температури, вологості та тиску.
Інформація з сенсорів відображається на дисплеї у новому режимі "Мікроклімат" (доступний при наявності одного з підтримуваних сенсорів), а також на додаткових екранах у режимі "Перемикання".
Прошивка підтримує наступні сенсори: BME280*/BMP280, сімейство сенсорів SHT3x (SHT30*, SHT31, SHT35, SHT85), а також сімейство сенсорів SHT2x (SHT20, SHT21, SHT25, HTU20*, HTU21, Si7021). Сенсори відмічені зірочкою (*) тестувались разом з прошивкою, підтримка інших сенсорів зі списку вище теоретично можлива, але не перевірялась.
Сенсор підʼєднується до I2C шини ESP32, та використовує стандартну адрусу (0x77).
Схема підключення до ESP32:
BME280 | ESP32 |
---|---|
VCC | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
Характеристики:
- Межі вимірювання температури: від -40 до 85 °C
- Точність вимірювання температури: від 0.5 до 1 °C
- Межі вимірювання вологості: від 0 до 100%
- Точність вимірювання вологості: 3%
- Межі вимірювання тиску: від 300 до 1100 гПа
- Точність вимірювання тиску: 1гПа
Скетч для тестування роботи сенсора (використовується бібліотека BME280):
/*
BME280 I2C Test.ino
This code shows how to record data from the BME280 environmental sensor
using I2C interface. This file is an example file, part of the Arduino
BME280 library.
GNU General Public License
Written: Dec 30 2015.
Last Updated: Oct 07 2017.
Connecting the BME280 Sensor:
Sensor -> Board
-----------------------------
Vin (Voltage In) -> 3.3V
Gnd (Ground) -> Gnd
SDA (Serial Data) -> A4 on Uno/Pro-Mini, 20 on Mega2560/Due, 2 Leonardo/Pro-Micro
SCK (Serial Clock) -> A5 on Uno/Pro-Mini, 21 on Mega2560/Due, 3 Leonardo/Pro-Micro
*/
#include <BME280I2C.h>
#include <Wire.h>
#define SERIAL_BAUD 115200
BME280I2C bme; // Default : forced mode, standby time = 1000 ms
// Oversampling = pressure ×1, temperature ×1, humidity ×1, filter off,
//////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(SERIAL_BAUD);
while(!Serial) {} // Wait
Wire.begin();
while(!bme.begin())
{
Serial.println("Could not find BME280 sensor!");
delay(1000);
}
switch(bme.chipModel())
{
case BME280::ChipModel_BME280:
Serial.println("Found BME280 sensor! Success.");
break;
case BME280::ChipModel_BMP280:
Serial.println("Found BMP280 sensor! No Humidity available.");
break;
default:
Serial.println("Found UNKNOWN sensor! Error!");
}
}
//////////////////////////////////////////////////////////////////
void loop()
{
printBME280Data(&Serial);
delay(500);
}
//////////////////////////////////////////////////////////////////
void printBME280Data
(
Stream* client
)
{
float temp(NAN), hum(NAN), pres(NAN);
BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
BME280::PresUnit presUnit(BME280::PresUnit_Pa);
bme.read(pres, temp, hum, tempUnit, presUnit);
client->print("Temp: ");
client->print(temp);
client->print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? 'C' :'F'));
client->print("\t\tHumidity: ");
client->print(hum);
client->print("% RH");
client->print("\t\tPressure: ");
client->print(pres);
client->println("Pa");
delay(1000);
}
Сенсор підʼєднується до I2C шини ESP32, та використовує стандартну адрусу (0x44).
Схема підключення до ESP32:
SHT3x | ESP32 |
---|---|
VIN | 3.3V |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
Характеристики:
- Діапазон вимірювання температури: -40 до +120 °C
- Точність діапазону температури (5-60 °C): +/- 0.3 °C
- Діапазон вимірювання відносної вологості: 0 - 100 %
- Точність діапазону відносної вологості (20-80 RH): 3%
Скетч для тестування роботи сенсора (використовується бібліотека SHT31):
//
// FILE: SHT31_demo.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// URL: https://github.com/RobTillaart/SHT31
#include "Wire.h"
#include "SHT31.h"
#define SHT31_ADDRESS 0x44
uint32_t start;
uint32_t stop;
SHT31 sht;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("SHT31_LIB_VERSION: \t");
Serial.println(SHT31_LIB_VERSION);
Wire.begin();
Wire.setClock(100000);
sht.begin();
uint16_t stat = sht.readStatus();
Serial.print(stat, HEX);
Serial.println();
}
void loop()
{
start = micros();
sht.read(); // default = true/fast slow = false
stop = micros();
Serial.print("\t");
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sht.getTemperature(), 1);
Serial.print("\t");
Serial.println(sht.getHumidity(), 1);
delay(100);
}
// -- END OF FILE --
Сенсор підʼєднується до I2C шини ESP32, та використовує стандартну адрусу (0x40).
Схема підключення до ESP32:
SHT2x | ESP32 |
---|---|
+ | 3.3V |
- | GND |
CL | GPIO 22 |
DA | GPIO 21 |
Характеристики:
- Точність вимірювання вологості в діапазоні 10-95% RH: ± 2% (макс.)
- Точність вимірювання температури в діапазоні -10 до +85 ° C: ± 0.4 ° C (макс.)
Скетч для тестування роботи сенсора (використовується бібліотека SHT2x):
//
// FILE: SHT2x_demo.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo
// URL: https://github.com/RobTillaart/SHT2x
#include "Wire.h"
#include "SHT2x.h"
uint32_t start;
uint32_t stop;
SHT2x sht;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("SHT2x_LIB_VERSION: \t");
Serial.println(SHT2x_LIB_VERSION);
Wire.begin();
sht.begin();
uint8_t stat = sht.getStatus();
Serial.print(stat, HEX);
Serial.println();
}
void loop()
{
start = micros();
sht.read();
stop = micros();
Serial.print("\t");
Serial.print(stop - start);
Serial.print("\t");
Serial.print(sht.getTemperature(), 1);
Serial.print("\t");
Serial.println(sht.getHumidity(), 1);
delay(1000);
}
// -- END OF FILE --