Aug 18, 2014

[IBM IoT Foundation Bootcamp @Korea] 2. Device Recipes (Intel Galileo)

Compatible Devices
현재 IBM IoT Cloud에 연결 가능하도록 지원하는 device는 다음과 같다.
* IBM에서 공식적으로 정리하여 공유하는 IoT Device Recipe는 여기를 참조
* 위에 리스트되어 있는 device 이외에 것도 여기에 정리되어 있는 가이드를 따라 IBM IoT Cloud에 연결 가능

[Hands-on Lab]
Intel Galileo를 IoT Cloud의 dashboard를 이용하여 등록하고 API key를 생성해 보자.


Step 1. 마이크로 SD 카드가 Galileo Customer Reference Board(CRB)에 탑재되어 있다면 분리하여 FAT 혹은 FAT32로 포맷한다.  Intel 공식지원 사이트로부터 SD Card Linux Image for Intel Galileo라고 명시된 압축파일을 다운로드받아 압축을 풀어서 마이크로 SD 카드로 복사한다.


Step 2. Galileo CRB를 아래 그림과 같이 마이크로 SD 카드 다시 탑재, 전원 연결, 유선 이더넷 케이블 연결, USB CLIENT라 명시되어 있는 마이크로 USB 포트에 USB 케이블을 연결하고 이를 개발 업무용 호스트 컴퓨터에 연결한다. 이때 마이크로 SD 슬롯 주변에 보면 CRB 상태 모니터링 가능한 LED가 있는데 초기화 단계에서 SD라 명시된 LED가 일정 시간 동안 깜박이는지 확인할 필요가 있다. SD 상태 LED가 깜박이지 않는다면 보드 초기화가 정상적으로 이루어지지 않았다는 것을 의미한다.


Step 3. Intel 공식지원 사이트로부터 Intel Galileo Arduino SW라 명시된 Galileo 전용 Arduino IDE를 다운로드받아 개발 업무용 호스트 컴퓨터에 설치하고 실행한다.

Step 4. IBM 사이트로부터 ibm-iot-quickstart.zip을 다운로드받아 압축을 푼 후 Arduino IDE 메뉴에서 File > Open을 실행하여 ibm-iot-quickstart/sketch/print_ipaddr/print_ipaddr.ino를 선택한다. 해당 파일이 정상적으로 import되면 아래 그림과 같이 되며, 여기서 File > Upload를 실행하여 바이너리를 Galileo에 올린다.
Tips:
- Upload 실행 전에 Tools > Board로 Intel Galileo가 선택되었는지, Tools > Serial Port로 USB 연결 포트가 정상적으로 선택되었는지 확인하는 것이 필요하다.
- Upload가 정상적으로 진행되지 않을 경우는 Firmware가 최신이 아님으로 인한 문제인지를 의심할 필요가 있다. 따라서, Galileo의 Firmware를 최신으로 맞추어 놓고 시작하는 것이 좋겠다. 이를 위해서는 먼저 전원 연결을 해제하고 마이크로 SD 카드도 슬롯에서 분리한다. 다시 전원을 연결한 후 Galileo 전용 Arduino IDE의 Help > Firmware Upgrade 메뉴를 수행하여 Firmware를 최신으로 업그레이드해 준다.

Step 5.  Tools > Serial Monitor를 실행하여 Galileo의 네트워크 연결 정보를 확인한다. 실행 결과 예시는 아래 그림과 같으며 'inet addr'에 표시되는 IP 주소를 읽어서 메모해 둔다. IP 주소 확인이 끝났으면 Arduino IDE를 종료한다.


Step 6. 개발용 호스트 컴퓨터에서 명령창 혹은 터미널을 열고 Step 4에서 다운로드받은 ibm-iot-quickstart.zip 파일을 아래 명령을 이용하여 Galileo CRB로 복사한다.
scp ./ibm-iot-quickstart.zip root@galileo_ip_addr:/tmp

Step 7. 개발용 호스트 컴퓨터에서 SSH를 이용하여 Galileo에 원격 접속을 수행한다.
ssh root@galileo_ip_addr

Step 8. Galileo 상에서 구동하는 application은 Node.js application 형태로 구현할 것이기 때문에 Node.js 설치가 필요하고, NTP를 이용하여 시간 설정을 할 것이기 때문에 해당 NTP관련 패키지를 설치해 보도록 하자. 설치 절차는 다음과 같다.

  • Galileo root directory로 이동: cd /
  • ibm-iot-quickstart.zip 압축해제: unzip /tmp/ibm-iot-quickstart.zip
  • cd ibm-iot-quickstart
  • 설치 명령을 배치 파일로 만든 setup.sh 실행: chmod +x setup.sh
  • ./setup.sh


Step 9. IBM IoT Cloud 사이트에 로그인한다. 로그인하면 DefaultOrg라는 organization이 선택된 상태로 dashboard 화면이 출력된다. 여기서 Devices 탭을 선택하면 "Add Device"라는 메뉴가 있다. 이를 선택하면 다음과 같은 device 등록 화면이 출력되는데 해당 device type을 선택하고 Device ID 필드에 MAC 주소를 입력한 후 Continue 버튼을 클릭한다.
다음 단계로 등록된 device의 등록정보를 확인할 수 있는데 이때 출력된 정보를 메모해 두어서 Step 10에서 활용할 수 있게 한다.

Step 10. 다시 Galileo에 SSH 접속한 터미널 화면으로 돌아와 ibm-iot-quickstart 디렉토리에 다음 예시와 같이 device.cfg 파일을 만들고 해당 device 정보를 입력한다.
vi device.cfg
Step 11. 아래 명령을 이용하여 Node.js 상에서 ibm-iot-quickstart application을 구동한다. (Application 종료시는 Control+C)
  • -v 옵션은 verbose 기능을 위한 것임
  • 위의 예시에서 확인할 수 있는 것처럼 MQTT 기반 메시징 기능을 제공하는 broker server의 URL은 <org-id>.messaging.internetofthings.ibmcloud.com
  • Auth Token 기반으로 인증정보(username, password)를 정확히 제시하여야 device가 publish하는 수집 정보에 대한 topic에 subscribe할 수 있음
Step 12. IBM IoT Cloud의 dashboard 화면으로 돌아오면 아래 예시처럼 device가 connected 상태임을 확인할 수 있다. (등록 해제를 하려면 "Remove Device" 메뉴를 이용)

 Step 13. API Keys 탭을 선택하면 API key 관리 화면으로 전환된다. 여기서 "Add API Key" 메뉴를 실행하면 다음과 같이 Key, Auth Token으로 구성된 API Key를 자동으로 생성하여 준다. 이 API Key는 IBM Bluemix에서 IoT Cloud의 API에 액세스할 때 필요한 것이므로 메모해 두어 필요할 때 참조할 수 있게 하자.
(생성된 API key를 삭제하고자 할 때는 Revoke 메뉴를 이용)

여기까지 성공적으로 모든 단계를 마쳤다면 IBM IoT Cloud에 등록되어 언제든지 연결가능한 Galileo 보드 하나를 갖게 된 것입니다.

No comments:

Post a Comment