Páginas
domingo, 1 de diciembre de 2024
Aprende a medir corriente alterna y contina con el sensor ACS712 y ardui...
domingo, 24 de noviembre de 2024
domingo, 10 de noviembre de 2024
domingo, 3 de noviembre de 2024
No 12 Diseña tu App en AppInventor y Conéctala a Firebase para Control a...
viernes, 1 de noviembre de 2024
No.11 prende y apaga LEDS desde cualquier lugar del MUNDO con ESP32 y ba...
martes, 29 de octubre de 2024
código test cómo conectarse a una red WiFi con el ESP32
código test cómo conectarse a una red WiFi con el ESP32
En algunos casos algunas versiones de esp suelen tener problemas de conexión, dejare dos imágenes de esp que encontraran en la red, el ESP32 con puerto usb tiene unos componentes extra por la configuracion que requiere el puerto pero funciona igual que el micro usb
Modulo ESP32 DevKit V1 – Micro USB
este modulo por lo comun al subir el archivo al esp no requiere presionar el boton BOOT y es el modulo mas tipico en el mercado (en algunas versiones suele tener problemas para conexion a wifi, mas abajo explico como solucionarlo)
Modulo ESP32 DevKit – USB Tipo-C
La biblioteca incorporada WiFi.h
permitirá utilizar las funciones WiFi de la placa ESP32 fácilmente.
El ESP32 tiene 2 modos WiFi: en el curso de IOT de este canal miramos en el primer video el tema, en resumen:
ESTACIÓN (
WIFI_STA
) : El modo Estación (STA) se utiliza para conectar el módulo ESP32 a un punto de acceso WiFi. El ESP32 se comporta como un ordenador que está conectado a nuestro router.AP (Access Point) (
WIFI_AP
): En el modo Access Point, el ESP32 se comporta como una red WiFi (un poco como un router): otros dispositivos pueden conectarse a él. En este modo, el ESP32 no está conectado a ninguna otra red y, por lo tanto, no está conectado a Internet. Este modo requiere más recursos computacionales y de energía (la placa del ESP32 se calentará), ya que el ESP32 tiene que simular un router WiFi completo (Soft AP).El ESP32 está, por defecto, en modo ESTACIÓN.
El código para testear su ESP32 para verificar si el modulo esta bueno y se conecta correctamente, caba resaltar que si despues de subir el codigo continua sin conectarse debe verificar varias item
1. revisar que el cable usb conectado PC a ESP32 sea de datos y sea de la mejor calidad ya que el esp en el momento de trabajar consume buena corriente y el voltaje debe ser estable, preferiblemente conectelo a usb 3
2. Si el cable esta bien y persiste el problema revice que el led de power ilumine correctamente y solo ensaye el ESP32 solo, no conecte nada mas, en su defecto conecte lo entre VCC y GND un capacitor de 470uF o 1000Uf/16v para estabilizar el voltaje y ayudar al inicio del ESP32
3. Revise que el esp32 este bien y tenga actualizado las bibliotecas y la version de tarejetas del ESP32
#include <WiFi.h>
const char* ssid = "nombre de su red wifi";
const char* password = "clave de su red wifi de casa o celular";
void setup(){
Serial.begin(115200);//configura la velocidad de configuración del monitor serial
delay(1000);//tiempo de espera
WiFi.mode(WIFI_STA); //garantiza que el esp32 se conectara en modo estacion
WiFi.begin(ssid, password);//inicia el modelo wifi con la red y clave
Serial.println("\n ...Connecting...");//mensaje conectando
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");//sacara un punto hasta que se conecte
delay(100);
}
Serial.println("\n conectado a red wifi");
Serial.print("IP asignada esp32: ");//mensaje
Serial.println(WiFi.localIP());//imprime la ip asignada
}
void loop(){}
//*****************************************************************************
Si es una red abierta (sin contraseña), use el siguiente código:
#include <WiFi.h>
const char* ssid = "yourNetworkName";
void setup(){
Serial.begin(115200);
delay(1000);
WiFi.begin(ssid);
Serial.println("\nConnecting");
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(100);
}
Serial.println("\n conectado a red wifi");
Serial.print("IP asignada esp32: ");
Serial.println(WiFi.localIP());
}
void loop(){}
//***********************************************************************
Depurar problemas de conexión Wi-Fi
Monitorizando el estado de la conexión,Podemos conocer el estado de la
conexión WiFi con la función WiFi.status(). Esta función devuelve
un entero según el estado actual de la conexión.
Los estados posibles son:
WL_IDLE_STATUS:Este es el estado predeterminado antes de intentar
conectarse a una red.
WL_SCAN_COMPLETED:El escaneo de la red WiFi ha finalizado.
WL_NO_SSID_AVAIL:El ESP32 no puede encontrar el nombre de la red WiFi.
La red está demasiado lejos del ESP32 o el nombre (SSID) de la red es incorrecto.
WL_CONNECT_FAILED:El ESP32 no puede conectarse a la red WiFi designada.
WL_CONNECTION_LOST:Se perdió la conexión WiFi a la red. Si este error se repite, puede ser un problema de alimentación del ESP32.
WL_CONNECTED:El ESP32 está conectado a la red WiFi.
WL_DISCONNECTED:El ESP32 está desconectado de la red WiFi.
#include <WiFi.h>
const char* ssid = "yourNetworkName";// Define el nombre de la red WiFi (SSID)
const char* password = "yourNetworkPassword";// Define la contraseña de la red WiFi
// Función para obtener el estado del WiFi en formato de texto
String get_wifi_status(int status){
switch(status){
case WL_IDLE_STATUS:// Estado en espera, no conectado aún
return "WL_IDLE_STATUS";
case WL_SCAN_COMPLETED:// El escaneo de redes WiFi se completó
return "WL_SCAN_COMPLETED";
case WL_NO_SSID_AVAIL:// No se encontró la red (SSID) especificada
return "WL_NO_SSID_AVAIL";
case WL_CONNECT_FAILED:
return "WL_CONNECT_FAILED";// Falló la conexión al intentar conectarse a la red
case WL_CONNECTION_LOST:
return "WL_CONNECTION_LOST";// La conexión se perdió después de haber sido establecida
case WL_CONNECTED:
return "WL_CONNECTED";// Conectado correctamente a la red WiFi
case WL_DISCONNECTED:
return "WL_DISCONNECTED";// El módulo se ha desconectado de la red
}
}
void setup(){
Serial.begin(115200);
delay(1000);
int status = WL_IDLE_STATUS; // Establece el estado inicial en 'espera'
Serial.println("\nConnectando");
Serial.println(get_wifi_status(status));
WiFi.begin(ssid, password);
while(status != WL_CONNECTED){// Bucle hasta que se conecte al WiFi
delay(500);
status = WiFi.status();// Actualiza el estado del WiFi
Serial.println(get_wifi_status(status));// Imprime el estado actual del WiFi
}
Serial.println("\n conectado a red wifi");
Serial.print("IP asignada esp32: ");
Serial.println(WiFi.localIP());
}
void loop(){}// Bucle vacío, no se realizan acciones continuas después de la configuración inicial
Reiniciando el ESP32
Ocasionalmente, el ESP32 puede fallar temporalmente al conectarse al WiFi por razones desconocidas o extrañas. La mejor solución es decir que después de n
unos segundos, si el ESP32 aún no se ha conectado al WiFi, reiniciamos el ESP32. Simplemente agregamos un tiempo de espera y usamos la ESP.restart()
función para reiniciar el ESP32 desde el código.
Aquí hay un ejemplo que reiniciará el ESP32 después de 10 segundos si aún no está conectado a WiFi.
#include <WiFi.h>
#define CONNECTION_TIMEOUT 10
const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPassword";
void setup(){
Serial.begin(115200);
delay(1000);
WiFi.mode(WIFI_STA); //Optional
WiFi.begin(ssid, password);
Serial.println("\nConnecting");
int timeout_counter = 0;
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(200);
timeout_counter++;
if(timeout_counter >= CONNECTION_TIMEOUT*5){
ESP.restart();
}
}
Serial.println("\nConnected to the WiFi network");
Serial.print("Local ESP32 IP: ");
Serial.println(WiFi.localIP());
}
void loop(){}
//*****************************************************************************
Ejemplo de aplicación: escaneo de Wi-Fi
Aquí tienes una aplicación concreta que te permite escanear las redes WiFi que hay a tu alrededor:
#include "WiFi.h"
String get_encryption_type(wifi_auth_mode_t encryptionType) {
switch (encryptionType) {
case (WIFI_AUTH_OPEN):
return "Open";
case (WIFI_AUTH_WEP):
return "WEP";
case (WIFI_AUTH_WPA_PSK):
return "WPA_PSK";
case (WIFI_AUTH_WPA2_PSK):
return "WPA2_PSK";
case (WIFI_AUTH_WPA_WPA2_PSK):
return "WPA_WPA2_PSK";
case (WIFI_AUTH_WPA2_ENTERPRISE):
return "WPA2_ENTERPRISE";
}
}
void setup(){
Serial.begin(115200);
WiFi.mode(WIFI_STA);
}
void loop() {
Serial.println("uPesy WiFi Scan Demo");
Serial.println("[*] Scanning WiFi network");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("[*] Scan done");
if (n == 0) {
Serial.println("[-] No WiFi networks found");
} else {
Serial.println((String)"[+] " + n + " WiFi networks found\n");
for (int i = 0; i < n; ++i) {
// Print SSID, RSSI and WiFi Encryption for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(" dB) [");
Serial.print(get_encryption_type(WiFi.encryptionType(i)));
Serial.println("]");
delay(10);
}
}
Serial.println("");
// Wait a bit before scanning again
delay(5000);
}
Ahorrar energía
Si estás usando un ESP32 en un proyecto que necesariamente debe usar WiFi para funcionar, es una buena idea configurar el ESP32 en modo de suspensión profunda en caso de falla de conexión para minimizar el consumo de energía. Esto es similar al código ESP32 que se queda en modo de suspensión durante 10 segundos entre cada intento.
Código que permite poner el ESP32 en Deep Sleep entre 2 intentos
#include <WiFi.h>
#include <esp_wifi.h>
//Time in seconds
#define CONNECTION_TIMEOUT 5
#define DEEP_SLEEP_DURATION 10
const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPassword";
void setup(){
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("\nConnecting");
int timeout_counter = 0;
while(WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(100);
timeout_counter++;
if(timeout_counter >= CONNECTION_TIMEOUT*10){
Serial.println("\nCan't establish WiFi connexion");
//Setup timer
esp_sleep_enable_timer_wakeup(DEEP_SLEEP_DURATION * 1000000);
//Start deep sleep
esp_deep_sleep_start();
}
}
Serial.println("\nConnected to the WiFi network");
Serial.print("Local ESP32 IP: ");
Serial.println(WiFi.localIP());
}
void loop(){}
fuente: https://www.upesy.com/blogs/tutorials/how-to-connect-wifi-acces-point-with-esp32#