'Technical Stubs/Raspberry Pi'에 해당되는 글 3건

  1. 2014.08.27 IBM IoT Cloud Raspberry Pi Node JS를 이용한 Test
  2. 2014.08.27 Raspberry Pi에 Node-JS 설치하기 (2)
  3. 2014.08.26 라즈베리 파이 모니터 없이 쓰기
2014.08.27 04:55

IBM IoT Cloud Raspberry Pi Node JS를 이용한 Test

IBM IoT Cloud 는 Device recipe라는 형태의 일종의 패키지를 제공하여 다양한 종류/환경의 단말이 IBM IoT Service를 이용하도록 하고 있다.


물론 라즈베리파이에 대한 Device recipe도 있으며 다음 ( https://developer.ibm.com/iot/recipes/raspberry-pi )에서 좀 더 자세한 기능을 확인 해 볼 수 있다.


IBM에서 공식적으로 제공하는 라즈베리 파이용 Device Recipe 는 Rasbian용 debian binary package 형태로 되어 있기에 Cross Compiler를 이용한 Build 환경을 갖춰야만 IBM IoT 통신 프로토콜(MQTT)을 사용하는 Client App를 개발해야 하는데, Intel Galileo용 Device recipe는 Node.js로 구성되어 있어 이를 활용해 보고자 한다.


0. 사전 준비

좀 더 시간이 지나면 Node.js용으로 필요한 부분만 사용 할 수 있도록 정리하겠지만

일단, Node.js용으로 IBM IoT 환경을 구성한다 하더라도 라즈베리 파이용 device recipe 가 선행되어야 한다.


특히 IBM PaaS Platform인 Bluemix 등록 및 IoT Foundation 환경 구성을 비롯한 단말 정보 등록 과정들은 반드시 사전에 진행되어야 한다.



1. Node JS 설치

라즈베리 파이에 Node JS는 [ Raspberry Pi에 Node-JS 설치하기 ]를 참고


2. Node JS용 Quick Start 가져오기

앞서 이야기 했듯이 Intel Galileo용으로 제공하는 Device Recipe https://developer.ibm.com/iot/recipes/intel-galileo )인데 Node.js 실행환경이라면 사용에 별 문제가 없다.


다만, Intel Galileo의 모든 Quick Start (ibm-iot-quickstart.zip)를 다 가져올 필요는 없고 우리가 필요한 JavaScript 파일과 json 파일만 가져오도록 한다.


라즈베리용 Device Recipe에서 생성한 device.cfg와 같은 폴더에 다음과 같이 파일을 다운로드 받는다.


sudo wget -O /etc/iotsample-raspberrypi/ibm-iot-quickstart.js https://github.com/ibm-messaging/iot-galileo/raw/master/samples/nodejs/package.json/ibm-iot.js

sudo wget -O /etc/iotsample-raspberrypi/package.json https://github.com/ibm-messaging/iot-galileo/raw/master/samples/nodejs/package.json



그리고 다운로드 받은 ibm-iot.js 를 보면 deviceType이 default로 iotsample-galilieo로 되어 있다. 

이 값은 device.cfg에 정의되어 있는 경우 override 되긴 하지만 라즈베리를 위한 기본 값으로 iotsample-raspberrypi로 변경하여 저장한다.


그리고 node ibm-iot.js로 JavaScript를 실행 해 보면 MQTT 모듈이 설치되어 있지 않아 오류를 발생하게 된다.


<그림>


Quick Start에 필요한 node module은 package.json에 정의되어 있으므로 아래와 같이 npm을 이용한 node module을 설치한다.


sudo npm install


자 이제 다음과 같이 quick start를 실행 해 보면 binary로 실행되는 것처럼 메시지가 정상 동작하는 것을 확인 할 수 있다.


node ibm-iot.js -v

Trackback 0 Comment 0
2014.08.27 04:10

Raspberry Pi에 Node-JS 설치하기

라즈베리 파이에 리눅스 계열인 RASPBIAN을 설치한 경우 이를 위한 Node JS가 준비되어 있으므로 다음 몇 가지 단계를 거치면 손쉽게 Node JS 를 사용할 수 있다.

1. RASPBIAN Package 정보 업데이트


RASPBIAN은 Debian 계열의 패키지 관리 정보를 사용한다. 다음과 같이 apt-get 명령을 이용하여 해당 정보를 업데이트를 한다.

그림 <sudo apt-get upgrade>


그림 <sudo apt-get update>


2. 라즈베리파이용 NodeJS 설치


Package 정보를 업데이트 했다면 node-arm 프로젝트 홈페이지 (http://node-arm.herokuapp.com)로부터 NodeJS deb 패키지를 받아 설치한다. 현재 (2014-8-27) NodeJS 최신 공식 버전인 v0.10.31, 30, 29를 제공하므로 필요에 따라 선택한다.


다음 명령어를 이용하면 최신 버젼의 NodeJS 설치 파일을 받을 수 있다.


sudo wget http://node-arm.herokuapp.com/node_latest_armhf.deb


그리고 dpkg를 이용하여 nodejs를 설치한다.


$ sudo dpkg -i node_lasted_armhf.deb 



참고로 NodeJS 홈페이지에서도 라즈베리 파이용 패키지를 제공하고 있으나 v0.10.29 부터 v0.10.31까지는 배포되지 않고 있다.


v0.10.28 을 다음 명령어로 다운로드한다.


$ sudo wget http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz


그리고 파일의 압축을 해제한다.

tar -xzvf node-v0.10.28-linux-arm-pi.tar.gz


다운로드 받은 node를 실행해 보면 현재 버젼을 확인해 볼 수 있다.

node-v0.10.28-linux-arm-pi/bin/node -v


데비안 패키지와 달리 실행 파일만 설치된 것이므로 환경 설정을 해 주어야 한다.


home 디렉토리 (/home/pi) 의 .bash_profile에 다음과 같이 NODE_JS_HOME을 설정한다.


NODE_JS_HOME=/home/pi/node-v0.10.28-linux-arm-pi

PATH=$PATH:$NODE_JS_HOME/bin



Trackback 0 Comment 2
2014.08.26 13:53

라즈베리 파이 모니터 없이 쓰기

라즈베리 파이는 학교에서 기초 컴퓨터 과학 교육 증진을 위해 만든 단일 보드 컴퓨터다.

PC와 달리 ARM 기반의 프로세서를 사용하지만 HDMI와 USB 그리고 인터넷을 위한 커넥터를 제공한다.

2014년 발표한 B+ 보드의 경우 국내에서 5만원 정도면 구할 수 있는데 달랑 보드 하나만 들어 있다.

전원을 케이블도 없고, 하드 디스크 역할을 하는 SDCard Media도 없다.


전원은 Android 충전기 연결하고 SDCard는 마트나 인터넷에서 8GB~32GB 정도로 구매하면된다.

참고로 Raspberry Pi B형의 SDCard 타입이고 B+형은 Micro SDCard 타입이다.


OS는 홈페이지에서 무료로 제공하는데 당연히 Open Source OS의 대명사인 Linux를 기반으로 되어 있다.


http://www.raspberrypi.org/downloads/


값싸게 PC 교육을 위한 장비로서 설계된 라즈베리 파이기에 기본적으로 모니터 키보드, 마우스와 같은 주변 장비를 붙일 수 있도록 외부 I/O를 제공하며, Video는 HDMI, 인터넷은 RJ45규격의 LAN 포트, 그리고 USB 포트가 구성되어 있다.


아무리 PC 교육용이라 하더라도, 이거 하나 쓰려고 일반 PC컴퓨터에서 본체 빼고 다 있어야 한다는게 좀 불편하다는 생각이 들었는데 라즈베리 파이는 다양한 OS를 제공하고 그 중 눈에 띈 Debian 계열의 ARM Linux인 RASPBIAN 의 경우 Linux 장비이므로 GUI 사용 여부를 선택 할 수 있게 되어 있다.또한, 설치 용량도 800MB 정도로 완전 기본 패키지만 제공하므로 적은 용량의 SD Card를 사용해도 부담이 덜하다.


SDCard에 설치할 이미지는 홈페이지나 토렌트를 이용하여 받을 수 있는데, 개인적으로는 토렌트를 추천한다. HTTP로 그냥 받으면 느리기도 하고 데이터가 깨지는 경우도 있는지 Binary 가 달라서 설치 오류가 나기도 했다.


1. RASPBIAN 이미지 설치


이미지에 대한 기본적인 설치 방법은 공식 홈페이지에 자세히 나와 있다.


http://www.raspberrypi.org/documentation/installation/installing-images/README.md


토렌트에서 다운로드 받은 image 파일이 2014-06-20-wheezy-raspbian.img 인데 맥북에서 dd 명령을 이용하는 방법으로 이미지를 설치했다.


근데, 정말 오래 걸린다. 명령어를 입력하면 별다른 메시지가 없이 그냥 대기한다. 

dd 명령을 실행 중에 얼만큼 진행되었는지 상태를 보려면 [Ctrl+T]를 눌러 확인이 가능한데 마지막에 출력된 메시지를 보니 2134초 즉 36분 정도 걸렸다.


그림 <dd 명령을 이용한 RASPBIAN 이미지 설치>


아니면 NOOB에서 Raspbian을 설치 할 수 있는 방법도 있으니 이를 이용해도 된다.


https://www.raspberrypi.org/help/noobs-setup/



2. 라즈베리 접속하기


RASPBIAN이 정상 설치된 SDCard를 라즈 베리파이에 꽂은 후 전원 케이블을 연결하면 보드에 불이 들어오고 초록색 불이 깜빡거리면서 뭔가 시작하는 모습을 보인다. 만약, USB 키보드와 HDMI로 연결된 모니터가 있다면 리눅스 부팅 화면과 함께 로그인 화면을 볼 수 있다. 아무것도 안보이거나 처음 전원을 넣었을 때 초록색 불빛이 깜빡거리지 않는다면 뭔가 잘못된 거라고 볼 수 있으니 다시 설치해야 한다.


그림 <라즈베리 파이 정상 동작 화면>


RASPBIAN의 기본적인 로그인 정보는 ID: pi, 비밀번호: raspberry 를 입력하면 라즈베리 파이에 정상 로그인 되는 것을 볼 수 있다.



3. 라즈베리에 모니터 없이 접속하기


만약 라즈베리 파이를 모니터 없이 사용하려면 어떻게 할까?


라즈베리 파이는 GPIO를 제공하고 RASPBIAN은 GPIO의 UART 통신 포트를 console 접속을 할 수 있도록 구성되어 있다.


그림 <라즈베리 파이 모델 A, B의 GPIO Pinout>



그림 <라즈베리 파이 모델 B+, 2의 GPIO Pinout>


라즈베리 파이 A,B의 경우 B+ 보다 PIN이 적지만 기능상으로 PIN14번 15번이 각각 TX(수신), RX(송신)로 매핑되어 있는 것은 동일하다.

약간 혼동이 올 수 있는게 물리적인 Pinout이 아닌 GPIO의 번호라는 것을 참고 하기 바란다.


그림 <라즈베리 파이 물리적 Pinout>


http://pi.gadgetoid.com/pinout 에 각 Pin별 기능을 interactive GUI로 확인 해 볼 수 있다.



어쨌든, 라즈베리 파이와 PC는 Serial 포트로 연결해야 하는데 라즈베리 파이의 경우 3.3V CMOS 레벨 Serial을 사용하고 있으므로 다음과 같이 몇 가지 단계를 거쳐서 PC와 연결한다.


Raspberry PI GPIO Port <==> Level Converter <==> PC용 UART USB (또는 RS232C 시리얼 포트) 


위 연결 케이블을 직접 만들 수도 있겠으나 그냥 라즈베리 파이용 USB Debugging Cable을 사는게 정신 건강에 좋다.


http://neoze.co.kr/detail.php?docu_idx=10041&mdl_code=004&sml_code=002


그림 <라즈베리 파이 USB-Seria Debugging Cable>


이 제품은 PL-2303 계열 Controller를 사용한 제품인데 Windows에서 사용하려면 별도 드라이버를 설치해야 한다.


대부분의 제품이 이 Chip을 사용하는 것으로 알고 있으며, 제조사 홈페이지에서 받을 수 있다.


이 라즈베리 파이 디버깅 케이블은 총 4개의 선이 나와 있는데 그 내용은 다음과 같다.


빨간색: VCC(5V), 검은색: Ground, 흰색: RX(수신), 녹색: TX(송신)


각 케이블은 PC 입장에서 의미 이므로 라즈베리 파이의 TX에 흰색 케이블(RX)를, 라즈베리 파이 RX에 녹색 케이블(TX)을 연결한다.

그리고, 검정색은 Ground로 빨간색은 5V 전원을 공급 포트에 연결한다.


그림 <라즈베리 파이 Serial 연결 예시>


케이블 연결에 주의할 점이 있는데, 반드시 기존 USB 전원을 제거하고 디버깅 케이블의 전원을 연결해야 전원 충돌이 발생하지 않는다.

기존 전원을 그대로 사용하고 싶다면 USB 전원인 빨간 케이블을 라즈베리파이에서 빼 놓아야 한다.


참고로, 일부 USB Serial 연결 Board의 경우 기존 USB 전원을 사용하도록 switch로 옵션을 제공하는 경우도 있다.


http://www.eleparts.co.kr/EPX8N7KL


케이블 연결을 완료하면 Baudrate 115200으로 연결하면 정상적인 시리얼 통신을 할 수 있다.



4. MacOS에서 라즈베리에 Serial 접속하기


MacOS의 경우 내장 Terminal에서 명령어인 screen으로 접속이 가능하다.

USB Serial 케이블을 연결하면 케이블에 할당된 device의 driver를 확인해야 한다.

$ ls /dev/tty.* 명령으로 확인 해 볼 수 있는데 /dev/tty.usbserial 또는 /dev/tty.usbserial-XXXXX 와 같이 로딩된 driver 가 표시된다.


케이블을 연결 전후 내용을 확인하여 driver 이름을 확인 할 수 있다. 

만약 /dev/tty.usbserial 이란 이름으로 driver가 로딩 된 경우라면 다음과 같은 명령을 입력한다.


$ screen /dev/tty.usbserial 115200



그림 <MacOS screen 화면>


screen 화면을 연결을 끊으려면 control + A + K를 누른 후 y를 입력한다. screen 명령에 대한 자세한 설명은 다음 링크를 참고 한다.


http://ss64.com/osx/screen.html



Windows의 경우 PuTTY를 이용하면 된다.


http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


그림 <Windows 7 장치 관리자 COM 포트 할당 화면>



그림 <PuTTY 설정 화면>



그림 <PuTTY 접속 화면>



4. 라즈베리 파이 SSH 접속하기


GPIO 시리얼 통신이 아닌 경우 SSH를 이용해도 라즈베리 접속 할 수 있다. 단, IP를 알아야 하는데 시리얼로 로그인 후 다음 명령으로 확인 해볼 수 있다.


ifconfig


라즈베리 파이에게 할당된 IP가 192.168.0.6이라면 다음과 같이 SSH를 이용하여 로그인을 해 볼 수 있다.


그림 <SSH를 이용한 라즈베리 파이 정상 로그인 화면>


윈도우즈 환경의 경우 PuTTY를 설치하면 라즈베리 파이로 SSH 접속을 할 수 있다.


Trackback 0 Comment 0