Makeblock Starter Robot Kit V2.0-Blue 조립기

 MakeBlock starter Robot Kit V2.0 조립을 시작해보자.

 조립설명서는 다음의 링크에서 다운로드 가능하다.
공식 사이트의 조립 설명 페이지 : http://learn.makeblock.cc/starter-robot-kit-ir/
 조립설명서 : https://raw.githubusercontent.com/Makeblock-official/Assembly-Instructions/master/Starter_Robot_Kit_IR_Instruction.pdf
 필자는 동봉된 조립설명서를 참고하여 만들었기에 위 링크의 방법과는 조금 차이가 있다.

 먼저, 배터리홀더에 검정색 플라스틱 리벳을 꼽는다. 그리고 갈색 기판에 살짝 힘을 가하면 딸깍 하는 느낌과 함께 기판에 배터리홀더가 고정된다. 아래, 사진처럼 검정핑을 굳이 붇리할 필요는 없다.
  기판에 ME-Baseboard를 두고 힘을 주어 기판과 Me-Baseboard를 고정시킨다.
  그리고 긴 스크류를 배터리홀더의 네 귀퉁이에 기둥을 세우고 6각 스크류를 고정 시킨다.
  배터리팩을 아래쪽에 두고, 위쪽에 보드를 올린다. 나중에 배터리 교체를 생각하면 배터리홀더를 위족에 배치하는 것이 좀더 나은 방법같기도 하다.
 보드 부분을 만들었으니, 이제 탱크의 체인과 몸통부분을 만들어보자.
 부품이 배치된 모양처럼, 모터와 브라켓을 연결한다.
 브라캣을 빔에 연결한다. 모터의 동력축은 빔의 가장 마지막 부분에 위치 시킨다.
 지금은 드러나지 않지만 여기에서 실수가 있었다. 아래의 세로빔을 연결할때, 해당 위치연결하는 것이 아니라, 180도 뒤집어서 한칸 아래에 연결해야했다. 아래의 사진처럼 연결할경우, 보드를 연결하는 빔을 세로 빔에 고정할 수가 없는 문제가 발생한다. 이점을 유의해서 세로 빔을 장착하면된다.
 풀리와 쉐프터 연결자를 조립한다. 이때 작은 육각랜치를 이용해서 모터의 축과 풀리가 서로 결합되게 고정한다.
 여분의 풀리도 본체 빔에 고정한다.
  탱크의 트랙을 만든다. 20개의 트랙을 연결하면 된다.
  트랙을 연결하고 풀리에 감는다. 정상적으로 가운데 빔이 위쪽으로 배치되었을때의 모습이다. 아래족에 있는 마지막 빔을 연결할때, 잘못되었다는것을 인지하고 세로 빔을 다시 연결하고 사진을 찍었다.
 정상적인 옆모습이다.
  보드를 연결할 가운데 빔을 연결한다.
 보드를 빔과 연결한다.
  아래 이미지를 참고하여 보드와 배터리, 모터 등을 연결한다.
 적외선 감지 센서를 부착한다.
 보드와 리시버를 연결한다.
 모터와 보드를 연결한다. 이때 커낵터의 나사를 조금 풀면 전선을 고정시킬 수 있다.
  모터를 연결한다. 벤치 등을 이용해서 조금 힘을 주면 딸깍 거리는 그낌과 함께 모터와 전선이 연결된다.
 완성된 Makeblock Starter Robot Kit V2.0 의 모습이다.
 
 여분의 부품이 더 있어서 만드는 사람마다 조금씩 다른 모양으로 만들 수 잇을 것 같다. 특히, 배터리 홀더와 보드의 위치를 바꾼다던가 바퀴 간격을 좀더 좁게 할 수 있을 것 같다.

 IR리모컨에 배터리를 넣고, Me-Baseboard에 전원을 넣는다. 그리고 리모콘의 방향키를 누르면 탱크가 움직일 것이다. 자기가 생각하는 방향으로 움직이 않는다면 모터의 전극을 바꾸어 조정하자. D를 한번 누르면 자동 모드로 변하게 되고, 로봇이 알아서 벽을 감지해서 움직인다. D를 한번 더 누르면 다시 내가 조종을 할 수 있다. 1~9 키를 누르면 탱크의 움직이는 속도를 도절 할수 있다.
 IR리시버를 위쪽으로 향하게 고정시키는게 중요하다. 생각보다 IR리시버의 수신율이 낮다. 그래서 중간 중간에 동작이 멈추는 현상이 발생한다.

 Makeblock Starter Robot Kit V2.0 을 이용해서 탱크를 만들어 보았다. 어릴적 과학상자를 만들던 추억도 생각도 나고 부품을 조립하는 재미도 있었다.

