查看: 125|回复: 0

[经验] MEGA2560连接维特智能的JY901模块的方法

[复制链接]

主题

好友

540

积分

举人

该用户从未签到

发表于 2019-8-30 13:52:10 |显示全部楼层

JY901模块厂家提供了丰富的例程,但是对于Arduino的硬件平台来说,厂家给出的应用只适用于只有一个串口的UNO R3或者promini等版本。因为模块是串口的,所以如果把唯一的一个串口的接收口用来接收JY901模块的数据的话,就不能再接收其他的模块的数据了。所以我想到了用MEGA2560这款具有多个串口的硬件平台。

MEGA2560具有多个串口,所以在串口初始化的时候需要注意用不同的函数去做,只需要在厂家提供的源程序上做一点小改动即可。

先说硬件的连接,如下图



将TX1接到JY901模块的RX,RX1接到JY901模块的TX,TX和RX要交叉相接,千万不能接错了。然后将电源接上,如果两个板子分开供电的话,一定要注意将GND接在一起。

    ​这里我就用MEGA2560的电源个模块供电了。模块提供了左右两个VCC和GND,内部是联通的,所以任选一个接口接上即可。

然后是程序,在Setup中初始化两个串口。JY901模块的默认波特率是9600,所以这里函数的参数写9600,如果是JY-61模块,默认波特率是115200,就需要改成115200,否则出不来数据。

void setup()

{

Serial.begin(9600);  

Serial1.begin(9600);

}

Loop函数里面,做解析数据的打印输出以及串口数据的接收。

void loop()

{

  //printreceived data. Data was received in serialEvent;

   Serial.print("Angle:");Serial.print((float)JY901.stcAngle.Angle[0]/32768*180);Serial.print("");Serial.print((float)JY901.stcAngle.Angle[1]/32768*180);Serial.print("");Serial.println((float)JY901.stcAngle.Angle[2]/32768*180);


Serial.println("");

  delay(500);

  while(Serial1.available())

  {

   JY901.CopeSerialData(Serial1.read()); //Call JY901 data cope function

  }

}

在loop的末尾,加入串口数据的解析,如果串口有数据,就调用serial1.read函数去取出一个串口数据,然后调用JY901.CopeSerialData这个函数去解析,这个函数是厂家提供的库文件里面有的。

这样,Mega2560接收模块的程序就做好了。需要注意的是,写程序之前,需要先按照厂家提供的方法,将JY901模块的库文件导入到arduino的库中。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /5 下一条

手机版|电路城

GMT+8, 2019-9-18 05:09 , Processed in 0.061894 second(s), 13 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz!

返回顶部