Cat-Localizer:用 BLE 信标、ESP32 和机器学习打造你的猫咪追踪器

你的猫咪总是在家里神出鬼没,让你抓狂?别担心!今天,我们将揭秘一个基于 BLE 信标、ESP32 和机器学习的强大猫咪定位系统——Cat-Localizer!它能帮你实时追踪猫咪在家中的位置,从此告别“寻猫记”的烦恼!

Cat-Localizer 工作原理

Cat-Localizer 的核心思想是利用低功耗蓝牙 (BLE) 信标、多个廉价的 ESP32 探测器以及机器学习模型来实现室内猫咪定位。整个系统的工作流程如下:

  1. 信标发射:

      给猫咪佩戴一个小型 BLE 信标,它会持续发射 BLE 信号。

  2. 信号探测:

      布置在房屋不同位置的 ESP32 探测器会接收这些 BLE 信号,并测量信号强度 (RSSI)。

  3. 数据上传:

      每个 ESP32 将测量到的 RSSI 数据发送到服务器数据库。

  4. 位置预测:

      Python 程序从数据库获取所有 ESP32 探测器的最新 RSSI 数据,并利用训练好的机器学习模型预测猫咪的位置。

亮点:  Cat-Localizer 的优势在于,它只需要相对较少的探测器数量,就能通过机器学习模型准确地预测猫咪的位置,即使房屋结构复杂也能胜任。

硬件设置

  • 被追踪目标:

      一只猫咪(或狗狗,其他动物甚至物品)。

  • BLE 信标:

      任何 BLE 信标都可以。

  • BLE 探测器:

      推荐使用 4-6 个 ESP32,价格便宜且性能出色。  也可以使用树莓派,但成本较高。

  • 数据处理服务器:

      一台电脑或树莓派即可,用于存储和处理数据,以及运行预测程序。需要确保 ESP32 能连接到服务器的 WiFi 网络。

  • 可选:

      带 LCD 显示屏的设备,可以实时显示猫咪的位置。

软件设置

  • BLE 信标:

      无需任何配置或代码。

  • ESP32 探测器:

      项目提供了简单的 C/Arduino 代码,用于扫描 BLE 信号并向服务器发送数据。代码可以根据需要进行调整和优化,例如添加多个 MAC 地址过滤等功能。

  • 树莓派 (可选):

      如果使用树莓派作为探测器,可以使用 btmon 和 hcitool lescan 命令进行 BLE 扫描,并将数据发送到数据库。

  • 服务器:
    • 数据库:

        可以使用 InfluxDB、MySQL 或甚至简单的文本文件作为数据库。

    • Python 环境:

        建议使用 Python 3.8,并安装 scikit-learn 和 pandas 等库。项目提供了一个 conda 环境文件,方便搭建相同的环境,确保模型训练和预测的一致性。

    • 预测程序:

        Python 程序负责从数据库获取数据,并使用训练好的模型进行位置预测。

机器学习模型的训练与测试

  • 数据收集:  需要收集每个 ESP32 探测器在不同位置的 RSSI 数据,并记录下当时信标的实际位置。这些数据将用于训练机器学习模型。 数据表格类似于: measurement id, time, target, esp32-attic, esp32-room_k, esp32-office, esp32-doors,每一行代表一次测量结果。

  • 模型训练与评估:  项目使用了多种机器学习算法(例如多层感知器分类器 MLP Classifier)和数据预处理方法(例如 Min-Max 缩放器),并通过交叉验证来评估它们的性能。最终选择性能最佳的模型进行部署。

  • 模型结果:  实验结果显示,MLP 分类器结合 Min-Max 缩放器取得了最佳的平衡准确率 (约 0.88)。

位置检测

项目提供了用于位置检测的代码片段,可以从数据库或文件中读取数据,然后使用训练好的模型进行预测。

提高精度的小技巧

  • 优化 ESP32 探测器的摆放位置,以覆盖整个空间并获得独特的信号模式。

  • 优化机器学习算法和参数。

  • 增加 ESP32 探测器的数量。

  • 考虑 BLE 信标的电池电量,这可能会影响发射功率。

总结

Cat-Localizer 提供了一个灵活且强大的框架,用于构建室内猫咪定位系统。虽然需要一定的动手能力和编程基础,但其强大的功能和相对较低的成本使其成为一个值得尝试的项目。  通过仔细配置硬件、收集足够的数据并选择合适的机器学习模型,你可以建立一个精准且实用的猫咪定位系统,让你的寻猫之旅变得轻松愉快!

项目地址:https://github.com/filipsPL/cat-localizer

发表评论