본문 바로가기

Lab./Quadcopter

myARS-USB I2C 통신

obot 사의 myARS-USB 이다.

3축 가속도 센서와 2축 자이로 센서를 이용하여 

실제 pitch , yow 값을 출력하여 주는  ARS(Attitude Reference System) 이다.


myARS-USB image myARS-USB image


처음에 포장이 참 인상 깊었던 센서......

SMD 부품케이스를 이런식으로 사용할수 있을 줄이야.....

내가산 센서중 가장 비싼 센서이지만......  그만큼 정성이 느껴졌기에 가장 기분좋게 받아봤던(기대감도 컸었음)
센서중 하나....

 
 그 크기가 50원 동전위에 올라갈정도이니 그 크기를 알 수 있다.

지금은 쿼드콥터에 사용하기 위해 테스트중....

학기중에는 딱히 작업할 시간이 없었으니까.....


그리고 학기중 간간히 나를 I2C로 좌절시킨 녀석이기도 하다..

그리하여 드디어 myARS-USB를 I2C로 정복하였다.

역시 예제코드가 최고야!!!!!

 
덕분에 AVRSTUDIO를 이용하여 GCC를 사용하게 되었다.

아직 익숙하지 않아 다양한 제어를 하지는 못하지만.

곧 익숙해지리라 생각된다.


 
핀 맵
 Pin No  Mnemonic  Input/Output  Description
 1  INT  O  Data Ready Interrupt 출력
 2  SLEEP  I  Sleep mode control input.
 L : Sleep mode, 
 H : Normal mode
 3  I2C_SCL  I  I2C clock input
 4  I2C_SDA  I/O  I2C data line
 5  USB_DM  I/O  USB D- line
 6  USB_DP  I/O  USB D+ line
 7  GND  PWR  Power Ground
 8  UART_RX  I  UART Receive
 9  UART_TX  O  UART Transmit
 10  NC  NC  No Connection
 11  nRST  I  Reset Input. L : Reset, 
 H : Normal
 12  VDD  PWR  +5V Power Input



그동안 고생했던 원인은 핀맵에서 2번핀 SLEEP 과 11번핀 nRST 를  open 으로 설정해서 일어난듯하다.

USB나 UART의 경우 2번핀과 11번핀에 상관없이 동작하였는데 I2C의 경우는 그렇지 않은듯하다.

꼭 핀을 설정해주기를 바란다.


그리고 데이타시트에서 주소비트를

SAD+W 를 0x1c<<1
SAD+R  을 0x1c<<1 + 1 

로 표시하는데   저런식으로 입력할 경우 0x1c<<1 , 0x1c<1+1  모두 2바이트 Integer 형의 변수로 인식한다.

sizeof() 함수를 이용하여 확인한 결과 2byte 데이터 길이를 가짐을 확인하였다.

Withrobot 의 sample 코드에서는 주소값들을 #define 을 이용하여 상수화 하여 사용한듯하다.

그동안 동작시키지 못했던것은 그것때문일까?....

하여튼 2번핀과 11번핀....  그리고 데이터형......

어쨌든 I2C를 이용한 데이터 통신에 성공!!!!

I2C 코드를  첨부한다....

아직 gcc가 익숙하지 않아 셈플소스를 긁어오는 스타일이지만.....
얼른 익숙해져 좀더 자연스럽게 쓸수있는날이 얼른 와야겠군.....

(AVRSTUDIO를 이용하여 코딩함)


WithRobot SampleCode