我正在开展一个小组项目,我们将通过蓝牙从Arduino发送到Android的串行数据。我们在Arduino和Android上都相当新。
使用的硬件包括Arduino Uno R3和HC-05蓝牙模块。
我正在为3轴加速度计数据包发送虚拟数据,并成功读取Android的数据包数据。
但是,我们有一大堆数据(通常大约50个字节,最多可达512个字节),总是会在一开始就发送给应用程序。它是一个随机大小的字节块,我们无法解释它,因为它似乎与我们为数据设置的数据包格式不匹配。我们设法通过检查数据包大小是否足够小来避免查看此字节块。但这会增加很多开销(4 - 5秒),所以我们想弄清楚这个blob数据是什么。那么,HC-05是否首先发送了一些专有的蓝牙相关数据,或者我的脚本是否存在导致意外数据被发送的错误?
这是Arduino代码。
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10,11);
void setup(){
bluetooth.begin(9600);
}
void loop() {
int x = random(360);
int y = random(360);
int z = random(360);
formAccelerometerPacket(x, y, z);
delay(5000); // wait 5 sec
}
void formAccelerometerPacket(int xVal, int yVal, int zVal) {
printSensorVal('A', xVal);
printSensorVal(':', yVal);
printSensorVal(':', zVal);
}
void printSensorVal(char flag, int sensorVal) {
bluetooth.print(flag);
bluetooth.print(sensorVal);
}
我用蓝牙终端应用程序看了它,但从那里看起来没什么错。它的应用程序LogCat显示从应用程序收到的这些内容,但我不能解释它,正如我之前所说,这是我需要解决的问题。
我试图查看其他SO问题,但没有其他人可以帮助我。
我没有与其他队友一样的Android应用程序代码,但我知道他们密切关注了BluetoothChat示例。
我唯一的想法是,由于Arduino循环数据,如果应用程序在Arduino启动后启动,它可能会开始从串口中发生的事情中读取一些数据。但它没有解释blob字节的大小差异。
2014年8月21日上午10点33分编辑
这是LogCat的屏幕截图。我们做的是先运行Android应用程序然后启动Arduino以确保主板没有旧数据。看着这个让我觉得这可能是一个配对问题,正如有人建议的那样。我正在努力尝试修复。
答案 0 :(得分:1)
在Google Play上尝试蓝牙SPP,然后连接到HC-05。检查输出,然后一旦你得到干净的数据重置arduino,看看会发生什么。这就是我经常检查HC-05输出的方法。并且HC-05启动时没有发送任何信息。我无法发表评论所以不得不发表回答,抱歉。
答案 1 :(得分:0)
我不确定这是你的情况,但可能是有用的。当您从HC-05(FC-114)向从站(HC-06)发送数据时,第一个字节(或前三个/四个)立即发送,其余字节延迟5 / 10ms。我不知道为什么,但我用示波器看到它。如果管理得当,你可以在收到等待一段时间的字节数据包时解决问题,否则,你可能会因为理解发生的事情而疯狂。