(예제8) ESP32의 Serial2포트를 이용해서 미세먼지센서의 측정값을 액티브방식으로 측정하시오!
(예제9) ESP32의 Serial2포트를 이용해서 미세먼지센서의 측정값을 패시브방식으로 측정하시오!
https://youtube.com/live/Jb2BEwvEBao
[아두이노#552] ESP32에 대표적인 센서를 연결해서 작동테스트 해보기!(녹칸다ESP32#2)
녹칸다의 ESP32시리즈이다!
제목 그대로 과거의 녹칸다는 IoT보드로 ESP8266보드만 활용했다!
ESP32에 대한 수요도 늘어나는것 같고 제일 중요한 것은 지금의 녹칸다가 ESP32보드가 필요하게 되었다!
ESP8266으로 만들어진 예제들을 ESP32버전으로 바꾸는게 주요 주제라고 할 수 있다!
그와 동시에 약간의 설명도 첨가해서 이것저것 예제를 만들어보도록 하자!
(ESP8266과 ESP32의 차이점을 강조해서 진행해보도록함!)
(근데 거의 80~90%는 거기서 거기인듯!)
이번시간에는 아두이노와 ESP8266에서 녹칸다가 주로 사용하는 각종 센서를 EPS32에 연결해서 잘 작동하는지 확인해보는 시간을 가져보도록 하자!
어떤핀에 어떻게 연결하느냐와 어떤 라이브러리를 설치하느냐, 어떤 코드를 집어넣느냐에 따라 결과가 달라질수 있으니 적절하게 작동되는 예제를 만들어보도록 한다!
아래와 같이 대표적인 센서를 활용해보도록 하자! 상황을봐서 추가로 더하거나 안할수도 있음~!
대표센서 목록
-디지털센서(온습도DHT-11,ds18b20)
-I2C센서(조도센서BH1750,고도센서BMP180, 자이로센서MPU6050)
-SPI센서(max6675, pt100)
-UART센서(co2/MH-Z19, pms7003)
(참고자료1 ESP32핀맵)
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/user-guide-devkitm-1.html
(참고자료2 INPUT_PULLUP가능핀)
불가능 34,35,2,36,39
가능 32, 33,25,26,14,27,12,13,22,23,19,21,5,18,16,17,4,15
(참고자료3 ESP32의 I2C핀)
SDA : 21
SCL : 22
(참고자료4 ESP32의 SPI핀)
SCK/CLK : 18 (고정핀)
MOSI : 23 (고정핀)
MISO : 19 (고정핀)
CS : 5 (내마음대로)
(참고자료5 ESP32의 Serial핀)
RX : 16
TX : 17
(깨알지식)
1.앞으로 ESP32에 뭔가 센서를 연결할때는 특별하지 않으면 라이브러리(library)를 설치해서 센서값을 측정한다!
2.고도센서(BMP180)는 해발고도를 측정하는 센서이다!
3.센서뒷면을 봤는데 SDA와 SCL이라는 기호가 나오면 ESP32와 I2C통신으로 연결하는 모듈이다!
4.아두이노용으로 만들어진 I2C모듈은 특별하지 않으면 3.3V가 기본이다!
5.I2C센서는 아두이노에 wire라이브러리를 활용하고 각 센서마다 슬레이브 ID부여되어있고 제대로 연결되었는지 확인하기 위해서 scan하는 코드가 내장되어있다!(wirescan)
6.I2C통신은 기본적으로 1:N통신이기 때문에 N쪽에 해당하는 센서는 각자 ID를 부여받는다!(1byte)
7.I2C통신을 하는 센서의 코드를 보면 핀번호에 대한 언급이 전혀없다! 그 이유는 지정된 자리에 반드시 연결해야하기 때문에 그렇다!
8.6축자이로센서(MPU6050)은 주로 드론에 활용하고 드론의 자세를 추정하는데 활용한다!
9.나의 센서의 MISO,MOSI,SCK(CLK), CS라는 용어가 등장하면 그것은 SPI통신으로 연결된다!
10.SPI통신도 1:N통신이기 때문에 여러개의 슬레이브를 구분하는 방법이 있어야한다! 이때 SPI통신은 CS핀으로 각 슬레이브를 구분한다!
11.SPI통신에서는 여러대의 슬레이브가 MISO,MOSI,SCK핀을 공유한다! 그리고 각 슬레이브는 CS핀으로 구분한다!
12.측정하는 센서부위가 써모커플이고 ESP32에서 아날로그값으로 직접적으로 측정할수가 없어서 중간에 측정해주는 모듈이 MAX6675인 상황이다!
13.백금온도센서가 PT100이 있고 PT1000이 있다! 2개의 차이에 따라서 아두이노 코드의 상수값이 달라진다!
14.K타입열전대온도센서보다 백금온도센서가 대단히 정밀하다 그러나 비싸다!
15.내가 어떤 센서를 보았는데 RX와 TX라는 용어가 나오면 ESP32에 Serial포트에 연결되는 것이다!
16.ESP32의 16번핀과 17번핀은 내부적으로 Serial2라는 이름으로 사용된다!
17.미세먼지센서의 PM10.0을 미세먼지라고 부르고 PM2.5를 초미세먼지라고 부른다! 그리고 그것은 미세먼지의 입자의 크기를 의미한다!
18.미세먼지센서의 측정 단위는 ug/m3이다! 마이크로그람 퍼 미터세제곱!
19.미세먼지센서의 액티브방식은 센서가 측정값을 일정한 간격으로 ESp32로 전송해서 출력하는 방식이다! 그에반해서 패시브방식은 ESP32가 센서값을 내놓으라고 하면 내놓는 방식이다!
20.내가 원하는 타이밍에 센서값을 얻기 위해서는 패시브방식으로 구동되는게 낫다!
(보완사항)
1.BS18B20은 ESP32와 호환이 일단 잘 안되는 상태이므로 방법 알아내기!
2.고도센서는 고장이나서 고도센서 했던 부분은 적절히 스킵해주기를 희망함!
(라이브러리)
1.온습도센서는 "라이브러리 매니저"에서 dht sensor library를 검색해서 설치한다!(1.3.8버전)
2.DS18B20센서는 DallasTemperature 검색해서 설치한다! 설치할때 onewire라는 라이브러리와 함께 설치하것이냐고 물어보는데 yes를 눌러서 2개의 라이브러리를 동시에 설치한다!(ESP32에서 작동불가)
3.조도센서(BH1750)라이브러리는 BH1750검색해서 설치하기!
4.자이로센서 라이브러리는 MPU6050_light 검색해서 설치하기!
5.열전대온도센서(MAX6675)는 MAX6675_library 라이브러리를 설치하기!
6.백금온도센서(MAX31865) 라이브러리는 Adafruit_MAX31865_library 설치하기!
7.이산화탄소센서(MH-Z19) 라이브러리는 라이브러리 매니저에서 검색이 안되므로 직접 다운로드 받아서 설치해야한다!
8.미세먼지센서(PMS7003)은 라이브러리 매니저에서 PMS library를 검색해서 다운받는다!
(예제1) ESP32의 D15번핀에 온습도센서(DHT-11)을 연결해서 온도와 습도값을 시리얼모니터에 출력하시오!
(예제2) ESP32의 D15번핀에 온도센서(DS18B20)을 연결해서 측정한 온도값을 시리얼모니터에 출력하시오!(ESP32에서 작동불가)
(예제3) ESP32의 i2c통신포트에 조도센서(BH1750)을 연결해서 측정한 조도값을 시리얼모니터에 출력하시오!
(예제4) ESP32의 i2c통신포트에 6축자이로센서(MPU6050)을 연결해서 시리얼모니터에 출력하시오!
(예제5) ESP32의 SPI통신포트에 써모커플(MAX6675)를 연결해서 시리얼모니터에 출력하시오!
(예제6) ESP32의 SPI통신포트에 백금온도센서(PT100)과 MAX31865를 연결해서 온도를 시리얼모니터에 출력하시오!
(예제7) EPS32의 Serial2포트를 이용해서 이산화탄소센서(MH-Z19)의 측정값을 시리얼모니터에 출력하시오!
(예제8) ESP32의 Serial2포트를 이용해서 미세먼지센서의 측정값을 액티브방식으로 측정하시오!
(예제9) ESP32의 Serial2포트를 이용해서 미세먼지센서의 측정값을 패시브방식으로 측정하시오!