Как отправить данные из esp32 (BLE) в (HM-10 с интерфейсом Arduino)? - PullRequest
0 голосов
/ 19 октября 2019

Это полный код для esp32

// ESP32 Example of the Bluetooth connection to the HM-10 module (CC2541) JDY-08
// Writes to the serial interface of the HM-10 module "Hello World"
// Receives serial data from the HM-10 module

#include "BLEDevice.h"

#define HM_MAC "00:15:85:14:9c:ca"

// Service und Characteristic des HM-10 Moduls
static BLEUUID serviceUUID("0000FFE0-0000-1000-8000-00805F9B34FB");
static BLEUUID charUUID("0000FFE1-0000-1000-8000-00805F9B34FB");

static boolean connect = true; 
static boolean connected = false;

static BLEAddress *pServerAddress;
static BLERemoteCharacteristic* pRemoteCharacteristic;
BLEClient*  pClient;

//    BLE Callbacks

static void notifyCallback 
(
  BLERemoteCharacteristic* pBLERemoteCharacteristic,
  uint8_t* pData,
  size_t length,
  bool isNotify)
{
  String EingangDaten = "";
  for (int i = 0; i < length; i++)EingangDaten += char(*pData++); // Append byte as character to string. Change to the next memory location
  Serial.println(EingangDaten);
}

//Connect to BLE Server

bool connectToServer(BLEAddress pAddress)
{
  Serial.println("Trying to Connect with.... ");
  Serial.println(pAddress.toString().c_str());
  pClient = BLEDevice::createClient();
  pClient->connect(pAddress);
 // Serial.println("CONNECTED");

  // Obtaining a reference to required service
  BLERemoteService* pRemoteService = pClient->getService(serviceUUID);

  if (pRemoteService == nullptr)
  {
    Serial.print("Gefunden falsche UUID: ");
    Serial.println(serviceUUID.toString().c_str());
    return false;
  }

  // reference to required characteristic
  pRemoteCharacteristic = pRemoteService->getCharacteristic(charUUID);
  if (pRemoteCharacteristic == nullptr) {
    Serial.print("Gefunden falsche Characteristic UUID: ");
    Serial.println(charUUID.toString().c_str());
    return false;
  }

  pRemoteCharacteristic->registerForNotify(notifyCallback);
  return true;
}

void setup()
{
  Serial.begin(115200);
  Serial.println("Start");
  BLEDevice::init("");
  pinMode(22,OUTPUT);
    pinMode(23,OUTPUT);

}

void loop()
{
  digitalWrite(22,HIGH);
  if (connect == true) 
  {
    pServerAddress = new BLEAddress(HM_MAC);
   // Serial.println("ServerAddress");
    //Serial.println(pServerAddress);
    if (connectToServer(*pServerAddress))
    {
      connected = true;
      connect = false;
    }
    else
    {
      Serial.println("Connection does not work");
    }
  }

  if (connected) 
  { 
    Serial.println("CONNECTED");

    String newValue = "HELLO WORLD";
    digitalWrite(23,HIGH);
    digitalWrite(22,LOW);
    pRemoteCharacteristic->writeValue(newValue.c_str(), newValue.length());
  }
  delay(1000);
}

Я пытаюсь отправить данные из esp32 в HM-10. Используя mac-адрес HM-10 и serviceUUID, charUUID (задано в программе esp32) определяет esp32модуль HM-10 и подключается, но данные отправляются ..

если (подключено) {

Serial.println ("ПОДКЛЮЧЕНО");

String newValue = "HELLO WORLD";
digitalWrite(23,HIGH);
digitalWrite(22,LOW);
pRemoteCharacteristic->writeValue(newValue.c_str(), newValue.length());

}

Если esp32, подключенный к HM-10, iam, получающий выход как подключенный и светодиодный, также включается, но данные "hello world" не отправляются в HM-10 .. как написать программу в HM-10 для получения данных из esp32

...