Configuración módulo ESP32-CAM (Solucionado)

Hola, soy nuevo en el foro y me disculpo si incumplo alguna norma en la publicación.

Estoy metido en un proyecto de una grúa torre, y necesito una cámara para visualizar las cargas. Estoy usando el módulo ESP32 CAM. La intención es mediante una app android(mit app inventor), enviar por serial a Arduino el SSID y el PASSWORD, y recibir del arduino el enlace de la web de retransmisión para poder universalizar el diseño, conectándolo a cualquier red wifi.

Mi problema viene a la hora de modificar el código de Arduino para solicitar estas claves por Serial. Están declaradas como const char*, y no soy capaz de transformar el valor serial a ese valor.

const char* ssid = "*********";
const char* password = "*********";

-
-
-
-
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");

El código pertenece al ejemplo de camerawebserver.
Saludos

Moderador:
Todo tema que no sea de placas Arduino va en la sección Microcontroladores.
Gracias por postear todo lo demás correctamente.
Bienvenido al foro Arduino en Español.

Eso mismo lo puedes hacer con Wifi Manager para ESP32.

Pruebalo, es yo diría profesional.

Hola Surbyte, gracias por tu respuesta.
Mañana lo veré, aunque no sé sí funcionará de la misma manera para el módulo con la cámara...

WIFI Manager solo gestiona la WIFI que vas a usar.
Inicias por primera vez y se pone en modo Access Point en 192.168.4.1
Accedes con tu celular o notebook.
Scaneas las WIFIs exsitentes, eliges una y pones su password.
Queda guardada en EEPROM.
Sigues con lo que tengas que hacer, me refiero al resto de tu programa.

Hola Surbyte, no sé si te he entendido mal o quizás no me aclare, pero no comprendo el uso de wifi manager.
Mi intención sería desde esa app móvil, escribir ahí ssid y contraseña; y enviarlo al arduino vía serial para escribir en el código de la esp32 cam la ssid y la contraseña y realizar la conexión del módulo. Luego querría guardar el enlace que da de https://xxx.xx.x.xxx para enviarselo a la app móvil y realizar la conexión a esa web. Todo desde la app.

Bueno, entonces te he malentendido como me ocurre un par de veces por no decir varias.
Empecemos de nuevo.
Wifi Manager es para que en tu ESP elijas la Wifi con la que vas a trabajar pero en tu caso y no lo cuestiono quieres decirselo via tu APP.
Ok
En el ejemplo que muestras partes de SSID y password. De ningun modo tiene que ver con lo que mencionas.
Pero supongamos que sea una aproximación.
Debes comenzar con algo, dime, para enlazar tu ESP a tu movil como esperas hacerlo?
Lo mejor es lo que yo te sugerí a medias, sin usar WIFI Manager, es decir, poner el ESP32 en modo Access point, y que tu movil se conecte al ESP32, intercambien datos y luego reinicias el ESP con los datos que mencionas. Es como que tu App hara exactamente lo mismo que el WiFI Manager.

Estimado Surbyte, encontré una web con la explicación y el código para utilizar el modo access point. He colocado la URL que da el sketch en la URL en mit app inventor, tengo que conectarme con el móvil al access point de esp32 y funciona correctamente. Muchas gracias por tu ayuda, siento no haberte comprendido antes.
Dejo el código por si le es de utilidad a alguien posteriormente.

/*********
  Rui Santos
  Complete instructions at https://RandomNerdTutorials.com/esp32-cam-projects-ebook/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/

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

//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
//            or another board which has PSRAM enabled
//

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM_
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

#include "camera_pins.h"

const char* ssid = "ESP32-CAM Access Point";
const char* password = "123456789";

void startCameraServer();

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();

  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;
  //init with high specs to pre-allocate larger buffers
  if(psramFound()){
    config.frame_size = FRAMESIZE_UXGA;
    config.jpeg_quality = 10;
    config.fb_count = 2;
  } else {
    config.frame_size = FRAMESIZE_SVGA;
    config.jpeg_quality = 12;
    config.fb_count = 1;
  }

#if defined(CAMERA_MODEL_ESP_EYE)
  pinMode(13, INPUT_PULLUP);
  pinMode(14, INPUT_PULLUP);
#endif

  // camera init
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }

  sensor_t * s = esp_camera_sensor_get();
  //initial sensors are flipped vertically and colors are a bit saturated
  if (s->id.PID == OV3660_PID) {
    s->set_vflip(s, 1);//flip it back
    s->set_brightness(s, 1);//up the blightness just a bit
    s->set_saturation(s, -2);//lower the saturation
  }
  //drop down frame size for higher initial frame rate
  s->set_framesize(s, FRAMESIZE_QVGA);

#if defined(CAMERA_MODEL_M5STACK_WIDE)
  s->set_vflip(s, 1);
  s->set_hmirror(s, 1);
#endif

  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  startCameraServer();

  Serial.print("Camera Ready! Use 'http://");
  Serial.print(WiFi.localIP());
  Serial.println("' to connect");
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(10000);
}

Saludos