Makeblock Starter Robot Kit V2.0-Blue 개봉기

 아두이노, 라즈베리 파이 등의 오픈 피씨에 관심을 가질 물렵 필자의 눈에 들어온 제품이 있었다. 국민학교 시절 열정적으로 만들었던 과학상자를 보는듯한 제품을 발견하였다. "MakeBlock"이라는 제품이었다.
MakeBlock : http://www.makeblock.cc/
 과학상자처럼 부품이 표준화되어 조립의 편의성과 호환성이 높아 다양한 제품을 만들기에 적합해보였다. 그리고 아두이노 레오나르도를 기반으로 하는 Me Baseboard를 사용하여 기존의 아두이노 코드를 그대로 사용할 수 있다. 아두이노 사용자라면 쉽게 코딩이 가능할 것으로 생각된다.
 Me BaseBoard는 Arduino LEONARDO core(ATmega32U4) 와 Me-BaseShield V2.0 의 결합을 기반으로 하며, 최대 출력 5V/3A를 지원한다.
Me BaseBoard 설명 : http://www.makeblock.cc/me-baseboard-base-on-arduino-leonardo/
 주요부품이 포함되어 초보자에게 적합한 스타터킷을 구입하였다. 가격은 10만원 초중반이었다. 
Starter Robot Kit-Blue (IR Version) 공식홈페이지  : http://www.makeblock.cc/starter-robot-kit-blue-ir-version/
Starter Robot Kit-Blue 유용한 참고 링크
 내가 구입한 Makeblock Starter Robot Kit V2.0-Blue(구입링크) 제품이 어떻게 구성 되어 있는지 살펴 보자. 해당 제품은 2가지 형태의 로봇으로 조립을 할 수 있다. 하나는 첫번째 그림처럼 탱크형태의 로봇을 만들수 있다.
  두번째 형태로는, 박격포(?) 형태로 2륜 차를 만들 수 있다.
 전체 부품을 펼쳤을때의 모습니다.
부품목록
 1 × Beam 0824-96 2 × Threaded Shaft 4x39mm 4 × Plastic Rivet R4060
 1 × Beam 0824-128 2 × Shaft Collar 4mm 4 × Plastic Rivet R4120
 2 × Beam 0824-144 4 × Flange Bearing 4x8x3mm 4 × Plastic Ring 4x7x2mm
 1 × Plate 3x6 1 × HEX Screwdriver 2.5mm 1 × Me Orion(Base on Arduino UNO)
 1 × Bracket 3x3 1 × Cross Screwdriver 3mm 1 × Me Ultrasonic Sensor 3.0
 1 × Bracket P3 2 × HEX Allen Key 1.5mm 1 × Me IR Receiver V2.1
 2 × DC Motor-25 Bracket B 1 × Wrench 7mm&5mm 1 × New Me IR Remote Controller
 1 × Caster Wheel 22 × Socket Cap Screw M4x8-Button Head 1 × 6P6C RJ25 cable-20cm
 2 × DC Motor-25 6V/185RPM 14 × Socket Cap Screw M4x14-Button Head 1 × 6P6C RJ25 cable-35cm
 2× Shaft Connector-4mm 4 × Countersunk Screw M3x8  1 × USB 2.0 A-Male to Micro B-Male Cable
 4 × Timing Pulley 90T 4 × Headless Set Screw M3x5  2 × Base Bracket B
 2 × Tyre 68.5x22mm 3 × Nut M4 1 × Battery Holder for (6)AA
 38 × Track 1 × Nut M8 
 38 × Track Axle 6 × Nylon Stud M4*30 

 이제 실제 직접 찍은 사진을 보자.
