산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

COVID-19 및 PM10 수준!

구성품 및 소모품

Arduino Nano R3
× 1
SDS018
http://inovafitness.com/en/a/chanpinzhongxin/97.html
× 1
Adafruit DHT22 온습도 센서 + 추가 기능
참고:풀업 저항과 커패시터는 모듈에 있습니다.
× 1
OLED 디스플레이 - I2C - SSD1306
× 1
Broadcom LED 녹색
× 1
Broadcom LED 노란색
× 1
Broadcom LED 빨간색
× 1
커패시터 100nF
선택 사항:DHT22용 커패시터.
× 1
스루 홀 저항기, 4.7kohm
선택 사항:DHT22용 저항기
× 1
파워 뱅크
설명 참조
× 1
스루 홀 저항기, 390옴
LED용 저항기.
× 3
기계 나사, M3x16
케이스 나사.
× 4
기계 나사, M3x6
SDS018 나사.
× 1
램프 소켓, LUMEX 3MM LED
선택 사항:LED 장착 하드웨어.
× 3
와이어용 여성 점퍼
× 3
열수축 튜브
× 1
핀 헤더(2핀)
× 1
일반 점퍼(0.1")
× 1

필요한 도구 및 기계

납땜 인두(일반)
납땜 와이어, 무연
3D 프린터(일반)
뜨거운 글루건(일반)
드릴/드라이버, 무선

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

초록

실험 연구에서는 미립자 물질이 COVID-19의 바이러스 감염 확산에 "보균자"로 작용할 가능성이 있다고 주장합니다.

이는 바이러스가 공기 중에 부유하는 미세 입자에 의해 더 먼 거리로 운반될 수 있고 작은 입자에서 몇 시간, 며칠 또는 몇 주 동안 생존할 수 있음을 의미합니다. 따라서 대기 오염 입자는 코로나바이러스가 공기 중에서 더 멀리 이동하여 감염자 수를 증가시키는 데 도움이 될 수 있습니다.

이탈리아 북부 지역의 봉쇄는 공장과 자동차 외에 집약적인 가축 농장에서도 대량으로 입자상 물질을 얻기 때문에 입자상 물질의 상당한 감소를 가져오지 못했습니다. 따라서 폐쇄 기간 동안 공장이 폐쇄되고 자동차가 순환하지 않더라도 롬바르디아(이탈리아)의 입자상 물질 농도 수준은 어떤 경우에도 높은 수준을 유지했습니다. 공기, 특히 입자상 물질.

과학자들과 연구자들은 더 높은 수준의 입자 오염이 북부 이탈리아의 일부 지역에서 더 높은 감염률을 설명할 수 있다고 제안합니다.

소개

몇 주 전에 “Report”라는 이탈리아 TV 프로그램을 보았습니다. 이탈리아 텔레비전에서 채널 3(RAI 3)에서 방송하는 조사 프로그램입니다.

흥미로운 부분이 내 관심을 끌었습니다. 그것은 오염에 관한 것이었고 특히 집약적인 축산업으로 인한 오염 유형에 관한 것이었습니다. (해당 부분을 보려면 여기를 클릭하십시오:27:25분부터 56:00분까지).

집약적 축산업은 소, 돼지, 칠면조, 닭과 같은 많은 동물을 비교적 작은 공간에 함께 사육하는 농업 시스템을 말합니다. 목표는 가장 낮은 비용으로 많은 양의 고기, 계란 또는 우유를 생산하는 것입니다. "공장 농장"이라고도 합니다.

과밀하고 공장식 농장에서 사육되는 동물은 소변과 분뇨와 같은 많은 양의 동물 폐기물을 생성합니다. 분뇨는 일반적으로 몇 개의 축구장만큼 크며 누출 및 유출, 토양 오염 및 수자원 오염에 취약한 거대한 야외 연못에 저장됩니다. 동물 배설물은 또한 대기 중으로 유해한 가스(예:암모니아, 내독소, 황화수소 및 메탄)를 방출하고 많은 양의 미립자 물질(PM10 및 PM2.5, PM10은 "직경 ≤ 10 µm의 미립자 물질"의 약자)을 방출합니다. PM2.5는 "직경 ≤ 2.5 µm의 입자상 물질"의 약어)로 환경 문제를 일으키고 있습니다. 미립자 물질에는 흡입될 수 있고 심각한 건강 문제를 일으킬 수 있는 미세한 고체 또는 액체 방울이 포함되어 있습니다.

