Software/Processing

Arduino의 시리얼 신호를 Processing을 사용하여 txt 데이터로 만들기

초인로크 2017. 8. 18. 11:29
반응형

공부를 하다가 배운것을 잊어먹지 않기 위해서 여기에 정리를 한다.

 

아두이노에서 나오는 데이터를 컴퓨터에 저장해야 할 일이 생겼는데,

 

아두이노 IDE자체에서는 txt파일 등으로 만들어 내는 기능이 없는 것 같다.

 

애플 홈페이지에서 Xcode의 IOKitLib 으로 시리얼 통신하는 것을 공부하고 있는데,

 

다른 방법으로는 "Processing" 이라는 IDE를 이용하여서 아두이노랑 시리얼 통신을 하는 방법이 있다고 해서 적용 하여 봤다.

 

아래가 그 스케치들인데 프로세싱과 아두이노는 IDE가 비슷한 형태를 가지고 있다.

 

그림1. 스케치 예

 

아두이노에서는,

 

1
2
3
4
5
6
7
8
9
10
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello, world!");
  delay(100);
}
cs

 

Serial.println("Hello, world!"); 를 0.1초 간격으로 보낸다.

 

프로세싱에서는,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import processing.serial.*;
Serial SerialPort;
PrintWriter output;
 
void setup() {
   String portName = Serial.list()[0]; // 번호를 변경해 주면서 포트번호를 찾아준다
   SerialPort = new Serial( this, portName, 9600 ); // 아두이노의 보레이트에 맞춘다
   output = createWriter( "/Users/유저명/Desktop/processing/data.txt" ); // 파일이 저장되는 곳을 설정한다 
}
 
void draw()
{
    // 시리얼 포트의 데이터 확인
    if (SerialPort.available() > 0 ) {
         String value = SerialPort.readString();
         if ( value != null ) {
              //Save data
              output.println( value );
         }
    }
}
 
void keyPressed() {
    // 텍스트 파일을 완성시키기 
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
    exit();  // Stops the program
}
cs

 

1. import processing.serial.*; 로 라이브러리를 불러낸다.

 

2. String portName = Serial.list()[0]; 로 시리얼 포트를 설정해야 하는데, 각자의 컴퓨터에 있는 포트번호가 다르기 때문에, 번호를 변경하면서 시리얼 포트를 찾아준다.

 

3. SerialPort = new Serial( this, portName, 9600 );로 시리얼 포트 설정을 맞춘다. 아두이노에서의 보레이트를 9600으로 설정하였으므로, 여기서도 9600으로 맞춘다.

 

4. output = createWriter( "/Users/'유저명'/Desktop/processing/data.txt" );으로 새 파일을 만들기 위해서 폴더 설정을 해 준다. 여기서는 데스크탑에 processing 이라는 폴더 내부에 저장을 한다.

 

5. output.println( value ); 으로 값을 저장한다.

 

6. output.flush();와 output.close(); 으로 끝을 내 주어야 데이터가 텍스트 파일 내부에 저장이 된다. 저장된 파일은, 아래와 같이 소스에서 설정 해 둔 폴더내부에 있다.

 

그림2. 폴더 내부

 

이걸 확장시키면, 이것저것 써 먹을 수 있을 것 같다.

 

인터넷에서 프로세싱 소스를 참고를 한 곳을, 아래의 참고문헌에 링크를 남긴다.

[참고문헌]

https://processing.org/reference/libraries/serial/Serial.html

https://stackoverflow.com/questions/40480737/how-to-write-data-to-a-text-file-on-arduino

반응형