Обзор
SHT35 — это премиальный цифровой датчик температуры и влажности от Sensirion, обеспечивающий высочайшую точность измерений в серии SHT3x. Он использует технологию CMOSens® и идеально подходит для требовательных приложений: промышленный мониторинг, HVAC-системы и высокоточная регистрация данных.
SHT35 — это премиальный датчик температуры и влажности от швейцарской компании Sensirion. Он обеспечивает высочайшую точность в линейке SHT3x: ±0.1°C для температуры и ±1.5% RH для влажности. Датчик широко используется в промышленных системах мониторинга, HVAC и высокоточных научных исследованиях.
⚡ Ключевые особенности
- Высочайшая точность — ±0.1°C для температуры, ±1.5% RH для влажности
- Премиальная модель — лучшая точность в линейке SHT3x
- I²C интерфейс — простая интеграция с ESP32, Arduino и другими МК
- Долгосрочная стабильность — надежные и стабильные измерения
- Широкий диапазон питания — 2.4V - 5.5V
Приобретите SHT35
Технические характеристики SHT35
Скачайте полный технический даташит для получения подробной информации о характеристиках и режимах работы датчика.
Скачать datasheetРаспиновка SHT35
Питание (2.4V - 5.5V)
Земля
Линия данных I2C
Линия тактирования I2C
- 🔌 I2C адрес — 0x44 или 0x45 (настраивается)
- 📏 Точность — ±0.1°C температура, ±1.5% влажность
- ⚡ Напряжение — широкий диапазон 2.4V-5.5V
- 🏭 Применение — премиум датчик для промышленных систем
Подключение SHT35 к ESP32
| Вывод SHT35 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| VDD | Требуется | 3.3V | Питание (2.4V-5.5V) |
| GND | Требуется | GND | Земля |
| SDA | Требуется | GPIO21 | I2C данные |
| SCL | Требуется | GPIO22 | I2C тактирование |
- 📍 GPIO21/22 — стандартные I2C пины на ESP32
- 🔧 I2C адрес — 0x44 (по умолчанию) или 0x45
- 🔌 Подтяжка — резисторы 10kΩ обычно уже установлены на модуле
- 🔗 Шина — можно подключить несколько устройств на одну шину I2C
Устранение неполадок SHT35
Датчик не определяется на I2C шине
I2C сканер не находит датчик
Датчик не определяется на I2C шине
I2C сканер не находит датчик
Проблема: Датчик не определяется на I2C шине, сканер не находит адрес 0x44 или 0x45.
Причины:
- Неправильное подключение проводов
- Неправильный I2C адрес в коде
- Отсутствие подтягивающих резисторов
- Проблемы с питанием
Решение: Проверьте подключение SDA→GPIO21, SCL→GPIO22. Убедитесь, что адрес в коде соответствует датчику (0x44 или 0x45). Проверьте напряжение питания.
Ошибка компиляции: 'yield' was not declared
Ошибка при компиляции библиотеки
Ошибка компиляции: 'yield' was not declared
Ошибка при компиляции библиотеки
Проблема: При компиляции возникает ошибка `'yield' was not declared in this scope`.
Причина: Устаревшая или несовместимая версия библиотеки Seeed Studio SHT35.
Решение: Обновите Arduino IDE и библиотеку Seeed Studio SHT35 до последней версии. Если проблема сохраняется, используйте библиотеку Adafruit SHT31.
Errno 121 Remote I/O Error
Ошибка чтения на Raspberry Pi
Errno 121 Remote I/O Error
Ошибка чтения на Raspberry Pi
Проблема: После успешных чтений возникает ошибка `Errno 121 Remote I/O Error`.
Причины:
- Плохое соединение проводов
- Нестабильное питание
- Проблемы с I2C коммуникацией
Решение: Проверьте все соединения. Убедитесь в стабильности питания. Проверьте наличие подтягивающих резисторов на SDA и SCL линиях.
- 🔌 Используйте I2C сканер для проверки адреса
- 📊 Проверьте Serial Monitor на наличие ошибок
- 🔧 Проверьте питание мультиметром
- 🔗 Убедитесь в надёжности соединений
Примеры программирования SHT35
Arduino
Совместимо с Arduino IDE и ESP32
C++
Arduino
Совместимо с Arduino IDE и ESP32
#include <Wire.h>
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
if (!sht31.begin(0x44)) { // Адрес 0x44 или 0x45
Serial.println("Не найден SHT35!");
while (1) delay(1);
}
}
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (!isnan(t) && !isnan(h)) {
Serial.print("Температура: ");
Serial.print(t);
Serial.println(" °C");
Serial.print("Влажность: ");
Serial.print(h);
Serial.println(" %");
} else {
Serial.println("Ошибка чтения SHT35!");
}
delay(1000);
}
Пример использует библиотеку Adafruit SHT31. Измените адрес на 0x45 если ваш модуль использует альтернативный адрес.
ESP-IDF
Официальный фреймворк Espressif
C++
ESP-IDF
Официальный фреймворк Espressif
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/i2c.h"
#define I2C_MASTER_SCL_IO 22
#define I2C_MASTER_SDA_IO 21
#define I2C_MASTER_NUM I2C_NUM_0
#define I2C_MASTER_FREQ_HZ 100000
#define SHT35_SENSOR_ADDR 0x44
static esp_err_t i2c_master_init(void) {
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.scl_io_num = I2C_MASTER_SCL_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
esp_err_t err = i2c_param_config(I2C_MASTER_NUM, &conf);
if (err != ESP_OK) return err;
return i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0);
}
void read_sht35_sensor() {
uint8_t data[6];
i2c_master_write_read_device(I2C_MASTER_NUM, SHT35_SENSOR_ADDR, NULL, 0, data, sizeof(data), pdMS_TO_TICKS(1000));
uint16_t temp_raw = (data[0] << 8) | data[1];
uint16_t hum_raw = (data[3] << 8) | data[4];
float temperature = -45 + 175 * ((float)temp_raw / 65535.0);
float humidity = 100 * ((float)hum_raw / 65535.0);
printf("Температура: %.2f °C, Влажность: %.2f %%\n", temperature, humidity);
}
void app_main() {
ESP_ERROR_CHECK(i2c_master_init());
while (1) {
read_sht35_sensor();
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
Пример для ESP-IDF реализует чтение SHT35 через I2C. Данные конвертируются в температуру (°C) и влажность (%) по формуле из даташита.
ESPHome
Конфигурация для Home Assistant
YAML
ESPHome
Конфигурация для Home Assistant
sensor:
- platform: sht3x
address: 0x44
temperature:
name: "Living Room Temperature"
humidity:
name: "Living Room Humidity"
update_interval: 60s
Конфигурация ESPHome для подключения SHT35. Укажите адрес 0x44 (или 0x45) и настройте интервал обновления.
PlatformIO
Профессиональная среда разработки
C++
PlatformIO
Профессиональная среда разработки
platformio.ini:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps = adafruit/Adafruit SHT31 Library @ ^1.2.0
monitor_speed = 115200
main.cpp:
#include <Wire.h>
#include "Adafruit_SHT31.h"
Adafruit_SHT31 sht35 = Adafruit_SHT31();
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
if (!sht35.begin(0x44)) {
Serial.println("Не найден SHT35!");
while (1) delay(1);
}
}
void loop() {
float temperature = sht35.readTemperature();
float humidity = sht35.readHumidity();
if (!isnan(temperature) && !isnan(humidity)) {
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Влажность: ");
Serial.print(humidity);
Serial.println(" %");
} else {
Serial.println("Ошибка чтения SHT35!");
}
delay(2000);
}
Конфигурация PlatformIO для ESP32 с использованием библиотеки Adafruit SHT31.
MicroPython
Python для микроконтроллеров
Python
MicroPython
Python для микроконтроллеров
from machine import I2C, Pin
import time
SHT35_I2C_ADDRESS = 0x44
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
def read_sht35():
i2c.writeto(SHT35_I2C_ADDRESS, b'\x24\x00')
time.sleep(0.015)
data = i2c.readfrom(SHT35_I2C_ADDRESS, 6)
temp_raw = (data[0] << 8) | data[1]
humidity_raw = (data[3] << 8) | data[4]
temperature = -45 + (175 * temp_raw / 65535.0)
humidity = 100 * humidity_raw / 65535.0
return temperature, humidity
while True:
try:
temperature, humidity = read_sht35()
print("Температура: {:.2f} °C".format(temperature))
print("Влажность: {:.2f} %".format(humidity))
except Exception as e:
print("Ошибка чтения:", e)
time.sleep(2)
MicroPython реализует прямой протокол SHT35. Функция отправляет команду измерения и читает 6 байт данных, преобразуя их в температуру и влажность.
Итоги SHT35
Датчик SHT35 — это премиальное решение для требовательных приложений, требующих высочайшей точности измерений температуры и влажности. Благодаря технологии CMOSens® и широкому диапазону питания, он идеально подходит для промышленных систем мониторинга, HVAC и научных исследований.
Преимущества
Высочайшая точность ±0.1°C, ±1.5% RH, широкий диапазон питания 2.4-5.5V, долгосрочная стабильность, I2C интерфейс.
Ограничения
Более высокая цена по сравнению с SHT30/SHT31, требует I2C.
Готовы начать?
Теперь, когда у вас есть вся необходимая информация, пришло время подключить SHT35 к вашему проекту!