라즈베리파이 활용 강좌 : 라즈베리파이 커맨드창에서 알피노(아두이노) 컴파일 및 업로드 하기
RPino Command Line Compile&Upload with RPi
RPino를 RPi와 연동하기 위해 주로 vnc를 사용하여 x10 상의 Arduino Sketch로 Compile&Upload 할 것이다.
간편하긴 하지만, RPi의 CPU 사용율이 상당히 증가함을 x10의 StatusBar 를 통해 알 수 있을 것이다.
이에, 이번에는 명령어로 RPino에 Upload하는 방법을 알아보자.
Arduino사용법을 가져온 것이기 때문에 모든 Arduino에 적용 가능하다.
1. RPino와 RPi 연동하기
“RPino for RaspberryPi install Manual”에 RPino와 RPi 를 연동하여 Arduino Sketch로 사용하는 방법이 잘 정리되어 있다. 중요 명령어를 나열하자면 아래와 같다.
pi@rasplay $ sudo apt-get update
pi@rasplay $ sudo apt-get upgrade
pi@rasplay $ sudo apt-get install arduino
pi@rasplay $ wget http://rasplay.iptime.org/data/source/RPino.tar.gz
pi@rasplay $ tar xvf RPino.tar.gz
pi@rasplay $ cd RPino
pi@rasplay $ ./setup
pi@rasplay $ sudo reboot
2. Command Line Compile Setting
RPino Project의 Command Line Compile에는 SCons Tool을 사용할 것이다.
이에 대해서는 https://scons.org 에서 참고하기 바란다.
추가로 SCons를 사용하기 위해 python-serial package를 설치하고, SConstruct file을 download한다.
pi@rasplay $ sudo apt-get install python-serial scons
pi@rasplay $ mkdir sketch
pi@rasplay $ cd sketch
pi@rasplay $ git clone https://code.google.com/r/kylecgordon-arscons/
3. Coding, Compile and Upload
테스트 RPino Project Name을 “myinoprj”로 하였다.
pi@rasplay $ mkdir myinoprj
pi@rasplay $ cd myinoprj
pi@rasplay $ cp ../kylecgordon-arscons/SConstruct ./
간단한 arduino source를 작성한다. file name은 꼭 project name (directory name)과 같도록 한다. 여기서는 “myinoprj.ino”로 하였다.
pi@rasplay $ vi myinoprj.ino
#define PIN_LED 13
void setup(void)
{
pinMode(PIN_LED, OUTPUT);
}
void loop(void)
{
digitalWrite(PIN_LED, HIGH);
delay(5000);
digitalWrite(PIN_LED, LOW);
delay(5000);
}
SCons를 실행하여 Compile 및 Upload를 수행한다.
아래와 같이 몇가지 옵션을 설정해주면 RPino에 정상적으로 Upload가 진행된다.
Upload를 제외한 Compile 만을 위해서는 “upload” parameter를 제외하면 되겠다.
pi@rasplay $ scons ARDUINO_PORT=/dev/ttyS0 ARDUINO_BOARD=atmega328 ARDUINO_VER=1.0.1 ARDUINO_HOME=/usr/share/arduino upload
참고로, 테스트 도중 실수했던 사항이 다른 Serial Module Test를 위해 ttyAMA0 device를 사용하는 program을 띄운 채 scons를 실행했던 적이 있다. 이 경우는 compile은 완료되나 upload에서 error가 발생한다.
이 program을 종료하고 scons를 실행하니 정상적으로 upload가 완료되었다.
[참고사이트]
o http://www.webweavertech.com/ovidiu/weblog/archives/000482.html