Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bluetooth 如何提高Arduino中蓝牙的波特率?_Bluetooth_Arduino_Embedded - Fatal编程技术网

Bluetooth 如何提高Arduino中蓝牙的波特率?

Bluetooth 如何提高Arduino中蓝牙的波特率?,bluetooth,arduino,embedded,Bluetooth,Arduino,Embedded,我正在Arduino做一个项目,希望我的Android上有传感器数据。为此,我在Android上使用HC-05 BT模块和蓝牙终端应用程序。但蓝牙终端正在以恒定速率(我想是1秒)接收数据。我想在10毫秒内接收数据。我该怎么做 这是我的密码: #include <SoftwareSerial.h> int RX=0; int TX=1; SoftwareSerial Bluetooth(RX,TX); int i=0; void setup() { Bluetooth.b

我正在Arduino做一个项目,希望我的Android上有传感器数据。为此,我在Android上使用HC-05 BT模块和蓝牙终端应用程序。但蓝牙终端正在以恒定速率(我想是1秒)接收数据。我想在10毫秒内接收数据。我该怎么做

这是我的密码:

#include <SoftwareSerial.h>

int RX=0;
int TX=1;

SoftwareSerial Bluetooth(RX,TX);
int i=0;

void setup() {
    Bluetooth.begin(9600);
    Bluetooth.println("The controller has successfuly connected to the phone");
}

void loop() {
    Bluetooth.write(i);
    i++;
    delay(5);  
}
#包括
int RX=0;
int-TX=1;
软件串行蓝牙(RX、TX);
int i=0;
无效设置(){
蓝牙开始(9600);
Bluetooth.println(“控制器已成功连接到手机”);
}
void循环(){
蓝牙。写入(i);
i++;
延误(5);
}

您可以使用AT命令更改HC-05的波特率

使用:


这是一个

您可以使用AT命令更改HC-05的波特率

使用:


这是一个

如果是完整的代码,则您发送的是未打印的字符。而且,在得到i=127之后,您将从ascii表的上半部分发送字符。想想当i>255时会发生什么。在循环中尝试以下代码:

Bluetooth.println(“这是测试代码”)

而不是写
Bluetooth.write(i)


您可以获得更多关于和的信息,如果是完整代码,则发送非打印字符。而且,在得到i=127之后,您将从ascii表的上半部分发送字符。想想当i>255时会发生什么。在循环中尝试以下代码:

Bluetooth.println(“这是测试代码”)

而不是写
Bluetooth.write(i)

您可以从以下网站获得更多关于和的信息:

蓝牙模块波特率由来自的十六进制索引设置 “1”到“C”。索引为:1:1200,2:2400,3:4800,4:9600,5:19200, 6:38400,7:57600,8:115200,9:230400,A:460800,B:921600,C:1382400

要设置默认波特率,请输入以下命令

AT+波特

例如,对于multiwii,我们需要115200作为BT波特率 输入+8

如果成功,串行监视器中应返回“OK”

发件人:

蓝牙模块波特率由来自的十六进制索引设置 “1”到“C”。索引为:1:1200,2:2400,3:4800,4:9600,5:19200, 6:38400,7:57600,8:115200,9:230400,A:460800,B:921600,C:1382400

要设置默认波特率,请输入以下命令

AT+波特

例如,对于multiwii,我们需要115200作为BT波特率 输入+8

如果成功,串行监视器中应返回“OK”


您可以使用AT命令更改HC-06的波特率

#include <SoftwareSerial.h>
SoftwareSerial btSerial(2, 3); // RX, TX
/*
* Connect pin 2 Arduino to pin TX HC-06 
* Connect pin 3 Arduino to pin RX HC-06
*/ 
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
btSerial.begin(9600);
}
void loop()
{
if (btSerial.available())
Serial.write(btSerial.read());
if (Serial.available())
btSerial.write(Serial.read());
}
#包括
软件串行btSerial(2,3);//接收,发送
/*
*将针脚2 Arduino连接到针脚TX HC-06
*将针脚3 Arduino连接到针脚RX HC-06
*/ 
无效设置(){
Serial.begin(9600);
Serial.println(“Enter AT commands:”);
btSerial.begin(9600);
}
void循环()
{
if(btSerial.available())
Serial.write(btSerial.read());
if(Serial.available())
btSerial.write(Serial.read());
}

在+BAUD4时==>9600


AT+BAUD8==>115200

您可以使用AT命令更改HC-06的波特率

#include <SoftwareSerial.h>
SoftwareSerial btSerial(2, 3); // RX, TX
/*
* Connect pin 2 Arduino to pin TX HC-06 
* Connect pin 3 Arduino to pin RX HC-06
*/ 
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
btSerial.begin(9600);
}
void loop()
{
if (btSerial.available())
Serial.write(btSerial.read());
if (Serial.available())
btSerial.write(Serial.read());
}
#包括
软件串行btSerial(2,3);//接收,发送
/*
*将针脚2 Arduino连接到针脚TX HC-06
*将针脚3 Arduino连接到针脚RX HC-06
*/ 
无效设置(){
Serial.begin(9600);
Serial.println(“Enter AT commands:”);
btSerial.begin(9600);
}
void循环()
{
if(btSerial.available())
Serial.write(btSerial.read());
if(Serial.available())
btSerial.write(Serial.read());
}

在+BAUD4时==>9600


AT+BAUD8==>115200

您能提供Arduino代码吗?我想它是以1秒的恒定速率发送数据。好的,我会提供代码。你的问题不是波特率。@ChrisStratton,你能多解释一点吗?9600波特率能够在不到百分之一秒的时间内移动你的消息,所以你看到的延迟量不是错误,尽管你可能需要为你的最终目标改变它。另外,您可能需要重新考虑将Arduino硬件串行引脚用于软件串行端口。但你的实际问题很可能在Android方面。显示你的Android代码和你接收到的数据-它的计数是否一致,或者是否有丢失的数字或乱码消息?尝试将收到的数据写入Android日志,并使用带有时间戳的logcat。您能提供Arduino代码吗?我想它是以1秒的恒定速率发送数据。好的,我会提供代码。你的问题不是波特率。@ChrisStratton,你能多解释一点吗?9600波特率能够在不到百分之一秒的时间内移动你的消息,所以你看到的延迟量不是错误,尽管你可能需要为你的最终目标改变它。另外,您可能需要重新考虑将Arduino硬件串行引脚用于软件串行端口。但你的实际问题很可能在Android方面。显示你的Android代码和你接收到的数据-它的计数是否一致,或者是否有丢失的数字或乱码消息?尝试将接收到的数据写入Android日志,并使用带有时间戳的logcat。Arduino和GSM模块之间链路的波特率无法解释观察到的问题。即使他使用9600,数据应达到每1ms 1字节。但作者声称他在1秒内收到Arduino和GSM模块之间链路的波特率并不能解释观察到的问题。即使他使用9600,数据应达到每1ms 1字节。但作者声称他在1秒内收到的数据也将延迟(5)更改为延迟(5000),否则,您将每秒收到200条记录。目标是每秒收到100条记录,即,如果没有其他原因导致速度减慢,则延迟(10)。我有在Android中每秒接收200多个uint16样本的经验,没有任何问题,但数据是在后线程中发送的。从你的描述