답변:
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
}
가장 간단한 방법은 Serial 라이브러리 를 사용하여 출력하는 것입니다. 그런 다음 터미널 프로그램을 사용하여 출력을 텍스트 파일로 캡처 할 수 있습니다. 하이퍼 터미널은 Windows, Linux의 Teraterm 및 OS X의 Z Term에서 사용할 수 있습니다.
멜라니
직렬 모니터 창에서 출력을 복사하여 붙여 넣지 않고 센서 데이터를 컴퓨터의 파일에 직접 쓰려면 직렬 포트에서 직접 데이터 스트림을 읽으십시오 (직렬 모니터가 수행하는 작업). 용의자). mac / linux에서 다음과 같은 작업을 수행하십시오.
cat /dev/cu.usbmodem1d11
신은 Windows 기계에서 동등한 것이 무엇인지 알고 있습니다.
cat
명령을 일종의 스크립트 로 바꿔야합니다 .
파이썬 스크립트를 만들어 직렬 포트를 읽고 결과를 텍스트 파일에 쓸 수 있습니다.
##############
## 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);
파이썬 스크립트를 사용하는 것이 더 쉽고 안전하다는 것을 알았습니다. 나는 보통 직렬 라이브러리를 기반으로 이것을 사용합니다 . 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())])
다음 단계는 이더넷 쉴드 또는 WIZ810MJ 보드와 같은 것을 사용하고 인터넷을 통해 arduino를 활성화하는 것입니다. 그런 다음 데이터를 작성하여 웹 서버에 보내 데이터를 수집 할 수 있습니다. 나는 나의 vivarium 온도 모니터 에서 이것을한다 .