MPU-6050 센서를 ESP-WROOM-32로는 사용해 봤는데,
Espressif ESP32-S3-DevKitC-1 보드로는 사용해 본 적이 없어서
어떻게 사용하는가 자료를 찾아보는데,
인터넷에는 ESP32-S3으로 이용하는 샘플을 찾을 수가 없어서 좀 헤맸다.
아주 심플한 기본코드는 아래의 링크에 있는 코드인데,
ESP-WROOM-32로는 I2C 핀이 정해져 있어서 문제가 되지 않지만,
ESP32-S3에서는 핀을 내가 설정을 해 주어야 한다.
https://github.com/yash-sanghvi/ESP32/blob/master/MPU6050/MPU6050.ino
따라서 아래의 예시와 같이 샘플코드에 약간 수정을 가해 줬다.
1. SDA, SCL 핀의 설정: 여기에서는 1번과 2번 핀을 사용하였다.
그리고 전원은 3.3V에 연결하였다.
int sda_pin = 2;
int scl_pin = 1;
전체적인 결선은 아래의 표를 참고하길 바란다.
SDA | SCL | GND | VCC |
2번핀 | 1번핀 | GND | 3.3V |
2. Wire.begin 에서 핀설정 대입: 21번과 22번은 ESP-WROOM-32의 설정이므로 수정해 준다.
Wire.begin(sda_pin, scl_pin, 1000000); // sda, scl
3. 소스코드의 수정: 아랫부분의 빨간색 부분이 원래는 [true]로 되어있는 것을 [false]로 고쳐줬다.
Wire.endTransmission(false);
Wire.requestFrom(MPU_ADDR, 14, true); // request a total of 14 registers
소스코드를 제대로 수정을 해 주고 선을 잘 연결했다면 아래와 같이 작동되는 것을 알 수 있다.
이 데이터를 Serial Plotter로 표시하면 아래와 같이 나온다.
이게 측정속도가 너무 빨라서 delay(50)을 넣어줬다.
데이터는 가속도 (X, Y, Z)와 자이로 (X, Y, Z)로 출력되어 나온다.
약간만 손봐주면 웬만한 샘플들은 ESP32-S3에 다 적용이 가능한 것 같다.
핀 설정도 마음대로 되고 이전보다 자유도가 훨씬 높아지는 것 같네.
이 시스템을 이용하면 제스처 인식 시스템 같은 것도 만들 수 있을 거 같다.
https://www.hackster.io/Yukio/gesture-classification-with-esp32-and-tinyml-dab252
https://eloquentarduino.com/gesture-classification/
역시...
내가 생각하는건 세상 누군가가 해 놓은 게 많다.
연구에서 새로운 요소를 넣기가 힘들다..