오물 웅덩이가 최대 용량에 도달하면 농부들은 처리되지 않은 분뇨를 비료로 주변 밭에 뿌립니다. 그러면 이러한 유해 물질이 훨씬 더 많이 공기 중으로 유입됩니다.

처리되지 않은 폐기물은 냄새로 공기를 오염시키고(악취는 참을 수 없음) 건강 문제를 야기하여 근로자, 인근 및 이웃 지역 사회 및 재산 가치의 삶의 질을 현저하게 저하시킵니다. 연구에 따르면 집약적인 가축 농장 근처에 사는 사람들은 천식 및 만성 기관지염과 같은 호흡기 문제가 발생할 위험이 훨씬 더 높습니다.

이탈리아에서 가장 집약적인 가축 농장은 이탈리아 북부에 있습니다. 롬바르디아는 집약적인 가축 농장이 가장 많이 집중된 지역 중 하나입니다. 그 결과 축산시설에서 배출되는 배설물과 동물성 폐기물의 양이 매우 많고 가스와 미세먼지를 많이 발생시킨다.

롬바르디아에서는 대기 중에 분산된 암모니아의 85%가 분뇨에 의해 생성된다는 점에 유의해야 합니다. 농장은 자동차와 같은 방식으로 오염시키는 것으로 보입니다.

여러 이탈리아 대학의 연구원들이 수행하고 지난 3월 "이탈리아의 미립자 물질(PM) 오염과 COVID-19 감염 확산 사이의 잠재적 관계 평가라는 제목으로 발표된 연구 ” (다음 링크에서 포지션 페이퍼를 다운로드할 수 있습니다:https://www.simaonlus.it/?page_id=694 , 영문 pdf로 직접 링크 http://www.simaonlus.it/wpsima/wp- content/uploads/2020/03/COVID_19_position-paper_ENG.pdf - 나는 그것을 읽는 것이 좋습니다!)는 미립자 물질 농도 수준과 COVID-19에 감염된 사람 수 사이의 가능한 상관 관계에 대해 말합니다(다음 다이어그램에서 볼 수 있음). .

연구원들은 다음 데이터를 수집하고 분석했습니다.

