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