즐겁게 Devastator 로봇을 조립하면서 센서, MCU, 소프트웨어 및 모터 제어에 대해 알아보기
DigiKey 북미 편집자 제공
2017-10-18
키트에서 다기능 로봇을 조립하면 마이크로 컨트롤러, 센서, 모터, 소프트웨어 개발 등 많은 관련 분야에 대해 배울 수 있으므로 제작자로 처음 시작할 때 많은 도움이 됩니다. 또한 다양한 로봇 키트, 추가 기능 및 온라인 도움말을 선택할 수 있으므로 초보자와 숙련된 제작자 모두에게 유용합니다.
이 기사에서는 DF Robot Devastator 탱크 플랫폼(그림 1)을 기반으로 로봇을 만들 때 고려할 몇 가지 실용적인 단계, 문제 및 가능한 업그레이드에 대해 설명합니다.

그림 1: DFRobot Devastator는 설계자와 제작자가 폭넓은 전자 및 소프트웨어 기술을 배울 수 있도록 도와주는 다목적 플랫폼입니다. (이미지 출처: DFRobot)
Devastator를 선택해야 하는 이유? 알루미늄 구조와 두 개의 금속 기어 브러시 DC 모터를 채택하여 견고하고 내구성이 뛰어납니다. 최대 3kg의 하중을 처리할 수 있고 센서, 서보, 로봇 암 및 기타 부속품을 위한 여러 실장 구멍이 있으며 널리 사용되는 모든 제작자 친화적인 마이크로 컨트롤러 기판과 호환됩니다.
완벽한 로봇 시스템 조립
로봇에는 섀시, 휠, 트레드 및 두 개의 모터가 함께 제공되며 설계자에 따라 다른 부품을 선택할 수 있습니다. 전체 시스템에는 마이크로 컨트롤러 기판, 모터 구동기 기판 및 명령을 입력할 수 있는 수단이 필요합니다. 선택적 추가 기능으로는 로봇 암, 동영상 카메라, 자율적인 작동을 위한 충돌 방지 시스템 등이 있습니다.
마이크로 컨트롤러 플랫폼 선택
Devastator 로봇은 널리 사용되는 다양한 마이크로 컨트롤러 플랫폼과 호환됩니다. Arduino 오픈 소스 개발 플랫폼은 2003년 이탈리아에서 시작되었으며 초보자와 전문 설계자가 모두 널리 사용하고 있습니다. Arduino Uno(그림 2)에서는 Microchip Technology(전 Atmel) ATmega328P 8비트 RISC 마이크로 컨트롤러를 사용합니다.
기타 표준 기능으로는 사전 프로그래밍된 ATmega16U2 마이크로 컨트롤러에 의해 제어되는 USB 포트, 디지털 입력 및 출력, 아날로그 입력 포트, 소프트웨어 업데이트용 회로 내 직렬 프로그래밍(ICSP) 포트가 있습니다. 최신 Arduino Due에서는 코어를 32비트 ARM® Cortex®-M3로 업그레이드했습니다. 아래에 설명한 것처럼 이 코어는 Arduino 호환성과 모터 구동기를 결합하는 DFRobot의 컨트롤러 기판에서도 사용됩니다.

