EBIMU 셋팅값 바꾸기 - cchamchi/cansat GitHub Wiki
EBIMU는 시리얼 통신으로 셋팅이 가능합니다. 아래처럼 두가지 방법이 가능합니다. 캔위성에서 장착된 채로 셋팅을 바꿔보려 했는데 아직은 Tx 핀이 연결되지 않았군요.

USB-UART를 EBIMU와 연결하고 노트북에서 하이퍼터미널(시리얼 통신 프로그램)을 이용하여 셋팅하는 방법입니다. 하이퍼 터미널은 windows 7이후에는 제공되지 않습니다. 또한 추가적인 드라이버도 설치해야 하는 등 불편함이 있습니다. 별로 권하고 싶지 않습니다.
셋팅 매뉴얼을 클릭하시면 자세한 자료를 받을 수 있습니다.
이 글을 보는 학생이라면 아두이노 IDE는 이미 설치 되었겠죠 ?? 아두이노 IDE는 쉽게 설치가능하고 시리얼 모니터를 통한 통신이 기본으로 제공됩니다.
아두이노 우노(오랜지 보드)의 경우 시리얼 포트가 1개 뿐이라서 노트북 <-> 아두이노 간의 시리얼 통신은 되지만
노트북 <-> 아두이노 <-> EBIMU 통신을 하려면 2개의 시리얼 포트가 필요합니다. 이런 문제를 해결하기 위해서 SW serial port 라이브러리가 제공됩니다.
노트북 <-HW serial-> 아두이노 <-SW serial->EBIMU 이렇게 연결하고 아두이노는 양쪽을 시리얼 데이터를 통과(passthru) 시켜주기만 하면 됩니다.
아래 그림과 같이 EBIMU의 tx를 아두이노 SW serial의 rx핀에,EBIMU의 rx를 아두이노 SW serial의 tx핀에 연결합니다. SW serial은 rx, tx port 를 사용자 임의 대로 변경 가능합니다.

아두이노 우노(오랜지보드)에 프로그램을 다운로드 할것이기 때문에 아두이노 IDE의 보드를 arduino uno로 변경합니다. 툴 > 보드 > arduino Uno
아래 코드를 다운 로드합니다.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// set the data rate for the SoftwareSerial port
mySerial.begin(115200);
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
시리얼 모니터를 열고 (115200) 데이터가 나오는지 봅시다. 데이터가 너무 빨리 나옵니다. 1초에 100번이 초기 세팅입니다. 아래 명령어를 시리얼 포트의 입력창에 써서 데이터 간격을 1초에 한번으로 셋팅합니다. 자세한 명령어 설명은 아래 위키를 참고하여 셋팅해 주세요
<sor1000>
이제 차근차근 셋팅을 해볼까요 EBIMU의 버전을 알아봅시다
<ver>
현재는 Euler각도만 출력되는데 가속도 값도 출력 되도록 셋팅 합니다.
<soa1>
이제 3축 euler 각도와 3축 가속도 값이 출력됩니다. 평평한 바닥에 EBIMU를 올려 놓았다면 x,y 축은 중력 방향과 90도 이므로 가속도는 0 입니다. 하지만 Z축은 중력 방향을 1에 가까운 값이 나옵니다. x축을 중력 방향이 되게 돌리면 EBIMU를 45도 쯤 기울이면 2축이 값이 벡터 합에 의해 중력 가속도를 나누어 갖습니다. sin45값이 되겠죠? 혹은 피타고라스 정의로 해도 되구요
자 이제 아래 명령을 써서 데이터 rate를 원래대로 복원합니다.
<sor10>
셋팅된 EBIMU를 캔위성에 장착합니다.