1

Topic: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Здравствуйте. Есть ли возможность подключиться к ESP32 через WiFi Cloud или Bluetoth по выбору, в зависимости от необходимости, т.е. либо находясь дома через блютуз, либо удалённо через облако? Заранее благодарю за помощь.

2

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Такая возможность есть. RemoteXY умеет работать на несколько каналов связи.
Но при одновременном включении библиотек BLE и WiFi в ESP32 скетч получается слишком большой и компилятор об этом ругается. Это не особенность RemoteXY, это особенность ESP32. Если у вас удастся это обойти будем рады если поделитесь как.
Пример ниже.

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library
//#define REMOTEXY__DEBUGLOG 


#include <WiFi.h>  
#include "BLEDevice.h"

#include <RemoteXY.h>


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,1,0,1,0,27,0,10,13,2,
  1,0,9,9,46,46,6,7,50,50,
  2,31,88,0,65,4,62,16,31,31,
  14,62,35,35 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t button_1; // =1 if button pressed, else =0 

    // output variables
  uint8_t led_1_r; // =0..255 LED Red brightness 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)



/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////


CRemoteXY *remotexy;

void setup() 
{
 
  CRemoteXYComm_WiFi * wifi =  new CRemoteXYComm_WiFi (
    "myHomeFiFi",                            // REMOTEXY_WIFI_SSID
    "myPass"                                 // REMOTEXY_WIFI_PASSWORD
  );
  
  remotexy = new CRemoteXY (RemoteXY_CONF_PROGMEM, &RemoteXY, "");
  
  remotexy->addConnection (new CRemoteXYStream_BLEDevice (
    "REMOTEXY"                               // REMOTEXY_BLUETOOTH_NAME 
  ));
  
  remotexy->addConnection (new CRemoteXYConnectionCloud ( wifi, 
    "cloud.remotexy.com",                     // REMOTEXY_CLOUD_SERVER 
    6376,                                     // REMOTEXY_CLOUD_PORT
    "xxxxxxxxxxxxxxxxxxxxxxxx"                // REMOTEXY_CLOUD_TOKEN
  ));
  
  
  
  // TODO you setup code
  
}

void loop() 
{ 
  remotexy->handler ();
  
  if (RemoteXY.button_1)  RemoteXY.led_1_r = 255;
  else RemoteXY.led_1_r = 0;
  
  // TODO you loop code
  // use the RemoteXY structure for data transfer
  // do not call delay() 

}

3

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Спасибо. Буду пробовать. Если получится, обязательно отпишусь.

4 (edited by Loki 2022-04-28 08:52:00)

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Проблема с превышением размера скетча, вроде бы решена. Помогла данная информация http://digitrode.ru/computing-devices/m … o-ide.html  Я сделал следующее:  "...В Arduino IDE перейдите в Tools – Partition Scheme (Инструменты – Схема разделов). Затем выберите опцию «Minimal SPIFFS (Large APPS with OTA)» или «No OTA (Large APP)». Таким образом, вы можете иметь размер скетча до 1966080 байт или 2097152 байт соответственно. При этом вы жертвуете размером SPIFFS или OTA..." Я выбрал «Minimal SPIFFS (Large APPS with OTA)». Больше ничего не делал. Ваш пример работает и мой скетч тоже. Единственный нюанс, у меня режим подключение "Классический bluetooth", а не "Bluetooth LE". В режиме "Bluetooth LE", у меня телефон не подключается к модулю, но это происходит и без двойного режима, наверное проблеме в самом телефоне.

5

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

В общем работа не стабильна. Еспишка периодически уходит в перезагрузку, и в конечном счёте с ней становится не сконектится. Похоже надо ковырять глубже.

6

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Пример для классического Bluetooth. Возможно будет стабильнее.

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// RemoteXY select connection mode and include library
//#define REMOTEXY__DEBUGLOG 


#include <WiFi.h>  
#include "BluetoothSerial.h"

#include <RemoteXY.h>


// RemoteXY configurate  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,1,0,1,0,27,0,10,13,2,
  1,0,9,9,46,46,6,7,50,50,
  2,31,88,0,65,4,62,16,31,31,
  14,62,35,35 };
  
// this structure defines all the variables and events of your control interface 
struct {

    // input variables
  uint8_t button_1; // =1 if button pressed, else =0 

    // output variables
  uint8_t led_1_r; // =0..255 LED Red brightness 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)



/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////


CRemoteXY *remotexy;

void setup() 
{
 
  CRemoteXYComm_WiFi * wifi =  new CRemoteXYComm_WiFi (
    "myHomeFiFi",                            // REMOTEXY_WIFI_SSID
    "myPass"                                 // REMOTEXY_WIFI_PASSWORD
  );
  
  remotexy = new CRemoteXY (RemoteXY_CONF_PROGMEM, &RemoteXY, "");
  
  remotexy->addConnection (new CRemoteXYStream_BluetoothSerial (
    "REMOTEXY"                               // REMOTEXY_BLUETOOTH_NAME 
  ));
  
  remotexy->addConnection (new CRemoteXYConnectionCloud ( wifi, 
    "cloud.remotexy.com",                     // REMOTEXY_CLOUD_SERVER 
    6376,                                     // REMOTEXY_CLOUD_PORT
    "xxxxxxxxxxxxxxxxxxxxxxxx"                // REMOTEXY_CLOUD_TOKEN
  ));
  
  
  
  // TODO you setup code
  
}

void loop() 
{ 
  remotexy->handler ();
  
  if (RemoteXY.button_1)  RemoteXY.led_1_r = 255;
  else RemoteXY.led_1_r = 0;
  
  // TODO you loop code
  // use the RemoteXY structure for data transfer
  // do not call delay() 


}

7 (edited by m_sav47 2023-12-25 21:04:31)

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

Добрый день!
как у вас ESP32 вообще конектится с облаком? Бьюсь несколько часов чтоб просто соединить ее с облаком через собственный модуль.
Библиотека  3.1.2 , генератор на сайте выдает совсем не схожую картину как в примерах этой библиотеке. Уже не знаю как это обойти((
Создавал точку из ESP , заработало сразу, андроид быстро подключился к ESP32 а с облаком треш полный((

8

Re: ESP32 подключение через WiFi Cloud или Bluetoth по выбору

m_sav47 wrote:

Добрый день!
как у вас ESP32 вообще конектится с облаком? Бьюсь несколько часов чтоб просто соединить ее с облаком через собственный модуль.
Библиотека  3.1.2 , генератор на сайте выдает совсем не схожую картину как в примерах этой библиотеке. Уже не знаю как это обойти((
Создавал точку из ESP , заработало сразу, андроид быстро подключился к ESP32 а с облаком треш полный((

В примерах показан более универсальный способ как использовать классы RemoteXY. Он более гибок в настройках, особенно когда требуется несколько разных вариантов подключения, несколько разных интерфейсов в одном контроллере и так далее.
Редактор формирует код с использованием настроечных макросов. Этот код более легко читается и для новичков удобнее.
Во всех примерах есть строчка в которой закомментирован макрос #define REMOTEXY__DEBUGLOG. Вы можете его раскоментировать. Вы так же можете добавить этот макрос в самое начало скетча из редактора.

#define REMOTEXY__DEBUGLOG


При включении этого макроса в Serial порт на скорости 115200 будет выводиться отладочная информация. Возможно это поможет.
Так же самая основная рекомендация если что то не подключается - тестируйте сначала "голый" код из редактора. И только после успешного коннекта начинайте добавлять ваш собственный код вашей задачи. Очень часто дополнительный код оказывается не совместим и это приводит к проблемам.