Raspberry датчик температуры: измеряем и выводим на дисплей

Raspberry Pi 3. Мониторинг температуры процессора и других показателей

Продолжаем вникать в тонкости работы с микрокомпьютером Raspberry Pi.

В этой публикации я расскажу о том, как смотреть температуру процессора Raspberry Pi 3 и отслеживать другие показатели системы.

Процессор Raspberry Pi рассчитан на работу в пределах температуры до 80 ° C, при его нагреве свыше этой температуры начинается так называемый “троттлинг” – сбрасывание частот, что тормозит работу системы, но зато позволяет избежать преждевременной гибели устройства от перегрева. Так что будет не лишним время от времени посматривать температуру процессора “малины”, оценивая реальный нагрев при нагрузке и эффективность установленного охлаждения.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

Подразумевается, что на Raspberry Pi уже установлена и настроена OS Raspbian.

Так же подразумевается, что настроен удаленный доступ к Raspberry Pi по протоколам SSH/VNC. Это не обязательное условие, но наличие удаленного доступа очень облегчает работу с “малинкой”. Его настройке посвящена отдельная статья на этом блоге.

Мониторинг температуры с помощью консольных команд

В Raspberry Pi можно узнать температуру процессора при помощи ввода консольной команды:

В результате увидим примерно следующее:

Как видно, рабочая температура моего микрокомпьютера составляет 53,7 ° C, что в принципе в пределах нормы для пассивного охлаждения и достаточно маленького и плохо вентилируемого корпуса.

Также можно считать температуру процессора Raspberry Pi напрямую с температурного датчика:

Она измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000:
При считывании значения с датчика мы получаем более точное значение температуры – без округления до первого знака после запятой, как в случае использования команды vcgencmd measure_temp. Другое дело, что смысла в такой точности при использовании Raspberry Pi в быту нет.

Но на всякий случай я решил написать о существовании такой возможности.

Conky – гибко настраиваемый системный монитор

Другой способ мониторинга системных показателей Raspberry Pi заключается к установке системного монитора Conky.

Он доступен в стандартных репозиториях:

После установки Conky необходимо сконфигурировать, создав и отредактировав файл .conkyrc в домашнем каталоге:

Можно очень гибко настроить Conky под себя, воспользовавшись детальной инструкцией на сайте русскоязычного сообщества Ubuntu.

Я же выложу типовой конфиг, который установил сам и который 100% работает:

Этот текст нужно вставить и сохранить в файл .conkyrc, после чего можно запускать самое приложение:

Системный монитор будет отображаться прямо на рабочем столе, и если введен конфиг из примера выше, то выглядеть он будет так:

RPi Monitor – мониторинг состояния Raspberry Pi через браузер

И еще один способ мониторинга температуры процессора и других системных показателей доступен при помощи пакета RPi-Monitor, разработанного, как видно из названия, специально для Raspberry Pi и аналогичных ему одноплатных микрокомпьютеров.

Этот пакет может отслеживать температуру процессора, загрузку процессора и оперативной памяти, уровень заполнения SD-карты, аптайм системы, объемы проходящего по сетевым подключениям трафика, а также строить графики изменения всех этих показателей и поддерживает аддоны. Например, в случае подключения к GPIO датчика влажности и температуры DHT11/DHT22, можно легко настроить RPi-Monitor для измерения не только температуры процессора, но и температуры и влажности окружающей среды.

Его нет в официальном репозитории, поэтому установка происходит в несколько действий.

Для начала добавляем поддержку https для менеджера пакетов APT:

Теперь пропишем открытый ключ для доступа к репозиторию:

Добавим репозиторий RPi-Monitor в список доступных репозиториев:

Наконец, обновим индекс пакетов с учетом добавленного репозитория и установим RPi-Monitor:

На этом установка завершена, но нужно выполнить еще три консольных команды.

Первая включает опцию автоматического мониторинга статуса установленных пакетов (с ней RPi-Monitor будет показывать сколько установленных пакетов доступно для обновления), вторая обновляет этот статус прямо сейчас, третья перезагружает RPi-Monitor:

После этого RPi-Monitor окончательно готов к использованию.

Он доступен из браузера по адресу http://ip-адрес-raspberry-pi:8888 и отображает состояние системы в следующем виде:

