OpenCV, Visual Basics C # 등과 같은 다른 프로그래밍이 아닌 단순히 Arduino를 사용하여 얼굴 추적 로봇 팔 또는 로봇 을 만들고 싶었던 적이 있습니까? 그런 다음이 프로젝트에서는 Arduino와 Android의 힘을 혼합하여 얼굴 감지를 구현할 것입니다. 이 프로젝트에서 모바일 카메라는 서보의 도움으로 얼굴과 함께 움직입니다. 여기 에서 Android 휴대 전화 를 사용할 때의 장점은 카메라 모듈에 투자 할 필요가없고 전체 이미지 감지 작업을 휴대 전화 자체에서 수행 할 수 있다는 것입니다.이 작업을 위해 Arduino를 컴퓨터에 연결할 필요가 없습니다. 여기에서는 Arduino와 Bluetooth 모듈을 사용하여 Mobile과 무선으로 통신했습니다.
이 프로젝트에 사용 된 Android 애플리케이션은 Processing Android를 사용하여 생성 되었습니다. APK 파일을 다운로드하여 애플리케이션을 직접 설치하거나 (링크는 추가 참조) 프로그래밍 캡을 씌우고 주어진 처리 코드를 사용하여 자신 만의 Android 애플리케이션을 더 매력적으로 만들 수 있습니다. 자습서에서 더 자세히. 이전 처리 프로젝트를 확인하여 처리에 대해 자세히 알아보십시오.
이 튜토리얼을 마치면 얼굴을 추적 하고 함께 움직일 수 있는 미니 틸트 및 스팬 로봇 팔을 갖게 됩니다. 이 기능을 사용하면 (더 발전하여) 동영상 블로그 동영상을 녹화하거나 휴대 전화 후면 카메라로 셀카를 찍을 수 있습니다. 얼굴이 모바일 화면 중앙에 정확히 위치하기 때문입니다. 그래서!! 흥미로운가요? 이 튜토리얼 끝에 있는 데모 비디오 를 확인하여 작동하는지 확인하십시오. 어떻게 빌드 할 수 있는지 봅시다…
저는이 프로젝트가 가능한 한 간단하게 작동하도록 최선을 다했습니다. 하드웨어 나 코딩에 대한 최소한의 지식 만 있으면 누구나이 가이드 라인을 사용하여이 프로젝트를 즉시 작동시킬 수 있습니다. 그러나 일단 당신이 그것을 만들면 나는 당신 이이 일을 어떻게하고 어떻게 작동하는지 실제로 알 수 있도록 코드 뒤에있는 것을 제안합니다.
필요한 재료:
- Arduino Nano
- 서보 모터 SG90 – 2Nos
- 괜찮은 카메라가 장착 된 안드로이드 폰
- HC-05 / HC-06 블루투스 모듈
- 프로그래밍 용 컴퓨터
- 3D 프린터 (옵션)
- 9V 배터리
필요한 부품 3D 프린팅 (옵션):
휴대폰을 팬 및 틸트하려면 모바일 홀더와 서보 브래킷 몇 개와 같은 기계 구조가 필요합니다. 카드 보드를 사용하여 만들 수 있습니다. 3D 프린터가 있으므로이 부품을 3D 인쇄하기로 결정했습니다.
3D 프린팅은 프로토 타입 프로젝트를 구축하거나 새로운 기계 설계를 실험 할 때 많은 기여를 할 수있는 놀라운 도구입니다. 3D 프린터의 이점이나 작동 방식을 아직 찾지 못했다면 3D 프린팅 초보자 가이드를 읽어보십시오.
3D 프린터를 소유하고 있거나 액세스 할 수있는 경우 여기에서 다운로드 할 수있는 STL 파일을 사용하여 직접 인쇄하고 조립할 수 있습니다. 그러나 휴대폰 홀더와 같은 일부 부품은 휴대폰 크기에 따라 약간의 수정이 필요할 수 있습니다. 내 MOTO G 휴대폰 용으로 설계했습니다. 나는 모든 부품을 인쇄하기 위해 매우 기본적인 프린터를 사용했습니다. 이 프린터는 3ding의 FABX v1으로 10 입방 cm의 인쇄 볼륨으로 저렴한 가격으로 제공됩니다. 저렴한 가격에는 낮은 인쇄 해상도와 SD 카드 또는 인쇄 재개 기능이없는 절충안이 있습니다. STL 파일을 인쇄하기 위해 Cura라는 소프트웨어를 사용하고 있습니다. 자료를 인쇄하는 데 사용한 설정은 다음과 같습니다. 동일하게 사용하거나 프린터에 따라 변경할 수 있습니다.
필요한 재료를 모두 인쇄하면 나사와 뜨거운 접착제를 사용하여 제자리에 고정 할 수 있습니다. 조립이 완료되면 아래와 같이 보일 것입니다.
회로도 및 하드웨어:
스마트 폰 프로젝트 의이 얼굴 추적을 위한 회로는 아래 이미지에 나와 있습니다.
회로는 두 개의 서보 모터로 구성 되며, 그중 하나는 휴대폰을 왼쪽 / 오른쪽으로 이동하는 데 사용되고 다른 하나는 휴대폰을 위 / 아래로 기울이는 데 사용됩니다. 서보가 이동해야하는 방향은 Bluetooth (HC-05) 모듈에서 정보를 가져 오는 Arduino Nano에 의해 지시됩니다. 전체 회로는 9V 배터리로 전원이 공급됩니다.
이 회로는 브레드 보드에 쉽게 연결할 수 있으며 여기에서 한 것처럼 작은 Perf 보드에 납땜 할 수도 있습니다.
Android 애플리케이션 설정:
앞서 말했듯이,이 프로젝트의 주요 두뇌는이 Android 애플리케이션입니다. 이 Android 애플리케이션은 Processing Android를 사용하여 개발되었습니다. 이 응용 프로그램을 휴대폰에 직접 설치하고 아래 단계에 따라 실행할 수 있습니다.
- 여기에서 APK 파일을 다운로드하십시오.
- 위에 표시된 회로의 전원을 켭니다.
- 휴대폰 설정에서 "HC-05"라는 이름의 Bluetooth 모듈을 검색합니다.
- "HC-05"가 아닌 다른 이름을 지정한 경우에만 응용 프로그램이 작동하므로 HC-05로 다시 변경하십시오.
- 암호 "1234"또는 "0000"으로 Bluetooth 모듈과 페어링합니다.
- 이제 세로 모드에서 응용 프로그램을 시작하십시오. 카메라 화면과 화면 상단에 "연결 대상: HC-05"가 표시되어야합니다.
- 얼굴 위로 카메라를 움직이면 그 위에 녹색 상자가 나타나고 그 위치도 아래와 같이 화면 왼쪽 상단 모서리에 표시됩니다.
이 취할 수 아두 이노 얼굴 추적 프로젝트 는 코드에 자신의 안드로이드 응용 프로그램이 필요하지 않은 발전의 많이 가져 와서 다음 단계로. Android 애플리케이션을 만드는 것이 어려울 수 있지만 Processing의 도움으로 저를 믿으십시오. 즉시 배울 수 있습니다. 이 애플리케이션을 빌드하는 데 사용되는 전체 처리 코드는 여기에서 다운로드 할 수 있습니다. 당신은 자신의 창의력으로 어떤 발전도 자유롭게 할 수 있습니다. 처리에 대해 자세히 알아 보려면 아래 프로젝트를 확인하십시오.
- Arduino 및 프로세싱을 사용하는 가상 현실
- Arduino를 사용한 탁구 게임
- 프로세싱을 사용하는 스마트 폰 제어 FM 라디오.
- 프로세싱 및 초음파 센서를 사용한 Arduino 레이더 시스템
Arduino 프로그래밍:
Android 애플리케이션은 화면에서 얼굴과 위치를 감지합니다. 그런 다음 얼굴이 화면 중앙에 오도록 얼굴의 위치에 따라 이동해야하는 방향을 결정합니다. 이 방향은 Bluetooth 모듈을 통해 Arduino로 전송됩니다.
이 프로젝트의 Arduino 프로그램은 매우 간단합니다. Bluetooth 모듈에서받은 값을 기반으로 두 서보 모터의 방향을 제어하기 만하면됩니다. 전체 코드는 이 튜토리얼의 끝에서 찾을 수있다, 나는 또한 아래의 몇 가지 중요한 내용을 설명했다.
아래 코드 줄은 핀 D12를 RX로, D11을 TX로 직렬 연결을 설정합니다. 따라서 핀 D12는 BT 모듈의 TX에 연결되고 핀 D11은 BT 모듈의 RX에 연결되어야합니다.
SoftwareSerial cam_BT (12, 11); // RX, TX
그런 다음 Bluetooth 모듈을 9600의 전송 속도로 초기화했습니다. 모듈도 동일한 전송 속도에서 작동하는지 확인하십시오. 그렇지 않으면 그에 따라 변경하십시오.
cam_BT.begin (9600); // Baudrate 9600에서 Bluetooth 통신 시작 cam_BT.println ("Ready to take commands");
아래 줄은 Bluetooth 모듈을 통해 들어오는 내용을 읽습니다. 또한 데이터는 "BluetoothData"변수에 저장됩니다.
if (cam_BT.available ()) // 블루투스를 통해 들어오는 내용 읽기 {BluetoothData = cam_BT.read (); Serial.print ("BT에서 수신:"); Serial.println (BluetoothData); }
블루투스에서 수신 된 데이터를 기반으로 모터 방향이 제어됩니다. 모터를 왼쪽으로 돌리기 위해 모터는 이전 위치에서 값 2만큼 감소합니다. 팔을 더 빨리 움직여야하는 경우이 값을 2에서 4 또는 6으로 늘릴 수 있습니다. 그러나 카메라가 불안정하게 만들 수 있습니다.
if (BluetoothData == 49) // 왼쪽으로 돌리기 {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // 우회전 {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // 켜기 {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // 끄기 {pos2 + = 2; servo2.write (pos2);}
일:
하드웨어, 코드 및 Android 애플리케이션이 준비되면 조치를 취할 시간입니다. Arduino에 전원을 공급하고 Android 애플리케이션을 열기 만하면됩니다. 응용 프로그램은 자동으로 HC-05 (HC-05 이름이어야 함) Bluetooth 모듈에 연결되고 얼굴이 감지 될 때까지 기다립니다. 휴대폰 홀더에 휴대폰을 넣고 그 앞에 앉기 만하면됩니다. 얼굴이 화면 중앙에 오도록 서보 모터가 전화기를 움직이는 것을 확인해야합니다. 이제 카메라 범위 내에서 이동하면 휴대폰이 사용자의 움직임을 따라갑니다. 사진을 배치하고 이동하여 시도 할 수도 있습니다.
프로젝트의 전체 작업은 아래 비디오에 나와 있습니다. 많이 만들 수 있습니다