# FHPL **Repository Path**: wrymok/fhpl ## Basic Information - **Project Name**: FHPL - **Description**: 室内外融合高精度定位演示套件 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2022-05-05 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 该仓库是室内外融合高精度定位(Fusion High Precision Localization,简称FHPL)项目的终端演示程序,可以在[FHPL_ESP32_DEMO](https://gitee.com/fusion_high_precision_localization/fhpl_-esp32_-demo)板上运行。 # 功能 - Wi-Fi入网(手机BLE配网) - 长按10s清除配网信息,设备恢复出厂设置并重启 - UWB室内定位(目前UWB定位数据传输依赖UWB网关) - RTK室外定位 - 声光报警:RGB指示灯、蜂鸣报警、语音播报 - OTA空中升级(开发中) - 开机状态蜂鸣提醒,见下表 |状态|蜂鸣声| |----|----| |初始化成功|2短| |入网成功|3短| # 连接 ## Wi-Fi 配网 初次使用设备时需要进行配网,使设备接入现有Wi-Fi热点,本设备使用**BLE**方式进行配网 ### 1. 获取配网APP - Android: [esp-idf-provisioning-android](https://github.com/espressif/esp-idf-provisioning-android) - iOS: [esp-idf-provisioning-ios](https://github.com/espressif/esp-idf-provisioning-ios) - Linux / Windows / macOS: 请参考 [Wi-Fi Provisioning Manager Example](https://github.com/espressif/esp-idf/tree/2f9d47c708/examples/provisioning/wifi_prov_mgr) ### 2. 使用APP连接设备 - 通过串口LOG可以获取配网信息和QR码,使用APP扫码可以直接连接设备 ``` I (1462) app: Provisioning started I (1472) app: Scan this QR code from the provisioning application for Provisioning. I (1472) QRCODE: Encoding below text with ECC LVL 0 & QR Code Version 10 I (1482) QRCODE: {"ver":"v1","name":"PROV_EA69FC","pop":"abcd1234","transport":"ble"} GAP procedure initiated: advertise; disc_mode=2 adv_channel_map=0 own_addr_type=0 adv_filter_policy=0 adv_itvl_min=256 adv_itvl_max=256 █▀▀▀▀▀█ ▀▀▀█▄█ ▀▀▄ █▄ ▀ █▀▀▀▀▀█ █ ███ █ ▀▄█ █▄ ▀▄█ ▄██ █ █ ███ █ █ ▀▀▀ █ ▄▀█▀▄▀ ▀█▄▀ ██ █ ▀▀▀ █ ▀▀▀▀▀▀▀ █▄▀ █▄█▄█ ▀ █ █ ▀ ▀▀▀▀▀▀▀ ▀▀ ▀▀ ▀ ▀▄ ▀▄ ▄▀▀▀█ ▀▄ ▀ ▀▄▄ ▄▄▀ ███▄█▄▀ █▀ ▀▀▀▀▄▄█ █▀ █ ▄█▄█▀ ▀███▀ ▀▄▄██ ▄▄██▄ ▀▀▀▀ ▄▀█ ▀▄▄▀ ▄███ ▀██▀▀ ▄ ▄█▄▀▀█▄ ▀▄▀▄▄█ ▄ ▀█▀ █▄▀▀ ▀▀█▀▀ █▀▄▀▄▀ ▄█ ███▄ ██ ██▀█ ▀▄█ █▄▀▄███▀▄▀█ ▀█ █▀▀ ▀▄▄▀ █▄▀▄█▀▀ ▀▄ ▀▄▄█▄▀▀█▄█▄█▀▀█ ▀▄ ▄▀ █ ▄█▄ ▀ ▄▀ █▄ ▀█▄█▄▀▀█▀█ ▄█ ▀▄▄█ ▀▀▀▀ ▀ █▀█▀▀▄▄██▄█▀█ ▀██▀▀▀█▄▄▀ █▀▀▀▀▀█ ▄█▀▀▀██ ▄▀▄ █▄█ ▀ █ ▄ ▄ █ ███ █ █ ▀▄█▀▀█▀▄█▄▄ ▀██▀▀▀▀▄▄▀▀ █ ▀▀▀ █ ▄█ ▀ ▄█▀█ █▀ ▀▀███▄▀█ █▄█ ▀▀▀▀▀▀▀ ▀ ▀ ▀▀ ▀ ▀▀▀▀▀▀ I (1702) app: If QR code is not visible, copy paste the below URL in a browser. https://espressif.github.io/esp-jumpstart/qrcode.html?data={"ver":"v1","name":"PROV_EA69FC","pop":"abcd1234","transport":"ble"} ``` - 如果不方便查看串口LOG,也可以在APP中手动选择设备,并输入默认pop: `abcd1234` ![手动连接BLE配网](pic/manual_provision.gif) ### 3. 连接AP 选择AP的SSID,输入密码并确认,听见3短蜂鸣声说明配网成功 无论配网成功与否,均可长按boot键10s,设备将清除已有的配网信息,恢复出厂设置并重启设备重新进入配网模式 ## MQTT 连接参数 编译时配置,可以在SDK Configuration界面设置URI: `mqtt://[username]:[password]@[host]:[port]` ![MQTT连接参数](pic/MQTT%E8%BF%9E%E6%8E%A5%E5%8F%82%E6%95%B0.png) ## NTRIP 连接参数 编译时配置,可以在SDK Configuration界面设置Caster信息 ![输入图片说明](pic/NTRIP%E8%BF%9E%E6%8E%A5%E5%8F%82%E6%95%B0.png) # 协议 ## 设备唯一标识符 下述Topic中的`[node_id]`字段由设备硬件决定,是设备的唯一标识符 ## 上行消息Topic ---- ### 设备状态 Topic:`status/[node_id]` Message:`online`表示在线,`offline`表示离线 该消息为遗嘱消息(last will message),设备的MQTT连接断开5s后,将会自动上报`offline` 该消息为保留(retain)消息,上位机可在订阅该Topic时立即获知设备是否在线 ---- ### 原始NMEA数据(不建议使用) Topic:`rtk/[node_id]/nmea` Message:每一条消息为行NMEA数据,支持消息: - GGA - GSA - GSV - RMC - GLL - VTG ---- ### RTK定位数据 Topic:`rtk/[node_id]/location` Message:`latitude,longtitude,altitude,speed,fix_mode,fix` `fix_mode`和`fix`的值可以参考下列枚举类型 ```c typedef enum { GPS_MODE_INVALID = 1, /*!< 无效解 */ GPS_MODE_2D, /*!< 2D定位 */ GPS_MODE_3D /*!< 3D定位 */ } gps_fix_mode_t; typedef enum { GPS_FIX_INVALID = 0, /*!< 无效解 */ GPS_FIX_GPS, /*!< 单点定位 */ GPS_FIX_DGPS, /*!< 差分定位 */ GPS_FIX_RTK_FIX = 4, /*!< RTK固定解 */ GPS_FIX_RTK_FLOAT, /*!< RTK浮点解 */ GPS_FIX_EXTRA, /*!< 推算定位 */ GPS_FIX_MANUAL /*!< 手动输入模式 */ } gps_fix_t; ``` ---- ### UWB定位数据 **注意:该数据需要通过UWB网关传输** **通过修改网关的`/etc/dwm1001/dwm1001-proxy.config`配置文件,可以修改数据上报的MQTT服务器地址** Topic:`dwm/node/[node_id]/uplink/location` Message:JSON格式,可以参考下列示例 ```JSON { "position" : { "x" : "1.35", "y" : "3.25", "z" : "1.75", "quality" : 0 }, "superFrameNumber" : 816 } ``` ---- ## 下行消息Topic ---- ### 语音播报 Topic:`alarm/[node_id]/voice` Message:`GBK编码的中文文本` ---- ### 蜂鸣报警 Topic:`alarm/[node_id]/beep` Message:`on`打开蜂鸣器,`off`关闭蜂鸣器 ---- ### 指示灯报警(目前仅支持所有LED同步控制) Topic:`alarm/[node_id]/light` Message:RGB888格式的颜色字符串,例如`#0000FF`表示蓝色 ----