Android 13 컨트롤러

이 페이지에서는 센서 퓨전 테스트 장비의 움직임과 ITS-in-a-box의 조명을 제어하는 Android 13 컨트롤러를 조립하는 방법을 설명합니다. 센서 퓨전 테스트는 호환성 테스트 모음(CTS)의 카메라 이미지 테스트 모음(카메라 ITS)의 일부입니다. Android 13 컨트롤러는 이전 컨트롤러 버전에 비해 조립이 쉽고 비용을 절감하도록 설계되었습니다. 추가적인 이점은 전자제품과 서보 간의 전원 공급 장치가 분리되고 단일 컨트롤러로 최대 3개의 서보와 3개의 조명을 제어한다는 점입니다.

Android 13 컨트롤러 개요

테스트 장비의 서보 및 조명 제어

센서 퓨전 테스트 장비는 재현 가능한 테스트를 위해 고정된 휴대전화 모션을 제공합니다. 다양한 위치에서 휴대전화를 이용해 이미지를 캡처할 수 있도록 격자무늬 타겟 앞에서 휴대전화가 회전합니다. test_sensor_fusion의 경우 서보는 약 2초간 휴대전화를 카메라 중심축에서 90도 회전시켰다가 제자리로 되돌립니다. test_video_stabilization의 경우 서보는 걸으면서 동영상을 찍을 때 휴대전화의 움직임을 모방하도록 휴대전화를 반복적으로 카메라 중심축에서 10도 회전시켰다가 제자리로 되돌립니다. 그림 1은 센서 퓨전 테스트 장비에서 이동하는 휴대전화 2대를 보여줍니다. 그림 2는 센서 퓨전 테스트 장비에서 이동하는 휴대전화 1대를 보여줍니다.

ITS-in-a-box는 테스트 태블릿과 테스트 휴대전화 간의 거리가 고정된 일관된 테스트 환경을 제공하며 외부 광원 없이 일관된 조명도 제공합니다. test_auto_flash의 경우 테스트 휴대전화에서 자동 플래시 기능을 트리거하려면 조명이 꺼진 어두운 환경이 필요합니다. 그림 3은 Android 13 컨트롤러에서 ITS-in-a-box의 조명을 껐다 켜는 모습을 보여줍니다.

테스트 장비에서 휴대전화 이동

그림 1. test_sensor_fusion의 경우 테스트 장비에서 휴대전화 이동

테스트 장비에서 휴대전화 이동

그림 2. test_video_stabilization의 경우 테스트 장비에서 휴대전화 이동

ITS-in-a-box 내 조명 제어

그림 3. test_auto_flash의 경우 조명 껐다 켜기

서보 모터 제어

테스트 장비의 아날로그 서보 모터는 펄스 폭 변조(PWM)를 사용하여 제어되는 위치 서보입니다. 그림 3은 일반적인 위치 제어 예를 보여줍니다. 제어 신호 주기는 20밀리초입니다. 펄스 폭을 최소 너비로 하면 모터가 중립 위치로 이동하고 펄스 폭을 최대 너비로 하면 모터가 시계 방향으로 180도 이동합니다.

서보 제어 설명

그림 4. 일반적인 서보 제어 설명

동영상 튜토리얼

다음은 Android 13 컨트롤러를 설정하는 방법에 관한 동영상 튜토리얼입니다.

업데이트 기록

다음 표에는 카메라 ITS WFoV 장비의 업데이트 기록이 설명되어 있으며 프로덕션 파일의 각 버전에 대한 다운로드 링크가 포함되어 있습니다.

날짜 버전 프로덕션 파일 다운로드 변경 로그
2022년 12월 1.1
  • EasyEDA에서 채워진 PCB 보드를 주문하는 옵션 추가
  • 서보를 Arduino 마이크로 코드로 이동한 후 허위 지연 삭제
  • 스탠드오프를 금속에서 나일론으로 변경
  • 스루홀 MOSFETS를 표면 장착 MOSFETS로 변경
  • 콘덴서를 10uF에서 1,000uF로 변경
2022년 3월 1
  • 조명 제어 기능을 추가
  • 서보 제어 6개에서 조명 3개 및 서보 제어 3개로 변경

Android 13 컨트롤러 구현

