제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
안면 마스크 소독 장치
UV-C/열, Arduino 제어, 코로나바이러스(SARS-CoV-2)용 안면 마스크 소독 장치
이것은 Creative Commons "Attribution-NonCommercial-ShareAlike" CC BY-NC-SA에서 공유되는 오픈 소스 프로젝트입니다.
면책 조항: 이 문서는 "선한 사마리아인 법"에 해당합니다.
원본 간행물:http://www.needlab.org/face-masks-disinfection-device
소개
FFP1 및 FFP2 마스크는 전염병 발생 시 필수 보호 요소입니다. . 일회용이지만 위기 시 재사용이 불가피하며 소독 메커니즘이 필요합니다(1). SARS-CoV-2 전염병이 진행되는 동안 병원, 의료 센터 및 연구 시설은 일반적으로 UVGI(자외선 살균 조사) 및/또는 일종의 열을 포함하여 이러한 마스크에 대해 다양한 소독 메커니즘을 구현했습니다. 그럼에도 불구하고 이러한 방법은 인구의 많은 취약한 부분에서 사용할 수 없으며 그럼에도 불구하고 부족으로 인해 이러한 마스크의 재사용이 유일한 옵션이 되었습니다. SARS-CoV-2가 7일 후에도 수술용 마스크 표면에서 매우 안정적이라는 증거에 의해 실행 가능한 안면 마스크 소독 방법에 대한 필요성이 더욱 높아졌습니다(2).
이 프로젝트는 UVGI와 건열을 효과적으로 사용하여 SARS-CoV 바이러스로부터 안면 마스크를 소독할 수 있고 필요한 사람들이 쉽게 복제할 수 있는 저예산 휴대용 장치를 만드는 것을 목표로 합니다.
소독 장치 제작에 대한 DIY 지침
기기 설정 다이어그램
● 온도는 65+/-5°C 범위에서 유지되어야 합니다.
● 램프는 UV-C 파장을 제공해야 합니다.
● 소독 주기는 최소 30분입니다. (권장 사항:잠재적인 안면 마스크 성능 저하 및 기능 손실을 방지하기 위해 더 안전한 범위를 확보하기 위해 30분을 넘지 마십시오.)
기기 크기
첫 번째 열 테스트
난방 시스템 제작 <울>
중요: 프라이팬은 열효율을 감소시키므로 상자의 나무에 닿지 않아야 합니다. 따라서 구멍의 올바른 지름을 선택하고 이 다이어그램에 따라 금속 브래킷의 모양을 지정해야 합니다.
그림> 그림> 그림>
상단 덮개 만들기
UV-C 시스템
이 장치의 UV-C 소스에는 "수족관용 살균기" 키트의 11W 램프 전구가 사용되었습니다. UV-C 전구를 추출하여 이미지와 같이 전구 양끝의 상단 덮개에 장착했습니다. 전구는 상단 덮개에 4개의 구멍을 만들고 집타이/케이블 타이와 부드러운 패딩을 사용하여 전구를 단단히 고정하여 장착합니다. 상단 표면은 알루미늄으로 덮여 있어 자외선을 반사합니다.
다른 출처의 UV-C 램프를 자유롭게 사용하십시오. 수정관(이 프로젝트에서 사용)에 접근할 수 없는 경우 유리가 UV 복사를 차단하므로 유리를 대체물로 사용하지 마십시오.
이 장치의 UV-C 전구 소스
!! 경고:
UV-C 방사선은 눈과 피부에 매우 위험하다는 사실을 알아야 합니다. UV-C 조명은 장치의 상단 덮개가 닫혀 있을 때만 켜야 하고 장치가 열려 있을 때 꺼야 합니다.
Horror Coder가 이 게시물의 댓글에서 우리에게 준 매우 적절한 권장 사항도 확인하십시오(그의 소중한 기여에 다시 한 번 감사드립니다):"...UVC의 보이지 않는 위험에 대해 알리고 싶습니다. 상자는 정말 가볍습니다. 살균관의 가시광선은 부산물일 뿐이며 전체 배출량의 3/4%에 불과하므로 눈을 믿지 마십시오. 배출물 누출의 큰 위험이 있고 인지하지 못합니다.엠> 튜브 와트의 10배(하이파워 LED 토치 또는 이와 유사한 것을 사용)와 같은 정격의 상자 안에 조명을 넣어 빛이 새지 않는지 확인해야 합니다. 완전히 어두운 환경에서 상자/인클로저 주변의 빛샘 확인 . 모든 구멍을 메워야 합니다. , 일부 폼 개스킷 및/또는 일부 테두리를 사용하여 상자 외부로 UV-C 누출 위험을 방지하고 위에서 권장하는 방법으로 확인하십시오.
알루미늄 호일로 표면 덮기
UV-C 튜브와 와이어 랙을 설치하기 전에 이미지와 같이 상자의 측면과 상단 표면을 알루미늄 호일로 덮습니다. 목표는 측면에서 UV-C 빛을 반사하여 효율성을 높이는 것입니다.
팁: 양면 테이프를 사용하여 표면의 알루미늄 호일을 제자리에 유지하고 가장자리를 덕트 탭으로 고정할 수 있습니다.
와이어 랙 만들기 - 안면 마스크 배치
안면 마스크는 와이어 랙 위에 놓입니다. I 와이어 랙은 각 와이어에서 30mm 떨어진 구리 세선을 사용하여 만들었습니다. 와이어 랙은 바닥 표면에서 120mm 위에 있습니다. 와이어 랙은 상자의 앞면과 뒷면에 만들어진 작은 구멍을 통해 와이어를 통과시켜 함께 고정됩니다.
Arduino 및 센서 설정
Arduino 개요
BOM <울>
https://www.seeedstudio.com/Arduino-Uno-Rev3-p-2995.html
<울>https://www.seeedstudio.com/Base-Shield-V2.html
<울>https://www.seeedstudio.com/Grove-Infrared-Temperature-Sensor-p-1058.html
<울>https://www.seeedstudio.com/Grove-Light-Sensor-p-1253.html
<울>https://www.seeedstudio.com/12mm-Domed-Push-Button-Pack-p-1304.html
<울>https://www.gotronic.fr/art-capsule-piezoelectricrique-dp035f-3856.htm
<울>https://www.adafruit.com/product/2157
<울>https://www.seeedstudio.com/Wall-Adapter-Power-Supply-12VDC-1-2A-Includes-5-adapter-plugs.html
온도 및 광 센서:
참조: Arduino용 온도 센서 벤치마킹
Arduino 제어
INIT:이 상태에서 LED 디스플레이는 온도를 나타내지만 임계값(70°C)에 도달할 때까지 기다려야 COUNT
상태에서 주기 계산을 시작합니다.COUNT:30에서 0까지 경과된 시간이 온도 옆에 있는 LED 디스플레이에 표시됩니다. 온도가 너무 낮거나 UV 라이트가 꺼진 경우 ERR로 상태가 변경됩니다.
END:경과 시간이 끝날 때의 정상 상태입니다. 스피커가 광고합니다. 버튼을 누르면 다시 INIT로 이동합니다.
ERR:이것은 오류 상태이며 온도가 너무 낮거나 UV 라이트가 꺼지면 활성화됩니다. 연사가 광고할 것입니다. 버튼을 누르면 다시 INIT로 이동합니다.
알람
알람 조건이 거의 없습니다. -알람이 켜져 있으면 스피커에 특정 톤 시퀀스가 있고 LED 디스플레이에 메시지가 표시됩니다.
알람 상태: 1) 시스템이 ERR 상태인 경우(자외선이 꺼져 있거나 온도가 너무 낮은 경우)2) 온도가 너무 높은 경우(75°C 이상)
Arduino용 소스 코드
https://pastebin.com/zgK7zfMh
포함할 외부 라이브러리
Adafruit_LEDBackpack.h:https://learn.adafruit.com/adafruit-led-backpack/0-54-alphanumeric-9b21a470-83ad-459c-af02-209d8d82c462
Metro.h:https://github.com/thomasfredericks/Metro-Arduino-Wiring
사용자 설명서
1. 인덕션(또는 저항성) 호브 위에 상자를 놓습니다.
2. Arduino의 전원을 켭니다.
3. 상자를 닫고 인덕션 호브 전력의 70~80%로 가열을 시작합니다.
4. 온도가 60°C에 도달할 때까지 기다립니다. 이제 인덕션 호브의 변경력을 30%로 줄이세요.
5. 이제 기기를 열고 마스크를 안에 넣고 기기를 닫을 수 있습니다.
7. 버튼을 눌러 시작 => 남은 시간(30분)이 표시되어야 합니다.
8. 이제부터는 시간이 00분으로 줄어들 때까지 기다리면 됩니다. 스피커에서 신호가 들릴 것입니다.
9. 새로운 주기의 초기 상태에서 다시 시작하려면 버튼을 누르기만 하면 됩니다.
참고: 타이머가 경과 시간을 계산할 때(COUNT 상태) 타이머와 온도 표시 사이의 작은 점이 1초 리듬으로 깜박입니다.
온도 주기
바이러스의 열 비활성화
일반적으로 100°C 이하의 습열을 통해 미생물을 제거하는 능력은 파스퇴르 시대부터 알려져 있습니다. 이 장치에서는 SARS-CoV 감염을 효과적으로 제거하는 것으로 보고된 건열을 대신 구현했습니다. 분석은 56°C에서 30-90분 동안 바이러스의 상당한 비활성화, 65°C에서 20-60분 동안 거의 완전한 비활성화, 30-45분 동안 75°C에서 완전한 비활성화를 보여줍니다(7, 8). 또한, 최근 연구에 따르면 SARS-CoV-2는 56°C에서 30분 동안 또는 70°C에서 5분 동안 배양한 후 감지 가능한 모든 감염성을 상실했습니다(2).
이 증거와 안면 마스크의 기능에 대한 이러한 소독 방법의 영향에 대한 추가 고려 사항에 따라(다음 섹션에서 설명함), 우리는 장치와 함께 사용할 프로토콜의 열 노출을 65도로 설정하기로 결정했습니다. 30분 동안 °C.
안면 마스크의 살균 프로토콜
지금까지 우리는 소독을 적용하려는 안면 마스크와 유사하지 않은 샘플에 대한 바이러스 소독에 대한 증거를 제시했습니다. 따라서 여기에서는 우리가 사용하려는 동일한 유형의 마스크에 대한 바이러스 소독에 대한 몇 가지 보고서를 제시합니다.
안면 마스크의 소독은 ~1 J/cm2의 UVGI(10), ~18 J/cm2의 UVGI 또는 3시간 동안 65±5°C의 습열을 사용하여 인플루엔자 바이러스에 효과적인 것으로 나타났습니다(11) . 코로나바이러스에 의한 마스크 소독에 대한 연구는 없으나 인플루엔자 바이러스도 ssRNA 바이러스이기 때문에 유사한 효과를 기대할 수 있다.
다음에 대해 자세히 알아보기:
UVGI. UVC 광선의 살균 효과 마스크에 대한 물리적 소독의 유해한 영향
안면 마스크의 권장 소독 방법.
사용한 마스크를 소독하는 과정에 대한 올바른 절차를 수립하는 것이 매우 중요합니다. 주요 질문은 개인화, 소독 주기 수 계산, 소독된 안면 마스크 포장 방법에 관한 것입니다. Nebraska Medicine에서 발행한 "N95 Filtering Facepiece Respirator Ultraviolet Germicidal Irradiation (UVGI) Process for Decontamination and Reuse"에서 영감을 얻는 것이 좋습니다.
n-95-decon-process.pdf
결론
수집된 증거 및 장치의 기술적 세부 사항을 고려하여 UVC 조사 30분 및 건열 65±5°C로 소독 프로토콜을 설정하기로 결정했습니다. 이 시간은 장치가 필요한 온도와 광도에 도달하는 데 걸리는 시간을 고려하여 계산해야 합니다. 이러한 사양의 UVC 또는 열만으로도 거의 모든 SARS-CoV-2 감염성을 제거하기에 충분해야 하며, 두 가지의 동시 작용은 방법의 효율성을 훨씬 더 안전한 수준으로 높여야 합니다.
안전 고려사항
• UVC 방사선은 피부와 눈에 해롭습니다. UVC 전구는 상자가 닫혀 있을 때만 켜야 합니다.
• 상자의 금속 부분은 가열 후 뜨거워져 피부에 화상을 입을 수 있으므로 주의하세요.
면책 조항
이용 가능한 과학적 증거에 따르면, 소독 프로토콜은 거의 모든 SARS-CoV 감염성을 제거할 것이며, 어떤 종류의 소독을 하지 않는 것보다 마스크를 재사용하기에 훨씬 더 안전하게 만들 것입니다. 그러나 Needlab과 이 프로젝트에 참여하는 구성원은 이 장치의 사용에 대해 어떠한 책임도 지지 않습니다. 이 문서는 우리의 지식과 능력을 최대한 활용하여 선의로 설계되었지만 다음 사항을 명시해야 합니다.
이 기기를 사용한 SARS-CoV-2 비활성화와 관련하여 적절한 실험실 테스트가 아직 수행되지 않았으며, 안면 마스크의 여과 능력에 대한 실제 영향을 사전에 자신 있게 평가할 수 없습니다. 기기와 이 가이드의 사용은 자유 결정입니다.
다음 단계
우리는 현재 많은 개선 사항이 포함된 V2를 개발 중입니다.
<울>적외선 빛나는 그리고 자외선 (UV-C) ~에 죽이다 바이러스
한편, 우리는 전문 실험실의 지원을 받아 프로세스를 검증할 솔루션을 찾고 있습니다.
6월 11일 업데이트:
내부에 12개의 FFP2 / N95 마스크가 있는 V2
우리는 OPT 1등상을 수상했으며 모로코의 대학과 협력하여 장치를 현지에서 생산하고 있습니다
업데이트 켜기 9월 두 번째: V2 프로젝트 켜기 해커데이:
https://hackaday.io/project/172189-face-mask-disinfection-device/log/183101-version-2-face-mask-disinfection-device
팀
Jean Noel Lefebvre, Daniel Moreno, Dr Alejandra Duque, Dr Felipe Gutiérrez Arango, Jason Knight, Maria Isabel Velez Isaza, Sameera Chukkapalli
#COVID19DetectProtect
원본 :http://www.needlab.org/face-masks-disinfection-device
참고 문헌
질병 통제 예방 센터. 애틀랜타, 조지아:미국 보건 복지부 C for DC 및 P. CDC - 의료 환경에서 N95 필터링 안면 보호구 호흡기의 확장 사용 및 제한된 재사용에 대한 권장 지침 - NIOSH 작업장 안전 및 건강 주제 [인터넷]. 2019 [2020년 4월 2일 인용]. https://www.cdc.gov/niosh/topics/hcwcontrols/recommendedguidanceextuse.html
에서 사용 가능 <울>/* * 저자:Jean Noel Lefebvre - www.ootsidebox.fr - 2020년 3월 31일 * * *///https://learn.adafruit.com/adafruit-led-backpack/0-54-alphanumeric-9b21a470 -83ad-459c-af02-209d8d82c462//http://wiki.seeedstudio.com/Grove-Infrared_Temperature_Sensor///http://wiki.seeedstudio.com/Grove-Light_Sensor///https://github.com/ thomasfredericks/Metro-Arduino-Wiring#include#include "Adafruit_LEDBackpack.h#include #include //메트로 라이브러리 포함#define LIGHT_SENSOR A2#define SUR_TEMP_PIN A0 // 아날로그 입력 핀은 온도 센서에 연결 SUR 핀#define OBJ_TEMP_PIN A1 // 아날로그 입력 핀은 온도 센서에 연결 OBJ 핀#define BUZZER 3#define BP 2#define SEUIL_TEMP 59#define HIGH_TEMP 75#define SEUIL_LIGHT 60#define SEUIL_LIGHT 60#define SEUIL_LIGHT 60#define TIMER 30 #define TESTfloat temp_calibration=0; //이 매개변수는 온도를 보정하는 데 사용되었습니다. // float objt_calibration=0.000; //이 매개변수는 개체 온도를 보정하는 데 사용되었습니다.float temperature_range=10; //센서 데이터시트에 따라 온도-전압 맵을 만듭니다. 10은 센서와 // 물체 거리가 9CM.float offset_vol=0.014일 때의 온도 단계입니다. //이 매개변수는 중간 레벨 전압을 설정하는 데 사용되었습니다. 센서를 10분 후에 일반 환경에 놓을 때 //센서 출력은 0입니다. 예를 들어, 주변 온도는 29℃이지만 결과는 센서를 통해 27℃입니다. , //변경할 센서에 따라 reerence를 0.520 이상으로 설정해야 합니다. //단위는 Vfloat tempValue =0; 부동 객체 값 =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;//lcd를 사용하여 표시할 때float R=0;float 전압 =0; 긴 입술 [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,8,2412,12020,11642,118878,10926,102 ,7785,7555,7333,7118,6911}; float obj [13][12]={/*0*/ { 0,-0.274,-0.58,-0.922,-1.301,-1.721,-2.183,-2.691,-3.247,-3.854,-4.516,-5.236 }, ///*1*/ { 0.271,0,-0.303,-0.642,-1.018,-1.434,-1.894,-2.398,-2.951,-3.556,-4.215,-4.931}, //→주위 온도 ,-10,0,10,...100/*2*/에서 { 0.567,0.3,0,-0.335,-0.708,-1.121,-1.577,-2.078,-2.628,-3.229,-3.884,- 4.597}, //↓ 물체 온도, from -10,0,10,...110/*3*/ { 0.891,0.628,0.331,0,-0.369,-0.778,-1.23,-1.728,-2.274, -2.871,-3.523,-4.232},/*4*/ { 1.244,0.985,0.692,0.365,0,-0.405,-0.853,-1.347,-1.889,-2.482,-3.835,-*4*/ 5*/ { 1.628,1.372,1.084,0.761,0.401,0,-0.444,-0.933,-1.47,-2.059,-2.702,-3.403},/*6*/ { 2.043,1.1.5092,.3.1.5099 ,0.439,0,-0.484,-1.017,-1.601,-2.24,-2.936},/*7*/ { 2.491,2.246,1.968,1.655,1.304,0.913,0.479.128,-0.479.10,- 1.74,-2.431},/*8*/ { 2.975,2.735,2.462,2.155,1.809,1.424,0.996,0.522,0,-0.573,-1.201,-1.887/5,/*9* 2.994,2.692,2.353,1.974,1.552,1.084,0.568,0,-0.622,-1.301},/*10*/ {4.053,3.825,3.565,1.27,2.5647,.27,2.5647,. 77,0.616,0,-0.673},/*11*/ { 4.651,4.43,4.177,3.888,3.562,3.196,2.787,2.332,1.829,1.275,0.666.29/, ,4.83,4.549,4.231,3.872,3.47,3.023,2.527,1.98,1.379,0.72}};int Light;float Heat;int Timer=0;int Minute=59;Adafruit_AlphaNum4 alpha4 =Adafruit_AlphaNum4 alpha4 =AdaMefruit_ (1000); 열거 상태{INIT, COUNT, END, ERR};int Automate=INIT;bool TemperatureOK=false;bool LightOK=false;//************************ ************************************************** *********** 무효 설정() { pinMode(BP, INPUT_PULLUP); Serial.begin(9600); analogReference(INTERNAL); // 참조 전압을 1.1V로 설정하고 구별성은 최대 1mV까지 가능합니다. alpha4.begin(0x70); // 주소 전달 alpha4.clear(); alpha4.writeDisplay(); PrintLed(알파4,"TboX"); 톤(3, 3000, 500); 지연(1000); Automate=INIT;}void 루프() { 정적 int 포인트=1; float T1=measureSurTemp();//센서 주변 온도 측정 float T2=measureObjectTemp(); 열=T1+0; if ((ledMetro.check() ==1) ) {#ifndef TEST if (Automate==COUNT)#endif { if(Point) Point=0; 그렇지 않으면 포인트=1; 분--; if(분==0) { 분=59; if(타이머) 타이머--; PrintSensors(); } } if(Automate==END) 톤(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); 지연(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); //Serial.println("INIT"); 부서지다; case COUNT:if(Timer==0) Automate=END; if(!LightOK || !TemperatureOK) Automate=ERR; PrintLedVal(alpha4,Timer,(int)Heat,Point); //Serial.println("COUNT"); 부서지다; case END:if(!digitalRead(BP)) Automate=INIT; PrintLed(alpha4,"END."); //Serial.println("END"); 부서지다; case ERR:if(!digitalRead(BP)) Automate=INIT; PrintLed(alpha4,"Err."); //Serial.println("ERR"); 부서지다; }}void PrintSensors(){ Serial.print(Timer); Serial.print(", "); Serial.print((int)Heat); Serial.print(", "); Serial.print(100); Serial.println();}//*************************************************************float binSearch(long x)// this function used for measure the surrounding temperature{ int low,mid,high; low=0; //mid=0; high=100; while (low<=high) { mid=(low+high)/2; if(x res[mid]) high=mid-1; } return mid;}//************************************************************float arraysearch(float x,float y)//x is the surrounding temperature,y is the object temperature{ int i=0; float tem_coefficient=100;//Magnification of 100 times i=(x/10)+1;//Ambient temperature voltage=(float)y/tem_coefficient;//the original voltage //Serial.print("sensor voltage:\t"); //Serial.print(voltage,5); //Serial.print("V"); for(temp3=0;temp3<13;temp3++) { if((voltage>obj[temp3][i])&&(voltage 깃허브
https://github.com/thomasfredericks/Metro-Arduino-Wiringhttps://github.com/thomasfredericks/Metro-Arduino-Wiring
제조공정
구성품 및 소모품 Arduino UNO × 1 Espressif ESP8266 ESP-01 × 1 Arduino Proto Shield 일반 브레드보드 × 1 DHT22 온도 센서 × 1 씨드 그로브 - 광 센서 × 1 씨드 그로브 - UV 센서 × 1 씨드 그로브 - 기압계 센서 × 1 씨드 그로브 - 먼지 센서 × 1 저항 1k 옴 × 2 저항 10k 옴
구성품 및 소모품 Arduino UNO × 1 점퍼 와이어(일반) × 1 PIR 모션 센서(일반) × 2 12V 전원 릴레이(4PDT) × 1 12볼트 SMPS × 1 Seeed Grove - 2채널 SPDT 릴레이 × 1 5볼트 SMPS × 1 토글 스위치, (켜기)-끄기-(켜기) × 1 라즈베리 파이 3 모델 B × 1 라즈베리 파이 카메라 모듈 V2