Кстати, только после установки RPi-Monitor я узнал, что в режиме простоя Raspberry Pi 3 сбрасывает частоты процессора до 600Мгц, а при появлении более-менее ресурсоемкой задачи автоматически повышает их до стандартных 1200Мгц.

Заключение

Самый простой способ посмотреть температуру процессора Raspberry Pi – выполнить соответствующую консольную команду. Он доступен по умолчанию, он всегда работает, для него не надо ничего настраивать.

Если планируется использовать Raspberry Pi как обычный компьютер (с подключенным монитором, мышью, клавиатурой и запущенным графическим интерфейсом PIXEL), то есть смысл установить системный монитор Conky и при помощи руководства настроить вывод информации полностью под свои нужды.

Если Raspberry Pi планируется использовать удаленно (т.е. управляя ей по сети при помощи протоколов SSH/VNC), то самым удобным вариантом является установка RPi Monitor. Этот монитор не может похвастаться такой гибкостью как Conky, зато доступен из браузера как с самой “малины”, так и с любого подключенного к локальной сети устройства. Кроме того, он готов к работе сразу же после установки и вообще не нуждается в настройке.

4 комментария на «Raspberry Pi 3. Мониторинг температуры процессора и других показателей»

Вдохновившись твоими статьями взял Ардуино и малинку. хочу посоветовать третий метод до которого дошел сам: установка спец приложения на смартфон. Например я использую RaspManager на андройд.

Да, о приложениях на смартфон я как-то не подумал сначала.
Действительно, в Google Play есть несколько штук с таким функционалом.

В строке “$Temp:” после двоеточия стоит ненужный пробел, его нужно удалить, иначе температуру не покажет 🙂

Датчик температуры Raspberry Pi с выводом на ЖК-экран

Отобразим текущую температуру окружающей среды и среднее значение в течение определенного дня на ЖК-дисплее с помощью Raspberry Pi.

Что нам понадобится?

  • Raspberry Pi 3 Модель B+ (примерно $60)
  • Аналоговый датчик температуры (примерно $8)
  • Модуль преобразователя AD/DA (примерно $9)
  • ЖК-экран LCD1602 (примерно $12)

Все эти комплектующие нам помогут отобразить текущую температуру окружающей среды и средний показатель за определенный день на ЖК-дисплее, используя Raspberry Pi, aWhere API и библиотеки SunFounder.

Датчик температуры Raspberry Pi

В уроке использован Sensor Kit V2.0 от SunFounder, который поставляется с аналоговым температурным датчиком, и их PCF8591, который является устройством сбора данных. Мы использовали схему проекта от SunFounder, как показано ниже:

После правильной сборки схемы используйте код для проверки конфигурации. Вы можете скачать его на официальной странице здесь. Их код идет как на Python, так и на C, мы будем использовать Python.

Если вы делаете всё дистанционно, вы можете загрузить код на свой компьютер и использовать FileZilla, чтобы перенести его на свой Raspberry Pi.

Чтобы протестировать схему, запустите файл “18_thermistor.py”. Результат должен выглядеть примерно так.

Использование ЖК-дисплея Raspberry Pi

Дисплей, который был использован, имеет только четыре провода. Оставьте датчик температуры подключенным. Используя схему ниже, предоставленную SunFounder, подключите ЖК-дисплей.

ЖК-дисплей и датчик температуры перекрываются на контактах «SDA1» и «SCL1». Он работает с этими контактами.

Чтобы отобразить текущую температуру на ЖК-дисплее, создайте новый каталог, например «LCDTemp», и скопируйте два файла, выделенные ниже на рисунке из каталога кода SunFounder, в ваш новый каталог. Это библиотеки, специфичные для оборудования SunFounder Kit (мы не тестировали их работу с другими датчиками).

Теперь, когда у вас есть эти библиотеки, настало время начать писать код для отображения текущей температуры на ЖК-дисплее:

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

Получение исторических данных погоды с использованием API aWhere

Самый простой бесплатный API, который получилось найти для получения средних исторических температур для определенного местоположения, – использовать aWhere. С помощью aWhere вы можете получать всевозможные исторические данные о погоде.

Вы можете получить на бесплатную учетную запись на сайте aWhere здесь. Зарегистрировавшись, перейдите в «Моя учетная запись» (англ. – My Account) в верхнем правом углу и нажмите на «Мои приложения» (англ. – My apps). Внутри «Мои приложения» нажмите синюю кнопку «Добавить новое приложение» (англ. – Add a new App), как показано ниже:

