Android 蓝牙HC-05传输至f103rb

Android 蓝牙HC-05传输至f103rb,android,bluetooth,stm32,hc-05,Android,Bluetooth,Stm32,Hc 05,我必须将我的SMT32f103rb连接到蓝牙模块hc-05,并在连接到蓝牙模块的手机和计算机之间进行传输。我将其连接为: hc05 VCC->+5V stm hc05 GND->GND stm hc05 TXD->PA10 stm hc05 RXD->PA9 stm 下一步是使用标准密码(1234)将我的手机连接到hc-05。它起作用了 然后我在android设备上下载了串行蓝牙终端(比如windows上的hterm) 现在我不知道下一步该怎么办。应用程序连接到BT,但我不知道如何将其发送到

我必须将我的SMT32f103rb连接到蓝牙模块hc-05,并在连接到蓝牙模块的手机和计算机之间进行传输。我将其连接为:

  • hc05 VCC->+5V stm
  • hc05 GND->GND stm
  • hc05 TXD->PA10 stm
  • hc05 RXD->PA9 stm
下一步是使用标准密码(1234)将我的手机连接到hc-05。它起作用了 然后我在android设备上下载了串行蓝牙终端(比如windows上的hterm)


现在我不知道下一步该怎么办。应用程序连接到BT,但我不知道如何将其发送到计算机。要配置我的stm,我使用CubeIDE。

我想您应该遵循以下教程:

我不知道你到底有什么应用程序,它发送什么数据。这很可能就是问题所在。这里使用的应用程序并不复杂,Android中的任何BT通信都基于
BluetoothAdapter
类。你可以很容易地编写自己的应用程序,或者从网上复制代码

添加发送和接收功能cf

发送和接收是使用
RfcommSockets
完成的,并附加了
OutputStream
,这在代码中

 if(bondedDevices.size() > 0) {
            Object[] devices = (Object []) bondedDevices.toArray();
            BluetoothDevice device = (BluetoothDevice) devices[position];
            ParcelUuid[] uuids = device.getUuids();
            BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuids[0].getUuid());
            socket.connect();
            outputStream = socket.getOutputStream();
            inStream = socket.getInputStream();

或者从PlayStore加载应用程序蓝牙终端HC-05,然后试用

如果要发送整个.apk文件而不是简单的命令字符串,则必须使用另一个协议/蓝牙配置文件选项(FTP、OPP或OBEX)。为此,请获取应用程序蓝牙文件传输

为了能够发送整个文件,您必须在STM32上实现一个文件系统,否则您只能使用一个程序将二进制文件写入内存,该程序从蓝牙接收缓冲区读取数据,然后将其作为原始二进制数据复制到内存中


(使用蓝牙传输文件背后的技术在中进行了解释)

我认为您正在遵循这样一个教程:

我不知道你到底有什么应用程序,它发送什么数据。这很可能就是问题所在。这里使用的应用程序并不复杂,Android中的任何BT通信都基于
BluetoothAdapter
类。你可以很容易地编写自己的应用程序,或者从网上复制代码

添加发送和接收功能cf

发送和接收是使用
RfcommSockets
完成的,并附加了
OutputStream
,这在代码中

 if(bondedDevices.size() > 0) {
            Object[] devices = (Object []) bondedDevices.toArray();
            BluetoothDevice device = (BluetoothDevice) devices[position];
            ParcelUuid[] uuids = device.getUuids();
            BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuids[0].getUuid());
            socket.connect();
            outputStream = socket.getOutputStream();
            inStream = socket.getInputStream();

或者从PlayStore加载应用程序蓝牙终端HC-05,然后试用

如果要发送整个.apk文件而不是简单的命令字符串,则必须使用另一个协议/蓝牙配置文件选项(FTP、OPP或OBEX)。为此,请获取应用程序蓝牙文件传输

为了能够发送整个文件,您必须在STM32上实现一个文件系统,否则您只能使用一个程序将二进制文件写入内存,该程序从蓝牙接收缓冲区读取数据,然后将其作为原始二进制数据复制到内存中


(使用蓝牙传输文件背后的技术在中进行了说明)

配置您的stm32引脚输出您可以使用STMCubeMX软件 STM32: 将引脚PA9和PA10设置为UART

STM32在Keil IDE中有一些可用的USART函数。 你可以看到我回答的问题

HC-05阅读数据表,了解必须发送的命令: HC-05必须通过AT命令配置为从机
AT+ROLE=0

所有AT命令均由USART发送

嵌入式系统需要大量的文档读取,尤其是数据表。
hc-05数据表

配置您的stm32引脚输出您可以使用STMCubeMX软件 STM32: 将引脚PA9和PA10设置为UART

STM32在Keil IDE中有一些可用的USART函数。 你可以看到我回答的问题

HC-05阅读数据表,了解必须发送的命令: HC-05必须通过AT命令配置为从机
AT+ROLE=0

所有AT命令均由USART发送

嵌入式系统需要大量的文档读取,尤其是数据表。
hc-05数据表

您具体尝试了什么?是否将手机连接到嵌入式蓝牙?请提供更多细节?stm32上的蓝牙是否已配置?它处于从属模式等…是的,当然。我正在尝试让一些手机连接到BT模块,并通过移动终端发送信息(我也创建了自己的应用程序,但我现在真的无法实现)。我创建了连接电话-HC05,并对其进行了删减。我在配置中也没有在CubeIDE上做任何功能。我也有自己的工作程序代码,在f103rb和HTERM之间使用USART通信。你到底在尝试什么?是否将手机连接到嵌入式蓝牙?请提供更多细节?stm32上的蓝牙是否已配置?它处于从属模式等…是的,当然。我正在尝试让一些手机连接到BT模块,并通过移动终端发送信息(我也创建了自己的应用程序,但我现在真的无法实现)。我创建了连接电话-HC05,并对其进行了删减。我也没有在CubeIDE上配置任何功能。我还有自己的工作程序代码,使用f103rb和HTERM之间的USART通信。我已经编写了自己的应用程序,但我想看看它是如何在我的手机上使用基本BT终端工作的。我下载了它,但问题是我不知道如何配置我的stm,以便HC-05将从手机接收数据。我第一次尝试了一个简单的程序,若stm检测到命令“on;”stm上的led将被切换,如果它检测到“off;”stm上的led将不会切换。我已经编写了自己的usart代码,但它适用于windows终端命令(如ledon、ledoff、pulse和blink),并参考您的第一个链接(),这是我正在寻找的解决方案(帮助),但对stm不是arduino。具体来说,代码是不同的
HAL_UART_Receive(&s_UARTHandle, buffer, sizeof(buffer); //receive data over usart
HAL_UART_Transmit(&s_UARTHandle, buffer, sizeof(buffer), HAL_MAX_DELAY);//send data