광주과학고등학교 로켓 동아리 I.F의 프로젝트 진행에 사용되는 코드들을 모아두는 레포입니다.

셋업

pip install matplotlib pyserial

추력 테스트 장치

collectData.ino는 추력 테스트 장치의 아두이노에 업로드하는 코드입니다. 사용하는 추력 테스트 장치는 로드셀과 아두이노를 연결하여 사용하는 중입니다.

data.py는 아두이노가 Serial 통신을 통해 보내주는 값을 저장하는 코드입니다. 아두이노 ide 시리얼 모니터가 켜져있으면 에러가 발생합니다 코드가 작성중일 때 Ctrl+C를 눌러 정지시키면 값을 자동으로 data.csv에 저장합니다. 데이터는 time과 row_data 로 구성되어 있습니다. 전체 예시는 이 파일를 참고하세요.

time,raw_data
1726790051.1860917,-8574.32
1726790051.2779658,-8573.62
1726790051.3700943,-8572.86
1726790051.4615042,-8573.16
1726790051.5532014,-8574.12
1726790051.645105,-8573.68
1726790051.7369542,-8574.04
1726790051.8291001,-8574.04
1726790051.9208891,-8574.20
1726790052.0121582,-8574.56
1726790052.103489,-8573.78
1726790052.195981,-8573.88

예시 파일은 이 파일을 참고하세요.

visualize.py는 저장된 값을 해석하는 코드입니다. Edit the following constants 라고 주석이 되어 있는 부분의 값을 수정하면 됩니다. 코드를 실행하면 output 폴더에 설정한 이름의 폴더가 생성됩니다. 그 폴더 안에 그래프가 저장됩니다.

변수명 설명
ZERO_DATA 로드셀 위에 아무것도 올려두지 않았을 때의 센서값
ROCKET_MASS 로켓의 발사 전 연료를 포함한 질량(Kg)
ROCKET_DATA 로드셀 위에 로켓만 올렸을 때 센서값
ROCKET_END_DATA 로켓이 완전 연소가 끝난 뒤, 로드셀 위에 올려진 상태의 센서값
LOOK_START 로켓이 발사되기 시작하는 지점의 데이터 인덱스
LOOK_END 로켓 연소가 끝나는 지점의 데이터 인덱스
DATA_TITLE 데이터의 제목(그래프의 제목)
FILE_PATH 데이터가 저장된 파일의 경로

실행 결과는 예시 폴더를 확인하세요.

예시 그래프

위 그래프처럼 전체 힘-시간 그래프, 설정한 부분의 힘-시간 그래프, 설정한 부분의 속도-시간 그래프, 설정한 부분의 위치-시간 그래프를 모두 합친 그래프 하나와 각각 그래프로 저장됩니다.