Умное устройство для дезинфекции масок UV-C и теплом: Управление Arduino
Компоненты и расходные материалы
| Seeed Grove — ИК-датчик температуры | × | 1 |
| Arduino UNO | × | 1 |
| Seeed Base Shield V2 | × | 1 |
| Seeed Grove — Датчик освещённости (P) v1.1 | × | 1 |
| Adafruit Quad Alphanumeric Display — Белый 0.54" с I2C Backpack | × | 1 |
| Seeed 12мм куполообразная кнопка | × | 1 |
| Пьезо-излучатель (buzzer) | × | 1 |
| Seeed Блок питания 12В 1.2А | × | 1 |
О проекте
Устройство для дезинфекции масок
UV-C / тепло, управление Arduino, дезинфекция масок от коронавируса (SARS-CoV-2)

Open Source проект под лицензией Creative Commons BY-NC-SA.
Дисклеймер: Документ подпадает под «Закон о добром самаритянине».
Оригинал: needlab.org/face-masks-disinfection-device

Введение
FFP1 и FFP2 маски — незаменимая защита во время эпидемий. Одноразовые, но в кризис повторное использование неизбежно, нужны методы дезинфекции (1). Больницы используют UVGI (ультрафиолетовое облучение) и/или тепло. Но эти методы недоступны уязвимым группам, где из-за дефицита повторное ношение — единственный вариант. Необходимость усиливается данными: SARS-CoV-2 сохраняет живучесть на поверхности хирургических масок 7 дней (2).
Цель: дешёвое переносимое устройство для эффективной дезинфекции UVGI и сухим теплом, воспроизводимое людьми, которым это нужно.
Инструкция DIY
Схема устройства

- Температура: 65 ± 5 °C
- Лампа: UV-C диапазон
- Цикл дезинфекции: минимум 30 минут (рекомендация: не более 30 мин для избежания деградации маски)

Габариты устройства

Первые тепловые тесты




Изготовление нагревательной системы
- Сковорода 22 см диаметром (для индукции), ручка снята.
- Обклеить фольгой для отражения UV-C.
- В корпусе/днище — отверстие 20 см в центре.
- 4 металлических держателя для фиксации сковороды (см. фото).

Важно: Сковорода не должна касаться дерева корпуса — падает эффективность. Подберите диаметр отверстия и согните держатели по схеме:




Изготовление верхней крышки


UV-C система

Источник UV-C: 11 Вт лампа из набора «Стерилизатор для аквариума». Лампа извлечена и закреплена на крышке по концам. 4 отверстия в крышке, хомуты/вязки с мягкой прокладкой. Верхняя поверхность оклеена фольгой для отражения.
Можно использовать другую UV-C лампу. Не используйте стекло вместо кварцевой колбы — стекло блокирует UV-C.
⚠ ПРЕДУПРЕЖДЕНИЕ
UV-C излучение ОЧЕНЬ ОПАСНО для глаз и кожи. Лампа должна быть ВКЛЮЧЕНА ТОЛЬКО ПРИ ЗАКРЫТОЙ КРЫШКЕ и ВЫКЛЮЧЕНА при открытом устройстве.
Важное дополнение от Horror Coder (комментарии):
«Невидимая опасность UVC: коробка должна быть СВЕТОНЕПРОНИЦАЕМОЙ. Видимое свечение — лишь 3–4% от излучения, не доверяйте глазам. Проверьте герметичность: положите внутрь мощный фонарик (10× мощность лампы) и в полной темноте ищите утечки света. Загерметизируйте все отверстия, используйте пенопласт/прокладки, проверяйте описанным методом.»



Оклеивание поверхностей фольгой

Перед установкой UV-C трубки и решётки оклейте боковины и крышку фольгой (двусторонний скотч, края — скотч). Цель — отражение UV-C на боковые грани для большей эффективности.
Изготовление проволочной решётки для масок
Маски ложатся на решётку. Сделал из медной проволоки (30 мм шаг). Высота 120 мм от дна. Проволока проходит через отверстия в передней и задней стенках.



