Erro de compilação na utilização de WiFi e Bluetooth no mesmo sketch

Dúvidas, críticas ou sugestões sobre o Fórum FernandoK.
Para demais questões utilize o fórum correto.
tiagotobias2003
Novato
Mensagens: 1
Registrado em: 27/Fev/2019, 13:23

Erro de compilação na utilização de WiFi e Bluetooth no mesmo sketch

Mensagem por tiagotobias2003 » 27/Fev/2019, 13:52

Olá Pessoal...

Alguém já precisou usar WiFi e e Bluetooth ao mesmo tempo e conseguiu?

Tentei testar um sketch onde é utilizado WiFi e e Bluetooth, com DOIT ESP32 DEVKIT V1 Board, e a IDE acusa erro por ser um sketch muito grande:

Sketch muito grande; veja http://www.arduino.cc/en/Guide/Troubleshooting#size para dicas de como reduzi-lo.
Erro compilando para a placa ESP32 Dev Module


O código:

Código: Selecionar todos


#include "WiFi.h"
#include <WiFiClientSecure.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
 
 
BLECharacteristic *characteristicTX; //através desse objeto iremos enviar dados para o client
 
bool deviceConnected = false; //controle de dispositivo conectado
 
#define SERVICE_UUID           "ab0828b1-198e-4351-b779-901fa0e0371e" // UART service UUID
#define CHARACTERISTIC_UUID_RX "4ac8a682-9736-4e5d-932b-e9b31405049c"
#define CHARACTERISTIC_UUID_TX "0972EF8C-7613-4075-AD52-756F33D4DA91"

WiFiClientSecure client;//Cria um cliente seguro (para ter acesso ao HTTPS)

//callback para eventos das características
class CharacteristicCallbacks: public BLECharacteristicCallbacks {
     void onWrite(BLECharacteristic *characteristic) {
          //retorna ponteiro para o registrador contendo o valor atual da caracteristica
          std::string rxValue = characteristic->getValue(); 
          //verifica se existe dados (tamanho maior que zero)
          if (rxValue.length() > 0) {
            Serial.println("Recebido");//Mostra no monitor que foi enviado
            Serial.println(rxValue.c_str());//Mostra no monitor que foi enviado
          }
     }//onWrite
};

//callback para receber os eventos de conexão de dispositivos
class ServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
 deviceConnected = true;
    };
 
    void onDisconnect(BLEServer* pServer) {
 deviceConnected = false;
    }
};


void setup()
{

  // Create the BLE Device
  BLEDevice::init("Test-18510"); // nome do dispositivo bluetooth

  // Create the BLE Server
  BLEServer *server = BLEDevice::createServer(); //cria um BLE server 

  server->setCallbacks(new ServerCallbacks()); //seta o callback do server

  // Create the BLE Service
  BLEService *service = server->createService(SERVICE_UUID);

  // Create a BLE Characteristic para envio de dados
  characteristicTX = service->createCharacteristic(
                     CHARACTERISTIC_UUID_TX,
                     BLECharacteristic::PROPERTY_NOTIFY
                   );

  characteristicTX->addDescriptor(new BLE2902());
  // Create a BLE Characteristic para recebimento de dados
    BLECharacteristic *characteristic = service->createCharacteristic(
                                                      CHARACTERISTIC_UUID_RX,
                                                      BLECharacteristic::PROPERTY_WRITE
                                                    );
 
    characteristic->setCallbacks(new CharacteristicCallbacks());
 
    // Start the service
    service->start();
 
    // Start advertising (descoberta do ESP32)
    server->getAdvertising()->start();
 
}


void loop()
{


}



 
Retirei tudo do loop e deixei no setup apenas configurações de Bluetooth, se eu retirar a linha WiFiClientSecure client; o programa compila, mostrando que o problema é mesmo espaço na memória de programa.

Visitando a página do arduino cc a dica é diminuir includes e trocar variáveis float por int, tudo no sentido de diminuir o código e fazer ele caber no espaço de memória reservada para programa, daí vem minha pergunta.

Alguém já precisou usar WiFi e e Bluetooth ao mesmo tempo e conseguiu?

adapso
Novato
Mensagens: 2
Registrado em: 05/Abr/2019, 14:22

Re: Erro de compilação na utilização de WiFi e Bluetooth no mesmo sketch

Mensagem por adapso » 09/Abr/2019, 19:40

Estou passando pelo mesmo problema, caso encontre a solução ficaria grato em compartilhar.

adapso
Novato
Mensagens: 2
Registrado em: 05/Abr/2019, 14:22

Re: Erro de compilação na utilização de WiFi e Bluetooth no mesmo sketch

Mensagem por adapso » 09/Abr/2019, 21:57

Passei pelo mesmo problema e a solução encontrada foi alterar o tamanho disponível para FLASH do ESP32 na IDE Arduíno.
Vá em ferramentas > Partition Scheme > No OTA (Large App). Lembre-se que com isso você fica sem espaço para usar OTA no seu projeto caso seja necessário.

Responder