ESP32 имеет встроенный датчик температуры, который измеряет нагрев самого кристалла. Это незаменимый инструмент для предотвращения перегрева и оптимизации производительности вашего устройства.
Содержание
⚠️ Внимание: Этот датчик измеряет температуру внутри чипа, а не температуру окружающей среды. Если вам нужно измерять внешнюю температуру, ознакомьтесь с нашей статьей: «Выбор датчика температуры для ESP32».
Платы с встроенным датчиком
Не все модели ESP32 оснащены этим датчиком. Оригинальные чипы серии ESP32-WROOM и WROVER часто его не имеют (или он признан устаревшим).
Официально поддерживаемые модели:
- ESP32-C2 / C3 / C6
- ESP32-H2
- ESP32-S2 / S3
Принцип работы
Встроенный датчик — это цифровой сенсор, использующий 8-битный АЦП. Он измеряет напряжение на переходе, которое зависит от температуры.
Технические характеристики
| Параметр | Значение |
|---|---|
| Диапазон | -40°C до +125°C |
| Точность | от +/- 1°C до +/- 3°C |
| Назначение | Внутренняя температура кристалла |
Использование в Arduino IDE
Для новых моделей ESP32 необходимо использовать драйвер temp_sensor.h. Вот пример простого скетча:
#include "driver/temp_sensor.h"
void initTempSensor(){
temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT();
// TSENS_DAC_L2 — по умолчанию; диапазон -10°C ~ 80°C
temp_sensor.dac_offset = TSENS_DAC_L2;
temp_sensor_set_config(temp_sensor);
temp_sensor_start();
}
void setup() {
Serial.begin(115200);
initTempSensor();
}
void loop() {
float result = 0;
temp_sensor_read_celsius(&result);
Serial.print("Температура чипа: ");
Serial.print(result);
Serial.println(" °C");
delay(5000);
}
Тестирование и результаты
Проверить работоспособность датчика можно, изменив частоту процессора. Чем выше частота, тем сильнее нагревается чип.
Результаты наших тестов:
- При частоте 160 МГц: температура ~31.10 °C.
- При частоте 10 МГц: температура ~28.47 °C. Разница в 2.6°C подтверждает, что датчик реагирует на тепловую нагрузку.
Решение проблем
- Температура не меняется: Либо чип работает вхолостую (нагрузка стабильна), либо в данной модели физически нет датчика.
- Ошибка
fatal error: driver/temp_sensor.h: Вы выбрали в Arduino IDE плату, для которой этот датчик не поддерживается. Смените модель платы.
Заключение
Внутренний датчик температуры — отличный инструмент для мониторинга «здоровья» вашего устройства. Он помогает диагностировать утечки памяти (через рост CPU), проблемы с питанием или банальный перегрев в закрытых корпусах.