Настройка Arduino и датчиков
Обзор Arduino

Список материалов (BOM)
- Arduino UNO Rev3 — Seeed
- Grove Base Shield V2 — Seeed
- Grove ИК-датчик температуры — Seeed
- Grove Датчик света (P) — Seeed
- Кнопка 12мм — Seeed
- Пьезо-излучатель — Gotronic
- 4-разрядный дисплей I2C (Adafruit 0.54") — Adafruit
- Блок питания 12В 1.2А — Seeed
Датчики температуры и света


См. также: Benchmarking of temperature sensors for Arduino
Логика управления Arduino
INIT: На дисплее температура. Ожидание достижения порога (70 °C) для перехода в COUNT.
COUNT: Обратный отсчёт минут (30→0) рядом с температурой. Если температура падает или UV гаснет — переход в ERR.
END: Нормальное завершение. Звуковой сигнал. Кнопка → INIT.
ERR: Ошибка (низкая температура или нет UV). Звуковой сигнал. Кнопка → INIT.
Аварии (звук + сообщения на дисплее):
- Состояние ERR (UV погасло или температура низкая)
- Перегрев > 75 °C

Исходный код для Arduino
Внешние библиотеки:
Руководство пользователя

- Поставьте коробку на индукционную (или ТЭНовую) плиту.
- Включите питание Arduino.
- Закройте крышку, нагрев 70–80% мощности.
- Дождитесь 60 °C, снизьте мощность до 30%.
- Откройте, положите маски, закройте.
- Нажмите кнопку → старт (дисплей: 30 минут).
- Ждите обнуления таймера → звуковой сигнал.
- Для нового цикла нажмите кнопку снова.
Примечание: В режиме COUNT точка между таймером и температурой мигает 1 раз в секунду.
Температурные циклы


Тепловая инактивация вирусов
Свойство влажного тепла (<100 °C) убивать микробы известно со времён Пастера. Здесь — сухое тепло, эффективно против SARS-CoV. Исследования: значительная инактивация при 56 °C за 30–90 мин, почти полная при 65 °C за 20–60 мин, полная при 75 °C за 30–45 мин (7, 8). Недавнее исследование: SARS-CoV-2 теряет инфекционность после 56 °C / 30 мин или 70 °C / 5 мин (2).
Исходя из данных и влияния на фильтрующие свойства масок, протокол: 65 °C в течение 30 мин.
Протоколы дезинфекции масок
Данные по дезинфекции именно масок: грипп (ssRNA, как коронавирусы) — UVGI ~1 Дж/см² (10), UVGI ~18 Дж/см² или влажное тепло 65±5 °C / 3 ч (11). По коронавирусам на масках исследований нет, но эффект ожидается схожий.
Рекомендуемый метод дезинфекции
Важно: персонализация масок, учёт циклов, упаковка. Вдохновляйтесь протоколом Nebraska Medicine: «N95 Filtering Facepiece Respirator UVGI Process for Decontamination and Reuse».
n-95-decon-process.pdfЗаключение
Установлен протокол: 30 мин UV-C + сухое тепло 65±5 °C. Время считается от достижения температуры и интенсивности света. Каждый фактор сам по себе достаточно, вместе — ещё безопаснее.
Меры безопасности
- UV-C вреден для кожи и глаз. Лампа ВКЛЮЧЕНА только при ЗАКРЫТОЙ коробке.
- Осторожно с горячими металлическими частями после цикла.
Дисклеймер
На основе доступных данных протокол, вероятно, устранит почти всю инфекционность SARS-CoV-2 и сделает маски намного безопаснее для повторного использования, чем без дезинфекции. Однако Needlab и команда не несут ответственности за использование устройства. Проектировалось с доброй волей и по лучшим знаниям, но:
Лабораторных тестов по инактивации SARS-CoV-2 этим устройством не проводилось, реальное влияние на фильтрующую способность масок не может быть уверенно оценено заранее. Использование — свободное решение пользователя.
Дальнейшие шаги (V2)
- Увеличение размеров для большего числа масок
- Файлы для ЧПУ и лазерной резки
- 3 варианта нагрева: индукция, электроплита, ИК-излучатель (с PID)
- 2×16 LCD дисплей
- Режимы: Тепло+UV-C, только Тепло, только UV-C
- Выбор датчиков температуры (обзор датчиков)
ИК-излучение и UV-C для уничтожения вируса

Ищем лаборатории для валидации процесса.
Обновление 11 июня: V2 для 12 масок FFP2/N95


Получили приз OPT 1-го места, работаем с университетом в Марокко над локальным производством.

Обновление 2 сентября: V2 на Hackaday:
Команда: Jean Noel Lefebvre, Daniel Moreno, Dr Alejandra Duque, Dr Felipe Gutiérrez Arango, Jason Knight, Maria Isabel Velez Isaza, Sameera Chukkapalli.

#COVID19DetectProtect
Оригинал: needlab.org/face-masks-disinfection-device
Библиография
- CDC. Recommended Guidance for Extended Use and Limited Reuse of N95... (2019)
- Chin A et al. Stability of SARS-CoV-2 in different environmental conditions. medRxiv (2020)
- Tseng C-C, Li C-S. Inactivation of Viruses on Surfaces by UVGI. J Occup Environ Hyg (2007)
- Hackerfarm. HOWTO: NUKEMETER – Measuring UV-C Light Intensity (2020)
- van Doremalen N et al. Aerosol and Surface Stability of SARS-CoV-2. NEJM (2020)
- Kariwa H et al. Inactivation of SARS coronavirus... Jpn J Vet Res (2004)
- Duan SM et al. Stability of SARS Coronavirus... Biomed Environ Sci (2003)
- Darnell MER et al. Inactivation of the coronavirus... J Virol Methods (2004)
- Ansaldi F et al. SARS-CoV, influenza A... resistance against disinfectants and UV (2004)
- Mills D et al. UVGI of influenza-contaminated N95... Am J Infect Control (2018)
- Lore MB et al. Effectiveness of Three Decontamination Treatments... Ann Occup Hyg (2012)
- Lindsley WG et al. Effects of UVGI on N95 Respirator Filtration... J Occup Environ Hyg (2015)
- Viscusi DJ et al. Evaluation of Five Decontamination Methods... Ann Occup Hyg (2009)
- Bergman MS et al. Evaluation of Multiple (3-Cycle) Decontamination... J Eng Fiber Fabr (2010)
- Kampf G et al. Persistence of coronaviruses on inanimate surfaces... J Hosp Infect (2020)
Код
TheBox V1 (C/C++)
/* Author: Jean Noel Lefebvre - www.ootsidebox.fr - march 31th 2020 */
#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include <math.h>
#include <Metro.h>
#define LIGHT_SENSOR A2
#define SUR_TEMP_PIN A0
#define OBJ_TEMP_PIN A1
#define BUZZER 3
#define BP 2
#define SEUIL_TEMP 59
#define HIGH_TEMP 75
#define SEUIL_LIGHT 60
#define TIMER 30
float temp_calibration=0;
float objt_calibration=0.000;
float temperature_range=10;
float offset_vol=0.014;
float tempValue = 0;
float objtValue= 0;
float current_temp=0;
float temp=0;
float temp1=0;
float temp2=0;
unsigned int temp3=0;
const float reference_vol=0.500;
unsigned char clear_num=0;
float R=0;
float voltage=0;
long res[100]={ 318300,302903,288329,274533,261471,249100,237381,226276,215750,205768,
196300,187316,178788,170691,163002,155700,148766,142183,135936,130012,
124400,119038,113928,109059,104420,100000,95788,91775,87950,84305,
80830,77517,74357,71342,68466,65720,63098,60595,58202,55916,
53730,51645,49652,47746,45924,44180,42511,40912,39380,37910,
36500,35155,33866,32631,31446,30311,29222,28177,27175,26213,
25290,24403,23554,22738,21955,21202,20479,19783,19115,18472,
17260,16688,16138,15608,15098,14608,14135,13680,13242,12819,
12412,12020,11642,11278,10926,10587,10260,9945,9641,9347,
9063,8789,8525,8270,8023,7785,7555,7333,7118,6911 };
float obj[13][12]={ /* таблица калибровки ИК-датчика */ };
int Light; float Heat; int Timer=0; int Minute=59;
Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4();
Metro ledMetro = Metro(1000);
enum States{INIT, COUNT, END, ERR};
int Automate=INIT;
bool TemperatureOK=false; bool LightOK=false;
void setup() {
pinMode(BP, INPUT_PULLUP);
Serial.begin(9600);
analogReference(INTERNAL);
alpha4.begin(0x70);
alpha4.clear(); alpha4.writeDisplay();
PrintLed(alpha4,"TboX");
tone(3, 3000, 500); delay(1000);
Automate=INIT;
}
void loop() {
static int Point=1;
float T1=measureSurTemp();
float T2=measureObjectTemp();
Heat=T1+0;
if (ledMetro.check() == 1) {
#ifndef TEST
if (Automate==COUNT)
#endif
{
if(Point) Point=0; else Point=1;
Minute--;
if(Minute==0) { Minute=59; if(Timer) Timer--; PrintSensors(); }
}
if(Automate==END) tone(3, 3000, 100);
if(Automate==ERR) tone(3, 300, 200);
}
#ifdef TEST TemperatureOK=true;
#else if (Heat >= SEUIL_TEMP) TemperatureOK=true; else TemperatureOK=false; #endif
Light=analogRead(LIGHT_SENSOR)/10;
if(Light >= SEUIL_LIGHT) LightOK=true; else LightOK=false;
if(Heat>=HIGH_TEMP) { tone(3, 300, 200); delay(500); }
switch(Automate) {
case INIT:
Timer=0;
if((!digitalRead(BP)) && TemperatureOK) { Automate=COUNT; Timer=TIMER; tone(3, 3000, 500); }
if((!digitalRead(BP)) && !TemperatureOK) { PrintLed(alpha4,"lowT"); tone(3, 300, 200); }
else PrintLedVal(alpha4,Timer,(int)Heat,Point);
break;
case COUNT:
if(Timer==0) Automate=END;
if(!LightOK || !TemperatureOK) Automate=ERR;
PrintLedVal(alpha4,Timer,(int)Heat,Point);
break;
case END:
if(!digitalRead(BP)) Automate=INIT;
PrintLed(alpha4,"END.");
break;
case ERR:
if(!digitalRead(BP)) Automate=INIT;
PrintLed(alpha4,"Err.");
break;
}
}
void PrintSensors() {
Serial.print(Timer); Serial.print(", "); Serial.print((int)Heat); Serial.print(", "); Serial.print(100); Serial.println();
}
float binSearch(long x) { int low=0, mid, high=100;
while (low<=high) { mid=(low+high)/2; if(xobj[temp3][i])&&(voltage
GitHub библиотеки
Схемы

Производственный процесс
- Технология тиристоров: от SCR к TRIAC, GTO и UJT
- Масштабирование провижининга IoT: безопасные эффективные стратегии для онбординга устройств
- Отслеживание достижений в технологии медицинских устройств
- Сборка уличной метеостанции на Raspberry Pi 2 и ADS‑WS1
- Система управления температурой на базе LM35 с микроконтроллером AT89S52
- Компактный breakout для DHT температуры и влажности на Raspberry Pi — ATtiny85 и DHT22/DHT11
- Pico-Powered Boot Switch: Выбор ОС перед включением питания
- Безопасность данных при мобильном сканировании: почему важна обработка на устройстве
- Аттестация устройств: как GlobalPlatform строит доверие в IoT
- Понимание аксессуаров медицинских изделий: Определения, классификация и регуляторное воздействие