Copyright (C) 커널연구회 (www.kernel.bz)문서작업: 정재준(rgbi3307 골뱅이 nate.com)문서위치 메인(출처): http://www.kernel.bz/SmartPrince아래 내용은 누구나 사용할 수 있습니다.단, 저자정보는 지우지 말고 공유하시고 출처를 기입해 주시기 바랍니다. 커널연구회에서 개인용 머신러닝로봇 만들기로 진행하는 SmartPrince(똑똑한왕자) 시리즈는 커널연구회에서 제작한 9개의 모듈들에 머신러닝 알고리즘을 탑재하는 오픈플랫폼, 오픈소스 프로젝트이다. 각각의 모듈들은 독립된 형태로 동작할 수도 있고, 라즈베리파이 및 아두이노 호환 핀맵에 모듈들을 적층으로 쌓아서 한꺼번에 병렬로 동작시킬 수도 있다. 모듈에 있는 USB에 시리얼통신 명령어(AT Command)를 전송하여 모듈들을 제어한다. PCB 보드 모듈들은 아래 블록도처럼 9개가 서로 연결된다. 전원(POWER), 스위칭(SWITCH), 무선통신(ESP32), 센서(SENSOR), 모터(MOTOR), 카메라(CAMERA), 사운드(VOICE), 메인(MAIN) 그리고 아두이노(ARDUINO) 모듈들이 각각 자기 역할을 수행하면서 내부 임베디드 데이터 통신 인터페이스(SPI, I2C, UART, GPIO, 인터럽트)들로 서로 연결된다. SmartPrince 메인(MAIN) 모듈은 Cortex-A 프로세서가 탑재되어 있는 라즈베리파이3와 최근에 산업용으로 출시된 라즈베리파이 CM3 모듈을 사용하고, 전원(POWER), 센서(SENSOR), 모터(MOTOR) 모듈은 Cortex-M0 프로세서(STM32F0)를 탑재하여 장치들을 제어한다. 무선통신(ESP32) 모듈은 가격이 아주 저렴하면서도 여러가지 I/O 핀들을 보유하고 있는 ESP32와 ESP8266 프로세서를 사용하고, 카메라(CAMERA)와 사운드(VOICE)는 멀티미디어 데이터를 고속으로 처리해야 하므로 Cortex-M4 프로세서를 탑재한 STM32F4를 사용하여 영상과 사운드 데이터를 인코딩/디코딩 한다. 각각의 모듈들마다 USB 시리얼 포트가 있어서 이곳에 시리얼통신 명령어(AT Command)를 전송하여 모듈들의 동작을 쉽게 제어할 수 있다. 아래 블록도는 SmartPrince의 회로 연결 블록을 간략화하여 설명하는 것이다. 모듈마다 프로세서(CPU)를 탑재하고 있으므로 데이터를 모듈별로 독립적으로 처리하고 그 결과를 내부 데이터통신 인터페이스인 SPI, I2C, UART, GPIO, 인터럽트 등으로 교환하는 병렬처리 구조로 동작한다. 그리고 대중적으로 아두이노를 많이 사용하고 있으므로 PCB 보드와 연결하는 핀들은 아두이노 핀맵과 호환이 되도록 설계했다. 특별히, 전원(POWER) 스위칭(SWITCH) 보드가 안정적으로 동작할 수 있도록 설계에 많은 노력을 기울였다. 전원은 외부에서 12V 어댑터를 통하여 공급하고, 보드에 장착되어 있는 배터리를 충전할 수 있다. 전원은 외부 12V 어댑터와 배터리 전원을 모두 사용할 수 있다. 전원은 B01_SmartPower 모듈에서 전원을 관리하고 각각의 모듈들에 전원을 공급한다. 아래 그림은 이것을 블록도로 설명하는 것이다. 위의 블록도에서 주황색은 12V 연결선이고 적색은 5V 연결선이다. 이 전원들은 B01_SmartPower 모듈에서 모두 공급되고 각각의 모듈에 공급되는 전원은 B01_SmartPower 모듈에 있는 Cortex-M0에서 스위칭(공급/차단)할 수 있도록 설계했다. 예를들면, SENSOR와 CAMERA 모듈에 공급되는 12V와 5V 전원을 ON/OFF하고자 한다면 B01_SmartPower 모듈에서 T2 신호를 HIGH/LOW로 출력하면 된다. 같은 방법으로 VOICE 모듈에 공급하는 5V 전원을 ON/OFF하고자 한다면 B01_SmartPower 모듈에서 T3 신호를 HIGH/LOW로 제어하면 된다. 또한 MOTOR 모듈에 공급하는 12V 전원을 ON/OFF하고자 한다면 B01_SmartPower 모듈에서 T4 신호를 HIGH/LOW로 제어하면 된다. 제어는 시리얼 통신에서 AT 명령으로 동작된다. 이렇게 전원을 제어하면 활동해야 하는 모듈에만 전원을 공급하고 쉬고 있는 모듈에는 전원을 차단함으로써 배터리 소모량을 효율적으로 줄일 수 있다. 배터리는 리튬폴리머 3.7V(1500mA)를 직렬로 연결하여 7.4V 전압이 출력되고, 외부에서 12V 어댑터를 연결하면 자동으로 충전된다. 또한 B01_SmartPower 모듈에 전류 감지 센서를 내장시켜서 전류 소모량을 Cortex-M0의 ADC 포트를 통하여 모니터링할 수 있고, B01_SmartPower 보드에 온도 감지 센서가 있어서 보드 표면 온도가 40도 이상 올라가면 배터리 충전을 정지하여 배터리를 보호하도록 설계했다. 그리고 B01_SmartPower 모듈에 RTC 배터리(3V 코인셀 배터리)를 장착하여 Cortex-M0에서 현재 시간을 항상 유지하여 실제 시간에 따른 동작을 정확하게 할 수 있도록 했다. 커널연구회(www.kernel.bz) SmartPrince 소개 동영상 아래 부터는 9가지 모듈들을 간략히 요약한 것이다. 커널연구회에서 제작한 개인용 머신러닝로봇을 위한 9가지 종류 모듈의 프로젝트 명칭은 SmartPrince 이다. 오픈플랫폼, 오픈소스로 진행하고 9가지 모듈을 조립하여 완성한다. 아두이노, ARM Cortex-M0, M4, A15, 라즈베리파이3, CM3(산업용 컴퓨팅 모듈) 들을 병렬처리하여 머신러닝 알고리즘을 탑재하도록 한다. 9가지 모듈들을 조립한 모습(SmartPrince) 첫번째 모듈(B01_SmartPower) ARM Cortex-M0, 모듈별 전원제어, RTC내장, 배터리충전아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 두번째 모듈(B02_SmartSwitch) ARM Cortex-M0, 12V, 5V, 3.3V 전원스위칭, Relay 스위칭아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 세번째 모듈(B03_SmartWiFi_ESP32) ESP32 WiFi 무선통신, Relay 스위칭아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 네번째 모듈(B04_SmartWiFi_ESP8266) ESP8266 WiFi 무선통신, Relay 스위칭아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 다섯번째 모듈(B05_SmartSensor) ARM Cortex-M0, 자이로 기울기, 온도, 습도, 방향, 조도센서아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 여섯번째 모듈(B06_SmartMotor) ARM Cortex-M0, DC모터 4개 PWM 제어아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 일곱번째 모듈(B07_SmartCamera)ARM Cortex-M4, 카메라 영상처리, 움직임 추적아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 여덟번째 모듈(B08_SmartVoice) ARM Cortex-M4, 사운드 인코딩/디코딩, 음성처리아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 아홉번째 모듈(B09_SmartPi_CM3) 라즈베리파이 CM3(산업용 컴퓨팅 모듈) 2개 슬롯, 머신러닝 병렬처리아두이노 핀맵호환, 라즈베리파이3 핀맵 호환 라즈베리파이3와 CM3(산업용 컴퓨팅 모듈) 2개 장착, 아두이노 보드 장착 자세한 내용들은 계속 추가될 예정입니다.감사합니다.