基于ESP32的逐向导航实现问题求助
ESP32作为逐向导航设备的蓝牙数据传输问题
我想开发一个应用,将ESP32用作逐向导航的“GPS”设备。查阅了大量项目,但要么难以理解,要么部分项目已失效。目前已通过BLEDevice实现ESP32与安卓手机的蓝牙连接,代码如下:
#include <BLEDevice.h> #include <BLEUtils.h> #include <BLEServer.h> // 生成UUID可参考相关工具 #define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" #define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" void setup() { Serial.begin(115200); Serial.println("Starting BLE work!"); BLEDevice::init("Long name works now"); BLEServer *pServer = BLEDevice::createServer(); BLEService *pService = pServer->createService(SERVICE_UUID); BLECharacteristic *pCharacteristic = pService->createCharacteristic( CHARACTERISTIC_UUID, BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE ); pCharacteristic->setValue("Hello World says Neil"); pService->start(); BLEAdvertising *pAdvertising = BLEDevice::getAdvertising(); pAdvertising->addServiceUUID(SERVICE_UUID); pAdvertising->setScanResponse(true); pAdvertising->setMinPreferred(0x06); // 解决iPhone连接问题的参数 pAdvertising->setMinPreferred(0x12); BLEDevice::startAdvertising(); Serial.println("Characteristic defined! Now you can read it in your phone!"); } void loop() { delay(2000); }
核心问题:我无法确定哪款手机导航应用(如Waze、Komoot、Sygic等)可以获取转向、速度等导航数据并发送至ESP32。我也曾尝试KomootBLEConnect.h方案,手机虽能与ESP32蓝牙连接,但无法获取导航信息,代码如下:
#include "Arduino.h" #include "KomootBLEConnect.h" // 收到Komoot数据时触发此回调,可在此处理数据 void NavCallback(uint8_t icon, uint32_t length, String street) { Serial.printf("icon: %d, length %d, street: %s\n", icon, length, street.c_str()); } void setup() { Serial.begin(9600); Serial.println("Starting Arduino BLE Client application..."); Komoot::BLEHandler::Begin("ESP32 Komoot"); Komoot::BLEHandler::RegisterCallback(NavCallback); } void loop() { Komoot::BLEHandler::Loop(); // 扫描提供BLEConnect服务的设备,配对后自动连接 delay(1000); }
内容的提问来源于stack exchange,提问作者Bruno Bianchi
相关产品推荐
相关产品推荐

