프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

코코캠 + 아두이노 사용하기

2021-11-15 11:25:15

 

 

오렌지보드와 연결하기

 

코코캠과 오렌지보드를 연결하여 아두이노IDE / 엠블럭5 를 이용해 코코캠을 사용해 봅시다.

 

 

회로 연결하기

 
코코캠과 오렌지보드는 UART 9600 / UART 115200 / I2C 3가지 통신 방법으로 통신이 가능합니다.
이 가이드에서는 I2C 통신 방법으로 연결하는 방법을 소개드립니다.(I2C 방법을 추천합니다.)
UART 통신 사용방법이 궁금하시면 아래 링크를 참고해주세요.
 

 

아두이노 연결(I2C)

 

 

 

코코캠 연결
+ 5V
- GND
R SCL
T SDA

 

 

 

 

 

코코캠 옆면 통신핀 연결부에 각 핀의 역할에 대한 표시가 있습니다.

표시를 확인하여 정확히 연결해야 코코캠이 정상적으로 동작합니다. 

 

 

 

실습하기

실습하기 앞서 위에 연결한 회로에 맞게 코코캠의 통신 설정을 바꿔주셔야 합니다.

 

환경 설정 -> 통신 설정 -> I2C

 

 

 

 

 

 

1. 스케치로 실습하기

 

스케치 코딩하기

 

라이브러리 설치

 

코코캠을 사용하려면 라이브러리가 필요합니다. 

아래 버튼을 이용하여 라이브러리를 다운 받으신 후 스케치 -> 라이브러리 포함하기 -> .ZIP 라이브러리 추가 메뉴를 이용하여 스케치에 라이브러리를 추가해준 후 아래 코드를 실행해줍니다.

 

 

 

 

소스 코드

 

 

 

 

결과

 

코코캠에 전원을 연결 하면 자동으로 마스크 인식 모드로 이동합니다.

 

 

마스크 인식 모드에서 주변에 마스크 착용한 얼굴을 인식시켜보고 마스크를 착용하지 않은 얼굴을 인식해 보면 인식 결과에 따라 LED에 불이 들어옵니다.

(착용 O = 녹색불 / 착용 X = 빨간불)

 

 

 

 

 

 

 

 

 

소프트웨어 코드 설명

cococam.begin(Wire)

 

코코캠과 아두이노를 I2C 통신으로 연결하기 위한 명령어입니다. 

 

 

cococam.writeAlgorithm(알고리즘 이름)

 

코코캠을 원하는 알고리즘으로 바꾸는 명령어입니다.

괄호안 이름에 맞게 코코캠의 알고리즘이 바뀝니다.

 

- 알고리즘 이름 목록

 

알고리즘 종류 알고리즘 이름
얼굴 인식 ALGORITHM_FACE_RECOGNITION
마스크 인식 ALGORITHM_MASK_RECOGNITION
사물 인식 ALGORITHM_OBJECT_RECOGNITION
사물 추적 ALGORITHM_OBJECT_TRACKING
색상 인식 ALGORITHM_COLOR_RECOGNITION
라인 추적 ALGORITHM_LINE_TRACKING
모델 학습 ALGORITHM_OBJECT_CLASSIFICATION
태그 인식 ALGORITHM_TAG_RECOGNITION
숫자 인식 ALGORITHM_DIGIT_RECOGNITION

 

 

 

cococam.request()

 

코코캠에 데이터 요청하는 명령어입니다.

이 명령어가 호출되어야 코코캠에서 아두이노로 결과 데이터를 보냅니다.

 

 

 

cococam.available() / cococam.read()

 

cococam.available() 명령어는 request로 코코캠에 데이터를 요청한 후 데이터가 들어왔는지 확인하는 명령어입니다.

결과는 True / False 로 나오며 결과가 True 면 cococam.read() 명령어를 통해 데이터를 받아올 수 있습니다.

 

* cococam.read() 명령어를 사용하기전에 꼭 cococam.available() 명령어를 사용하여 데이터가 들어왔는지 확인을 해봐야합니다.(아래 코드 참고)

 

  while (cococam.available()) {
    result = cococam.read();
    printResult(result);
  }

 

 

cococamResult 

 

cococamResult 는 코코캠에서 전달되는 결과 데이터 값들의 묶음입니다. 

cococamResult 안에 데이터를 불러오려면 뒤에 ".원하는데이터"를 붙여주면됩니다.

 

