1. MediaPipe

 MediaPipe란 구글에서 제공하는 AI 프레임워크로서, 비디오형식 데이터를 이용한 다양한 비전 AI 기능을 파이프라인 형태로 손쉽게 사용할 수 있도록 제공된다.  AI 모델개발 및 수많은 데이터셋을 이용한 학습도 마친 상태로 제공되므로 라이브러브 불러 사용하듯이 간편하게 호출하여 사용하기만 하면 되는 형태로 비전 AI 기능을 개발할 수 있다.   

 

 

MediaPipe

End-to-end acceleration Built-in fast ML inference and processing accelerated even on common hardware Build once, deploy anywhere Unified solution works across Android, iOS, desktop/cloud, web and IoT Free and open source Framework and solutions both under

mediapipe.dev

 

2. 제공되는 비전AI 솔루션들 

기본적인 얼굴인식 이외에도 Pose 인식 등 다양한 비전AI 기능들이 제공되는데 사용할 수 있는 비전 AI 솔루션들은 다 다음과 같다.  

 

3. 다양한 개발환경 및 언어 지원 

 

통상의 C++이나 Python언어 이외도 안드로이드나 iOS 등 모바일 프로그램 개발에 활용할 수 도 있고, JavaScript를 이용하여 Web 페이지 형태로 구현할 수도 있다.  

 

  Android iOS C++ Python JS Coral
Face Detection
Face Mesh  
Iris      
Hands  
Pose  
Holistic  
Selfie Segmentation  
Hair Segmentation        
Object Detection    
Box Tracking      
Instant Motion Tracking          
Objectron    
KNIFT          
AutoFlip          
MediaSequence          
YouTube 8M          

 

4. 오픈소스 및 다양한 자료 제공 

 

MediaPipe는 오픈소스 프로젝트로서 소스가 공개되기 때문에 원하는 부분을 수정하여 추가 개발할 수도 있다 

 

GitHub - google/mediapipe: Cross-platform, customizable ML solutions for live and streaming media.

Cross-platform, customizable ML solutions for live and streaming media. - GitHub - google/mediapipe: Cross-platform, customizable ML solutions for live and streaming media.

github.com

 

 

또한 솔루션 별로 상세한 기술자료 및 예제 등이 풍부하게 제공되고 있다.    

 

 

또한 학습모델을 범위나 용도별에 따라 구분하여 사용할 수 있도록 Lite,full,Heavy 등으로 구분하여 제공되기 때문에 각자 환경이나 목적에 따라 적정한 모델을 골라 쓰기만 하면 된다.    

 

1. HM-10 

 

HM-10 모듈은 블루투스 4.0 저전력 BLE( Bluetooth Low Energy )을 지원하는 신형 블루투스 통신 모듈이다. 

블루투스 BLE는 클래식 블루투스 통신에 비해 통신가능 범위나 통신채널 수 등에 강점이 있는 것은 아니고 저전력으로 다양한 소형 전자기기들을 지원하기 위한 용도로 개발된 것으로  용도에 적당한 지 판단하여 사용한다. 

 

2. HM-10 specs

  • +2.5v to +3.3v
  • Requires up to 50mA
  • Uses around 9mA when in an active state
  • Use 50-200uA when asleep
  • RF power: -23dbm, -6dbm, 0dbm, 6dbm
  • Bluetooth version 4.0 BLE
  • Default baud rate pre firmware V700 is 9600
  • Default baud rate firmware V700 and up is 115200
  • Default PIN is 000000
  • Default name is HMSoft
  • Based on the CC2540 or the CC2541 chip

3. 사용방법 

HM-10 블루투스 모듈의 핀배치나 아두이노와의 연결방법은 HC-06 클래식 모듈과 동일하고 아두이노에서 연결 사용하는 방법도 SoftwareSerial 방식의 사용방법도 거의 동일하다. 그러나 통신사양이 다르므로 HM-10과 HC-06과는 통신할 수 없으며 통신대상이 안드로이드일 경우 안드로이드 V4.3 인 경우에 사용할 수 있고, 아이폰의 경우 BLE 방식만 지원하기 때문에 이 신형 HM-10모듈을 이용해야 한다.  

 

