Измерение температуры с Raspberry Pi и Sense HAT
Кратко: В этой статье показано, как подключить и настроить официальный модуль Sense HAT для чтения температуры с Raspberry Pi, от установки до простых программ на Python. Приведены советы по калибровке, устранению неполадок и альтернативы для точных измерений.

Что такое Sense HAT?

Sense HAT — официальный дополнительно устанавливаемый модуль (HAT) для Raspberry Pi, разработанный компанией Raspberry Pi. Первоначально он создавался для использования на Международной космической станции в рамках конкурсов и образовательных программ. Sense HAT объединяет несколько датчиков, 8×8 RGB‑матрицу для вывода сообщений и мини‑джойстик для простого управления.
Краткое определение: Sense HAT — это набор датчиков и экран на одной плате, который крепится к 40‑контактному GPIO Raspberry Pi.
Какие датчики есть на Sense HAT
- Влажность: STMicro HTS221, диапазон 0–100% относительной влажности. Датчик также даёт измерение температуры в диапазоне примерно 0°C–65°C с погрешностью около ±2°C.
- Давление: STMicro LPS25HB, диапазон 260–1260 hPa; температурный датчик у него в диапазоне примерно 15°C–40°C с погрешностью около ±0.5°C.
- Температура: можно читать из датчика влажности или из датчика давления; также часто берут среднее между ними.
- Гироскоп, акселерометр и магнитометр: IMU STMicro LSM9DS1 определяет ориентацию, ускорение и направление магнитного северного полюса.
- Вывод информации: 8×8 RGB LED‑матрица и 5‑позиционный джойстик.
Эти датчики дают хорошие показания для образовательных проектов и простых погодных станций, но учтите, что встроенные термодатчики влияют и нагрев платы Raspberry Pi.

Шаг 1: Установка Sense HAT

- Перед началом убедитесь, что Raspberry Pi выключен и питание отключено.
- Наденьте прилагаемый черный удлинитель‑разъём (header extender), если он есть.
- Осторожно совместите 40‑пиновый разъём Sense HAT с GPIO Raspberry Pi и равномерно нажмите до плотного соединения.
- При желании зафиксируйте плату через стоечки и винты.
Примечание: у модели Raspberry Pi 400 заголовок GPIO расположен на задней стороне корпуса клавиатуры. В этом случае лучше использовать гибкий удлинитель GPIO, чтобы поворачивать Sense HAT в нужную сторону.
Шаг 2: Настройка Raspberry Pi
Подключите клавиатуру, мышь и монитор, либо работайте в «headless» режиме через SSH. Вставьте microSD с Raspberry Pi OS и включите питание.
Чтобы убедиться, что пакеты для Sense HAT установлены, откройте Терминал и выполните:
sudo apt install sense-hatЕсли пакет был только что установлен, перезагрузите систему:
sudo rebootЕсли вы работаете удалённо без графики, можно всё равно запускать Python‑скрипты и редактировать их через nano/vi, но среду Thonny IDE вы не увидите.
Шаг 3: Программирование на Python
Thonny IDE — удобная среда для новичков и школьников. В Raspberry Pi OS запустите: Меню > Программирование > Thonny IDE.

Краткое определение: библиотека sense_hat предоставляет класс SenseHat для работы с датчиками и матрицей.
Шаг 4: Снятие показаний температуры
Вставьте в Thonny или создайте файл .py с этим кодом:
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
temp = sense.get_temperature()
print(temp)Пояснение: sense.get_temperature() возвращает значение в градусах Цельсия по умолчанию (в зависимости от версии библиотеки иногда требуется дополнительная обработка). Для преобразования в Фаренгейты используйте формулу:
temp = (sense.get_temperature() * 1.8 + 32)Обычно значение имеет много знаков после запятой. Округляем до одной дробной:
temp = round(temp, 1)Альтернативы получения температуры:
- sense.get_temperature_from_pressure() — температура, снятая с датчика давления.
- sense.get_temperature_from_humidity() — температура, снятая с датчика влажности.
- Усреднение двух показаний: (t1 + t2)/2 — часто даёт более стабильный результат.
Шаг 5: Отображение температуры на RGB‑матрице
Чтобы периодически обновлять показания и прокручивать текст по матрице, можно использовать цикл и time.sleep. Пример полного скрипта:
from sense_hat import SenseHat
from time import sleep
sense = SenseHat()
sense.clear()
while True:
temp = (sense.get_temperature() * 1.8 + 32)
temp = round(temp, 1)
message = "Temp: " + str(temp)
sense.show_message(message)
sleep(10)Запустите скрипт — и цифры будут прокручиваться по LED‑матрице каждые 10 секунд.

