С поразившей несколько лет назад пандемией коронавируса у человечества резко возросла потребность в использовании различных бесконтактных термометров, позволяющих и без непосредственного контакта с потенциальным зараженным измерять температуру его тела. Всего каких то полгода назад казалось, что вроде коронавирус окончательно побежден, но, к сожалению, новости последних недель говорят об обратном - и во всем мире, и в России заболеваемость коронавирусом Covid 19 сейчас все больше растет. К тому же сейчас во многих регионах России фиксируется рост заболеваемости гриппом. В связи с этим я решил опубликовать на сайте эту статью, рассказывающую о создании бесконтактного термометра (трекера температуры человеческого тела) на основе платы ESP8266 NodeMCU и датчика температуры MLX90614.
Наш термометр будет определять температуру тела человека и если его температура будет выше нормальной, он будет отправлять нам уведомление о том, что "Be Alert!! the body temperature of the person is higher than the normal body temperature (Будьте бдительны! Температура тела человека выше, чем нормальная температура)", а если температура равна нормальной температуре тела, он будет отправлять уведомление: "Don't Worry !!! the person's body temperature is normal (Не волнуйтесь !!! температура тела человека нормальная)".
Внешний вид нашего бесконтактного термометра показан на следующем рисунке.
Ранее на нашем сайте мы рассматривали проекты аналогичных термометров на основе бесконтактных датчиков температуры MLX90614 и MLX90615 (в них вы можете прочитать также о принципах работы данных датчиков):
- бесконтактный инфракрасный термометр на Arduino и датчике температуры MLX90614;
- бесконтактный умный инфракрасный термометр на Arduino и смартфоне;
- бесконтактный настенный термометр на Arduino с логгером данных на SD карту;
- бесконтактный термометр на Raspberry Pi с оповещениями по Email.
Необходимые компоненты
Аппаратное обеспечение
- NodeMCU ESP8266 (купить на AliExpress).
- Бесконтактный инфракрасный датчик температуры MLX90614 (купить на AliExpress).
Программное обеспечение
- Arduino IDE.
- Blynk.
Общие принципы работы проекта
Для создания нашего проекта мы решили использовать NodeMCU, потому что NodeMCU — это платформа с открытым исходным кодом, основанная на модуле ESP8266, которая может соединять объекты и обеспечивать передачу данных по протоколу Wi-Fi. Также мы использовали инфракрасный датчик температуры MLX90614, потому что это очень недорогой датчик с радиусом действия до 5 см. Для написания программы для NodeMCU ESP8266 мы использовали Arduino IDE и Blynk, потому что Blynk — самая популярная платформа Интернета вещей для подключения ваших устройств к облаку. Он хорошо известен тем, что позволяет пользователям создавать приложения для управления своими устройствами Интернета вещей, анализировать данные телеметрии и управлять развернутыми продуктами в любом масштабе. На нашем сайте вы можете все проекты, в которых был использован Blynk. Там же вы можете более подробно посмотреть и принципы работы с данным программным инструментом.
Схема проекта
Схема бесконтактного термометра на ESP8266 NodeMCU и датчике температуры MLX90614 представлена на следующем рисунке.
Инфракрасный датчик температуры MLX90614 имеет 4 контакта, а именно GND, VIN, SCL и SDA. GND — земля датчика, ее необходимо подключить к контакту G платы NodeMCU, а VIN — это неизмененная входная мощность. перед регулятором датчика (бесполезен если напрямую подается регулируемое 5в), он будет подключен к выводу Vin NodeMCU. Контакт SDA используется для передачи фактических данных туда и обратно между главным и подчиненным устройствами, он подключен к контакту D2 платы. Линия SCL передает тактовый сигнал, используемый для синхронизации связи в протоколе I2C и подключена к контакту D1 платы. Подтягивающие резисторы по умолчанию используются для поддержания обоих контактов в состоянии HIGH.
Исходный код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include <Wire.h> #include <Adafruit_MLX90614.h> //Created By Rohan Barnwal #define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> BlynkTimer timer; char auth[] = ""; //Auth code sent via Email char ssid[] = ""; //Wifi name char pass[] = ""; //Wifi Password Adafruit_MLX90614 mlx = Adafruit_MLX90614();//Making a variable mlx void notifyOnThings(){ if(mlx.readObjectTempC()< 37 && mlx.readObjectTempC()>33 )//mlxreadObjectTempC means the reading of Object Temperature { Blynk.notify( "Don't Worry !!! the person's body temperature is normal" );//Notification when temperature is normal } else if(mlx.readObjectTempC()>38) { Blynk.notify("Be Alert!! the body temperature of the person is higher than the normal body temperature");//Notification when temperature is high } } void setup() { Serial.begin(9600);//Serial Monitor means a monitor from where you can read the values Blynk.begin(auth, ssid, pass); timer.setInterval(1L,notifyOnThings); Serial.println("Adafruit MLX90614 test"); mlx.begin(); } void loop() { Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C"); Serial.println(); Blynk.run(); timer.run(); } |