Каталог
|
Как ARDUINO участвует в борьбе с короновирусом COVID-192020-04-22 Все статьи →Воронин Ю.К. 2020 год можно будет по праву назвать годом борьбы всего мира с пандемией короновируса COVID-19. В этой борьбе решил поучаствовать и я, т.к. работаю на предприятии, некоторые производственные процессы которого остановить невозможно и требуют постоянного присутствия человека. Возникла необходимость оперативной первичной диагностики состояния здоровья прибывающих на предприятие и заступающих на смену сотрудников. А соответствующего оборудования нет. Один из легковыявляемых симптомов этой болезни – повышенная температура тела. Вот я и решил сделать для службы охраны элементарный измеритель температуры тела. Способов решения этой задачи много: ртутный градусник, цифровые аптечные градусники и т.п. Но вот проблема – они все измеряют температуру контактным способом. Решение – будем делать бесконтактный измеритель температуры. Комплектующие (что было под рукой):
Схема соединения: Короткие пояснения по схеме.Информационные линии модуля дисплея подключены через резисторы т.к. он работает с логическими уровнями 3.3 вольта (вместо резисторов по правильному нужно поставить соответствующие ключи-преобразователи уровней). Соответственно и питание подаем на дисплей 3.3 вольта. Специально не рисовал на схеме модуль стабилизатора на 3.3 вольта – может Вам повезет, и Ваша ардуинка будет выдавать правильные напряжения. Вывод подсветки дисплейного модуля в модификации красного цвета подключен на землю. Если подсветка не нужна – отключить. Что касается пир-датчика. Датчик производится в трёх модификациях с разным углом захвата. Представленный в устройстве датчик широкоугольный (самый дешевый в линейке), в связи с этим измеряет на расстоянии до 5 см, что вполне удовлетворяет требованиям бесконтактного измерения. Датчик калибруется на заводе, в настройке не нуждается. Назначения выводов, что и куда подключено дополнительно продублировано в скетче. Сам скетч (прилагается в соответствующем виде): #include <LCD5110_Basic.h> #include <Wire.h> #include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614(); LCD5110 myGLCD(3, 4, 5, 7 ,6); // Пины дисплея Clk, DIn, DC, RST, CE – не перепутать // Датчик подключен на пины А4, А5 - SDA, SCL // Для красной платы дисплея вывод Light подключен к земле extern uint8_t SmallFont[]; extern uint8_t BigNumbers[]; void setup() { myGLCD.InitLCD(63); // В скобках контрастность дисплея – менять нет смысла, уже експерементировал Serial.begin(9600); Serial.println("Adafruit MLX90614 test"); mlx.begin(); } void loop() { Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); // Темперетура самого датчика Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");// Температура объекта Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F"); myGLCD.clrScr(); myGLCD.setFont(BigNumbers); myGLCD.printNumF (float (mlx.readObjectTempC()), 1, CENTER, 0);// 1 - количество знаков после запятой myGLCD.setFont(SmallFont); myGLCD.print("0", 78, 0); myGLCD.print("Air temp", 0, 32); myGLCD.printNumF (float (mlx.readAmbientTempC()), 1, 55, 32); myGLCD.print("VoronStudio", CENTER, 46); delay(1000); } Перед заливкой в ардуинку не забываем добавить библиотеки с соответствующую папку среды програмирования IDE (библиотеки тоже прилагаются). Работу программки можно посмотреть в мониторе последовательного порта – там выдаются результаты не только в градусах Цельсия, но и в градусах Фаренгейта. Так, если дисплей не инициализируется после заливки скетча, а в мониторе все нормально – проблемы с модулем дисплея. Что бы максимально использовать возможности как датчика так и дисплея вывел на экран результат измерения температуры самого датчика (датчик измеряет свою собственную температуру) которую можно считать температурой окружающего воздуха. Практическая эксплуатация показала, что датчик отлично измеряет отрицательные температуры (проверил на холодильнике).
Что касается внешнего вида – не стал я изобретать велосипед, а нашел старый телефон с таким типом дисплея, в надежде, что все влезет. Мои ожидания оправдались: все чудесно помещается, и дисплей (чуть подпилить верхние углы как на фото), и ардуинка (пилим боковину под шнур для програмирования), и остальные элементы схемы, ну и батарейки конечно. Вы спросите: почему батарейки а не аккумы? Всё банально просто. В наличии подходящего по размеру у меня не было (нужные магазины и рынки закрыты на карантин). А четыре батарейки отлично влезли, даже ничего под них не пилил. Все детали фиксируются в корпусе стандартными вещами: скотчем, двухсторонним скотчем, «горячими соплями», задняя крышка дополнительно прикручена шурупами в стандартные места крепления платы телефона (сверлим дополнительно два отверстия в крышке снизу) . И вот долгожданный результат (тестируем на паяльнике):
Общее впечатление от работы схемы: результаты измерений достаточно точные чтобы сделать оперативные выводы о текущей температуре прибывающих на работу сотрудников или температуры измеряемого объекта (не забываем, что меряется еще и температура воздуха). Загрузки: В заключении хочу поблагодарить за отличную работу интернет-платформы ARDUINO.UA - закупаюсь здесь не первый раз. Всё оперативно качественно и культурно за адекватные цены. РЕКОМЕНДУЮ!!!!! По вопросам обращаться по адресу: voroninyuriy@gmail.com Всем желаю не болеть и иметь температуру 36,6 градусов (хотя здоровых нет – есть необследованные. Медицинский юмор!).
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Александр
15.09.2020 14:14:21
Идея конечно не нова с этим датчиком, но он имеет чудовищную погрешность. На расстоянии 7 см показывает 27 градусов, вплотную к запястью уже 32 градуса.... Нужно каком-то образом калибровать. А то, что в коде об этом ни строчке, так это плохо. Датчиком можно померят приблизительную температуру -10 градусов, но никак не температуру тела. Сам пробовал, без математики дополнительной - это не будет работать.
|