Создав приложение, вы получите ключ «Consumer Key» и «Consumer Secret», мы будем использовать их, чтобы получить токен аутентификации в приведенном ниже коде.

Создание поля

Ощущение, что сервис aWhere больше направлен на сельскохозяйственное направление, поэтому, естественно, чтобы указать местоположение, чтобы получить температуру, нам нужно «добавить поле» (англ. – add a field) в наше приложение.

Документацию для добавления поля можно найти по ссылке. Сначала мы попробовали два разных способа, используя запросы «requests» и «urllib», но не смогли заставить всё работать. Единственный пример Python, который был найден, который работал, был в разделе ответов здесь, и именно на этом основан код ниже:

После выполнения кода выше, если вы успешно добавили поле, результат должен выглядеть примерно так (в зависимости от выбранного вами местоположения):

Получение исторических данных о погоде

Теперь, когда вы успешно создали поле, вы можете извлекать исторические данные о погоде для географического местоположения. Здесь можно найти документацию от aWhere.

Этот шаг довольно прост, приведенный ниже код должен только вернуть среднюю температуру за этот день за последние 10 лет.

Результат должен выглядеть примерно так:

Цифра 15 на рисунке выше – средняя температура в градусах Цельсия.

Собираем всё вместе

Теперь, когда мы имеем текущую температуру окружающей среды, а также среднюю историческую температуру, пришло время собрать все это и отобразить на ЖК-дисплее.

Код предназначен для обновления температуры окружающей среды каждую секунду, но средняя температура – только один раз в день. Он сравнивает день с помощью счетчика «currDay»:

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

На этом пока всё. Больше о проектах на Raspberry в следующих публикациях.

Raspberry Pi 3 – подключаем датчик DHT11 и LCD-дисплей

Мастер Кит DHT11

В этом материале мы рассмотрим, как подключить к Raspberry Pi 3 широко распространенные датчик влажности и темперHатуры DT11 и LCD-дисплей размерности 1602 (шестнадцать символов в строке, две строки) на базе контроллера HD44780. Большинство выпускаемых различными производителями дисплеев не имеют поддержки кириллицы, но для отображения значений температуры и влажности такой недостаток не имеет принципиального значения.

Мы будем использовать дисплей с очень удобным переходником на микросхеме PCF8574T, который позволяет управлять дисплеем по протоколу I 2 C всего по двум проводам, не считая питания +5 В и земли. При обычных способах подключения дисплея к микроконтроллеру требуется 8 или 12 линий. Подключение по I 2 C существенно экономит вводы-выводы общего назначения (GPIO) Raspberry, которые могут понадобиться для подключения других устройств, и никак не мешает наблюдать относительно медленно меняющиеся параметры.

Датчик DHT11 требует для подключения всего один провод линии данных, также не считая питания и земли. Его следует питать напряжением +3.3 В. DHT11 имеет собственный протокол обмена данными 1-Wire.

Разберем пошагово установку программного обеспечения и подключение внешних устройств. Мы использовали операционную систему Raspbian Jessie With Pixel, скачанную с сайта raspberrypi.org и плату Raspberry Pi 3 Model B.

Подготовим Raspberry к установке необходимого программного обеспечения. Если у вас свежая версия Raspbian, то, скорее всего, необходимые модули уже установлены. Но, на всякий случай, лучше застраховаться.

Откройте терминал и наберите следующие команды:

sudo apt-get update

sudo apt-get upgrade

Первая команда синхронизирует и обновит индексные файлы установленных в системе пакетов, вторая – обновит все установленное на данный момент программное обеспечение. Это занимает некоторое время.

Разрешим, если это еще не сделано, использование в системе протоколов I 2 C и 1-Wire. Для этого введем команду

sudo raspi-config

в открывшемся меню с помощью стрелок вверх/вниз и клавиши Enter зайдем в Interfacing Options, последовательно откроем соответствующие пункты меня и разрешим (выбрав “Y” при запросе) использование I 2 C и 1-Wire. Клавишей Tab установим маркер на , нажатием на Enter выйдем в меню верхнего уровня, выберем , нажмем Enter. Для выхода на предыдущий уровень меню также можно использовать клавишу . После выхода в терминал необходимо перезагрузить систему. Это можно сделать, введя команду

sudo reboot

