지난 글에서 Arduino IDE가 뭔지, 개발환경에 대해 간단하게 소개했다. 이번에는 실제로 내가 사용한 보드인 ESP32 Feather V2에 대해 이야기해보려 한다.
내 프로젝트는 뭐였나
본격적으로 ESP32 이야기를 하기 전에, 내가 만든 게 뭔지 간단히 설명하겠다.
코끼리 재활자전거는 재활 치료용 자전거로, 이번 프로젝트에서는 센서를 부착해 환자의 운동 데이터를 실시간으로 측정하고 기록하는 장치를 만들었다.
측정해야 했던 것들:
- 4개의 로드셀(힘 센서): 양팔과 양다리에서 발휘하는 힘 측정
- 회전 엔코더: 자전거 페달의 각도 측정
- 실시간 데이터 전송: Wi-Fi로 웹 브라우저에 데이터 표시
- 데이터 저장: 최대 36분간의 측정 데이터를 메모리에 저장
대학원에서 처음으로 진행한 프로젝트였는데 쉽지 않았다.
ESP32가 뭔가
ESP32는 중국의 Espressif Systems에서 만든 MCU다.
가장 큰 장점은 Wi-Fi와 블루투스가 기본 탑재되어 있다는 것이다. 일반적으로 다른 MCU에서 무선 통신을 하려면 별도의 Wi-Fi 모듈을 붙여야 하는데, ESP32는 처음부터 내장되어 있어 IoT 프로젝트에 적합하다.
주요 스펙:
| 항목 | ESP32 | Arduino Uno (비교) |
|---|---|---|
| 코어 | 듀얼 코어 | 싱글 코어 |
| 클럭 | 최대 240MHz | 16MHz |
| Wi-Fi / BT | 기본 탑재 | 없음 |
| 가격 | 저렴 | 저렴 |
처음 ESP32를 접했을 때 이 가격에 Wi-Fi와 블루투스까지 된다는 게 믿기지 않았다.
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 활성화, 웹 서버 구동까지 삽질했던 부분들을 위주로 정리해보겠다.