首页 > 解决方案 > 编程 IMX8 模块:蓝牙不工作

问题描述

我有一个 IMX8 模块,与 Apalis 评估板配对。操作系统是基于 Linux 的,由 Yocto Project 开发。我正在开发一个软件应用程序以添加到操作系统中,作为一个秘诀。

我在测试蓝牙操作时遇到问题。我想从一些 BLE 传感器接收一些广告信息。我写了一个 python 脚本来收集周围所有蓝牙设备的 MAC。它适用于主机 PC,但目标(IMX8 模块)找不到任何设备。在目标上,我有 bluePy 和 Bluez。我正在使用“picocom”测试带有串行接口的电路板。

为了使蓝牙工作,我在终端中运行以下命令:

rfkill unblock all

最初,我使用以下命令在终端中查找蓝牙设备:

sudo systemctl status bluetooth

并且目标的蓝牙已打开,结果如下:

* bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-09-20 10:44:04 UTC; 25min ago
Docs: man:bluetoothd(8)
Main PID: 904 (bluetoothd)
Status: "Running"
Tasks: 1 (limit: 1544)
Memory: 1.9M
CGroup: /system.slice/bluetooth.service
         `-904 /usr/libexec/bluetooth/bluetoothd

然后我扫描设备:

bluetoothctl scan on

但该模块没有找到任何设备。

然后,我尝试将 Bluepy 与以下 python 脚本一起使用,它可以在主机上运行:

from bluepy.btle import Scanner, DefaultDelegate
import sys

# @class ScanDelegate
# @brief scan delegate to catch and interpret bluetooth advertising events
class ScanDelegate(DefaultDelegate):
    def __init__(self):
        DefaultDelegate.__init__(self)

    def handleDiscovery(self, dev, isNewDev, isNewData):
        pass
        
## associate the delegate to the scanner and start it for 10.0 seconds
scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(5.0)
print(devices)

但是生成的“设备”字典是空的。

有人可以帮助我吗?我希望我很清楚。

先感谢您。

标签: pythonbluetoothbluezimx8

解决方案


推荐阅读