<울>
  • PM10 일일 농도 수준(지역 환경 보호국(ARPA)에서 제공하고 이탈리아 전역에서 수집한 데이터),
  • 일일 PM10 한계값 초과
  • 선택한 각 지방의 COVID-19 감염자 수로, 시민 보호국에서 전달하고 매일 빈도로 업데이트됩니다.
  • 연구 기간(2020년 2월 10일~29일) 동안 일일 PM10 초과와 COVID-19 감염 확산 사이에 상당한 관계가 있음을 확인했으며 코로나바이러스 사례가 집중적으로 발생했습니다. 북부 이탈리아, 특히 포 밸리(Po Valley), 특히 롬바르디아(Lombardy)에서는 북부 지역에서 관찰된 것과 비교했을 때 남부 이탈리아에서 바이러스의 확산 및 치사율이 현저히 낮았습니다.

    이 입장문에서 "COVID-19 사례와 PM10 수준 사이의 직접적인 관계에 대한 가설은 Po Valley에서 보고된 COVID-19 발병의 집중이 있다는 증거에 의해 강화되었습니다. [북부 이탈리아] 이탈리아의 다른 지역보다 높았습니다. "(다음 그림에서 볼 수 있듯이 2월 10일부터 2월 29일까지 이탈리아에 등록된 PM10 오염 한계 초과를 보여주고 Po Valley가 이탈리아에서 가장 오염된 지역임을 알 수 있는 곳).

    이탈리아에서 대부분의 코로나바이러스 사례가 집약적인 축산농가의 집중도가 매우 높은 롬바르디아 지역에 위치하고 있어 결과적으로 입자상 물질의 생산이 엄청나게 많다는 점은 매우 주목할 만합니다.

    이 현상은 공장이 완전히 문을 닫고 자동차가 통하지 않는 락다운 기간에도 계속됐다는 점에 주목해야 한다.

    이 연구에 따르면 이탈리아 남부 지역(오염이 덜한)에서 바이러스 전파의 일반적인 패턴은 사람들 간의 접촉에 의해 발생합니다(전형적인 전파 모드 '대인 접촉'에 기반한 전염병 모델과 일치). 반면 북부 이탈리아(더 오염된) 지역에서는 다른 방식으로 감염이 확산됩니다.

    다음 감염 확장 곡선은 중부 및 남부 이탈리아와 비교하여 COVID-19 감염 확산에서 북부 이탈리아의 이상을 강조합니다.

    수집된 데이터와 관찰된 관계를 바탕으로 연구자들은 2020년 2월 10일부터 29일까지 이탈리아 북부 지역에 등록된 높은 PM10 농도가 매개체 및 부스트 효과가 있다고 가정하는 것이 합리적이라고 결론지었습니다. COVID-19 전염병의 치명적인 확산, 노출된 인구 사이의 COVID-19 확산 촉진, 같은 기간 동안 오염의 영향을 받은 다른 이탈리아 지역에서는 관찰되지 않은 현상입니다.

    다른 연구에서는 PM이 바이러스의 운반체 역할을 할 수 있음을 보여주었습니다. 실제로 바이러스는 미립자 물질에 ​​달라붙을 수 있습니다. 미립자 물질의 작은 입자는 기류를 타고 먼 거리를 이동할 수 있으며 몇 시간, 며칠 또는 몇 주 동안 대기에 남아 있을 수 있습니다.

    미립자 물질은 또한 바이러스가 일정 시간(몇 시간 또는 며칠) 동안 대기 중으로 활성 상태를 유지하도록 하는 기질을 나타냅니다. 환경 요인은 대기 중 바이러스의 활성화와 지속성에 중요한 역할을 합니다.

    <울>
  • 고온과 태양 복사는 활동을 가속화합니다.
  • 상대 습도가 높으면 확산 속도가 빨라질 수 있습니다.
  • 연구에 따르면 상대 습도가 약 50%로 유지될 때 표면의 바이러스 생존이 감소하는 반면, 상대 습도 값이 40% 미만 및 60% 이상일 때 바이러스는 활성 상태를 유지하는 것으로 나타났습니다.

    Yale 대학의 또 다른 연구에서는 낮은 습도 조건에서 감염된 입자가 더 잘 퍼지고 더 오래 생존할 수 있는 방법을 보여주었습니다(기사를 보려면 여기를 클릭하십시오).

    내 솔루션

    이러한 고려 사항을 기반으로 저는 PM10 농도 수준, 온도 및 상대 습도(바이러스 감염 확산과 관련된 환경 요인)를 측정할 수 있는 복제 가능하고 저렴하며 사용하기 쉬운 장치를 만들어 사람들에게 값이 너무 높고 건강에 잠재적으로 위험하므로 사람들 사이의 거리가 1보다 훨씬 멀더라도 집에 있고 외출을 하지 않거나 밖에 있는 경우 집에 가거나 마스크를 착용할 수 있습니다. 미터.

    이 장치는 PM10 센서, 온도 및 상대 습도 센서, 디스플레이 및 3개의 LED로 구성되며 모두 Arduino Nano로 제어됩니다. 센서 데이터는 디스플레이에 표시되고 LED는 공기 상황을 나타냅니다.

    저는 다음과 같은 네 가지 상황을 확인했습니다.

    1. 보통 – 0 ~ 25 µg/m3의 미세먼지 농도 및 40% ~ 60%의 습도

    2. 낮음 - 미립자 물질 농도 0 ~ 25 µg/m3 및 습도 <40% 또는> 60%,

    3. 낮음 - 미립자 물질 농도 26~50µg/m3 및 습도 40%~60%

    4. 경고 - 미립자 물질 농도 26 ~ 50 µg/m3 및 습도 <40% 또는> 60%,

    5. 경고 - 미립자 물질 농도> 51 µg/m3 및 습도 40% ~ 60%,

    6. 알람 - 미립자 물질 농도> 51 µg/m3 및 습도 <40% 또는> 60%.

    관련 LED:

    <울>
  • 일반:LED 꺼짐,
  • 낮음:녹색 LED 켜짐
  • 경고:녹색 및 노란색 LED 켜짐
  • 알람:녹색, 노란색 및 빨간색 LED가 켜집니다.
  • SDS018 - PM10 센서

    SDS018은 레이저 산란 원리를 사용하여 공기 중에서 0.3~10μm 사이의 입자 농도를 얻을 수 있습니다. 디지털 출력과 내장 팬으로 안정적이고 안정적입니다.

    <울>
  • 정확하고 신뢰할 수 있음:레이저 감지, 안정적이고 우수한 일관성
  • 빠른 응답:장면이 바뀔 때 응답 시간이 10초 미만입니다.
  • 간편한 통합:UART 출력(또는 IO 출력을 사용자 정의할 수 있음), 팬 내장,
  • 고해상도:0.3μg/m3의 해상도;
  • 인증:제품이 CE/FCC/RoHS 인증을 통과했습니다.
  • SDS018 센서 핀아웃:

    <울>
  • 1 - NC:연결되지 않음,
  • 2 - 1um:PWM 출력;
  • 3 - 5V:전원 공급 장치,
  • 4 - 2.5um:PWM 출력;
  • 5 - GND:접지, 음극에 연결
  • 6 - R:UART(TTL)의 RX,
  • 7 - T:UART(TTL)의 TX.
  • SDS018 센서를 Arduino Nano에 연결

    <울>
  • SDS018 센서의 5V(3) 핀은 Arduino Nano의 5V 핀에 연결됩니다.
  • SDS018 센서의 GND(5) 핀은 Arduino Nano의 GND 핀에 연결됩니다.
  • SDS018 센서의 T(7) 핀은 Arduino Nano의 RX 핀에 연결됩니다.
  • DHT22 센서

    DHT22는 디지털 온도 및 상대 습도 센서입니다. 주요 기능은 다음과 같습니다.

    <울>
  • 3~5V 전원 및 I/O,
  • 변환 중 최대 2.5mA 전류 사용(데이터 요청 중)
  • 2-5% 정확도로 0-100% 습도 판독값,
  • -40 ~ 80°C 온도 판독값 ±0.5°C 정확도,
  • 0.5Hz 샘플링 속도(2초에 한 번).
  • DHT22 센서 핀아웃:

    <울>
  • VDD:전원 공급 장치
  • DATA:신호 데이터 출력;
  • NC:연결되지 않음;
  • GND:접지, 음극에 연결합니다.
  • DHT22 센서를 Arduino Nano에 연결

    <울>
  • DHT22 센서의 VDD 핀은 Arduino Nano의 5V 핀에 연결됩니다.
  • DHT22 센서의 GND 핀은 Arduino Nano의 GND 핀에 연결됩니다.
  • DHT22 센서의 VDD와 GND 핀 사이에 100nF 커패시터를 삽입했습니다.
  • DHT22 센서의 DATA 핀과 VCC 핀 사이에 4.7k 풀업 저항을 삽입했습니다.
  • DHT22 센서의 DATA 핀은 아두이노 나노의 D2 핀에 연결됩니다.
  • 아두이노 IDE

    Adafruit - 버전 1.3.10에서 DHT 센서 라이브러리를 설치했습니다.

    도트 매트릭스 OLED 디스플레이

    <울>
  • VCC:3.3-5V;
  • 해상도:128x32픽셀,
  • 흰색 문자가 있는 검은색 배경
  • 드라이버:SSD1306;
  • 인터페이스:I2C.
  • OLED I2C 디스플레이 핀 배치:

    <울>
  • SDA:I2C 직렬 데이터
  • SCL:I2C 직렬 시계;
  • VCC:전원 공급 장치;
  • GND:접지, 음극에 연결됨.
  • OLED I2C 디스플레이를 Arduino Nano에 연결

    <울>
  • 디스플레이의 VCC 핀은 Arduino Nano의 5V 핀에 연결됩니다.
  • 디스플레이의 GND 핀은 Arduino Nano의 GND 핀에 연결됩니다.
  • 디스플레이의 SCL 핀은 Arduino Nano의 A5 핀에 연결됩니다.
  • 디스플레이의 SDA 핀은 Arduino Nano의 A4 핀에 연결됩니다.
  • 아두이노 IDE

    Adafruit - 버전 2.2.1의 Adafruit SSD1306 라이브러리를 설치했습니다.

    LED 연결

    저는 3개의 3mm LED(빨간색, 녹색, 노란색)를 사용했습니다.

    <울>
  • 빨간색 LED의 양극은 Arduino Nano의 D3 핀에 연결됩니다.
  • 녹색 LED의 양극은 Arduino Nano의 D4 핀에 연결됩니다.
  • 노란색 LED의 양극은 Arduino Nano의 D5 핀에 연결됩니다.
  • 390옴 저항을 각 LED의 음극에 직렬로 납땜하고 저항의 다른 핀을 Arduino Nano의 GND에 연결했습니다.
  • Arduino nano - 하드웨어 수정

    SDS018의 직렬 출력을 읽기 위해 Arduino Nano를 수정했습니다.

    다음 그림에서 빨간색 화살표로 표시된 SMD 저항을 제거했습니다.

    SMD 저항을 수직으로 납땜한 다음 두 개의 전선을 저항에 납땜했습니다. 전선 끝에 핀 헤더를 납땜했습니다.

    Arduino Nano를 프로그래밍한 경우에만 핀 헤더에 점퍼를 삽입했습니다. 이런 식으로 점퍼가 제거되면 Arduino Nano는 SDS018 센서에서 데이터를 읽을 수 있으며 동시에 데이터를 Arduino IDE 직렬 모니터로 보낼 수 있습니다.

    간단히 말해서 Arduino Nano 보드를 프로그래밍한 후 저항을 영구적으로 제거할 수 있지만 이러한 방식으로 Arduino Nano 보드를 다시 프로그래밍할 수 없게 됩니다.

    전원 공급 장치

    Arduino Nano는 두 가지 방식으로 전원을 공급할 수 있습니다.

    <울>
  • USB;
  • Vin 핀(및 GND 핀):7-12V.
  • 보조 배터리를 통해 USB를 통해 보드에 전원을 공급했습니다.

    케이스 및 조립

    센서, 디스플레이, LED 및 Arduino Nano를 고정하기 위해 주황색 PLA 케이스를 3D로 디자인하고 인쇄했습니다. 케이스는 두 부분으로 구성됩니다. 아래쪽 부분은 Arduino Nano와 SDS018이 고정되어 있습니다. DHT22, 디스플레이 및 LED가 고정되는 상부. 하단에는 Mini-B USB 케이블을 위한 구멍이 있습니다. 상단에는 3개의 LED가 나오는 3개의 구멍이 있습니다. 원하는 경우 LED 장착 하드웨어를 사용하여 LED를 고정할 수 있습니다(구멍을 최대 5mm 확대하기만 하면 됨).

    여기에 케이스의 두 부분을 3D로 인쇄하는 데 필요한 두 개의 파일이 첨부되어 있습니다.

    아두이노 나노, 디스플레이, DHT22를 케이스에 고정하기 위해 핫 글루를 사용했습니다.

    Figure 1 - I have soldered LEDs with their resistors and I have mounted them on the upper part of the case;

    Figure 2 - I have inserted a heat-shrink tubing on each resistor and on each wire;

    Figures 3/4 - I have fixed the DHT22 sensor module with hot glue;

    Figure 5 - I have fixed the display module with hot glue;

    Figure 6 - I have soldered all the wires to the Arduino Nano board;

    Figure 7 - I have fixed the Arduino Nano board with hot glue;

    Figure 8 - I have soldered all the positive wires (red) together and I have inserted the heat-shrink tubing; I have soldered all the negative wires (black) together and I have inserted the heat-shrink tubing;

    Figure 9 - I have fixed the red and black wires with the glitter hot glue (I had finished the transparent one :) )

    Figure 10 - I have soldered the three female jumpers on each wire in order to connect the SDS018 Sensor module;

    Figure 11 - I have inserted a heat-shrink tubing on each female jumper and I have inserted them into the SDS018 sensor module;

    Figure 12 - I have mounted the SDS018 sensor module in the lower part of the case with a machine screw M3x6;

    Figure 13 - I have closed the case with four machine screws M3x16.

    Firmware

    The firmware is an Arduino sketch . In the following figure you can see the simplified flow chart.

    At start-up is executed the peripheral setup and the LEDs are checked.

    Main loop:

    <울>
  • Only at the first loop (startup) there are 2 seconds delay;
  • The DHT22 sensor is read;
  • Temperature and relative humidity are sent to Arduino IDE serial monitor (see the figure below);
  • The SDS018 sensor is read;
  • PM2.5 and PM10 are sent to Arduino IDE serial monitor (see the figure below);
  • If particulate matter concentrations are from 0 to 25 µg/m3 and humidity is between 40% and 60% - Normal alarm state -, then all LEDs get OFF;
  • If particulate matter concentrations are from 0 to 25 µg/m3 and humidity is <40% or> 60% or particulate matter concentrations are from 26 to 50 µg/m3 and humidity is between 40% and 60% (to simplify the code I have separated the conditions) - Low alarm state -, then only green LED gets ON;
  • If particulate matter concentrations are from 26 to 50 µg/m3 and humidity is <40% or> 60% or particulate matter concentrations are> 51 µg/m3 and humidity is between 40% and 60% (to simplify the code I have separated the conditions) - Warning alarm state -, then green and yellow LEDs get ON;
  • If particulate matter concentrations are> 51 µg/m3 and humidity is <40% or> 60% - Alarm state -, then all LEDs get ON;
  • If switchDisplay flag variable is equal to zero, then PM10 and humidity are visualized on display, otherwise are visualized PM2.5 and temperature in degrees Celsius; if there is an alarm state, instead of displaying PM10, it is visualized the word "Alarm!!!".
  • At the end of the loop I have inserted a 2 second-delay.

    That's all!

    If you have any questions or suggestions don't hesitate to leave a comment below. Thank you!


    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • COVID-19 and PM10 levels! - Code
  • COVID-19 and PM10 levels! - CodeArduino
    The firmware is an Arduino sketch.
    #include #define SCREEN_WIDTH 128 // OLED display width, in pixels#define SCREEN_HEIGHT 32 // OLED display height, in pixels// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);#include "DHT.h"#define DHTPIN 2 // Digital pin connected to the DHT sensor #define DHTTYPE DHT22 // DHT22 (AM2302)DHT dht(DHTPIN, DHTTYPE);int startdhr22 =0; // Startup flag variable:waiting for the first measurement of DHT22int switchDisplay =0; // Flag variable for switch data on the displayconst int ledRed =3; // Number of Red LED pinconst int ledGreen =4; // Number of Green LED pinconst int ledYellow =5; // Number of Yellow LED pinvoid setup() { pinMode(LED_BUILTIN, OUTPUT); // On-board LED - initialize digital pin LED_BUILTIN as an output pinMode(ledRed, OUTPUT); // Initialize digital pin as an output pinMode(ledGreen, OUTPUT); // Initialize digital pin as an output pinMode(ledYellow, OUTPUT); // Initialize digital pin as an output dht.begin(); Serial.begin(9600); Serial.println("start"); // SSD1306_SWITCHCAPVCC =generate display voltage from 3.3V internally if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 Serial.println(F("SSD1306 allocation failed")); for(;;); // Do not proceed, loop forever } display.clearDisplay(); // Clear the buffer display.setTextSize(2); // Draw 2X-scale text display.setTextColor(SSD1306_WHITE); // Startup:LEDs Test digitalWrite(ledGreen, HIGH); // Turn the LED ON delay(500); // Wait for 0,5 secondS digitalWrite(ledYellow, HIGH); // Turn the LED ON delay(500); // Wait for 0,5 secondS digitalWrite(ledRed, HIGH); // Turn the LED ON delay(500); // Wait for 0,5 secondS digitalWrite(ledGreen, LOW); // Turn the LED OFF digitalWrite(ledYellow, LOW); // Turn the LED OFF digitalWrite(ledRed, LOW); // Turn the LED OFF delay(500); // Wait for 0,5 secondS}void loop() { // ########################################################################### // DHT22 // 0.5 Hz sampling rate (once every 2 seconds). // ########################################################################### if(0 ==startdhr22) { delay(2000); // Startup:waiting for the first measurement of DHT22 startdhr22 =1; } float h =dht.readHumidity(); float t =dht.readTemperature(); // Read temperature as Celsius (default) // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t)) { Serial.println(F("Failed to read from DHT sensor!")); 반품; } Serial.print(F("Humidity:")); Serial.print(h); Serial.print(F("% Temperature:")); Serial.print(t); Serial.println(F("°C ")); // ########################################################################### // SDS018 // ########################################################################### uint8_t dataIN[10] ={0}; // Data array from SDS018 float pm25; float pm10; while(Serial.available()> 0) { for(int i=0; i<10; ++i) { // loop for acquire 10 bytes dataIN[i] =Serial.read(); // Save data in to dataIN array // Serial.println(dataIN[i], HEX); // Test:Prints data to the serial port (print as an ASCII-encoded hexadecimal) } if((0xAA ==dataIN[0]) &&(0xC0 ==dataIN[1]) &&(0xAB ==dataIN[9])) { // check if array contains dataIN[0]=0xAA and dataIN[1]=0xC0 and dataIN[1]=0xAB uint8_t cksum =0; for(int i=2; i<=7; ++i) { cksum +=dataIN[i]; // Calculation of check-sum } //Serial.print("check-sum:"); // Test:Serial monitor //Serial.println(cksum, HEX); if(cksum ==dataIN[8]) { digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on (HIGH is the voltage level) uint8_t pm25Lo =dataIN[2]; // PM2.5 low byte uint8_t pm25Hi =dataIN[3]; // PM2.5 high byte uint8_t pm10Lo =dataIN[4]; // PM10 low byte uint8_t pm10Hi =dataIN[5]; // PM10 high byte pm25 =((pm25Hi * 256.0) + pm25Lo)/10.0; // Calculation of PM2.5 value pm10 =((pm10Hi * 256.0) + pm10Lo)/10.0; // Calculation of PM10 value Serial.print("PM2.5:"); // Serial monitor Serial.print(pm25); Serial.println(" ug/m3"); Serial.print("PM10:"); Serial.print(pm10); Serial.println(" ug/m3"); } Serial.println("-----------------"); } Serial.flush(); } // ########################################################################### // LEDs // ########################################################################### if((pm10 <=25) &&((h>=40) &&(h <=60))) // Normal – Particulate matter concentrations from 0 to 25 µg/m3 and humidity between 40% and 60%; { digitalWrite(ledGreen, LOW); // Turn the LED OFF digitalWrite(ledYellow, LOW); // Turn the LED OFF digitalWrite(ledRed, LOW); // Turn the LED OFF } else if((pm10 <=25) &&((h <40) || (h> 60))) // Low - Particulate matter concentrations from 0 to 25 µg/m3 and humidity <40% o> 60%; { digitalWrite(ledGreen, HIGH); // Turn the LED ON digitalWrite(ledYellow, LOW); // Turn the LED OFF digitalWrite(ledRed, LOW); // Turn the LED OFF } else if(((pm10> 25) &&(pm10 <=50)) &&((h>=40) &&(h <=60))) // Low - Particulate matter concentrations from 26 to 50 µg/m3 and humidity between 40% and 60%; { digitalWrite(ledGreen, HIGH); // Turn the LED ON digitalWrite(ledYellow, LOW); // Turn the LED OFF digitalWrite(ledRed, LOW); // Turn the LED OFF } else if(((pm10> 25) &&(pm10 <=50)) &&((h <40) || (h> 60))) // Warning - Particulate matter concentrations from 26 to 50 µg/m3 and humidity <40% o> 60%; { digitalWrite(ledGreen, HIGH); // Turn the LED ON digitalWrite(ledYellow, HIGH); // Turn the LED ON digitalWrite(ledRed, LOW); // Turn the LED OFF } else if((pm10> 50) &&((h>=40) &&(h <=60))) // Warning - Particulate matter concentrations> 51 µg/m3 and humidity between 40% and 60%; { digitalWrite(ledGreen, HIGH); // Turn the LED ON digitalWrite(ledYellow, HIGH); // Turn the LED ON digitalWrite(ledRed, LOW); // Turn the LED OFF } else // Alarm - Particulate matter concentrations> 51 µg/m3 and humidity <40% or> 60%. { digitalWrite(ledGreen, HIGH); // Turn the LED ON digitalWrite(ledYellow, HIGH); // Turn the LED ON digitalWrite(ledRed, HIGH); // Turn the LED ON } // ########################################################################### // Display // ########################################################################### if(0 ==switchDisplay) { display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setCursor(0,0); // Set the cursor position (Width, Height) if(pm10> 50) // Visualize the word "Alarm" on display { display.print("Alarm!!!"); } else // Visualize the PM10 value on display { display.print("PM10:"); display.println(pm10); } display.print(" HR%:"); // Visualize the humidity value on display display.println(h); display.display(); switchDisplay =1; } else { display.clearDisplay(); display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text display.setCursor(0,0); // Set the cursor position (Width, Height) display.print("PM25:"); // Visualize the PM2.5 value on display display.println(pm25); display.print("T[C]:"); // Visualize the temperature value on display display.println(t); display.display(); switchDisplay =0; } delay(500); // Delay of 500ms digitalWrite(LED_BUILTIN, LOW); // TEST:turn the LED_BUILTIN OFF delay(1500); // Delay of 1500ms}

    Custom parts and enclosures

    Case - upper part
    File of the 3D upper part of orange PLA case

    https://sketchfab.com/3d-models/case-upper-part-c6843c6613f84805a39e1a9384dd5e56

    Case - lower part
    File of the 3D lower part of orange PLA case

    https://sketchfab.com/3d-models/case-lower-part-covid-19-and-pm10-levels-9d4d2ef93e644065b627c5562c5cde1f

    회로도

    Electrical schematic of COVID-19 and PM10 levels!

    제조공정

    1. COVID-19 동안 플라스틱 식품 포장 및 지속 가능성
    2. COVID-19가 플라스틱 자동화를 어떻게 변화시켰는지(그리고 하지 않았는지)
    3. COVID-19와 제2차 세계 대전 이후 경제의 죽음
    4. COVID-19가 블록체인 및 암호화폐에 미치는 영향
    5. COVID-19 및 연간 발송인 RFP 종료
    6. Wayfair 및 COVID-19:면세 판매자에 대한 영향
    7. COVID-19로 인한 재교육 및 재교육
    8. 코로나바이러스(COVID-19) 정보 및 리소스
    9. 새로운 연구:COVID-19가 업무 및 자동화의 미래에 미치는 영향
    10. 재료가 COVID-19를 빠르고 정확하게 감지합니다.