告诉蓝牙模块何时连接Arduino

时间:2013-04-14 23:14:24

标签: bluetooth arduino

我正在开发一个Android和Arduino的项目,我正试图弄清楚Arduino方面是如何判断蓝牙是否已连接。

我正在使用其中一个Bluetooth Modules进行连接。我知道我可以通过Android发送命令,但我尝试在连接时自动执行操作,如果可能的话,不必在Android上运行后台应用程序。

4 个答案:

答案 0 :(得分:3)

使用提供的模块和别的你不能:注意模块有四个连接器:

  • 电源(Vcc)
  • 接地
  • Tx(发送)
  • Rx(接收)

鉴于此接口,确定蓝牙模块是否配对的唯一方法是向配对设备发送内容并让其响应,例如Arduino知道它已连接。例如,如果您的Android程序在收到字符串"Hi there!"时始终以"Hello?"响应,那么通过seingin "Hello?"您的Arduino将知道它与您的Android手机/平板电脑配对。您的Arduino可以每分钟(或每五秒钟)轮询(发送询问字符串)以查看它是否与您的设备配对。


有一种更好的方法,但需要一些焊接。如果您的模块是基于HC-03 / HC-05的,则PIO9引脚是“配对指示灯LED”(参见数据表here)。您可以将该引脚连接到Arduino输入引脚并读取电平:读取数字1将指示设备已配对,而读取数字0则表示设备未配对。虽然不确定,但是标记为STATE的模块上的引脚恰好是这种引脚,即它表示配对状态是可能的。不幸。此引脚未连接到接头,因此您必须将电线焊接到正确的焊盘以将其连接到Arduino。您应首先通过将电压模式的万用表连接到该焊盘来测试它,并在成对和非配对状态下测量该焊盘与地之间的电位。如果这是响应配对状态的引脚那么你是金色的。它可能表示功率(如HC-03/05 PIO8 whilc打开时闪烁)。如果事实证明STATE引脚不是配对状态,那么您应该从供应商处请求数据表,并使用它来查找状态LED连接:一个可能存在。找到正确的焊盘后,再次使用电压表验证其功能。然后将电线焊接到该连接并从Arduino读取。

重要:确保您的Arduino 从不在连接到蓝牙模块状态引脚的Arduino引脚上输出数字1:这些蓝牙模块运行在3.3V电压下,将任何未受保护的引脚连接到5V都会造成损坏。 Vcc和Txd引脚在您购买的模块中进行电压转换,但LED /状态线很可能不会。因此,如果连接到蓝牙模块上“状态”的Arduino引脚被配置为输出而你digitalWrite(HIGH),则可能会损坏蓝牙模块。

答案 1 :(得分:0)

不幸的是,HC-05会在配对时切换状态,但在它实际连接到某个东西之前不会输出1。

例如,我可以再次从HC-05配对取消配对,然后LED将改变状态,但STATE引脚的输出仍为0.如果我打开一个应用程序,并连接然后手动接通LED,STATE引脚将改变状态。 LED将周期性地闪烁两次,STATE引脚向Arduino输出1。

如果您想读取STATE引脚的值,请将线连接到arduino的任何输入,并将代码Serial.println(digitalRead(inputPin)); inputPin作为Arduino输入的连接线

我几个月来一直在打这个东西,还没有找到办法让这个东西自动连接到我的手机。除非我将应用程序下载到我的Android上,否则它甚至不允许我从手机连接到HC-05。可以将HC-05绑定到某个地址,但即使这样也不适用于我。我想弄乱"AT+CLASS"命令,但到目前为止,指令背后的文档阻碍了我。

答案 2 :(得分:0)

从HC-05数据表中我们看到连接状态取决于PI09的输出。显然发送“AT + BIND?”到模块将返回PI08&的状态。 PI09的形式, “+ POLAR = PI08,PI09”然而这对我来说没有意义,因为为了得到这个你必须进入AT模式并且进入AT模式将破坏配对连接,因此它将始终发送标记为“未连接”的PI09。 / p>

这是为了看看连接是否仍然来自arduinos POV,我只能看到两种可行的方式:

  • 计划arduino,经常发送“你好?”如果它没有收到预期的“Hi back”响应,则假设它没有连接。
  • 只要您想检查连接是否有效,就将PI09连接到arduino输入引脚并读取它的值

答案 3 :(得分:0)

AT+STATE?将返回连接的当前状态。是的,您需要进入模式,即通过在HC05模块上将引脚11置为高电平来完成。它确实需要焊接,但它有点值得。然后它允许对设备进行完全AT控制,然后将其设置为低电平以使其恢复到正常工作模式。

另一个我不完全理解的选项是AT+MPIO?命令,它以一些我不理解的奇怪掩码格式返回所有引脚的状态。

我使用上面的第一个选项,以便我可以从手机终端(蓝牙)到HC05并打开HC05上的LED /继电器等(即将引脚2置于高电平)。这需要进入AT模式(引脚11 HIGH),发送命令AT+PIO=2,1,然后将引脚11设置为LOW以返回正常工作模式。

注意:我注意到我必须在高和AT和LOW命令之间放置200ms的延迟。 Angela的解决方案很好 - 我使用便宜的XBEE蓝牙模块(HC-05 Bluetooth Bee Master & Slave Module with Bluetooth XBee for Arduino uk2015)2个单位(HC05 / 6)用于5Stg,以XBEE格式布局 - 方便3.3v。