* 아래 코드는 cococamResult 에 있는 각 데이터들을 하나씩 출력하는 코드입니다.(위 예제에 있는 코드)

 

void printResult(cococamResult result) {
  if (result.command == COMMAND_RETURN_BLOCK) { //result is a block
    Serial.println(String() + F("Block:xCenter=") + result.xCenter
 + F(",yCenter=") + result.yCenter + F(",width=") + result.width + F(",height=")
 + result.height + F(",ID=") + result.ID);
  }
  else if (result.command == COMMAND_RETURN_ARROW) { //result is an arrow
    Serial.println(String() + F("Arrow:xOrigin=") + result.xOrigin
 + F(",yOrigin=") + result.yOrigin + F(",xTarget=") + result.xTarget
 + F(",yTarget=") + result.yTarget + F(",ID=") + result.ID);
  }
  else { //result is unknown.
    Serial.println("Object unknown!");
  }
}

 

cococamResult 안에 있는 데이터 종류

  - 결과 박스 중앙 x 좌표 / y 좌표 (xCenter / yCenter)

  - 결과 박스 넓이 / 높이 (width / height)

  - 결과 박스 ID값 (ID)

  - 결과 화살표 시작점 x 좌표 / y 좌표 (xOrigin / yOrigin)

  - 결과 화살표 도착점 x 좌표 / y 좌표 (xTarget / yTarget)

  - 결과 화살표 ID값 (ID)

 

 

 

 

2. 엠블록5로 실습하기

코코캠 학습하기

 

코코캠에 전원을 연결 후 컬러 인식 모드로 이동합니다.

 

컬러 인식 모드에서 아래 색상에 맞게 3개를 각각 학습한 후 각 색상에 따라 3색 LED가 학습한 색상에 맞게 바뀌는지 확인하시면 됩니다.

 

 

빨간색 = ID 1번

초록색 = ID 2번

노란색 = ID 3번

 

 

 

엠블럭5 코딩하기

 

코코캠 추가 블록 설치

 

 

엠블록 장치탭에서 확장 버튼을 선택해 줍니다.

* 장치에 오렌지보드가 선택되어야 합니다!

 

확장 목록 중 AI 코코캠을 추가해주시면 확정 블록이 나옵니다.

 

 

 

확장메뉴가 보이지 않으실 경우 아래 다운로드 버튼을 이용하여 확장 블록 파일을 다운 받으신 후 파일을 드래그하여 넣어주시면 자동으로 추가됩니다.

 

 

 

 

 

 

 

I2C 연결 코드

 

 

 

 

 

결과

 

업로드가 마무리되면 코코캠은 자동으로 컬러 인식 모드로 들어가게 됩니다.

위에서 학습한 색상이 인식되면 오렌지보드에 연결된 3색 LED의 색상이 바뀌게 됩니다.

 

 

ID = 1 일 때(빨간색 인식)

 

 

 

 

 

ID = 2 일 때(녹색 인식)

 

 

 

 

ID = 3 일 때(노란색 인식)

 

 

 

블록 설명

 

 

 

코코캠과 오렌지보드를 I2C 로 연결하는 블록입니다.

이 블록을 사용해야 오렌지보드와 코코캠이 연결됩니다.

 

 

 

 

코코캠의 알고리즘을 원하는 알고리즘으로 변경하는 블록입니다.

이 블록을 실행하면 지정한 알고리즘으로 코코캠에 화면이 넘어갑니다.

 

 

 

코코캠에 결과를 요청하고 전달된 결과를 받는 블록입니다.

엠블럭에서 결과에 따라 동작을 하기 위해서는 꼭 위 두 블럭을 같이 사용해야 합니다.

 

 

 

 

데이터 읽기 블록을 통해 데이터를 받은 후 받은 데이터를 활용하는 블록입니다.

현재 인식된 결과를 확인하거나 결과의 ID값을 확인하는 블록입니다. (박스 / 화살표)

* 박스 = x, y 좌표 / 박스 너비, 높이

* 화살표 = 시작점 x, y 좌표 / 끝점 x, y 좌표

 

 

 

지금까지 코코캠과 오렌지보드를 연결하고 사용하는 방법에 대해 간단히 살펴보았습니다.

 

코코캠과 함께 자신만의 인공지능 프로젝트를 자유롭게 구현해보세요!! 

 

 

kocoafab