호스트 컴퓨터를 통해 서보 모터 모션과 조명을 제어하려면 센서 퓨전 테스트 장비에 USB를 연결해야 합니다. Android 13 컨트롤러는 맨 위에 맞춤 라우팅 보드(또는 실드)가 마운트된 USB 연결 Arduino UNO R3 보드를 사용합니다. 이 2계층 실드는 오픈소스로 제공되는 온라인 PCB 설계 도구로 설계되었으며 https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated에서 사용할 수 있습니다. 맞춤 라우팅 실드의 상단 및 하단 뷰는 그림 5와 6에 표시되어 있습니다.

맞춤 라우팅 실드 상단 뷰

그림 5. 맞춤 라우팅 실드(상단 뷰)

맞춤 라우팅 실드 상단 뷰

그림 6. 맞춤 라우팅 실드(하단 뷰)

Android 13 컨트롤러는 단일 호스트 컴퓨터로 최대 3개의 센서 퓨전 장비와 3개의 ITS-in-a-box를 제어할 수 있습니다. 상단 뷰는 중심축을 따라 3핀 모터 헤더 3개를 마운트하고 3개의 LED 전원 잭을 마운트하기 위한 실크스크린 윤곽선을 보여줍니다. 하단 뷰는 UNO와 연결하는 데 필요한 4핀 및 8핀 헤더 연결, 5V 전원 잭, 10uF 우회 콘덴서의 실크스크린 윤곽선을 보여줍니다.

서보와 조명 전류를 분리하기 위해 외부 5V 잭을 통해 서보 전원이 공급됩니다. UNO 전자제품은 USB 커넥터를 통해 별도로 구동되며 두 보드 간에 전력은 공유하지 않습니다. 컨트롤러에 전원을 연결할 때 혼란을 피하고자 UNO에 있는 기존의 외부 전원 잭은 사용하지 않으며 인클로저 디자인으로 가려집니다.

Android 13 컨트롤러에 연결된 조명 전원 및 12V 충전기

그림 7. Android 13 컨트롤러에 연결된 조명 및 12V 전원

조명 전원의 배럴 크기에 따라 필요한 경우 어댑터를 사용합니다.

3.5mm x 1.35mm 수 플러그-5.5mm x 2.1mm 암 잭 변환기

그림 8. 조명 전원을 컨트롤러에 연결하는 어댑터

Android 13 컨트롤러 조립

재료명세서(BOM)

수량 설명 PN/링크
1 1.6mm 두께 CameraITS Arduino 실드 https://oshwlab.com/leslieshaw1023/cameraits_arduino_shield_populated
1 Arduino UNO R3 https://store.arduino.cc/usa/arduino-uno-rev3
6 2.1x5.5mm, 5V 스루홀, 직각 배럴 잭 101179
2 35V, 10%, 10uF 탄탈룸 콘덴서 2290863
2 50V, 5%, 100pF 세라믹 1206 마운트 콘덴서 12065A101JAT2A
3 1kΩ, 표면 마운트 저항기 CRCW08051K00FKEAC
3 전력 MOSFET RFP30N06LE
3 1x3x, 100mil(2.54mm) 피치, 스루홀 수 헤더 732-5316-ND
1 1x8x, 100mil(2.54mm) 피치, 스루홀 수 헤더 732-5321-ND
1 1x4x, 100mil(2.54mm) 피치, 스루홀 수 헤더 732-5317-ND
3 11mm 암-암 나일론 스탠드오프(너비 5mm, M3-0.5 나사산) 92319a317
4 6mm 수-암 나일론 스탠드오프(너비 5mm, M3-0.5 나사산) 95783a004
3 M3-0.5 6mm 팬 헤드 나일론 나사 92492A716
4 M3-0.5 8mm 접시머리 머신 나사 XM2510008A20000
2 M3-0.5 6mm 접시머리 머신 나사 XM2510006A20000
6 4번, 1/2in 둥근머리 판금 나사 90925A110
1 5V, 15W UL 규격 전원 공급 장치, 2.1x5.5mm 플러그(모터) KSAS0180500300VU-VI
1 12V, 60W UL 규격 전원 공급 장치, 2.1x5.5mm 플러그(조명) GSM60A12-P1J

