지난 글에서 Arduino IDE가 뭔지, 개발환경에 대해 간단하게 소개했다. 이번에는 실제로 내가 사용한 보드인 ESP32 Feather V2에 대해 이야기해보려 한다.

내 프로젝트는 뭐였나

본격적으로 ESP32 이야기를 하기 전에, 내가 만든 게 뭔지 간단히 설명하겠다.

코끼리 재활자전거는 재활 치료용 자전거로, 이번 프로젝트에서는 센서를 부착해 환자의 운동 데이터를 실시간으로 측정하고 기록하는 장치를 만들었다.

측정해야 했던 것들:

  • 4개의 로드셀(힘 센서): 양팔과 양다리에서 발휘하는 힘 측정
  • 회전 엔코더: 자전거 페달의 각도 측정
  • 실시간 데이터 전송: Wi-Fi로 웹 브라우저에 데이터 표시
  • 데이터 저장: 최대 36분간의 측정 데이터를 메모리에 저장

대학원에서 처음으로 진행한 프로젝트였는데 쉽지 않았다.

ESP32가 뭔가

ESP32는 중국의 Espressif Systems에서 만든 MCU다.

가장 큰 장점은 Wi-Fi와 블루투스가 기본 탑재되어 있다는 것이다. 일반적으로 다른 MCU에서 무선 통신을 하려면 별도의 Wi-Fi 모듈을 붙여야 하는데, ESP32는 처음부터 내장되어 있어 IoT 프로젝트에 적합하다.

주요 스펙:

항목ESP32Arduino Uno (비교)
코어듀얼 코어싱글 코어
클럭최대 240MHz16MHz
Wi-Fi / BT기본 탑재없음
가격저렴저렴

처음 ESP32를 접했을 때 이 가격에 Wi-Fi와 블루투스까지 된다는 게 믿기지 않았다.

ESP32 Feather V2를 선택한 이유

ESP32 Feather V2 Adafruit ESP32 Feather V2

나는 Adafruit에서 나온 ESP32 Feather V2를 선택했다. 솔직히 가격은 비싼 편이었다. 일반 ESP32 보드가 5,000원 정도면 구할 수 있는데, 이건 2만 원이 넘었다.

그런데도 선택한 이유가 있다.

1. 넉넉한 메모리

일반 ESP32 보드는 보통 4MB Flash인데, Feather V2는 8MB Flash에 2MB PSRAM까지 있다.

“메모리가 왜 중요해?” 싶었는데, 웹 서버를 돌리거나 여러 라이브러리를 쓰다 보면 메모리가 금방 부족해진다. 넉넉한 게 나중에 확장할 때 정말 도움이 됐다.

2. USB-C 포트

Micro-USB나 5핀을 쓰는 보드도 많은데, USB-C는 은근히 신경 쓰이는 부분이었다. 어디서든 노트북으로 바로 연결해서 개발할 수 있었다.

3. Wi-Fi

단순히 데이터를 수집하는 것만이 목적이 아니라, 웹에서 데이터를 실시간으로 확인하고 저장하는 것까지 목표로 뒀기 때문에 반드시 필요한 기능이었다.

4. SPIFFS 파일 시스템으로 웹페이지 저장

웹 서버를 돌리려면 HTML, CSS, JavaScript 파일을 어딘가에 저장해야 한다. Feather V2의 8MB Flash 덕분에 SPIFFS 파일 시스템을 사용해 웹페이지를 보드 안에 저장할 수 있었다. 코드 메모리와 별개로 웹 파일을 저장할 공간이 따로 있어서 편했다.

단점도 있었다

1. 가격

일반 ESP32 대비 4배 정도 비싸다. 연구 개발 단계에서는 충분히 투자할 가치가 있다고 보지만, 양산 단계에서는 더 저렴한 MCU로 대체하는 게 맞을 것 같다.

2. 디버깅이 어렵다

Arduino IDE의 특성이기도 하고, 멀티코어 환경의 특성이기도 하다. 인터럽트를 쓰면서 웹 서버를 같이 돌리니 버그를 찾기가 상당히 어려웠다.

3. 핀 배치가 아쉽다

Feather 폼팩터 특성상 모든 GPIO가 다 나와있지 않다. 이번 프로젝트에서는 충분했지만, 더 많은 센서를 붙여야 한다면 IO Expander를 따로 사용해야 할 것 같다.

마무리

가격은 비쌌지만, 프로젝트 완성도와 안정성을 생각하면 후회 없는 선택이었다. 특히 연구용 장비였기 때문에 안정성과 신뢰성이 중요했고, 그 부분에서 Feather V2는 충분히 역할을 해줬다.

다음 글에서는 Arduino IDE 설정부터 PSRAM 활성화, 웹 서버 구동까지 삽질했던 부분들을 위주로 정리해보겠다.