2014-02-24 2 views
2

나는 XBee를 통해 가속도계의 모든 축의 실시간 그래프를 MATLAB을 통해 플로팅하려고합니다.
I는 지금까지 달성 한 다음 :XBee + Arduino를 사용하여 MATLAB에서 가속도계의 모든 축을 플로팅

송신기 측에서
  • , I는 아두 이노가 Xbee 쉴드 접속있다. 이 목적으로 Series 2 Xbees를 사용하고 있습니다.
  • 아날로그 핀 Arduino + Shield 콤보와 방패의 XBee (Co-Ordinator API)에 연결되는 ADXL335 브레이크 아웃 보드 가속도계가 있습니다.
  • 수신 측에서 출력을 기록하고 MATLAB에서 플롯 할 컴퓨터에 XBee (라우터 AT)가 연결되어 있습니다.

나는 Arduino 코드 용 MATLAB 용 Arduino 라이브러리를 사용하고있다.

이제 Arduino를 연결하면 (예 : Xbee를 사용하지 않음) 가속도계의 모든 축을 완벽하게 출력합니다.
하지만 Xbee에 연결하여 arduino와 통신하려고하면 아무 것도 얻지 못합니다. 예 : 플롯 할 Xbee에게 명령을 사용할 때의 그래프이다 :

X는 아두 이노가 연결된 COM 포트이다
a = arduino(COM X); 

.

내 Xbee를 연결할 때 명령을 어떻게 변경해야합니까? (내 아두 이노와 가속도계가 컴퓨터에 연결하지만 내 수신 측 Xbee가되지 않도록 다시 불러.)

여기

내 MATLAB 코드입니다 : 내가 올바르게 설정을 이해한다면

a.pinMode(15,'input'); 
a.pinMode(16,'input'); 
a.pinMode(17,'input'); 
a.pinMode(18,'output'); 
a.pinMode(19,'output'); 
a.digitalWrite(18,0); 
a.digitalWrite(19,1); 
xval = zeros(); 
yval = zeros(); 
zval = zeros(); 

xval(1) = a.analogRead(3); 
yval(1) = a.analogRead(2); 
zval(1) = a.analogRead(2); 

pause(.001); 

for i = 2:1000 

    xval(i) = a.analogRead(3); 
    yval(i) = a.analogRead(2); 
    zval(i) = a.analogRead(2); 


    xmod = (xval-496)/300; 
    ymod = (yval-511)/300; 
    zmod = (zval-508)/300; 

    subplot(3,1,1) 
    plot(xmod, 'r'); 
    axis([1 1000 -0.5 0.5]); 
    title('x'); 

    subplot(3,1,2) 
    plot(ymod, 'r'); 
    axis([1 1000 -0.5 0.5]); 
    title('y'); 

    subplot(3,1,3) 
    plot(zmod, 'r'); 
    axis([1 1000 -0.5 0.5]); 
    title('z'); 

    pause(0.001); 

end 

답변

0

, 그것은이 같은 소리 문제는 Arduino에 연결된 XBee에서 API 펌웨어를 사용하고 있다는 것입니다. XBee 모듈을 직렬 케이블로 사용할 경우 (즉, 데이터가 XBee A의 직렬 포트에 도착하고 XBee B의 직렬 포트로 전송되는 경우), 두 모드 모두에서 "AT 모드"펌웨어를 사용해야합니다. (DH/DL에 대한 0을 사용하여 코디네이터를 대상 노드로 나타내는 바로 가기로) 페어링 된 노드의 주소로 DH/DL 레지스터를 구성합니다.

API 펌웨어에는 헤더 바이트 및 체크섬 바닥 글을 포함하는 데이터의 "프레임"을 보내고 구문 분석하는 "스마트 호스트"가 필요합니다.

Digi's XBee Examples Site에는 투명한 직렬 통신을 위해 서로 쌍을 이루는 XBee 모듈을 얻는 데 유용한 튜토리얼이 있습니다.

관련 문제