그림 2: Arduino Uno는 제작자 프로젝트에서 널리 선택되며 Microchip Technology ATmega328P 8비트 RISC 마이크로 컨트롤러를 기반으로 합니다. (이미지 출처: Arduino)
Raspberry Pi 단일 기판 컴퓨터는 원래 학교에서 기본 컴퓨터 공학 교육에 사용하도록 개발되었지만, 제작자 커뮤니티에서도 널리 사용되고 있습니다. 최신 Raspberry Pi 3은 1.2GHz에서 실행되는 Broadcom 64비트 쿼드 코어 CPU를 기반으로 하며, 802.11n 무선 LAN, Bluetooth 4.1 및 BLE(Bluetooth 저에너지)를 포함합니다. 또한 1GB RAM, microSD 카드 슬롯, USB 포트 4개, HDMI 및 이더넷 포트, 카메라 인터페이스, 40개 GPIO 핀 및 기타 특수 인터페이스가 있습니다.
기존 경험을 활용하려는 Windows 전문가는 정품 인증된 Windows 10 정식 버전이 설치된 Devastator 호환 LattePanda 컨트롤러 기판으로 시작할 수 있습니다. 이 기판에서는 1.8GHz에서 실행되는 쿼드 코어 CPU를 사용하며, Arduino 호환성을 위해 코프로세서인 Microchip의 8비트 ATmega32u4가 번들로 함께 제공됩니다.
LattePanda에는 2GB DDR3L RAM, 최대 32GB 스토리지, USB 3.0 포트 1개, USB 2.0 포트 2개, Wi-Fi, Bluetooth 4.0, 코프로세서가 함께 제공되며 두 프로세서 사이에 총 22개의 GPIO가 분할되어 있습니다.
모터 제어
마이크로 컨트롤러 코어에 장착한 후 다음 단계에서는 모터 제어 기판을 선택합니다. Devastator에는 160rpm(무부하)으로 작동하는 6V 모터 2개가 포함되어 있습니다. 각 모터의 최대 출력 토크는 0.8kgf.cm(0.058ft-lb.)이고 최대 구속 전류는 2.8A입니다.
Raspberry Pi에는 로봇 특정 기능을 위한 플러그인 확장 기판이 필요하지만, DFRobot의 DFR0398 Romeo BLE Quad 기판에서는 Arduino 애호가를 위한 마이크로 컨트롤러와 모터 구동기를 모두 포함하는 단일 기판 옵션을 제공합니다(그림 3). 이 기판은 UNO 파생 제품보다 더 강력한 코어를 제공하면서도 Arduino 소프트웨어 호환성을 유지합니다.
마이크로 컨트롤러는 STMicroelectronics의M32F103RET6입니다. 이 장치에서는 72MHz에서 실행되는 ARM® Cortex®-M3 32비트 코어를 사용하며, 512kB 플래시 메모리, 모터 제어 펄스 폭 변조(PWM) 블록, 16채널 12비트 아날로그 디지털 컨버터(ADC) 및 2채널 12비트 디지털 아날로그 컨버터(DAC)가 포함되어 있습니다.

그림 3: DFR0398 Romeo BLE Quad는 Bluetooth 기능과 4개의 모터 구동기를 지원하는 Arduino 호환 로봇 제어 기판입니다. (이미지 출처: DFRobot)
모터 구동기는 두 개의 Microsemi HR8833 장치에서 제공합니다. 각 MOSFET 구동기에는 Devastator 모터의 양방향 제어를 위한 두 개의 H 브리지 구동기가 포함되어 있습니다. Romeo BLE Quad에는 4개의 인코더 인터페이스가 포함되어 있으며, Bluetooth 4.0 무선 연결을 위해 Texas Instruments의 CC2540 RF 트랜시버를 통합합니다.
전력 추가
마이크로 컨트롤러 기판은 USB 커넥터의 5V 전압으로 실행될 수 있지만, 모터에는 더 높은 전압과 전류를 공급하는 휴대용(예: 배터리) 공급 장치가 필요합니다. 많은 제작자들이 원래 무선 제어(RC) 자동차용으로 설계된 경제적인 충전용 배터리 팩을 채택합니다. 이러한 팩은 일반적으로 7V 이상의 전압과 5000mAh 초과 정전 용량을 지원하며, 원래 커넥터를 쉽게 교체할 수 있습니다. Romeo BLE Quad 서보 전력 포트는 7VDC ~ 10VDC를 수용할 수 있습니다.
마이크로 컨트롤러 기판 프로그래밍
마이크로 컨트롤러 기판에 소프트웨어를 쉽게 설치할 수 있으며, 제작자 친화적인 제조업체에서는 웹 사이트에 단계별 지침을 제공합니다.
선택할 수 있는 운영 체제(OS)는 플랫폼마다 다릅니다. LattePanda 기판은 Windows가 설치된 상태로 제공됩니다. Raspberry Pi는 Windows IoT Core 및 다양한 Linux 배포를 비롯하여 여러 가지 옵션을 제공합니다. 오픈 소스 Debian Linux OS의 변형 제품인 Raspbian은 제작자들이 가장 일반적으로 선택하는 제품입니다.
반면에 Arduino에서는 기존 OS를 사용하지 않습니다. 대신 Arduino 플랫폼에서는 코드 시퀀스를 반복적으로 순환하는 Cyclic Executive를 사용합니다. 개발자는 오픈 소스 Arduino 통합 개발 환경(IDE)에서 코드를 작성하고 설치합니다. Java로 작성되고 Windows, Mac OS X, Linux 호스트 머신에서 사용할 수 있는 크로스 플랫폼 응용 제품입니다. Arduino 환경에서는 다양한 항목에 대해 자체 용어를 사용합니다. 예를 들어, Arduino 호환 플러그인 기판은 ‘실드’이고 소프트웨어 모듈은 ‘스케치’입니다.
Romeo BLE Quad를 이용한 프로그래밍
Romeo BLE Quad 기판은 고급 주변 소자를 탑재한 단일 기판 로봇 솔루션이므로 다음과 같은 논의에 사용됩니다.
시작하려면 호스트 머신에 대해 선호하는 OS를 선택하고 Arduino 웹 사이트에서 적절한 IDE를 다운로드합니다. DF Romeo BLE Quad에서는 표준 Arduino 하드웨어와 동일한 ATmega328 프로세서를 사용하지 않지만, 기판이 Arduino IDE와 호환되므로 소프트웨어 개발 공정은 비슷합니다.
IDE는 여러 제조업체에서 제공하는 25개 이상의 기판을 수용할 수 있지만, Romeo BLE Quad는 여기에 포함되지 않습니다. Romeo BLE Quad는 다른 버전의 DFRobot 기판으로, 모터 구동기가 추가된 Bluno M3입니다. IDE를 구성하려면 먼저 오픈 소스 GitHub 사이트에서 Bluno M3 파일을 다운로드해야 합니다.
이 파일을 설치하려면
- Arduino IDE를 열고 [파일] -> [환경 설정]으로 이동합니다. GitHub 링크를 ‘추가 기판 관리자 URL’ 상자에 복사하고 ‘확인’을 클릭합니다.
- [도구] -> [기판] -> [기판 관리자]로 이동하여 검색 상자에 ‘Bluno M3’을 입력하고 ‘설치’를 클릭합니다. 그러면 구성 파일이 다운로드됩니다.
- [도구] -> [기판] 메뉴에서 Bluno M3 기판을 선택합니다.
이제 응용 제품 개발 준비가 되었습니다. 표준 IDE에서는 C 및 C++ 프로그래밍을 지원하며 여러 코드 예제가 포함되어 있습니다. 개발자는 텍스트 편집기를 사용하여 스케치(프로그램)를 작성합니다(그림 4).

