【ESP32S3学习笔记】蓝牙名称修改与断线重连设置

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近用ESP32做了一个蓝牙相互传输的小应用,有几个小的TIPS简单记录一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、蓝牙名称修改

以修改设备名称 增加_2为例
1、在声明中修改设备蓝牙名称

#define SAMPLE_DEVICE_NAME "ESP_GATTS_DEMO_2"

2、修改广播数据

static uint8_t raw_adv_data[] = {
    /* flags */
    0x02, 0x01, 0x06,
    /* tx power*/
    0x02, 0x0a, 0xeb,
    /* service uuid */
    0x03, 0x03, 0xFF, 0x00,
    /* device name */
    0x11, 0x09, 'E', 'S', 'P', '_', 'G', 'A', 'T', 'T', 'S', '_', 'D', 'E', 'M', 'O','_','2'};

其中0x11是后面设备名称的字节长度。
如果这里不修改,再扫描端看到的蓝牙设备名称是不正常的。

二、断线重连设置

正常蓝牙从机开启扫描之后,超时扫描以后就不会再次连接。
这里是gap阶段,设置的扫描时长。duration就是超时时间。这里可以设置的长一点

    case ESP_GAP_BLE_SCAN_PARAM_SET_COMPLETE_EVT: {
        //the unit of the duration is second
        uint32_t duration = 60000;
        esp_ble_gap_start_scanning(duration);
        break;
    }

这里是GATT阶段中出现掉线的重连配置

    case ESP_GATTC_DISCONNECT_EVT:
        connect = false;
        get_server = false;
        is_connect = false;

        uint32_t duration = 60000;

        esp_ble_gap_start_scanning(duration);
        ESP_LOGI(GATTC_TAG, "ESP_GATTC_DISCONNECT_EVT, reason = %d", p_data->disconnect.reason);
        break;

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,蓝牙刚刚开始接触,还没有深入了解。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要控制ESP32-S3上的蓝牙与手机应用程序进行连接和通信,你可以使用Python编写一个简单的蓝牙服务端程序。下面是一个示例代码,展示了如何使用Python的`pybluez`库来创建一个蓝牙服务端,等待手机应用程序连接并接收数据: ```python import bluetooth def start_bluetooth_server(): server_sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) server_sock.bind(("", bluetooth.PORT_ANY)) server_sock.listen(1) port = server_sock.getsockname()[1] uuid = "00001101-0000-1000-8000-00805F9B34FB" # SPP (Serial Port Profile) UUID bluetooth.advertise_service(server_sock, "ESP32-S3 Server", service_id=uuid, service_classes=[uuid, bluetooth.SERIAL_PORT_CLASS], profiles=[bluetooth.SERIAL_PORT_PROFILE]) print(f"等待手机应用程序连接... 服务端地址: 0.0.0.0, 端口号: {port}") client_sock, client_info = server_sock.accept() print(f"已连接到手机应用程序. 客户端地址: {client_info[0]}, 端口号: {client_info[1]}") while True: data = client_sock.recv(1024) if not data: break print("接收到数据:", data.decode()) print("连接已关闭.") client_sock.close() server_sock.close() # 启动蓝牙服务端 start_bluetooth_server() ``` 在上面的代码中,我们使用`bluetooth.BluetoothSocket`创建一个蓝牙服务端Socket,并绑定到一个随机可用端口。然后,我们使用`bluetooth.advertise_service`方法广播服务,以便手机应用程序可以发现并连接到我们的设备。 一旦有手机应用程序连接上来,我们将接收到的数据打印出来。你可以根据自己的需求修改代码,处理接收到的数据。 请注意,此示例仅展示了如何建立连接和接收数据。你可能需要根据你的具体应用场景来处理数据和发送响应。 希望对你有所帮助!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的Lunzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值