BASIC4MCU | 질문게시판 | esp32와 pms7003연결해서 데이터를 받고 싶은데 에러가 떠요
페이지 정보
작성자 boar 작성일2025-03-27 11:36 조회133회 댓글1건본문
#include "PMS.h" //미세먼지 센서 라이브러리
PMS pms(Serial2);
PMS::DATA data; //미세먼지 센서값을 기록하는 구조체
void setup()
{
Serial.begin(115200); //PC와 ESP32간 통신라인
Serial2.begin(9600); //ESP32와 미세먼지센서간 통신라인
pms.passiveMode();
}
void loop()
{
Serial.println("센서값을 요청합니다!");
pms.requestRead();
if (pms.readUntil(data))
{
Serial.println();
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0);
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0);
Serial.println();
}
else
{
Serial.println("에러발생");
}
delay(1000);
}
파 TX - D16
노 RX - D17
빨 VCC - VIN
검 GND - GND
ESP32의 VIN은 5V로 쓸 수 있다고해서 이렇게 연결했습니다.
댓글 1
조회수 133master님의 댓글
master 작성일
void loop(){
delay(1000); // <--- 딜레이를 이 위치로 바꿔서 돌려보세요
Serial.println("센서값을 요청합니다!");
//
Tx, Rx 핀이 바뀌거나
전원선이 바뀌어서 꼽힌 적이 있었다면
한번의 실수로도 회로고장이 발생할 수도 있습니다.
//
ESP모듈의 Serial2 예제를 찾아서 정상 동작하는지 체크 해보세요
예를들면
#include <HardwareSerial.h>
HardwareSerial mySerial(2);
//
void setup(){
Serial.begin(115200);
}
//
void loop() {
if(mySerial.available()){ Serial.write(mySerial.read()); }
if( Serial.available()){ mySerial.write(Serial.read()); }
}
먼지센서를 떼어내고, 이 예제를 돌려본다고 하면
GPIO16과 GPIO17을 점퍼로 연결해도 동작시켜보면 됩니다.
점퍼가 불안하면 1K옴으로 연결해도 되겠죠
동작은,
시리얼모니터(시리얼0)에서 입력하면 시리얼2 Tx로 출력하고
점퍼선으로 시리얼2 Tx,Rx가 연결되어 있으므로
시리얼2 Rx로 입력받으면 시리얼모니터(시리얼0)로 표시합니다.
즉, 시리얼모니터에 입력하면 입력한 값이 시리얼모니터로 출력되는
에코동작입니다.