그림 4: Arduino IDE 화면 및 텍스트 편집기: 새 프로그램에는 두 가지 필수 기능이 포함되어 있습니다. (이미지 출처: Arduino)
IDE에서 코드를 디버깅하고, 크로스 컴파일한 다음 회로 내 직렬 프로그래밍(ICSP) 포트를 통해 마이크로 컨트롤러 기판에 결과를 업로드합니다. Bluetooth 포트를 통해 Romeo BLE Quad를 프로그래밍할 수 있습니다.
텍스트 편집기에서 두 가지 필수 기능이 미리 로드되고 코드를 추가할 준비가 된 새 프로그램을 시작합니다. setup()은 초기 조건을 구성하고 한 번 실행됩니다. 그러면 loop()가 연속적으로 실행됩니다.
Romeo BLE Quad가 탑재된 Devastator 모터를 실행하려면 두 개의 Arduino 라이브러리(Motor.h 및 PID_v1.h)를 다운로드하여 설치해야 합니다.
모터용 코드는 include 문에서 두 개의 라이브러리를 헤더 파일로 요청하여 시작하며, I/O 핀과 일부 초기 상수를 정의한 다음 setup() 섹션(목록 1)에서 모터를 구성합니다.
Copy
/*!
* @file RemeoBLEQuadDrive.ino
* @brief RemeoBLEQuadDrive.ino PID control system of DC motor
*
* RemeoBLEQuadDrive.ino Use PID control 4 way DC motor direction and speed
*
* @author linfeng(490289303@qq.com)
* @version V1.0
* @date 2016-4-14
*/
#include "PID_v1.h"
#include "Motor.h"
Motor motor[4];
int motorSpeed[4] = {-200,200,400,-400};/*Set 4 speed motor*/
/* Speed=motorSpeed/(32*(setSampleTime/1000))(r/s) */
const int motorDirPin[4][2] = { //Forward, Backward
/*Motor-driven IO ports*/
{8,23},
{7,9},
{24,14},
{4,25}
};
//const double motorPidParam[3]={0.6,1,0.03};/*DC MOTOR,Yellow??180degree*/
//const double motorPidParam[3]={1.5,1,0.05};/*DC MOTOR,Yellow??90 degree*/
const double motorPidParam[3]={1.2,0.8,0.05};/*Encoder V1.0,160rd/min ;19500/min; 32:1,Kr=3.5*/
void setup( void )
{
Serial1.begin(115200);
for(int i=0;i<4;i++){
motor[i].setPid(motorPidParam[0],motorPidParam[1],motorPidParam[2]);/*Tuning PID parameters*/
motor[i].setPin(motorDirPin[i][0],motorDirPin[i][1]);/*Configure IO ports*/
motor[i].setSampleTime(100);/*Sets the sampling period*/
motor[i].setChannel(i);/*Sets the motor channel */
motor[i].ready();/*Motor enable*/
motor[i].setSpeed(motorSpeed[i]);/*Set motor speed*/
}
}
void loop( void )
{
for(int i = 0; i < 4; i++){
motor[i].calibrate();/*motor PID calibrate*/
}
}
목록 1: 이 C 코드 예에서는 4개의 Romeo BLE Quad용 Arduino 모터를 구성하고 제어합니다. (코드 출처: DFRobot)
setup() 및 loop() 섹션에서는 4개의 모터 채널을 구성하고 제어합니다. 아래에 설명한 대로 Devastator 섀시에는 두 개만 필요하므로 나머지 채널은 로봇 암과 같은 부속품에 사용할 수 있습니다.
무선으로 로봇 제어
USB 케이블을 제어 기판에 연결하여 로봇을 조정할 수 있지만, Wi-Fi, Bluetooth, 스마트폰, 태블릿, 컴퓨터 등을 통해 무선으로 제어하는 것이 훨씬 더 편리합니다. 앞서 언급한 대로 Romeo BLE Quad에는 Bluno 플랫폼과 동일한 Bluetooth 4.0 모듈이 포함되어 있습니다. iOS 7.0+ 및 Android 4.3+용 오픈 소스 앱을 GitHub에서 사용할 수 있습니다. 설계자는 이러한 앱을 사용하여 원격으로 로봇을 제어하고 새 스케치를 업로드할 수 있습니다.
기본 설계 업그레이드
기본 설계를 조립한 다음 로봇에서 몇 가지 유용한 작업을 수행할 수 있도록 부속품을 추가할 수 있습니다(그림 5). 다음과 같이 업그레이드해 보세요.