기타 필요한 도구

  • 납땜 인두, 땜납, 납흡입기
  • 소형 Phillips 헤드 스크루드라이버
  • 크기가 T10인 별드라이버

라우팅 보드 채우기

라우팅 보드의 상단과 하단을 윤곽선에 맞춘 부품으로 채웁니다. 보드 하단의 경우 Arduino 보드의 올바른 위치에 헤더를 배치하고 커넥터 상단에 라우팅 보드를 배치하여 수 헤더를 정렬할 수 있습니다. 그런 다음, Arduino와 라우팅 보드가 적절하게 정렬되도록 1x8과 1x4 헤더를 납땜하면 됩니다. 전원 잭에서도 동일한 작업을 실행할 수 있지만, 전원 잭은 조립 후 Arduino에 고정되지 않으므로 shim을 단단히 조립해야 합니다. 우회 콘덴서를 납땜한 후, 모터 제어용 1x3 수 헤더 6개로 보드 상단을 채우면 됩니다. 모터 마운트에 최대 공간을 확보하기 위해 커넥터의 스냅 하단이 모터를 향하도록 헤더의 방향이 설정되어 있어야 합니다.

모든 구성요소가 제자리에 납땜되면 스탠드오프와 나사를 사용하여 시스템을 조립할 수 있습니다. Arduino와 플라스틱 인클로저 하단부 사이에 기계적 안정성을 제공하는 4개의 수-암 6mm 스탠드오프가 있습니다. 하지만, Arduino의 한 구멍(SCL 핀 근처의 것)이 Arduino의 암 헤더에 가까워서 사용할 수 없으므로 Arduino와 맞춤 실드 사이에는 3개의 11mm 암-암 스탠드오프만 있습니다. Arduino에 스탠드오프를 고정하기 위해 세 개의 수-암 스탠드오프에 세 개의 암-암 스탠드오프를 나사로 고정합니다. 그런 다음, 라우팅 보드 실드를 3개의 M3 나사로 스탠드오프에 연결합니다. 그림 9는 Arduino 실드를 도식으로 보여줍니다.

Arduino 실드 도식

그림 9. Arduino 실드 도식

컨트롤러 인클로저

컨트롤러에는 맞춤 인클로저가 포함되어 있습니다. 조립된 컨트롤러는 4개의 카운터싱크 나사로 인클로저 하단 플레이트를 거쳐 인클로저에 마운트합니다. 6개의 둥근머리 나사와 2개의 접시머리 나사를 사용하여 인클로저를 조립합니다. 서보 및 5V 외부 전원 공급 장치와 같은 관련 정보를 플라스틱 상단에 새깁니다. 그림 10은 조립된 인클로저 내에 있는 컨트롤러의 이미지를 보여줍니다.

인클로저에 조립된 시스템

그림 10. 인클로저에 채워진 실드 및 조립된 시스템

호스트에서 소프트웨어 제어

마이크로 코드를 UNO에 다운로드하여 PWM 핀을 모터 신호에 할당하고 다양한 각도에 맞는 펄스 폭 범위를 정의할 수 있습니다. 6개의 HS-755MB 모터의 서보 회전 제어용 마이크로 코드는 기타 리소스에 포함되어 있습니다. 이 섹션에는 서보를 회전하는 rotator.py라는 간단한 프로그램 링크도 포함되어 있습니다.

Android 13 컨트롤러 사용

카메라 ITS 사용:

python tools/run_all_tests.py device=device_id camera=0 rot_rig=arduino:1 scenes=sensor_fusion

포함된 테스트 스크립트 사용:

python rotator.py --ch 1 --dir ON --debug

이전 컨트롤러 및 호환성

버전 2 컨트롤러 및 버전 1 컨트롤러(그림 11 및 12 참고)는 Android 13과 호환되지 않으며 test_preview_stabilization, test_video_stabilization, test_auto_flash를 지원하지 않습니다. 흔들림 보정과 조명 제어에 필요한 미세한 움직임을 허용하지 않기 때문입니다.

버전 2 Arduino 컨트롤러

그림 11. 버전 2 Arduino 컨트롤러

인클로저에 조립된 시스템

그림 12. Cana 키트 컨트롤러

기타 자료

기계 도면 다운로드

소프트웨어 제어 다운로드