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

아두이노 서보 제어 자동 모션 추적 카메라 베이스

부품 및 소모품

부품 수량 비고
아두이노 우노 1
커패시터 100µF 1 서보 모터 전원 서지 보호용
LED (일반) 5 PIR 센서별 상태 표시용
PIR 모션 센서 (일반, HC-SR501) 5 180도 범위 모션 감지용
저항 220Ω 5 LED 전류 제한용
서보 모터 (타워프로 MG996R) 1 카메라 베이스 회전용

프로젝트 소개

프로젝트 동기

집 보안 카메라 한 대가 두 방 사이의 벽에 설치되어 있어 한 번에 한 방만 볼 수 있었습니다. 반대쪽 방에 누군가 들어가면 카메라가 녹화하지 못하는 문제를 해결하고자, 모션 감지 시 자동으로 카메라 방향을 돌려주는 베이스 제작을 결심했습니다.

작동 원리

5개의 PIR 모션 센서로 180도 반경 내 움직임을 감지합니다. 모션 감지 시 서보 모터가 카메라 베이스를 해당 방향으로 회전시킵니다. 베이스 내부에는 5개의 LED 상태 표시등이 있어 각 PIR 센서 감지 시 해당 LED가 점등됩니다.

배선 가이드

LED 상태 표시등

미니 브레드보드로 LED 회로를 분리해 탈착 쉽게 구성했습니다. 각 LED는 서로 다른 PIR 센서에 대응하며, 아두이노 디지털 핀 9~13에 연결하고 220Ω 저항으로 그라운드 처리합니다.

PIR 모션 센서

HC-SR501 모델 사용. 각 센서를 아두이노 디지털 핀 2~6, 5V, GND에 연결합니다. 센서 커버를 조심스럽게 열면 핀 표시가 있습니다. 각 PIR 센서는 코드에서 대응하는 LED와 매핑됩니다.

서보 모터

서보 모터는 카메라가 놓일 스탠드에 부착해 카메라를 회전시킵니다. 모터 핀아웃에 따라 전원, 아두이노 디지털 핀 7, 그라운드 연결. 반드시 100µF 커패시터를 모터 전원과 그라운드 사이에 연결해 모터 구동 시 발생하는 전원 서지로부터 아두이노를 보호하세요.

참고: 모든 서보가 180도 풀 레인지를 지원하지 않습니다. 테스트 결과 MG996R은 약 160도만 움직여 코드 수정이 필요했습니다. 마지막 PIR 위치에서 모터가 갈리는 소리가 나면 움직이려는 각도가 한계를 넘은 것입니다.

구조물 제작

구형 메모렉스 CD 라벨러를 서보 하우징과 카메라 거치대로 재활용했습니다. 뒷면의 평평한 플라스틱 디스크가 카메라 받침대로 적합했고, 4개의 고무 발이 카메라 미끄러짐을 방지합니다.

아두이노 서보 제어 자동 모션 추적 카메라 베이스
CD 라벨러 분해 후 서보 장착

중심 검은 부품을 펜치로 분해하고, 드레멜로 베이스에 구멍을 뚫어 서보를 나사로 고정했습니다. 카메라 거치대에도 서보를 나사로 연결했습니다.

카메라 무게로 베이스가 기울어지는 문제를 골판지 실린더를 모터와 카메라 사이에 끼워 해결했습니다. 자유롭게 움직이면서 무게를 고르게 분산시킵니다.

아두이노 서보 제어 자동 모션 추적 카메라 베이스
PIR 센서 설치 및 회로 완성 후

여러 브레드보드를 사용해 베이스 내부에 깔끔하게 배치했고, 트러블슈팅과 확장에 유리했습니다. 완성 후 보이는 골판지 부분을 검정 스프레이로 도색해 일체감을 주었습니다.

아두이노 서보 제어 자동 모션 추적 카메라 베이스
최종 완성품

소스 코드

/*************************************************
 *** The Motion Following Motorized Camera Base ***
 *** by Lindsay Fox ***
 *************************************************/
#include <Servo.h>

Servo camServo;
int currentPIRposition = 0;
int LEDpin[] = {9,10,11,12,13};
int currentLEDpin = 9;
int PIRpin[] = {2,3,4,5,6};
int currentPIRpin = 2;
int PIRprevState[] = {1,1,1,1,1};
int PIRposition[] = {157,117.75,78.5,39.25,0}; // 서보 각도 (0-157도를 5개 센서로 균등 분할)
boolean PIRstatus;

void setup() {
  Serial.begin(9600);
  camServo.attach(7);
  for (int p = 0; p < 5; p++) pinMode(PIRpin[p], INPUT);
  for (int l = 0; l < 5; l++) pinMode(LEDpin[l], OUTPUT);

  // PIR 센서 캘리브레이션 (15초)
  Serial.print("Calibrating PIR Sensors ");
  for(int c = 0; c < 15; c++) { Serial.print("."); delay(1000); }
  Serial.println("PIR Sensors Ready");
  camServo.write(78.5); // 중앙 위치로 시작
}

void loop() {
  for (int PIR = 0; PIR < 5; PIR++) {
    currentPIRpin = PIRpin[PIR];
    currentLEDpin = LEDpin[PIR];
    PIRstatus = digitalRead(currentPIRpin);

    if (PIRstatus == HIGH) {
      digitalWrite(currentLEDpin, HIGH);
      if (PIRprevState[PIR] == 0) {
        if (currentPIRposition != currentPIRpin) {
          camServo.write(PIRposition[PIR]);
          Serial.print("Current angle: ");
          Serial.println(PIRposition[PIR]);
          delay(50);
          currentPIRposition = currentPIRpin;
        }
        PIRprevState[PIR] = 1;
      }
    } else {
      digitalWrite(currentLEDpin, LOW);
      PIRprevState[PIR] = 0;
    }
  }
}

주의: 아두이노 전원 투입 후 15초간 PIR 센서 캘리브레이션이 진행됩니다. 이 동안 방을 비워 센서가 빈 방 기준선을 잡도록 하세요.

제조공정

  1. 현대 카메라의 진화와 설계: 필름에서 디지털까지
  2. 정전기 손상 방지를 위한 최소한의 라즈베리 파이 인클로저
  3. 라즈베리 파이에서 PIR 모션 센서로 LED 제어하기
  4. 자바 & Reactive Blocks로 모션 감지 알람 시스템 – 라즈베리 파이 배포 및 SMS 전송
  5. 라즈베리파이, PIR 센서, MQTT로 만드는 모션 제어 AWS IoT 버튼
  6. 새집에 라즈베리 파이 카메라 설치하기 - 단계별 가이드
  7. BrickPi Bookreader: 라즈베리 파이와 레고 마인드스톰으로 킨들 독서 자동화
  8. Motion으로 라즈베리 파이 라이브 IP 카메라 구축하기 - 단계별 가이드
  9. 리니어 모션 기술: 자동화를 위한 정밀 솔루션
  10. NASA 랭글리 연구센터, 3D 컬러 이미징용 고급 플레옵틱 카메라 공개