2014-02-24 8 views
2

我想通过MATLAB以XBee无线方式绘制加速度计的所有轴的实时图。
我已经实现以下直到现在:使用XBee + Arduino在MATLAB中绘制加速度计的所有轴

  • 在发射机侧,我有一个Arduino用的Xbee屏蔽连接。为此我使用了2系列Xbees。
  • 我有一个ADXL335分线板加速度计连接到模拟引脚Arduino + Shield组合和屏蔽上的XBee(Co-Ordinator API)。
  • 在接收端,我有一台连接到计算机的XBee(路由器AT),它将记录输出并将其绘制在MATLAB中。

我也想提一下,我使用的Arduino库为MATLAB的Arduino代码。

现在,当我连接Arduino(即我不使用Xbee)时,我可以获得加速计所有轴的完美输出。
但是,当我在Xbee中挂钩并尝试与arduino进行通信时,我什么也得不到。例如。使用的Xbee当命令绘制图形是:

a = arduino(COM X); 

其中X是其中Arduino的连接的COM端口。

我连接Xbee时应如何更改命令? (再次回顾我的Arduino和加速度计没有连接到计算机上,但我的接收端的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使用零的快捷方式指示协调器为目标节点)配置DH/DL寄存器。

API固件需要一个“智能主机”,用于发送和分析包含标头字节和校验和页脚的数据“帧”。

Digi's XBee Examples Site有一些很好的教程,让XBee模块彼此配对以进行透明串行通信。