Vamos a utilizar un ESP8266 como antena Wifi para nuesto Arduino Mega o Arduino Uno

Pasos Previos

Para empezar, instala la librería WiFiEspAT en Arduino IDE. para ello, abrimos Arduino IDE vamos a Programa/Incluir librería/Administrar Bibliotecas y en el Gestor de Librerías buscamos WIFiEspAT y presionamos en el botón de Instalar de la librería WiFiEspAT by Juraj Andrassy o la podemos instalar manualmente descargándola de GitHub de Juraj Andrassy

El segundo paso es Cargar el AT Firmware 2.1 en nuestro ESP8266. Este firmware permite convertir ESP8266 es un simple periférico de comunicación y la configuración de red dependerá de nuestro código para Arduino Uno o Arduino Mega

El tercer paso es conectar nuestro ESP8266 con AT Firmware a Arduino Mega o Arduino Uno.

El cuarto paso consiste en comprobar que la comunicación entre ESP8266 con AT Firmware y nuestro Arduino funcione correctamente. En caso de no funcionar correctamente, es posible que ESP8266 con AT Firmware tenga configurada una velocidad de comunicación no adecuada (por defecto 115200 baudios) para microcontroladores que virtualizan el Serial1 con la librería SoftwareSerial (como es el caso de Arduino Uno) se recomienda un baudrate de 9600, para Microcontroladores que tienen el puerto Serial1 nativo, es recomendable mantener el baudrate a 115200 menos en el caso de Arduino Mega (u otros similares) que podemos trabajar con un baudrate de 500000 sin ningún problema y agilizaremos la velocidad de transmisión

Firmware Arduino utilizando WIFiEspAT

Una vez tenemos el Hardware preparado y comprobado que los dispositivos se ven entre ellos sin problema, el último paso es empezar a trabajar con ellos. Para ello, podremos utilizar los ejemplos nativos de la librería WiFiEspAT:

Preparar los ejemplos WiFiEspAT para su uso

Los ejemplos de WifiEspAT vienen sin la líneas de configuración de la Wifi ya que esta se puede configurar en el propio ESP8266 AT Firmware utilizando el ejemplo de código WiFiEspAT/Tools/SetupPersistantWiFiConnection o lo podemos configurar desde el firmware del Arduino. Las líneas de código que deberemos añadir a los ejemplos para configurar la conexión desde el Arduino sin utilizar el SetupPersistantWiFiConnection son comunes para todos los ejemplos:

En primer lugar bajo el «#include <WiFiEspAT.h>» incluiremos los datos de conexión a la WiFi:

#include <WiFiEspAT.h>

#define SECRET_SSID "EL_NOMBRE_DE_TU_WLAN" // Your SSID
#define SECRET_PASS "LA_PASSWORD_DE_TU_WLAN" // Your SSID Password

const char ssid[] = SECRET_SSID;
const char pass[] = SECRET_PASS;

Recuerda cambiar el EL_NOMBRE_DE_TU_WLAN y la LA_PASSWORD_DE_TU_WLAN de tu red WLAN para que se pueda conectar

A continuación inmediatamente sobre la línea de código donde aparece «Serial.println(«Waiting for connection to WiFi»);» deberemos poner lo siguiente:

  WiFi.disconnect();
  WiFi.begin(ssid, pass);

  Serial.println("Waiting for connection to WiFi");

Si además deseamos dejar de utilizar el DHCP y asignar una IP fija al dispositivo deberemos añadir algunas líneas más en los dos casos anteriores. bajo el «#include <WiFiEspAT.h>» nos quedará:

#include <WiFiEspAT.h>

#define SECRET_SSID "EL_NOMBRE_DE_TU_WLAN" // Your SSID
#define SECRET_PASS "LA_PASSWORD_DE_TU_WLAN" // Your SSID Password

const char ssid[] = SECRET_SSID;
const char pass[] = SECRET_PASS;

IPAddress ip(192, 168, 1, 100); 
IPAddress gateway(192, 168, 1, 1); 
IPAddress subnet(255, 255, 255, 0);

Sobre «Serial.println(«Waiting for connection to WiFi»);» nos quedará:

  WiFi.disconnect();
  WiFi.config(ip, gateway, subnet); 
  WiFi.begin(ssid, pass);

  Serial.println("Waiting for connection to WiFi");

El ejemplo WebClient de WiFiEspAT con las modificaciones anteriormente mencionadas quedaría así:

/*
  Web client

 This sketch connects to a website (http://arduino.cc)
 using the WiFi module.

 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 modified in Jul 2019 for WiFiEspAT library
 by Juraj Andrassy https://github.com/jandrassy
 modified in Jul 2021 for Manual Wifi config
 by EUREK Technology
 */

#include <WiFiEspAT.h>

#define SECRET_SSID "EL_NOMBRE_DE_TU_WLAN" // Your SSID
#define SECRET_PASS "LA_PASSWORD_DE_TU_WLAN" // Your SSID Password

const char ssid[] = SECRET_SSID;
const char pass[] = SECRET_PASS;

IPAddress ip(192, 168, 1, 100); 
IPAddress gateway(192, 168, 1, 1); 
IPAddress subnet(255, 255, 255, 0);

// Emulate Serial1 on pins 6/7 if not present
#if defined(ARDUINO_ARCH_AVR) && !defined(HAVE_HWSERIAL1)
#include <SoftwareSerial.h>
SoftwareSerial Serial1(6, 7); // RX, TX
#define AT_BAUD_RATE 9600
#else
#define AT_BAUD_RATE 115200
#endif

const char* server = "arduino.cc";

WiFiClient client;

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial1.begin(AT_BAUD_RATE);
  WiFi.init(Serial1);

  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println();
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }

  WiFi.disconnect();
  WiFi.config(ip, gateway, subnet); 
  WiFi.begin(ssid, pass);

  Serial.println("Waiting for connection to WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print('.');
  }
  Serial.println();
  Serial.println("Connected to WiFi network.");

  Serial.println("Starting connection to server...");
  if (client.connect(server, 80)) {
    Serial.println("connected to server");

    client.println("GET /asciilogo.txt HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Connection: close");
    client.println();
    client.flush();
  }
}

void loop() {

  // if there are incoming bytes available
  // from the server, read them and print them
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }

  // if the server's disconnected, stop the client
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();

    // do nothing forevermore
    while (true);
  }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *