【问题标题】:How can I increase baud rate for bluetooth in Arduino?如何在 Arduino 中增加蓝牙的波特率?
【发布时间】:2016-04-19 15:19:25
【问题描述】:

我正在 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);  
}

【问题讨论】:

  • 你能提供Arduino代码吗?我想它以 1 秒的恒定速率发送数据。
  • 好的,我会提供代码。
  • 您的问题是其他而不是波特率。
  • @ChrisStratton,你能再解释一下吗?
  • 9600 波特能够在不到 1/100 秒的时间内移动您的消息,因此您看到的延迟幅度并不是问题,尽管您可能需要为您的终极目标更改它目标。顺便说一句,您可能需要重新考虑将 Arduino 硬件串行引脚用于软件串行。但您的实际问题很可能出在 Android 端。 显示您的 Android 代码和您正在接收的数据 - 它是否一致计数,或者是否存在缺少数字或乱码消息?尝试将接收到的数据写入 Android 日志并使用带有时间戳的 logcat。

标签: bluetooth arduino embedded


【解决方案1】:

来自here

蓝牙模块波特率由十六进制索引设置 “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 波特率,我们会 输入 AT+BAUD8。

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

【讨论】:

    【解决方案2】:

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

    用途:

        AT+UART=57600,1,0
    

    这是tutorial

    【讨论】:

    • Arduino 和 GSM 模块之间链路的波特率不能解释观察到的问题。
    • 即使他使用 9600,数据也应该以每 1 毫秒 1 字节的速度到达。但是作者声称他在 1 秒内收到了
    【解决方案3】:

    如果它是完整的代码,那么您发送未打印的字符。而且在您获得 i=127 之后,您将从 ascii 表的上部发送字符。想想当 i>255 时会发生什么。循环尝试这段代码:

    Bluetooth.println("this is test code")

    而不是写Bluetooth.write(i);

    您可以获取有关ASCII 的更多信息以及有关Serial.printSerial.write 的更多信息

    【讨论】:

    • 还要将delay(5)改为delay(5000),否则每秒会收到200条记录。
    • 目标是每秒接收 100 条记录,即延迟(10),如果没有其他原因导致减速。
    • 我有在 Android 中每秒接收超过 200 个 uint16 样本的经验,没有任何问题,但数据是在后台线程中发送的。根据您的描述,我们知道您使用终端,我看不出有任何理由在 gui 窗口中有这样的费率。无论如何,您必须更改您的 arduino 代码。因为终端仅用于可打印字符。
    【解决方案4】:

    你可以通过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());
    }
    

    AT+BAUD4==>9600

    AT+BAUD8==>115200

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多