HM-10 블루투스 모듈의 AT명령은 HC-06에 비해 확장되었으나 판매되는 호환 기종의 종류가 많아 실제 사용할 수 있는 AT명령어 범위는 조금씩 다르다. 사용 가능한 AT명령어 종류는 AT+HELP 명령으로 리스트로 확인하고 실제 명령이 실핸되는지 확인해야 한다. 

 

 

4.유사기종 

HM-10과 유사한 HM시리즈는  다음과 같고 동일한 HM-10 모듈도 여러 제조사에서 호환기종으로 제작하여 판매하고 있다.  

 

 

1. HC-06 모듈 

 

 HC-06모듈은 블루투스 2.0기반의  통신을 위해 가장 흔하게 사용되었던 통신모듈이다. WIFI 등 더 빠른 통신 방법도 있고 블루투스 4.0 BLE를 사용하면 저전력으로 통신을 할 수 도 있지만, HC-06 모듈은 가장 흔한 만큼 가격도 싸고 범용성이 있다는 장점 때문에 특별한 이유가 없다면 프로젝트 구성시 기본적으로 많니 사용하는 모듈이다.

 

 

2. HC-06 사양 

 

  • 동작전압 : 3.6~6V
  • 소모전류 : 40mA
  • 통신방식 : Serial (UART)
  • 제어방식 : AT-Command
  • 블루투스 사양 : Bluetooth V2.0 Protocol Standard
  • 파워 레벨 : Class2(+6dBm) - 통신 거리 10m
  • RF 대역 : 2.4GHz ~ 2.48GHz, ISM Band
  • 수신감도 : -80dBm

3. HC-06 핀배열 

 

 4개 또는 6개의 입출력핀이 배열되어 있는데 통상 VCC,GND,TXD,RXD 4개의 핀만을 주로 사용한다.

 

  -KEY(or EN) : HC-06 모드 선택핀
     . High : AT Command mode
     . LOW or NC : Normal mode
  -RXD : 3.3V 레벨 시리얼 수신 (Default 9600bps)
  -TXD : 3.3V 레벨 시리얼 송신 (Default 9600bps)
  -GND : 그라운드 연결
  -VCC : +3.3 ~ 6V 전원 연결
  -Status : 보드 상태 출력핀으로, 보통 상태 LED와 연결되어 있음

 

4. AT 모드명령어  

모듈의 이름을 지정하거나 통신속도 지정 등 블루투스 모듈에 관한 기본 정보의  세팅은 AT 모드에 진입해서 전용 AT모드 명령어로 할 수 있는데 대표적인 명령어는 다음과 같다. 

 

Sent Receive 참고
AT OK 통신 테스트
AT+BAUD1 OK1200 통신속도 변경(1200)
AT+BAUD2 OK2400 통신속도 변경(2400)
AT+BAUD3 OK4800 통신속도 변경(4800)
AT+BAUD4 OK9600 통신속도 변경(9600기본)
AT+BAUD5 OK19200 통신속도 변경(19200)
AT+BAUD6 OK38400 통신속도 변경(38400)
AT+BAUD7 OK57600 통신속도 변경(57600)
AT+BAUD8 OK115200 통신속도 변경(115200)
AT+NAMEname OKsetname name은 원하는 이름 변경

 

5. 샘플프로그램   

 

#include <SoftwareSerial.h>

SoftwareSerial hc06(2,3);

void setup(){
  //Initialize Serial Monitor
  Serial.begin(9600);
  Serial.println("ENTER AT Commands:");
  //Initialize Bluetooth Serial Port
  hc06.begin(9600);
}

void loop(){
  //Write data from HC06 to Serial Monitor
  if (hc06.available()){
    Serial.write(hc06.read());
  }
  
  //Write from Serial Monitor to HC06
  if (Serial.available()){
    hc06.write(Serial.read());
  }  
}

 

HC-06 모듈간은 블루투스 통신을 하지만 HC-06에 연결되어 있는 아두이노와는 시리얼통신을 하게 된다. 아두이노의 자체 시리얼포트는 프로그램 업로드 등 다른 목적으로 사용되므로 HC-06모듈과는 별도의 softwareSerial 방식을 사용한다. 

+ Recent posts