ESP32 conexión MySQL por red WPA2 Enterprise

Quiero dejar este proyecto para para cualquier apoyo a la comunidad de la cual me ayudo mucho para completar este proyecto.

Utilizando:
-4 modulos ESP32 ( 3 que envian y 1 que recibe los datos)
-4 sensores ultrasonicos HC-SR04 en cada area
-1 base de datos alojada en un ordenador PHPMyAdmin (XAMPP)
(Recuerda tener la fila primaria auto numerica para agregar exactamente donde lo quieres)

Resumen:
Se trata de una pequeña red de ESP32 conectados en una empresa que tiene la red WPA2: Enterprise utilizando:
-Un ESP32 que lee los datos de los sensores y los envia por medio de declaraciones SQL (Update) a la base de datos

  • Otro modulo lee los datos y los muestra en una LCD 16x2.

Mejoras:
-Utilizacion de otro tipo de sensor de proximidad por lo inestables que son
-Utilizar una LCD mas grande para mostrar mejor los datos (por ejemplo 20x4)

Anexos:
Se anexa como esta instalada

Codigos:
Se agrega codigo de envio y despues de recibo de datos

/*
 *Envio de datos a Base de datos MySQL (XAMPP) por red WPA2 Enterprise
 *Hecho por JUANDEUTEM
 *Disponible para editar y modificar para otro uso
 *Agregado a la comunidad de Arduino
 *Se necesita libreria "MySQL Conection Arduino"
 *26 de agosto del 2019
 */

//Librerias necesarias
#include <WiFi.h>
#include <MySQL_Connection.h> //descargar
#include <MySQL_Cursor.h>
#include "esp_wpa2.h"

WiFiClient client;
MySQL_Connection conn((Client *)&client);

//Datos necesarios para conectar (Usuario y contraseña de la red WPA2)
#define EAP_IDENTITY "-------" 
#define EAP_PASSWORD "--------"
#define MENOPC "ESP32 Board"

//Datos necesarios para conectarse al servidor en PC
IPAddress server_addr(---, --, ---, --); 
// MySQL server IP ---------------DIRECCCION IPv4 (Ubicada en (win + r) -> buscar cmd -> ipconfig
char user[] = "------------";           // MySQL usuario
char pass[] = "-------------";       // MySQL contraseña

String line;
const char* ssid = "----------"; //Nombre de la red a conectar 


#define pulso 4 
#define rebote 5 
#define pulso2  25
#define rebote2 14 
#define pulso3  26
#define rebote3 12 
#define pulso4  22
#define rebote4 21 

int distancia;
int distanciaa; 
float tiempo;  
int distancia2;
int distanciab; 
float tiempo2;  
int distancia3;
int distanciac; 
float tiempo3;  
int distancia4;
int distanciad;  
float tiempo4;