그림 5: 널리 사용되는 두 가지 부속품으로 DFRobot URM37 v4.0 초음파 센서(왼쪽) 및 Adafruit의 397 카메라 모듈(오른쪽)이 있습니다. (이미지 출처: DFRobot 및 Adafruit)
장애물을 감지하여 회피하는 기능은 모바일 로봇에 유용한 기능입니다. DFRobot URM37 v4.0 초음파 센서는 거리에 비례하여 전압을 출력하며, Arduino 및 Raspberry Pi 모두와 호환됩니다. 센서에서 물체 또는 벽이 있는지 감지하면 코드에서 임의로 회전하여 로봇이 다른 방향으로 계속 움직입니다.
로봇을 모바일 카메라로 전환하는 것도 널리 사용되는 업그레이드입니다. Adafruit의 397 카메라 모듈은 동영상 또는 스틸 사진을 캡처할 수 있습니다. CMOS 이미제 센서가 탑재된 카메라는 640 x 480픽셀 이미지를 초당 30프레임(fps)으로 캡처할 수 있으며 동작 감지 기능이 있습니다.
DF05BB 틸트/팬 조립품(그림 6)과 같은 로봇 암에 카메라를 실장해 보세요. 키트는 브라켓 2개와 DF05 서보 모터 2개를 포함하며 수평으로 실장하도록 설계되었습니다.

그림 6: DFRobot DF05BB 틸트/팬 실장의 경우 서보 모터 2개와 브라켓 2개가 제공됩니다. (이미지 출처: DFRobot)
요약
전체 Devastator 로봇에는 섀시, 컨트롤러 기판, 확장 기판 및 초음파 센서가 포함되어 있습니다(그림 7). 편의를 위해 두 기판은 위쪽 플랫폼에 위치하고 있습니다. 그러나 상단 실장 이동식 카메라를 원하는 경우 하단 실장 플랫폼도 있습니다.

그림 7: 이 전체 설계 예에는 Devastator 섀시, 컨트롤러 기판, 모터 제어 확장 기판, 초음파 센서가 포함되어 있습니다. (이미지 출처: DFRobot)
결론
DFRobot은 재미있고 체계적으로 지원되는 환경에서 소프트웨어 개발, 마이크로 컨트롤러 기능, 센서 옵션 및 모터 제어에 대해 알아보려는 설계자 및 제조업체를 위한 탁월한 제조업체 기반 플랫폼입니다.
또한 DigiKey의 웹 사이트에서 많은 관련 자료를 확인할 수 있습니다. 예를 들어, 여기를 클릭하여 Arduino 플랫폼 프로그래밍에 대해 자세히 알아볼 수 있습니다. 또한 DigiKey에서는 가장 널리 사용되는 Pi 언어인 Python으로 Raspberry Pi 프로그램을 위한 도움말을 제공합니다. 위에서 언급한 모든 제품에는 포괄적인 설명서, 응용 예제 및 자습서가 있습니다.
이 프로젝트를 완료한 후 다른 제품을 사용해 보세요. Maker.io는 수십 가지의 주요 프로젝트, 관련 자료, 자금 공급원 등을 통해 제작자 움직임을 파악하고 있습니다.
면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.


