지금까지 ESP32 에 대한 글은 아래 링크들에서 확인해 보세요.
* Hardware | ESP32 의 Dual core 확인해 보기
- https://chocoball.tistory.com/entry/Hardware-ESP32-Dual-core
* Hardware | ESP32 스펙 확인해 보기
- https://chocoball.tistory.com/entry/Hardware-ESP32-spec-check
* Hardware | ESP32 간단 사용기
- https://chocoball.tistory.com/entry/Hardware-simple-review-ESP32
이번 글은, ESP32 에 내장된 센서들에 관한 이야기 입니다.
1. 온도 센서
첫 번째로 온도센서에 대해 확인해 봅니다.
내장 센서이다 보니, 회로를 구성할 필요 없이, internal 값만 찾아서 확인해 보면 됩니다.
아래는 소스 입니다.
/* * ESP32 Internal Temperature Sensor Example */ #ifdef __cplusplus extern "C" { #endif uint8_t temprature_sens_read(); #ifdef __cplusplus } #endif uint8_t temprature_sens_read(); //==================================================== // Setup //==================================================== void setup() { Serial.begin(115200); } //==================================================== // Loop //==================================================== void loop() { Serial.print("Temperature: "); // Convert raw temperature in F to Celsius degrees Serial.print((temprature_sens_read() - 32) / 1.8); Serial.println(" C"); delay(1000); }
내부 함수 "temprature_sens_read()" 를 사용하여 내부 온도 센서 값을 읽어오는 루틴 입니다.
음? 뭔가 이상하군요. 계속 53.33 도씨만을 리턴합니다. 구글링 해봅니다.
* ESP32 internal temperature sensor not working #2422
- https://github.com/espressif/arduino-esp32/issues/2422
아... CPU 버전업 되면서, 온도센서가 없어졌네요. -_-;
어쩐지, 예전 CPU diagram 에는 온도센서가 존재하지만,
최신 spec. 문서에는 Temperature sensor 가 없어지고, Embedded Flash 가 대신 들어가 있습니다.
그리하여, Internal temperature sensor 의 값을 불러오면, 정해진 값 - 128 - 만 리턴하게 만들어 진 것을 확인할 수 있었습니다.
2. Hall 센서
자력을 측정하는 센서 입니다. 보통 전류 센서에도 붙어 있죠.
Examples > ESP32 > HallSensor
소스를 보면, "hallRead()" 를 통해서 자력 값을 읽을 수 있습니다.
//Simple sketch to access the internal hall effect detector on the esp32. //values can be quite low. //Brian Degger / @sctv int val = 0; void setup() { Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: val = hallRead(); // print the results to the serial monitor: // Serial.print("sensor = "); Serial.println(val); // to graph delay(50); }
마침 가지고 있던 네오디뮴 자석으로 확인해 봅니다.
양의 값 (+) 와 음의 값 (-) 이 잘 읽힙니다.
개인적으로는 이 센서가 ESP32 에 필요한 이유는 잘 모르겠습니다. 누가 아시는 분은 댓글로 남겨 주세요.
동영상도 올려 봅니다.
3. 터치 센서
ESP32 에는 터치 센싱을 하는 pin 이 10 개 달려 있습니다.
마찬가지로, 왜 이리 touch sensor 를 많이 가지고 있는지 의문이지만, 스펙상으로는 10개 입니다.
스펙 문서에는 10개로 되어 있지만, Pinheader 로는 9개만 보이네요.
아래처럼 터치를 읽어들이는 소스가 기본 제공됩니다.
Examples > ESP32 > Touch > TouchRead
이미 "touchRead()" 라는 함수가 라이브러리에 준비되어 있군요.
// ESP32 Touch Test // Just test touch pin - Touch0 is T0 which is on GPIO 4. void setup() { Serial.begin(115200); delay(1000); // give me time to bring up serial monitor Serial.println("ESP32 Touch Test"); } void loop() { Serial.println(touchRead(T0)); // get value using T0 delay(1000); }
결과는 다음과 같이 표시 됩니다. 터치되지 않은 상태는 95 정도이고, 해당 pin 을 손으로 만지면 10 이하로 내려갑니다.
해당 pin 을 터치했을 때, 내장 LED 의 불을 켜주는 소스 입니다. touchRead 의 기준 값은 50 으로 설정되어 있습니다.
// ESP32 Touch Test // Just test touch pin - Touch0 is T0 which is on GPIO 4. int LED_BUILTIN = 2; void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200); delay(1000); // give me time to bring up serial monitor Serial.println("ESP32 Touch Test"); } void loop() { int x = 0; Serial.println( x = touchRead(T0) ); // get value using T0 //delay(1000); if( x < 50 ) { digitalWrite(LED_BUILTIN, HIGH); Serial.println("Turn on LED"); delay(500); } else { digitalWrite(LED_BUILTIN, LOW); Serial.println("Turn off LED"); delay(500); } }
주의할 것은, LED_BUILTIN 값은 보통 arduino 들은 자동으로 잡아 주지만, IDE 에서 board 선택을 ESP32 Dev Module 로 하면 제대로 동작하지 않습니다. 아마 DOIT ESP32 DEVKIT V1 은 LED_BUILTIN 이 정의되어 있지만, ESP32 Dev Module 은 해당 정의가 없는 듯 합니다.
ESP32 의 내장 LED 는 digital pin 2 이므로, "int LED_BUILTIN = 2" 를 선언해 주면 됩니다.
동영상도 올려 봅니다.
FIN
Arduino 와 비교하여 CPU 도 넘사벽이지만, 내장 센서도 다채롭게 구비되어 있는 ESP32 테스트 해 봤습니다.
다음 글에서는 ESP32 의 PWM 기능에 대해 확인해 보도록 하겠습니다.
'Hardware' 카테고리의 다른 글
Hardware | ESP32 Cryptographic HW 가속 확인해 보기 (2) | 2020.04.16 |
---|---|
Hardware | EPS32 PWM 기능 확인해 보기 (0) | 2020.04.11 |
Hardware | ESP32 의 Dual core 확인해 보기 (2) | 2020.04.08 |
Hardware | ESP32 스펙 확인해 보기 (0) | 2020.03.23 |
Hardware | ESP32 간단 사용기 (0) | 2020.03.21 |