После перезагрузки необходимо изменить файл конфигурации модулей так, чтобы необходимые модули попали в автозагрузку. Для этого необходимо открыть в редакторе nano файл modules:

sudo nano /etc/modules

Добавьте в открывшийся для редактирования файл к имеющимся строкам еще две строки:

i2c-dev

i2c-bcm2708

Если какая-либо из этих строк уже имеется в файле, ее добавлять не надо.

Выйдем из редактора, нажав и ответив “Y” на вопрос о сохранении файла.

Теперь необходимо установить библиотеки smbus и I 2 C для Python. Для этого последовательно введите в терминале команды:

sudo apt-get update (еще раз обновим индексные файлы)

sudo apt-get install –y python-smbus i2c-tools (собственно установка библиотеки)

sudo reboot (перезагрузка)

Проверим, установилась ли библиотека? Наберем в терминале

lsmod | grep i2c

Если в появившемся отклике системы есть строка i2c_bcm2708 , то это значит, что библиотека установлена успешно.

Настало время подключить датчики к выводам GPIO Raspberry. Повторим схему разъема GPIO для наглядности. Перед подключением внешних устройств обязательно отключите Raspberry от питания!

Подключим LCD-экран и датчик DHT11 в соответствии со следующей таблицей:

Контакты I 2 C LCD Контакты GPIO Raspberry Описание
GND 6 Земля
VCC 2 +5 В
SDA 3 GPIO 2 (I2C1_SDA)
SCL 5 GPIO 3 (I2C1_SCL)
Контакты DHT11 Контакты GPIO Raspberry Описание
GND 9 Земля
DATA 8 GPIO 14
VCC 1 +3.3 В

Включим питание Raspberry и проверим, обнаруживает ли операционная система устройство, подключенное по шине I 2 С? Введем в терминале команду (она входит в установленную на третьем шаге утилиту i2c-tools):

sudo i2cdetect 1

В ответ система выдаст такую информацию:

На пересечении строки, помеченной цифрой 20, и столбца 7 мы видим адрес единственного подключенного устройства – 27 (в системе счисления по основанию 16). Теоретически, адрес может быть и другим. Запомним его, он нам понадобится в дальнейшем. Если на одного адреса не отображается, это означает, что либо устройство не подключено, либо оно подключено неверно, либо необходимое программное обеспечение не установлено.

Все предварительные действия закончены. На этом шаге мы настроим и запустим программу на языке Python, которая отобразит температуру и влажность, полученные с датчика DHT11 на дисплее. Загрузим файлы из файлового хранилища: dht11.py и raspi-dht11-i2clcd.py. Первый из них является драйвером датчика DHT11. Он используется в основной программе, которая находится во втором файле.

Введем в терминале

sudo wget https://masterkit.ru/zip/dht11.py ,

sudo wget https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Команды можно объединить в одну (имена файлов указываются через пробел):

sudo wget https://masterkit.ru/zip/dht11.py https://masterkit.ru/zip/raspi-dht11-i2clcd.py

Файлы будут загружены в рабочий каталог /home/pi.

После загрузки необходимо отредактировать адрес LCD-дисплея на шине I 2 C, который мы наши пятом шаге, в нашем случае он равен 27. Занесем его в основной файл программы. Откроем файл raspi-dht11-i2clcd.py на редактирование в редакторе nano:

sudo nano /home/pi/ raspi-dht11-i2clcd.py

По умолчанию адрес 27 задан в переменной I2C_ADDR = 0x27 . Если адрес на пятом шаге не равен 27, следует подставить его значение.

Сохраняем изменения Ctrl-O, закрываем редактор Ctrl-X.

Изменить файл можно и более привычным (для пользователей Windows) способом в редакторе среды программирования Python двойным кликом на файле основной программы:

Редактируем и сохраняем файл.

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

Запуск из терминала:

sudo python raspi-dht11-i2clcd.py

Запуск из редактора среды программирования Python (см. рисунок внизу):

Run->Run Module или F5.

Введите в терминале команду, открывающую на редактирование новый файл dht11-lcd.desktop:

sudo nano /etc/xdg/autostart/dht11-lcd.desktop

В открывшемся окне редактора nano введите 8 строк:

Выводим температуру и влажность помещения на LCD I2C дисплей. Подключение датчика DHT11 к Arduino UNO

Я продолжаю свое увлечение электроникой. Буквально вчера пришла посылка с моим набором для изучения Arduino UNO — конечно же сразу захотелось что-нибудь собрать.

