Рубрики
Проекты на Raspberry Pi

Бесконтактный термометр на 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 производится компанией 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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Затем подключите камеру к соответствующему разъему 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 аккаунта нажмите «шестеренку» для управления вашим аккаунтом.

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

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

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

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

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

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

Для редактирования этого файла выполните команду sudo nano /etc/ssmtp/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.

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

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

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

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

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

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

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