가운데 있는 것이 Me-BaseBoard v1.1 이다.
 내가 구입한 모델은 IR리모콘으로 조작이 가능한 모델이다. CR2025베터리는 따로 구입해야한다.
 조립설명서에 조립순서에 맞게 번호와 이미지가 있어서 부품조립은 어렵지 않을것으로 생각된다.
설명서 관련 자료는 판매 사이트에서 다운 받을 수 있다.
MakeBlock starter Robot Kit V2.0 조립설명서 : http://www.eleparts.co.kr/EPXCMP37

라즈베리파이 삼바설치하기

 삼바(SAMBA)는 서로 다른 OS 간에 파일을 공유하게 해준다. 즉, 사용자의 주PC에 설치된 Windows 환경에서 라즈베리 파이에 있는 파일을 제어 할 수 있다.

 Putty를 실행하여 라즈베피파이에 접속을 한다. 그리고 삼사 프로토콜 및 서버, 클라이언트 관련 프로그램을 설치한다.
 $ sudo apt-get install samba samba-common-bin
 pi 라는 유저의 패스워드를 설정한다.
$ sudo smbpasswd -a pi
 삼바 설정 파일의 가장 아랫부분에 pi 유저의 설정을 추가한다.
$ sudo vi /etc/samba/smb.conf 
[pi]
    comment = Raspberry samba server
    path = /home/pi
    valid user = pi
    writable = yes
    browseable = yes
 위 코드는 다음과 같은 의미이다. 자세한 설정은 삼바 홈페이지(http://www.samba.org)를 참고한다.
comment : 설정에 대한 코멘트
path : 공유할 폴더
valid user : 접근을 허용할 유저
writable :  파일쓰기 허용 여부
browseable : 폴더보기 허용 여부
 설정 파일을 저장 한 후, 삼바 서버를 재시작 한다.
$ sudo service samba restart
 삼바 서버가 재시작이 되면 윈도우의 탐색기를 열어 주소창에 "\\192.168.0.102" 형태의 라즈베리 파이 IP를 입력한다.
 pi 폴더를 클릭하면 사용자 계정입력 창이 뜬다. 이때, 처음에 설정한 아이디와 패스워드를 입력한다.
 라즈베리파이의 /home/pi 아래에 있는 폴더에 접근가능해짐을 확인 할 수 있다.
 리눅스 환경에서 개발이 힘든 사용자는 smaba 를 이용해서 윈도우 환경에서 개발하면 좀더 편하게 개발 할 수 있을 것이다.

nginX 웹서버에서 html, htm 파일의 PHP 코드 실행

 라즈베리 파이에 nginX 웹서버와 php를 올려서 세팅 중이다. apache 웹서버에서는 php를 설치할 경우, htm과 html은 기본적으로 php 코드 실행이 가능하였다. 그런데  nginX 웹서버에서는 index.html 또는 index.htm 과 같이 htm, html 파일인 경우, php 코드를 기본적인 html코드로 인지하였다. 이 전 글(http://www.withover.com/2014/12/nginx-php5-mysql.html)에서도 시작 페이지를 index.htm 이 아닌 index.php로 설정을 하였다. 

 nginX에서 htm과 html 파일에 있는 php 코드를 인지할 수 있게 설정을 바꾸어 보자.
 먼저, PHP(php-fpm) 설정 파일을 연다.
$ sudo vi /etc/php5/fpm/php-fpm.conf
 파일의 마지막 부분에 다음 코드를 입력한다.
security.limit_extensions = .php .html .htm
 php-fpm 을 재시작 한다.
$ sudo service php5-fpm restart
 nginX의 설정 파일을 오픈한다. 
$ sudo vi /etc/nginx/sites-available/default
 63번째 줄에 있는 location ~ \.php$ {  을 location ~ \.(php|html|htm)$ { 으로 변경한다.
     63         location ~ \.(php|html|htm)$ {
     64                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
     65         #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
     66
     67         #       # With php5-cgi alone:
     68         #       fastcgi_pass 127.0.0.1:9000;
     69         #       # With php5-fpm:
     70                 fastcgi_pass unix:/var/run/php5-fpm.sock;
     71                 fastcgi_index index.php;
     72                 include fastcgi_params;
     73         }
 nginX를 재시작한다.
$ sudo service nginx restart
 작업이 성공적으로 끝이 났다면 index.htm 과 같이 htm 파일에서도 php 구문을 인지하게 된다. 

라즈베리파이 웹서버 설치하기(NginX + PHP5 + MySQL)

 라즈베리 파이에 웹서버를 설치해보자. 일반적인 PC를 서버로 사용하고 Ubuntu Server OS아래에서는 아파치를 웹서버 프로그램으로 사용할 것 이다. 하지만, 라즈베리 파이는 처리용량이 작은 관계로 낮은 자원을 사용하는 nginx(엔진엑스) 웹서버를 설치 할 것이다. 웹테크 관련한 통계를 조사하는 W3Tches(http://w3techs.com/)에 의하면 웹서버 중 20% 정도가 엔진엑스를 사용하고 있다고 한다.
nginx 공식사이트 : http://nginx.org/
nginx 한글 설명 : http://opentutorials.org/module/384/3462
 웹서버를 구성하기 위해 웹서버로 엔진엑스, 기본 언어로 php, DB로 mysql를 선택하였다. 그리고  php를 FastCGI 모드로 동작하기 위해서 php-fpm을 추가한다. php5-gd은 GD라이브러리를 설치하여 이미지 리사지징, 워터마크 등도 웹사이트에서 가능하게 한다. 아래와 같은 명령을 통해서 엔진엑스, PHP, mysql을 설치한다.
$ sudo apt-get install -y nginx php5-fpm php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-cgi mysql-server
 의존성 검사를 통해서 다른 프로그램도 자동으로 설치되게 된다.
설치 중간에 mysql 의 루트 관리자의 비밀번호를 설정한다.
설치과 완료 되면 웹브라우져에 아래의 주소로 접속을 하면 웹페이지가 뜨는 것을 확인 할 수 있다.
http://192.168.0.102/
엔진엑스는 기본적으로 다음과 같은 설정값을 가진다.
Document Root
/usr/share/nginx/www
 설정 파일
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
로그파일
/var/log/nginx/
웹서버의 기본폴더를 /usr/share/nginx/www 에서 home/pi/www 로 변경해보자.
$ sudo vi /etc/nginx/sites-available/default
 설정 파일의 24번째 라인에 있는 root /usr/share/nginx/www; 값을 root /home/pi/www; 으로 변경한다.
 PHP 파일 동작을 위해서 25번 라인에 index.php 를 추가한다. 엔진엑스와 php-fpm연동을 위해 아래 코드처럼 주석을 제거한다.
 설정이 끝이나면 wq 명령으로 저장 후, 엔진엑스를 다시 시작한다.
$ sudo service nginx restart
 이제 /home/pi/www 리렉토리 아래에 index.php 파일을 만들면 웹서버의 홈디렉토리 이동이 완성된다.
$ cd ~
$ mkdir www
$ cd www
$ vi index.php
 php가 정상적으로 동작하는걸 확인하기 위해 아래의 코드를 index.php 파일에 넣고 웹페지를 접속 해보자.
<?php
     phpinfo();
?>
아래와 같은 내용이 뜬다면 정상적으로 php가 동작하고 있는 것이다.

 192.168.0.102 와 같은 형태로 접속하는 것은 같은 공유기를 사용하는 내부망에서는 가능하지만 외부의 다른 네트워크에선 접속 할 수 없다. 고정IP를 할당받거나 IP를 고정시키는 서비스를 이용해야 한다. ipTime 공유기를 사용하고 있다면, 서브도메인.iptime.org라는 도메인을 이용할 수 있다. 필자의 경우엔 http://withover.iptime.org를 등록하여 라즈베리파이로 접속하는 경로로 사용하고 있다.
고급설정 -> 특수기능 -> DDNS 설정
 위 설정을 하면 해당 도메인으로 접속을 할 시, 공유기로 접근을 하게 된다. http, https 프로토콜인 경우, 192.168.0.102 로 포트를 포워드 해줘야 웹서버로 접근이 가능해진다.
고급설정 -> NAT/라우터관리 -> 포트포워드 설정
도메인을 등록하는 과정이 필요하므로 조금의 시간이 필요할 수도 있다.