【问题标题】:Resetting the HC-06 Bluetooth module with Arduino Uno? [closed]使用 Arduino Uno 重置 HC-06 蓝牙模块? [关闭]
【发布时间】:2016-11-11 13:31:45
【问题描述】:

这是我在 Stackoverflow 上的第一篇文章,希望您能回答我的问题。

我对 Arduino 还很陌生,我不小心用以下代码更改了我的 HC-06 蓝牙模块的波特率和名称。

#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 4); // RX, TX

void setup()
{
  //Serial.begin(9600);
  //Serial.begin(57600);
  Serial.begin(115200);
  Serial.println("Goodnight moon!");

  mySerial.begin(9600);
  //mySerial.begin(57600);
  //mySerial.begin(115200);    //if you change the baud and want to re-run this sketch, make sure this baud rate matches the new rate.

  delay(1000);
  mySerial.print("AT");
  delay(1000);
  mySerial.print("AT+VERSION");
  delay(1000);

  //mySerial.print("AT+PIN1234"); // Set pin to 1234  was 1342
  //delay(1000);

  //mySerial.print("AT+NAMEJY-MCU-HC06"); // Set the name to JY-MCU-HC06
  //delay(1000);

  //mySerial.print("AT+BAUD4"); // Set baudrate to 9600
  //mySerial.print("AT+BAUD7"); // Set baudrate to 57600
  mySerial.print("AT+BAUD8"); // Set baudrate to 115200
  delay(1000);
}

void loop() // run over and over
{
  if (mySerial.available())
  Serial.write(mySerial.read());
  if (Serial.available())
  mySerial.write(Serial.read());
}

现在我无法恢复到默认设置(波特率 9600 和名称 HC-06),我不知道如何解决这个问题。

我尝试输入串行 AT 命令,但没有得到响应。我还确定了 HC-06 模块没有与任何其他设备配对,但仍然没有响应。除了 Arduino 串行监视器,我还尝试了不同的源和终端,例如:

http://www.hobbyist.co.nz/?q=bluetooth-module-device

http://42bots.com/tutorials/hc-06-bluetooth-module-datasheet-and-configuration-with-arduino/

还有更多...

所以我的问题如下:我应该如何恢复我对 HC-06 蓝牙模块所做的更改,最好恢复为波特率 9600?

提前谢谢你。

-F

【问题讨论】:

  • 或许您可以使用终端程序并尝试以各种波特率发送 AT 命令,直到它响应为止。然后通过终端程序改回9600。
  • 我按照您的建议使用 Tera Term 进行操作,遗憾的是没有响应..
  • 在发送mySerial.print("AT+BAUD8"); 命令后,您是否将 Tera Term 切换为 115200 波特?你看到OK115200了吗?
  • 不,我没有收到任何更改的确认。但是,在上传草图后,模块的名称发生了变化,所以我假设波特率也发生了变化。我的假设来自这样一个事实,即我可以在我的 Android 手机上监控 Android 应用程序上的数据:蓝牙 S2 终端。现在我得到奇怪的信号,比如; �,所以我认为这是因为改变了波特率?
  • 将 Tera Term 切换到 115200 波特时,您观察到了什么?输入“AT”+查看答案。

标签: c bluetooth arduino serial-port arduino-uno


【解决方案1】:

您可以尝试使用硬件串行而不是软件串行,看看是否可行?

注意:根据我在 arduino 硬件串行上使用 HC 蓝牙模块的经验,为了获得正确的草图上传,您必须从 Arduino 上拔下 HC-06 的电源或 tx/rx,否则会干扰。

另外,你可能想注释掉

mySerial.print("AT+BAUD8"); // Set baudrate to 115200

并取消注释

//mySerial.print("AT+BAUD4"); // Set baudrate to 9600

当您发送命令时,您应该得到如下信息:

从主机控制器:

AT+BAUD3

回应

OK4800

Secondary Datasheet For Reference

在数据表上,11 上有一个复位引脚。(第 2 页的图表)

另外,还有一个重置命令:

AT+RESET 重置设备

【讨论】:

  • 我不知道如何将硬件串行与 Arduino 一起使用,它的工作方式与软件串行相同吗?例如#include &lt;HardwareSerial.h&gt; HardwareSerial mySerial(3,4);?另外,当我输入任何 AT 命令行时,我没有收到任何响应,您认为这些引脚应该连接到 3,4 引脚(如草图中)还是 rx、tx 引脚?
  • 我也不知道怎么用reset pin,我是不是只要把东西连上足够长的时间就可以自动重置了?
【解决方案2】:

好吧,我觉得我很笨......

显然我将波特率设置为 57600,而不是 115200...所以现在我可以通过 57600 波特率更改波特率和名称。

好吧,我不会忘记在此之后它现在是如何工作的:P。感谢大家的时间和耐心。

-F

【讨论】:

    【解决方案3】:

    如果您将波特率设置为超过 8(115200),则很难回到 9600 或其他可用的波特率,因为计算机大多不处理那么高的频率。

    instructables.com 上的 Yoda 博士制作了一个基于 ATMEGA328P-PU(例如 arduino UNO)的汇编程序技巧,它可能有助于在如此高的频率下伪造串行连接。根据他的工作,我做了这个页面来生成一个 arduino 脚本,它可以恢复你的 AT 与你的 HC-06 的连接。

    先阅读尤达博士的帖子。

    https://tools.krum.com.ar/save_your_hc-06/

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多