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

제스처 제어 로봇: ADXL335 가속도계 + RF 433MHz 무선 통신

프로젝트 개요

손목의 기울기를 ADXL335 3축 가속도계로 측정하여, RF 433MHz 무선 링크를 통해 로봇 자동차의 전진/후진/좌/우 회전을 제어하는 제스처 기반 원격 제어 시스템입니다. 아두이노 나노(송신부)와 아두이노 우노+모터 쉴드(수신부)로 구성된 분산 제어 구조입니다.

시스템 블록 다이어그램

[송신부 - 손목 착용]                    [수신부 - 로봇 본체]
┌─────────────────────┐    433MHz RF    ┌─────────────────────┐
│  Arduino Nano       │ ◄─────────────► │  Arduino UNO        │
│  + ADXL335          │   (HT12E/HT12D) │  + Motor Shield     │
│  + RF Tx + HT12E    │                 │  + RF Rx + HT12D    │
└─────────────────────┘                 │  + DC 모터 × 4      │
                                        └─────────────────────┘

부품 목록

부품 수량 역할
Arduino UNO 1 수신부 메인 컨트롤러
Arduino Nano R3 1 송신부 컨트롤러 (휴대용)
RF 433MHz 송수신 모듈 1쌍 무선 데이터 링크 (최대 10m)
HT12E 인코더 / HT12D 디코더 각 1 병렬 4비트 데이터를 직렬 전송용 인코딩/디코딩
ADXL335 3축 가속도계 1 손목 기울기 측정 (X/Y/Z 아날로그 출력)
Adafruit 모터 쉴드 v1 1 DC 모터 4채널 구동 (AFMotor 라이브러리)
DC 기어 모터 4 좌/우 바퀴 구동 (좌우 각각 2개 병렬 연결)

가속도계 기반 제스처 인식 원리

ADXL335 특성

기울기-가속도 관계

손목이 기울면 X/Y축이 수직 방향과 각도를 이루며, 중력 가속도 성분이 각 축에 투영됩니다.

수평 상태: X≈512, Y≈512, Z≈512 (1.65V 기준)
전진 기울기: Y값 증가 (예: ≥390)
후진 기울기: Y값 감소 (예: ≤310)
우측 기울기: X값 증가 (예: ≥380)
좌측 기울기: X값 감소 (예: ≤320)
중립 영역: X 320~380, Y 310~390 → 정지

송신부 회로 (Arduino Nano + ADXL335 + HT12E + RF Tx)

ADXL335 연결

HT12E 인코더 연결

명령 매핑 (HT12E 데이터 핀 HIGH 시)

디지털 핀 HT12E 핀 명령
9 AD8 전진
10 AD9 후진
11 AD10 좌회전
12 AD11 우회전

수신부 회로 (Arduino UNO + Motor Shield + HT12D + RF Rx)

HT12D 디코더 연결

모터 쉴드 연결

소스 코드

송신부 (Arduino Nano)

int x_axis = 0, y_axis = 0;
const int forward = 9, backward = 10, right = 11, left = 12;

void setup() {
  pinMode(A0, INPUT);  // X축
  pinMode(A3, INPUT);  // Y축 (A1 사용 시 변경)
  pinMode(forward, OUTPUT);
  pinMode(backward, OUTPUT);
  pinMode(right, OUTPUT);
  pinMode(left, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  x_axis = analogRead(A0);
  y_axis = analogRead(A3);

  // 모든 출력 초기화
  digitalWrite(forward, LOW);
  digitalWrite(backward, LOW);
  digitalWrite(right, LOW);
  digitalWrite(left, LOW);

  // 임계값 기반 제스처 판별
  if (y_axis >= 390) {
    digitalWrite(forward, HIGH);
  } else if (y_axis <= 310) {
    digitalWrite(backward, HIGH);
  } else if (x_axis >= 380) {
    digitalWrite(right, HIGH);
  } else if (x_axis <= 320) {
    digitalWrite(left, HIGH);
  }
  // 중립 영역(320

수신부 (Arduino UNO + AFMotor 라이브러리)


#include 

AF_DCMotor motor_right(3);  // M3 단자
AF_DCMotor motor_left(4);   // M4 단자

int forward=0, backward=0, right=0, left=0;

void setup() {
  pinMode(A0, INPUT);  // HT12D D8 (전진)
  pinMode(A1, INPUT);  // HT12D D9 (후진)
  pinMode(A2, INPUT);  // HT12D D10 (우회전)
  pinMode(A3, INPUT);  // HT12D D11 (좌회전)
  Serial.begin(9600);
  motor_right.setSpeed(255);
  motor_left.setSpeed(255);
  motor_right.run(RELEASE);
  motor_left.run(RELEASE);
}

void loop() {
  forward = digitalRead(A0);
  backward = digitalRead(A1);
  right = digitalRead(A2);
  left = digitalRead(A3);

  if (forward == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(FORWARD);
  } else if (backward == HIGH) {
    motor_right.run(BACKWARD);
    motor_left.run(BACKWARD);
  } else if (right == HIGH) {
    motor_right.run(FORWARD);
    motor_left.run(RELEASE);   // 제자리 우회전
  } else if (left == HIGH) {
    motor_right.run(RELEASE);
    motor_left.run(FORWARD);   // 제자리 좌회전
  } else {
    motor_right.run(RELEASE);
    motor_left.run(RELEASE);
  }
  delay(100);
}

중요 설계 고려사항

  1. 전원 분리: 서보/모터 구동 전류가 크므로 아두이노 5V 레귤레이터와 별도 전원(9V 배터리 → 7805 또는 UBEC) 필수
  2. 주소 매칭: HT12E/HT12D의 A0~A7 핀 설정이 동일해야 통신됨 (모두 GND 권장)
  3. 안테나: RF 모듈 안테나 길이 17.3cm (λ/4, 433MHz) 직선으로 연장 시 수신 거리 향상
  4. 디바운싱: 가속도계 노이즈로 인한 진동 방지를 위해 임계값에 히스테리시스 적용 권장
  5. 모터 병렬 연결: 동일 측 모터 2개를 병렬로 연결하여 토크 증대, 단 모터 쉴드 채널당 전류 한계 확인 필요

확장 아이디어

  • MPU6050(자이로+가속도)로 교체하여 더 정교한 제스처 인식 (탭, 더블탭, 회전 등)
  • nRF24L01 또는 LoRa 모듈로 통신 거리/신뢰성 향상
  • 블루투스(BLE)로 스마트폰 앱 제어 추가
  • 초음파 센서 추가로 장애물 회피 자율 주행 기능 결합
  • 로봇 팔 제어로 확장 (3축 이상 제스처 매핑)

제조공정

  1. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  2. 아두이노 파워 컨트롤 센터: N-FET, P-FET, 릴레이 & RTC 키트
  3. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  4. 아두이노 우노로 자율 주행 라인 트레이서 로봇 만들기
  5. 아두이노 우노로 기초 계산기 만들기 - 쉬운 프로젝트
  6. 아두이노 릴레이 제어 가습기 자동화 – 고전압 안전 설계
  7. 아두이노 나노로 만드는 음성 제어 로봇 - 블루투스와 안드로이드 앱 활용
  8. 아두이노 우노와 ATtiny85로 만드는 휴대용 POV(잔상) 디스플레이
  9. 아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트