Калибровка и точность измерений
Встроенные температурные сенсоры на Sense HAT находятся вблизи самой платы Raspberry Pi: тепло процессора может давать значительное смещение показаний. Вот практическая методика калибровки:
- Поместите доверенный термометр рядом с Sense HAT на спокойном воздухе (без прямого притока тепла).
- Дайте системе стабилизироваться 5–10 минут.
- Зафиксируйте n измерений с интервалом (например, 10 секунд) и вычислите среднее значение для Sense HAT и для эталонного термометра.
- Вычислите смещение: offset = эталонноесреднее - senseсреднее.
- Добавьте offset в программный код при выводе значений.
Пример кода с компенсацией offset:
offset = -1.8 # пример: полученный при калибровке
while True:
temp_c = sense.get_temperature()
temp_c = temp_c + offset
temp_f = round(temp_c * 1.8 + 32, 1)
sense.show_message("Temp: " + str(temp_f) + "F")
sleep(10)Советы по уменьшению нагрева от CPU:
- Используйте стоечный удлинитель, чтобы поднять Sense HAT выше платы.
- Обеспечьте циркуляцию воздуха вокруг платы (незакрытый корпус или вентиляционные отверстия).
- Периодически измеряйте температуру в простое и под нагрузкой, чтобы понять поведение смещения.
Когда калибровка не помогает: если проект требует медицинской или лабораторной точности, встроенный Sense HAT не подойдёт — используйте специализированные промышленные датчики.
Частые проблемы и их устранение
- Никаких показаний или ошибки импорта библиотеки sense_hat:
- Проверьте установку пакета: sudo apt install sense-hat.
- Убедитесь, что Raspberry Pi распознал HAT и что контакты чистые.
- Показания очень высокие и постоянно растут:
- Возможно, плата нагревается. Проверьте положение процессора и примените offset.
- Текст на матрице не читабелен:
- Отрегулируйте скорость show_message(, scroll_speed=0.05) и цвет.
- Скрипт не запускается при старте системы:
- Для автозапуска используйте systemd‑сервис или crontab @reboot, тестируйте права и пути.
Альтернативные подходы и когда их использовать
- DS18B20 (1‑wire): простой, надёжный уличный датчик с погрешностью ±0.5°C, подходит для внешних измерений.
- BME280: измеряет температуру, давление и влажность, имеет лучшую точность температуры и компактный модуль I2C.
- DHT22: дешевый датчик влажности и температуры, но медленный и менее точный по сравнению с BME280.
Когда выбирать Sense HAT:
- Для обучения, быстрого прототипирования и визуальной отдачи на LED‑матрице.
Когда не выбирать:
- Для точных климатических исследований, лабораторных измерений или уличного мониторинга без корпуса и выносного датчика.
Примеры расширений проекта
- Логирование в CSV
import csv
from datetime import datetime
with open('temp_log.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([datetime.utcnow().isoformat(), temp_c])- Отправка данных в MQTT (для интеграции с домашней автоматикой)
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect('mqtt-broker.local', 1883, 60)
client.publish('sensors/room/temp', temp_c)- Визуализация в Grafana/InfluxDB: собирайте показания в базу временных рядов и стройте дашборды температуры, влажности и давления.
Критерии приёмки
- Sense HAT корректно подключён и распознаётся системой.
- Python‑скрипт запускается без ошибок и читает значение температуры.
- Смещение от эталонного термометра рассчитано и применено.
- Данные корректно записываются или отправляются в указанное хранилище (CSV/MQTT/InfluxDB).
Контрольные тесты и приёмочные примеры
- Тест 1: Запустите 10 последовательных измерений с интервалом 10 секунд; проверьте, что разброс показаний в стабильных условиях не превышает ожидаемую погрешность датчиков.
- Тест 2: Сравните среднее Sense HAT и эталона в течение 10 минут; примените offset и проверьте отклонение после калибровки.
- Тест 3: Перезапуск системы — автозапуск сервисов должен поднять считывание и логирование в течение 30 секунд.
Ролевые чеклисты
Для студента:
- Установить Sense HAT физически.
- Выполнить sudo apt install sense-hat.
- Запустить пример из раздела 4.
- Снять скриншот матрицы и Shell Thonny.
Для преподавателя:
- Проверить задания на калибровку и объяснить влияние нагрева CPU.
- Подготовить эталонный термометр для класса.
- Задать оценочные критерии (см. Критерии приёмки).
Для разработчика/интегратора:
- Организовать автозапуск через systemd.
- Подготовить подключение к MQTT/InfluxDB.
- Настроить мониторинг процессов и логирования.
Факт‑бокс: ключевые значения Sense HAT
- Влажность: 0–100% RH
- Температура (HTS221): ~0–65°C (погрешность ~±2°C)
- Температура (LPS25HB): ~15–40°C (погрешность ~±0.5°C)
- Давление: 260–1260 hPa
Короткий глоссарий
- GPIO — общие входы/выходы платы Raspberry Pi для подключения внешних устройств.
- HAT — аппаратный модуль, устанавливаемый поверх Raspberry Pi.
- Offset — программная поправка, добавляемая к измерению для компенсации смещения.
Сводка и дальнейшие шаги
Sense HAT — удобный инструмент для обучения и быстрых прототипов. Для повышения точности используйте калибровку, поднимайте плату от источников тепла и при необходимости подключайте внешние специализированные датчики. Дальше можно интегрировать показания в домашнюю автоматику, настроить удалённый сбор данных и визуализацию.
Важно: если проект предполагает работу вне помещения, используйте герметичный корпус и внешний выносной датчик.
Часто задаваемые вопросы
Можно ли использовать Sense HAT для уличного мониторинга?
Sense HAT не защищён от погодных условий и расположен близко к плате Raspberry Pi, поэтому для уличного мониторинга нужен герметичный корпус и/или выносной датчик.
Как уменьшить влияние нагрева процессора?
Используйте стоечный удлинитель, корпус с вентиляцией, измеряйте в покое и применяйте программный offset.
Какой датчик лучше для точных измерений температуры?
Для точных измерений рекомендуется BME280 или промышленный датчик (например, Pt100 с подходящим преобразователем). Sense HAT больше подходит для обучения и простых проектов.
Похожие материалы
Лучшие виджеты для iPhone — обзор и инструкция
Темы WordPress: выбор, установка, управление
KVM на Arch Linux: установка и первая виртуальная машина
Эффект Зейгарник для продуктивности
Ремонт ноутбука: диагностика и практические советы