산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

부품 및 소모품

아두이노 101 내장 가속도계 탑재, 추가 부품 불필요 1개
아두이노 우노 아두이노 101 대신 사용 시 별도 가속도계 필요 1개
Adafruit ADXL335 아날로그 가속도계 아두이노 101 외 보드 사용 시 필요 (SparkFun 동등품도 가능) 1개
SparkFun ADXL335 트리플 축 가속도계 브레이크아웃 아두이노 101 외 보드 사용 시 필요 (Adafruit 동등품도 가능) 1개

프로젝트 소개

개요

이 튜토리얼은 ESP 시스템을 이용해 아두이노 프로젝트에 기본적인 제스처 인식을 추가하는 방법을 보여줍니다. 예를 들어 테니스 포핸드·백핸드·서브, 댄스 동작, 역도 자세 등을 인식할 수 있습니다. 가속도계로 제스처를 감지해 PC에서 실행 중인 ESP 애플리케이션으로 전송하면, ESP가 간단한 머신러닝 알고리즘(DTW)으로 실시간 데이터를 기록된 예시 제스처와 매칭해 유사한 제스처를 인식하면 아두이노로 메시지를 보냅니다. 개별 이산 제스처의 발생만 인식하며 수행 방식에 대한 정보는 제공하지 않지만, 다양한 인터랙티브 응용에 활용 가능합니다.

ESP 제스처 인식 애플리케이션 다운로드

1단계: 가속도계 연결

아두이노 101 사용 시 내장 가속도계가 있으므로 이 단계 생략 가능. 그렇지 않으면 브레이크아웃 보드에 핀 헤더 납땜 후 아두이노에 연결합니다. 아두이노 우노의 아날로그 입력 핀에 직접 꽂아 전원/그라운드를 핀으로 공급하는 방식이 간편합니다.

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

또는 브레드보드에 꽂아 5V/GND와 X/Y/Z축을 아날로그 입력 3개에 연결하세요.

2단계: 아두이노 코드 업로드

아래 두 가지 코드 중 배선에 맞는 것을 사용하세요. 핀 번호가 실제 배선과 일치하는지 확인 후 보드/포트 선택해 업로드합니다.

3단계: 시리얼 모니터로 데이터 확인

시리얼 모니터(9600 보드레이트) 또는 시리얼 플로터로 가속도계 데이터(3축)가 움직임에 따라 변하는지 확인하세요. 확인 후 모니터/플로터는 꼭 닫으세요(ESP 앱이 포트 접근 못 함).

4단계: ESP 앱 실행 및 시리얼 포트 선택

ESP 앱을 실행하고 설정 메뉴에서 아두이노 보드에 해당하는 시리얼 포트를 선택합니다. "Raw Data" 플롯에 실시간 3축 데이터(빨강=X, 초록=Y, 파랑=Z)가 스트리밍됩니다.

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼
ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

5단계: 캘리브레이션 샘플 기록

가속도계를 평평한 표면에 놓고 Z축이 위를 향하게 한 뒤 '1' 키를 1초간 눌러 "Upright" 샘플 기록. 뒤집어서 '2' 키로 "Upside down" 샘플 기록. 이를 통해 0g(X/Y축)와 1g(Z축)에 해당하는 수치 범위를 시스템이 학습합니다.

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

6단계: 예시 제스처 기록

"Training" 탭으로 이동(대문자 'T' 키). 최대 9가지 제스처의 예시를 기록할 수 있습니다. 원하는 라벨 키(1~9)를 누른 상태에서 제스처를 수행하면 기록됩니다. (예시 테니스 제스처 파일 로드도 가능)

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

좋은 샘플: 제스처 전체가 담기되 시작/끝에 너무 길거나 없는 베이스라인 구간이 없도록. 제스처가 제자리로 돌아오는 동작은 기록하지 마세요(예: 오른쪽으로 스와이프면 왼쪽으로 돌아오는 건 제외).

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

제스처당 5~10개 샘플 권장. 품질이 양보다 중요합니다. 나쁜 샘플은 삭제(delete)하거나 다듬기(trim) 가능. 라벨 변경(re-label), 이름 변경(rename)도 지원.

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

7단계: 시스템 학습

't' 키를 눌러 학습시키면 "training successful" 메시지 표시. 이후 기록된 예시와 유사한 제스처를 하면 실시간 플롯에 제스처 이름이 뜹니다.

ESP32와 아두이노 101 가속도계로 제스처 인식하기 – 쉬운 DIY 튜토리얼

처음부터 잘 안 될 수 있음. 기록·학습·테스트를 반복하며 조정하세요. 인식이 안 되면 예시 추가, 오인식이 되면 나쁜 예시 삭제/다듬기 후 재학습('t').

8단계: 설정 파라미터 튜닝

"click to open configuration" 클릭 → variability(변이 허용도), timeout(재인식 대기시간) 조정 가능. 변경 후 't'로 재학습 필요.

9단계: 아두이노 프로젝트에 제스처 인식 통합

ESP가 예측하면 아두이노로 제스처 번호(ASCII 텍스트 + 개행, 예: "1\n") 전송. 시리얼 포트에서 읽어 아두이노가 반응하게 만드세요. TCP로 로컬호스트 5204 포트에도 동일 포맷 전송(Processing 게임 등 연동 가능).

작동 원리: DTW(Dynamic Time Warping)

실시간 센서 신호를 늘리거나 줄여 기록된 샘플과 유사도를 비교. 가장 가까운 학습 샘플과의 거리가 임계값(variability) 미만이면 매칭으로 판정. GRT(Gesture Recognition Toolkit) 기반으로 제스처 인식 외 컬러 감지, 자세 추정, 오디오 인식 등에도 적용 가능. ESP GitHub 참고.

코드

아두이노 ADXL335 코드

ADXL335 연결: X축→A5, Y축→A4, Z축→A3. 9600보드, 탭 구분, 개행 종료 ASCII로 시리얼 전송.

아두이노 101 내장 가속도계 코드

내장 가속도계에서 데이터 읽어 9600보드, 탭 구분, 개행 종료 ASCII로 시리얼 전송.

제조공정

  1. 파이썬 연동 아두이노 RFID 출석 관리 시스템 구축하기
  2. 아두이노, 1Sheeld, IR 제어로 만능 안드로이드 리모컨 만들기
  3. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  4. 스마트 IoT 자 제작: ESP8266, 아두이노 & 초음파 센서로 실시간 모니터링
  5. 아두이노 우노로 정밀 주파수 & 듀티 사이클 측정기 만들기
  6. 펌마타(Firmata)와 엑스박스 원 게임패드로 아두이노 로버 원활하게 제어하기
  7. 아두이노 소나 & 프로세싱으로 실시간 거리 측정 및 시각화
  8. 볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
  9. 스마트 아두이노 제어 로봇 팔 제작: 쉬운 DIY 튜토리얼
  10. 아두이노와 프로세싱으로 실시간 디지털 나침반 만들기