void setup() {
Serial.begin(115200);
 pinMode(pulso, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
  pinMode(rebote, INPUT);
  pinMode(pulso2, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
  pinMode(rebote2, INPUT);
   pinMode(pulso3, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
  pinMode(rebote3, INPUT);
  pinMode(pulso4, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido)
  pinMode(rebote4, INPUT);
delay(10);
Serial.println();
Serial.println(ssid);
WiFi.disconnect(true);
WiFi.mode(WIFI_STA);
esp_wifi_sta_wpa2_ent_set_identity((uint8_t *)EAP_IDENTITY, strlen(EAP_IDENTITY));
esp_wifi_sta_wpa2_ent_set_username((uint8_t *)EAP_IDENTITY, strlen(EAP_IDENTITY));
esp_wifi_sta_wpa2_ent_set_password((uint8_t *)EAP_PASSWORD, strlen(EAP_PASSWORD));
esp_wpa2_config_t config = WPA2_CONFIG_INIT_DEFAULT();
esp_wifi_sta_wpa2_ent_enable(&config);

Serial.println("MAC address: ");
Serial.println(WiFi.macAddress());
WiFi.begin(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
 while (conn.connect(server_addr, 3306, user, pass) != true) {
    delay(200);
    Serial.print ( "." );
  }

  Serial.println("");
  Serial.println("Connected to SQL Server!");  

}

void loop() {
 digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor
  delayMicroseconds(5);
  digitalWrite(pulso, HIGH); //envío del pulso ultrasónico
  delayMicroseconds(10);
  tiempo = pulseIn(rebote, HIGH);  //funcion para medir el tiempo y guardarla en la variable "tiempo"
  distanciaa = 0.01715*tiempo; //fórmula para calcular la distancia
  distancia= distanciaa-121;
/////////////////////////////////////////////////////////////////////////////////// 
  digitalWrite(pulso2,LOW); //Por cuestión de estabilización del sensor
  delayMicroseconds(5);
  digitalWrite(pulso2, HIGH); //envío del pulso ultrasónico
  delayMicroseconds(10);
  tiempo2 = pulseIn(rebote2, HIGH);  //funcion para medir el tiempo y guardarla en la variable "tiempo"
  distanciab = 0.01715*tiempo2; //fórmula para calcular la distancia
  distancia2= distanciab-121;
  //////////////////////////////////////////////////////////////////////////
   digitalWrite(pulso3,LOW); //Por cuestión de estabilización del sensor
  delayMicroseconds(5);
  digitalWrite(pulso3, HIGH); //envío del pulso ultrasónico
  delayMicroseconds(10);
  tiempo3 = pulseIn(rebote3, HIGH);  //funcion para medir el tiempo y guardarla en la variable "tiempo"
  distanciac = 0.01715*tiempo3; //fórmula para calcular la distancia
  distancia3= distanciac-121;
/////////////////////////////////////////////////////////////////////////////////// 
  digitalWrite(pulso4,LOW); //Por cuestión de estabilización del sensor
  delayMicroseconds(5);
  digitalWrite(pulso4, HIGH); //envío del pulso ultrasónico
  delayMicroseconds(10);
  tiempo4 = pulseIn(rebote4, HIGH);  //funcion para medir el tiempo y guardarla en la variable "tiempo"
  distanciad = 0.01715*tiempo4; //fórmula para calcular la distancia
  distancia4= distanciad-101;


// Parte de envio de datos por declaraciones MySQL
/*  Base de datos              Campo            Numero de fila
 *          ║                    ║                   ║
 * update ------.-------- set ------=%d  where ------=-;
 *                 ║                            ║
 * Nombre de la tabla              En que fila exactamente quieres agregar el dato
 * 
 */
char INSERT_SQL1[] = "update ------.-------- set ------=%d  where ------=-;"
char query1[128];
char INSERT_SQL2[] = "update ------.-------- set ------=%d  where ------=-;";
char query2[128];
char INSERT_SQL3[] = "update ------.-------- set ------=%d  where ------=-;";
char query3[128];
char INSERT_SQL4[] = "update ------.-------- set ------=%d  where ------=-;";
char query[128];
  delay(5000);

  //Ubicamos nuestras declaraciones en la base de datos
  MySQL_Cursor *cur_mem1 = new MySQL_Cursor(&conn);
  MySQL_Cursor *cur_mem2 = new MySQL_Cursor(&conn);
  MySQL_Cursor *cur_mem3 = new MySQL_Cursor(&conn);
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

  //Con esto se trasfire el la dsitacia del sensor al simbolo %d de nuestra declaración
  sprintf(query, INSERT_SQL1, distancia);
  sprintf(query1, INSERT_SQL2, distancia2);
  sprintf(query2, INSERT_SQL3, distancia3);
  sprintf(query3, INSERT_SQL4, distancia4);

 // Se ejecutan nuestras declaraciones
  cur_mem1->execute(query1);
  cur_mem2->execute(query2);
  cur_mem3->execute(query3);
  cur_mem->execute(query);

//Se borra memoria para que no saturar el loop
  delete cur_mem;
  delete cur_mem1;
  delete cur_mem2;
  delete cur_mem3;

// Se imprimen el el serial las declaraciones
  Serial.println("Recording data.");
  Serial.println(query);
  Serial.println(query1);
  Serial.println(query2);
  Serial.println(query3);
}

Luego añadire el codigo de recibir datos

*No necesita archivo PHP para funcionar
*Tarda en conectarse la primera vez (1 minuto ) pero despues de varios reinicios llega a 3 segundos!!
#Gracias Arduino