# rpi_bt_wifi_cfg **Repository Path**: daniel-008/rpi_bt_wifi_cfg ## Basic Information - **Project Name**: rpi_bt_wifi_cfg - **Description**: 基于树莓派的蓝牙接口实现Wi-Fi配网的测试程序 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 3 - **Created**: 2021-11-19 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rpi_bt_wifi_cfg ## 介绍 基于树莓派的蓝牙接口实现Wi-Fi配网的测试程序 ## 软件架构 rpi_bt_wifi_cfg.py: 蓝牙监听主程序 rpi_bt_cli_test.py:蓝牙客户端程序 ## 安装教程 1. 环境准备 开发和测试使用的python版本为3.7.3,pip版本为21.0.1。 开发和测试基于树莓派4,系统版本如下: Linux raspberrypi4b 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux 2. 安装依赖 在树莓派上使用如下命令安装所需依赖包:  sudo pip install wifi  sudo pip install PyBluez 因一些控制能力需要root权限,所以在安装如上模块时使用了sudo。 3. 配置说明 在/lib/systemd/system/bluetooth.service中: 将ExecStart=/usr/lib/bluetooth/bluetoothd替换为ExecStart=/usr/lib/bluetooth/bluetoothd -E -C。不然执行python代码调用bluetooth模块时会报错。 4. 设计参考 参考了github上的如下源代码库: 简单来说,它将树莓派当做server监听蓝牙的连接请求,然后通过andorid app作为客户端与树莓派进行数据交互,实现Wi-Fi的SSID和Password信息的传输。 此代码是基于python2的,我用python3重新实现,数据交互采用了JSON格式,同时也实现了一个基于树莓派的蓝牙客户端测试程序。蓝牙通信中的一些问题和Wi-Fi配置的功能也因为系统版本的不同进行了改进和适配。 ## 使用说明 1. 启动蓝牙服务端程序 在树莓派上首先运行rpi_bt_wifi_cfg.py,启动蓝牙服务端监听程序 2. 启动蓝牙客户端程序 在另一个树莓派上运行rpi_bt_cli_test.py,启动蓝牙客户端程序 3. 根据客户端程序的打印输出,选择需要连接的Wi-Fi信号的SSID和Password输入,客户端和服务端程序将自动完成数据传输,实现服务端树莓派的自动Wi-Fi连接 ## 其它 在开发和测试过程中,还有一些问题没有仔细处理: 1. 在写wpa_supplicant.conf时,直接进行的追加,没有去分析文件中是否已经存在了要写入的SSID信息。只要写入,就是简单的在文件末尾追加新的配置信息。 2. 在调用linux一系列命令连接Wi-Fi网络时的几个延时函数。因为发现如果延时不够,当client调用GetWiFiConnectionStatus要获取当前连接状态时,可能还处在连接过程中会返回未连接上的状态,因此延迟用的比较多。 3. 蓝牙的发送可能会抛出异常。因为仅仅是用来进行测试验证的,所以一些异常没有仔细去处理。 ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request