아두이노 코딩-202: UART 방식에 의한 SPS30 미세먼지 센서 측정
아두이노 우노 보드에서 I2C 인터페이스에 의해 SPS 30 센서를 사용하여 미세먼지 농도를 측정하였다. I2C 방식도 여러 종류의 센서를 인터페이스 함에 편리한 인터페이스 방식이긴 하지만 센서와 아두이노를 연결하는 전기 배선이 길어지게 되면 주위로부터 노이즈가 입력되기 마련이며 이럴 때에는 오히려 UART 방식이 선호된다. UART 방식이란 아두이노에서 RX,TX 핀을 사용하는 시리얼 인터페스를 뜻한다.
UART 방식에 의해 SPS 30 센서의 아두이노 배선은 의외로 간단하긴 하지만 사용 보드가 아두이노 메가 2560 과 ESP32 보드에 국한한다. 아쉽게도 I2C 가 실행되었던 아두이노 우노 보드에서 코드 실행이 되지 않으므로 그 점에 유의하도록 한다.
VDD: 아두이노 메가 2560의 5V
RX: serialport 2 연결, Mega 16번 핀
TX: serialpoert 2연결, Mega 17번 핀
GND: 0V 연결
UART 방식으로 SPS 30 센서를 사용하기 위해서는 아래의 주소에서 파일을 다운 받아 압축을 해제한 후 라이브러리 포함하기에 등록하도록 하자. 라이브러리 명칭은 SPS30 이다. 물론 I2C 인터페이스 경우에도 동일한 라이브러리를 사용하였다.
https://github.com/paulvha/sps30
메뉴의 파일 탭을 열어 예제에서 SPS30을 선택 후 Examples_sps30 _BasicReadings 아두이노 파일을 오픈한다.
이 파일을 컴파일 업로딩하기 전에 2개의 라이브러리 파일에서 데이터 길이를 32비트에서 64비트로 수정해야 한다. 이 2개의 라이브러리 파일들은 Arduino- hardware-arduino-avr-libraies-Wire-src 의 Wire.H 와 Arduino-hardware- arduino-avr-libraies-Wire-src-utility 의 twi.H 이다. 그림의 폴더 구조를 참조하자.
수정해야 할 내용은 BUFFER_LENGTH로서 다음과 같이 32에서 64로 편집해 저장하자.
아울러 코드 본문의 헤더 영역에서 SERIALPORT1을 SERIALPORT2 로 수정하자.
다음 시리얼 모니터 출력 결과는 3월 5일 온전의 측정 결과이다. 현재 기상청 미세먼지 예보를 참조하면 200 ugr/m3인데 PM 값이 150 ugr/m3 수준으로 측정이 되었다.
짱짱맨 호출에 응답하였습니다.
Congratulations @codingart! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :
Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word
STOPTo support your work, I also upvoted your post!
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness and get one more award and increased upvotes!