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的库中。
|