Бесконтактный термометр на Raspberry Pi с оповещениями по Email


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

Внешний вид бесконтактного термометра на Raspberry Pi с оповещениями по Email

Сейчас на рынке доступно достаточно много моделей бесконтактных термометров, но ни одна из них не имеет функции оповещения по Email в случае превышения температуры определенной границы. В этой же статье мы используем всю мощь сегодняшних технологий интернета вещей (Internet of Things, IoT) и разработаем бесконтактный термометр с оповещениями по Email на основе платы Raspberry Pi, датчике MLX90614 и камеры для Raspberry Pi.

Ранее на нашем сайте мы уже рассматривали следующие проекты бесконтактных термометров:

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Камера для Raspberry Pi (купить на AliExpress).
  3. Бесконтактный инфракрасный датчик температуры MLX90614 (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.
  6. Источник питания (5V, 2A/3A).

Авторы проекта (ссылка на оригинал в конце статьи) использовали Raspberry Pi 3 Raspbian OS. Вы можете использовать любой другой тип платы Raspberry Pi и подходящую операционную систему для нее.

Инфракрасный датчик температуры MLX90614

В настоящее время в электронных схемах широкое применение находят датчики температуры DHT11 и LM35. Но в нашем проекте нам нужен совершенно иной датчик температуры, который мог бы определять температуру конкретного объекта (не температуру окружающей среды вокруг него) без непосредственного контакта с ним. Для этой цели могут быть использованы бесконтактные датчики температуры, которые используют лазерное или инфракрасное излучение для определения температуры объекта. К числу подобных датчиков относится и MLX90614, использующий инфракрасную энергию для определения температуры объекта. Внешний вид данного датчика показан на следующем рисунке.

Внешний вид датчика температуры MLX90614

Датчик MLX90614 производится компанией Melexis Microelectronics Integrated system. В своем составе он содержит два устройства: инфракрасный термоэлектрический детектор (обнаруживающий элемент) и вычислительное устройство, построенное на принципах цифровой обработки сигналов. Принцип работы датчика основан на законе Стефана – Больцмана, который говорит о том, что каждое нагретое тело излучает инфракрасную энергию, интенсивность которой прямо пропорционально температуре этого тела. Обнаруживающий элемент датчика измеряет какое количество энергии инфракрасной энергии излучается выбранным объектом, а вычислительный блок конвертирует это значение энергии в значение температуры используя встроенный 17-битный АЦП (аналого-цифровой преобразователь). На выход датчика информация о температуре передается по интерфейсу I2C.

Краткие технические характеристики датчика температуры MLX90614:

  • рабочее напряжение: от 3.6V до 5V;
  • измеряемый диапазон температур: от -70°C до 382.2°C;
  • температура окружающей среды: от -40°C до 125°C;
  • точность измерения температуры: 0.02°C.

Более полную информацию о датчике MLX90614 вы можете посмотреть в даташите на него.

Подключение датчика MLX90614 к Raspberry Pi

Шаг 1. Вначале включим использование протокола I2C (enabling the I2C) в настройках платы Raspberry Pi.

Выполните команду sudo raspi-config чтобы войти в панель настроек платы. В ней выберите настройки подключения (interfacing options).

Выбор настроек подключения в панели настроек Raspberry Pi

В них включите использование протокола I2C.

Включение интерфейса I2C в панели настроек Raspberry Pi

Шаг 2. Скачайте библиотеку (пакет) для работы с датчиком MLX90614 по адресу https://pypi.org/project/PyMLX90614/#files, на открывшейся странице сделайте правый клик мышкой на библиотеке и скопируйте адрес ссылки для ее скачивания.

Копирование ссылки на скачивание библиотеки для работы с датчиком MLX90614

Затем в терминале платы напишите wget и после нее скопированный адрес ссылки:

В результате выполнения данной команды вы скачаете архив с именем ‘PyMLX90614-0.0.3.tar.gz’. Извлеките файлы из этого архива в каталог с помощью команды:

Извлечение файлов из архива PyMLX90614-0.0.3.tar.gz

Затем установим ряд необходимых пакетов с помощью команд:

Установка необходимых пакетов для работы проекта

Затем перейдем в каталог с библиотекой с помощью команды cd PyMLX90614-0.0.3/ и выполним в нем следующую команду:

Установка пакета PyMLX90614-0.0.3

После этого подключите датчик MLX90614 к плате Raspberry Pi согласно следующей схемы (разработанной с помощью программы fritzing).

Схема бесконтактного термометра на Raspberry Pi с оповещениями по Email

После этого можно узнать I2C адрес датчика с помощью команды i2cdetect -y 1. Если все работает так, как надо, то в терминале мы должны увидеть следующую картину:

Определение I2C адреса датчика MLX90614

0x5A – это I2C адрес датчика MLX90614, что соответствует данным из его даташита.

I2C адрес датчика MLX90614 в даташите на него

Далее в файле mlxread.py мы напишем простую программу для считывания данных с датчика MLX90614.

Запустим этот файл на выполнение с помощью команды python mlxread.py. После этого вы в окне терминала должны увидеть значения температуры, считываемые с датчика. Автор проекта подносил свою руку к датчику и убирал ее, поэтому на представленной картинке показаны различные значения температуры.

Тестирвоание работы датчика MLX90614 с помощью тестовой программы

На этом успешное подключение датчика MLX90614 к плате Raspberry Pi закончено.

Подключение камеры (Pi Camera) к Raspberry Pi

Шаг 1. Включите использование камеры в настройках платы.

Для этого выполните команду sudo raspi-config и в открывшейся панели настроек выберите настройки подключения (interfacing options).

Выбор настроек подключения в панели настроек Raspberry Pi

Выберите в них камеру и включите ее использование (enable the camera).

Выбор настроек камеры в панели настроек Raspberry Pi

Включение использования камеры в панели настроек Raspberry Pi

Затем подключите камеру к соответствующему разъему Raspberry Pi.

Подключение камеры к Raspberry Pi

Шаг 2. Для проверки того, что камера работает исправно, сделаем ей тестовое фото и сохраним его на рабочий стол платы (авторы проекта использовали Full GUI Raspbian OS version).

В результате выполнения этой команды у вас на рабочем столе должен появиться файл image.jpg.

Настройка SMTP протокола для передачи Email с помощью Raspberry Pi

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

SMTP – это простой протокол электронной почты (Simple Mail Transfer Protocol), работающий на прикладном уровне эталонной модели взаимодействия открытых систем и ответственный за передачу/прием электронной почты при помощи протокола TCP/IP.

В данной статье мы будем рассматривать работу только с аккаунтами GMAIL, поэтому, чтобы не было проблем с совместимостью, заведите себе свежий Gmail аккаунт.

По умолчанию, Google не разрешает пользователям передавать электронные письма с помощью скриптов на python. Для того, чтобы иметь возможность делать это, нам необходимо немного ослабить требования к безопасности аккаунта. Для этого выполните следующую последовательность шагов.

Шаг 1. В правом верхнем углу вашего Google аккаунта нажмите "шестеренку" для управления вашим аккаунтом.

Вход в настройки Google аккаунта

Шаг 2. Выберите пункт Security (безопасность) и пролистайте вниз до пункта “Less Secure App Access”.

Настройки безопасности в Google аккаунте

Шаг 3. Разрешите пониженную безопасность вашего аккаунта (enable the less secure app).

Установка пониженной безопасности Google аккаунта

Шаг 4. Повторите это с другим аккаунтом email чтобы на нем можно было таким же образом передавать/принимать email от скрипта на python.

Шаг 5. Скачайте необходимые пакеты.

Если вам не удается скопировать эти команды чтобы выполнить их, напечатайте их вручную.

Установка пакетов для работы с почтой

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

Для редактирования этого файла выполните команду sudo nano /etc/ssmtp/ssmtp.conf.

Пролистайте вниз файла и вставьте туда следующие строки:

В этом случае вы на экране должны наблюдать примерно следующую картину:

Внесение изменений в файл ssmtp.conf

Внешний вид собранной конструкции нашего проекта на макетной плате показан на следующем рисунке.

Внешний вид собранной конструкции нашего проекта на макетной плате

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В программе на python нам необходимо будет считывать данные с датчика температуры, сравнивать их с заранее определенным значением (границей), авторизоваться на сервисе email и затем отправлять email с прикрепленным к нему письму.

Первым делом в программе нам необходимо подключить (импортировать) все необходимые библиотеки. Электронные письма (email) можно отправлять с помощью библиотеки, а структуру письма (тема, тело письма и приложения к нему) мы будем формировать с помощью MIME (Multipurpose Internet Mail Extensions – многоцелевые расширения электронной почты в интернете).

После этого мы укажем в программе адреса отправителя и получателя электронной почты, тему письма, содержание (тело) письма.

Затем мы создадим функцию, с помощью которой мы будем отправлять электронные письма (E-mail).

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

Далее настроим ряд параметров камеры (PiCamera).

И, наконец, с помощью команды while(1) мы организуем бесконечный цикл, в котором мы будем считывать данные с датчика температуры MLX90614 и если измеренное значение температуры будет превышать заранее определенное граничное значение, мы будем вызывать функции capture_image() и sendMail(data) чтобы передать захваченное с камеры изображение через email.

Тестирование работы проекта

Когда аппаратная часть проекта будет готова, запустите код программы проекта на python на выполнение. Он будет выводить в окно терминала значения температуры, считанные с датчика MLX90614.

Вывод в окно терминала значений температуры, считанных с датчика MLX90614

Если измеренное значение температуры будет превышать заранее определенное граничное значение, будет производиться захват изображения с камеры, сохранение его в плате Raspberry Pi и отправка его через E-mail. Внешний вид оформления этого письма показан на следующем рисунке.

Внешний вид оформления электронного письма в нашем проекте

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы на Python

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
345 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *