아두이노에서 NT-ARSv1의 데이터를 받는 예제
NT-ARSv1의 출력 데이터를 아두이노에서 해석하는 예제입니다. Roll, Pitch와 그 각속도 이렇게 4개의 값중에서 사용자가 선택할 수 있으며, 출력된 데이터는 문자열이 아니라 double형의 숫자로 받도록 했습니다. 이미 예전에 [바로가기]에서 NT-ARSv1의 데이터를 받는 부분을 다루었는데요. 당시에는 단순히 값을 한 번 확인하는 것과 아두이노와 ARS와의 연결에 대한 부분을 다루었다면 이번에는 약간 함수화를 했습니다. 기본적으로 하드웨어적인 연결은 [바로가기]와 같으니 먼저 읽고 넘어오시기 바랍니다.
일단 오늘 보여드릴 예제는 몇몇개의 함수로 구현되어 있어서 함수별로 하나씩 확인해보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
String getARSresultAtOnece() { String outputValuesOfARS = ""; Serial1.print("<CAO>"); delay(2); while (Serial1.available()) { char incomingChar = Serial1.read(); outputValuesOfARS += incomingChar; } return outputValuesOfARS; } |
먼저 getARSresultAtOnce() 함수입니다. 이 함수는 NT-ARSv1의 데이터를 STRING의 형태로 저장하는 것이 목적입니다. 여러가지 형태로 다양하게 사용하실려면 이 함수만 사용하신 다음 간편하게 응용하시면 됩니다. 함수이름에도 나타나 있지만, ARS의 <CAO>명령을 사용합니다. 만약 사용자가 <CAH>명령을…
아두이노에서 NT-ARSv1의 데이터 받기
아두이노 Arduino MEGA ADK에서 NT-ARSv1데이터를 받아서 각도(degree)로 환산하는 예제 코드입니다. 아두이노로 저희 NT-ARSv1를 다룰려고 하시는 분들께 도움이 될 수 있으면 좋겠습니다.
우리 연구소에서는 아주 예전에 Pitch와 Roll각도를 받을 수 있는 NT-ARSv1[바로가기]이라는 저가의 ARS 모듈을 출시했었습니다.
오늘은 여러 유저들께서 자주 요청하시던 아두이노에서 이 ARS의 데이터를 받는 예제를 공개할려고 합니다. 일단, 이 글에서 테스트 되는 아두이노 보드는 Arduino MEGA ADK[판매 페이지 바로가기]입니다. 왜 MEGA ADK 버젼을 사용했냐면, 저는 PC에서 데이터를 확인하고 싶었기 때문에 ARS와 시리얼 통신으로 연결될 여분의 시리얼 포트가 더 필요했기 때문입니다. Arduino MEGA ADK는 총 4개의 시리얼 포트를 가지고 있어서 선정했구요.
그런데 연결하다보니 약간의 문제를 만났네요. 어떤 문제냐면, NT-ARSv1의 시리얼통신 출력은 RS232신호로 나온다는…
NT-ARSv1 절대 각도를 얻는 센서
공간상에서 물체의 기울어진 각도, 기울기를 측정하고 싶으시다면, 저희의 NT-ARSv1을 추천합니다. 저가의 MEMS형 자이로센서와 가속도센서를 융합하여 2축 각도를 측정하도록 설계가 되었습니다.
각도를 측정할 만한 센서들은 많이 있습니다. 그중에서 자이로센서와 가속도센서가 많이 이용되는데요. 왜 이 둘을 융합해야할까요. 만약 고급의 고가의 센서를 사용한다면 문제는 없습니다. 그러나 저가의 MEMS형 센서를 사용한다면, 자이로나 가속도세서를 하나만 사용해서는 문제가 생깁니다.
자이로센서를 이용하는 경우는 적분이라는 문제가 생깁니다. 자이로센서의 출력은 각속도이기떄문에 각도를 얻기 위해서는 적분해야하거든요. 문제는 이 적분이 그리 아름답지 않다는 것이 문제입니다. 작은 오차라도 적분이 시작되면, 이후 결과에 누적으로 영향을 미치기 때문입니다. [관련글]
가속도센서를 사용하는 경우 자이로처럼 적분에 대한 부담은 없습니다. 그러나, 가속도센서가 회전중심충에서 직선방향으로는 움직이지 않아야한다는 전제가 필요합니다. 만약 가속도센서가…