Немного поигравшись с мигающими светодиодами, я решил протестировать остальное содержимое набора. Выбор пал на ЖК-дисплей и датчик температуры и влажности DHT11.

Очень хотелось вывести показания датчика не только на экран монитора, но и на дисплей. Убив несколько часов на поиск и изучение статей по данной теме, я так и не смог заставить все работать нужным образом. Все готовые решения содержали ошибки или недомолвки, либо применялись другие компоненты — дисплей показывал что угодно, но только не температуру и влажность. Поскольку метод «с наскока» не удался, пришлось не просто копировать готовый код, а разбираться в том, как он работает. Но в итоге я все же смог получить нужную программу (ссылка на скачивание в конце статьи) и загрузить ее в микроконтроллер, ура:

Хочу отметить, что я не писал весь код с нуля — часть взята из тестовых файлов входящих в состав библиотек, часть – из найденных статей, что-то переделал я сам. В общем, это некая компиляция, приведенная к работающему состоянию.

Датчик DHT11 очень неточный, поэтому использовать его в качестве источника информации для каких-то серьезных систем я бы не советовал, но для учебных целей он очень даже подходит.

Ниже я подробно расскажу как повторить данную конструкцию (если кому-то захочется) и приведу текст скетча для Arduino IDE.

Начнем с дисплея:

На картинке приведен вид спереди и сзади. Как можно увидеть, мой экземпляр снабжен интерфейсом I2C (маленькая платка на задней стороне). Данный интерфейс очень упрощает подключение дисплея к Arduino — нужно использовать всего 4 контакта:

GRD — минус питания («земля»)
VCC — питание +5V
SDA — линия данных
SLC — линия синхронизации

Без I2C подключение LCD дисплея осуществляется несколько сложнее.

Датчик DH11 так же имеет 4 контакта, при этом один из них вообще не используется. Мой дачик уже расположен на платке, на которой сразу установлен дополнительный резистор (который требуется для нормальной работы датчика) и выведено 3 ножки:

Левая подписана как S — с нее поступает сигнал, правая — «-», ну а средняя получается «+» на нее подается питание.

Итак, собираем схему:

NB! Перед монтажом схемы и внесением в нее каких-либо изменений обязательно отключайте питание всех элементов, иначе можно их банально сжечь — потом будет жалко.

1) Подключаем датчик:

  • S на A0
  • + на +5V
  • — на GND

2) Подключаем LCD дисплей:

  • SDA на A4
  • SLC на A5
  • VCC на +5V (на Arduino UNO такой pin всего один и там уже обосновался провод питания идущий от датчика, поэтому лучше соединить VCC дисплея с «+» датчика (например джампером) или использовать для одного из устройств внешнее питание)
  • GND на GND Arduino («земли» на UNO как раз две, так что тут никаких проблем)

Сборка на этом закончена, осталось прошить микроконтроллер.
Вот код скетча:

В данном коде используются библиотеки DHT и LiquidCrystal_I2C, которые не входят в стандартный пакет Arduino IDE. В сети множество разных библиотек с такими же названиями. И несмотря на их схожесть, не со всеми версиями данный код работает. Чтобы вам не тратить свое время и нервы на поиск рабочего варианта, я прикладываю к данной статье архив, в котором содержатся данные библиотеки и сам скетч для Arduino IDE. Библиотеки надо разархивировать и поместить в папку C:Program Files (x86)Arduinolibraries после чего перезапустить программу Arduino IDE.

Я думаю, что опытные разработчики найдут к чему придраться в данном коде (например, здесь нет обработчика ошибок), но на данном этапе, для меня главное, что он работает. Если вы будете применять детали схожие с моими, должно заработать и у вас. Конечно, рекомендую не просто скопировать, но и попытаться понять за что отвечает каждая строчка кода (комментарии в коде сильно в этом помогут).

Быстрые результаты в любом деле это не цель, а всего лишь мотивация, которая должна подталкивать вас копать глубже. Помните об этом! =)

Источники:

http://arduinoplus.ru/raspberry-datchik-temperatury/

http://www.rlocman.ru/review/article.html?di=336425

http://tsarevstudio.ru/blog/hobby/humidity_and_temp_with_dht11_and_arduinouno.html

http://arduinoplus.ru/raspberry-pi-ili-skromnoe-ocharovanie-prostoty/

Ссылка на основную публикацию