Arduino 센서 데이터를 텍스트 파일로 저장


34

센서에서 검색 한 데이터를 컴퓨터의 텍스트 파일로 저장하려면 어떻게해야합니까?

답변:


30

serial-lib를 사용하여 센서 데이터를 직렬 포트에 기록하고 직렬 포트에서 데이터를 읽고 파일에 쓰는 작은 처리 프로그램을 작성할 수 있습니다.

arduino 코드에서 설정 방법으로 직렬 라이브러리를 초기화하십시오.

Serial.begin(9600);

사용하여 센서 값을 직렬 인터페이스에 씁니다.

Serial.println(value);

루프 방식으로

처리 측에서 PrintWriter를 사용하여 직렬 포트에서 읽은 데이터를 파일에 씁니다.

import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
   mySerial = new Serial( this, Serial.list()[0], 9600 );
   output = createWriter( "data.txt" );
}
void draw() {
    if (mySerial.available() > 0 ) {
         String value = mySerial.readString();
         if ( value != null ) {
              output.println( value );
         }
    }
}

void keyPressed() {
    output.flush();  // Writes the remaining data to the file
    output.close();  // Finishes the file
    exit();  // Stops the program
}

동일한 아두 이노 코드 또는 별도의 c 스크립트에서 "프로세싱 측"코드는 어디로 가야합니까?
Ulad Kasach

1
별도의 처리 스크립트에서-처리는 C로 컴파일되지 않고 Java로 컴파일됩니다
Nikolaus Gradwohl

@UladKasach "프로세싱"은 다중 플랫폼 프로그래밍 환경입니다. 사실, 그것은 세계에서 가장 멍청한 이름을 가진 프로그래밍 환경입니다.
Scott Seidman 2016 년

9

또 다른 옵션은 SD 카드 리더 / 라이터를 사용하고 파일을 SD 카드에 쓰는 것입니다. 데이터 수집이 완료되면 워크 스테이션 컴퓨터와 SD 카드를 교체하십시오. 이 접근 방식을 사용하면 컴퓨터와의 연결을 끊은 프로젝트를 실행할 수 있으며 대량의 데이터를 비 휘발성으로 저장할 수 있습니다.


6

gobetwino 프로그램 은 최소한의 노력으로 Arduino에서 텍스트 파일 또는 스프레드 시트로 센서 값을 기록합니다. 또한 컴퓨터에서 작업을 자동화하고 타임 스탬프를 추가 할 수 있습니다 (따라서 arduino에 프로그래밍 할 필요가 없음).

대체 텍스트


5

가장 간단한 방법은 Serial 라이브러리 를 사용하여 출력하는 것입니다. 그런 다음 터미널 프로그램을 사용하여 출력을 텍스트 파일로 캡처 할 수 있습니다. 하이퍼 터미널은 Windows, Linux의 Teraterm 및 OS X의 Z ​​Term에서 사용할 수 있습니다.

멜라니


4

직렬 모니터 창에서 출력을 복사하여 붙여 넣지 않고 센서 데이터를 컴퓨터의 파일에 직접 쓰려면 직렬 포트에서 직접 데이터 스트림을 읽으십시오 (직렬 모니터가 수행하는 작업). 용의자). mac / linux에서 다음과 같은 작업을 수행하십시오.

cat /dev/cu.usbmodem1d11 

신은 Windows 기계에서 동등한 것이 무엇인지 알고 있습니다.


1
타임 스탬프를 각 센서 판독 값과 연결하려고 할 수도 있습니다.이 경우 해당 cat명령을 일종의 스크립트 로 바꿔야합니다 .
garageàtrois

3

파이썬 스크립트를 만들어 직렬 포트를 읽고 결과를 텍스트 파일에 쓸 수 있습니다.

##############
## Script listens to serial port and writes contents into a file
##############
## requires pySerial to be installed 
import serial

serial_port = '/dev/ttyACM0';
baud_rate = 9600; #In arduino, Serial.begin(baud_rate)
write_to_file_path = "output.txt";

output_file = open(write_to_file_path, "w+");
ser = serial.Serial(serial_port, baud_rate)
while True:
    line = ser.readline();
    line = line.decode("utf-8") #ser.readline returns a binary, convert to string
    print(line);
    output_file.write(line);

1

파이썬 스크립트를 사용하는 것이 더 쉽고 안전하다는 것을 알았습니다. 나는 보통 직렬 라이브러리를 기반으로 이것을 사용합니다 . datetime 모듈을 사용하여 타임 스탬프를 추가하는 것이 매우 일반적입니다.

import serial
from datetime import datetime

sensor = "DH11"
serial_port = '/dev/ttyACM0'
baud_rate = 9600
path = "%s_LOG_%s.txt" % (str(datetime.now()), sensor)
ser = serial.Serial(serial_port, baud_rate)
with open(path, 'w+') as f:
    while True:
        line = ser.readline()
        f.writelines([line.strip(), " t = %s \n " % (datetime.now())])

0

다음 단계는 이더넷 쉴드 또는 WIZ810MJ 보드와 같은 것을 사용하고 인터넷을 통해 arduino를 활성화하는 것입니다. 그런 다음 데이터를 작성하여 웹 서버에 보내 데이터를 수집 할 수 있습니다. 나는 나의 vivarium 온도 모니터 에서 이것을한다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.