# Comprobar que el ESP8266 está a 9600 baudios por defecto

<span style="color: #000000;">Tal y como se aconseja **[<span style="text-decoration: underline; color: rgb(53, 152, 219);">aquí</span>](https://gerdslab.com/arduino-blocks-esp8266-adafruit-io/),** el ESP8266 permite trabajar la wifi a velocidades de 9600 a 115200 baudios pero para evitar problemas se aconseja bajar a 9660. </span>

<span style="color: #000000;">Esta comprobación no es necesario hacerlo siempre, con una sola vez es suficiente, el ESP8266 se queda grabado a esa velocidad.</span>

#### **<span style="color: #169179;">Comunicarnos con el ESP8266</span>**

El ESP8266 se comunica con nuestro Arduino por un puerto serie. Nosotros ya utilizamos un puerto serie en el Arduino, el que nos permite la comunicación de Arduino con nuestro ordenador por el puerto COM de nuestro ordenador y por D0 y D1 de nuestro Arduino. Con la librería **SoftwareSerial.h** es posible crear otro puerto serie adicional. Luego vamos a grabar este código extraído de [https://docs.arduino.cc/tutorials/communication/SoftwareSerialExample](https://docs.arduino.cc/tutorials/communication/SoftwareSerialExample) y nos permitirá una vez creado el puerto serie adicional, comunicarnos con él

Tenemos que:

1. descargar el programa Arduino IDE de [https://www.arduino.cc/en/software](https://www.arduino.cc/en/software)
2. Instalarlo y ejecutarlo
3. seleccionar la placa Arduino Uno
4. seleccionar el puerto donde está conectado

Para estos 4 pasos, te recomendamos que vea [esta página.](https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/entorno-de-programacion-por-codigo)

Pega este código

```Arduino
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 5); // Esto crea un nuevo puerto serie en RX, TX en los pines 3 y 5 

    

void setup() {
  
  Serial.begin(9600);    // pone la velocidad a 9600 baudios DEL PUERTO SERIE COM no el que vamos a crear nuevo
  Serial.println("Cónsola serie. Teclear el comando AT en la línea de arriba y pulsa Enviar... a ver si sale OK");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);     //esto fija a 9600 la comunicación entre ESP01 y tu ordenador, no la velocidad wifi del ESP01
 
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
  
}
```

Y lo subimos al Arduino

[![embedded-image-efNB2aaU.jpeg](https://libros.catedu.es/uploads/images/gallery/2022-02/scaled-1680-/embedded-image-efnb2aau.jpeg)](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-efnb2aau.jpeg)

<p class="callout danger">Este programa **NO NOS HA CONFIGURADO EL ESP8266 A 9600 BAUDIOS** simplemente este programa nos permite comunicarnos con el ESP8266 por la consola serie</p>

Luego abrimos la monitorización del puerto serie:

[![monitorserieArduinoide.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/monitorseriearduinoide.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/monitorseriearduinoide.png)

Y nos sale esta pantalla, una zona de entrada de comandos hacia el Arduino y la zona de respuesta del Arduino:

<p class="callout warning">Asegúrate que tienes la comunicación a **9600 baudios**</p>

[![monitorserieArduinoide2.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/monitorseriearduinoide2.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/monitorseriearduinoide2.png)

Apretamos el botón reset del ESP8266

[![reset8266.jpg](https://libros.catedu.es/uploads/images/gallery/2023-01/scaled-1680-/reset8266.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-01/reset8266.jpg)

Si en el monitor serie aparece al final la palabra **ready** es que la comunicación con el ESP8266 se realiza sin problemas

[![ready8266.jpg](https://libros.catedu.es/uploads/images/gallery/2023-01/scaled-1680-/ready8266.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-01/ready8266.jpg)

Si no sale la palabra **ready** tendrás que configurarlo a 9600 con los comandos AT:

##### <span style="color: rgb(22, 145, 121);">**Configurando a 9600**</span>

Si no te sale la palabra **ready**, carga este programa que ejecuta la instrucción **AT+UART\_DEF=9600,8,1,0,0** para configurar tu ESP8266 a 9600 baudios

```
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 5); // Esto crea un nuevo puerto serie en RX, TX en los pines 3 y 5 

    

void setup() {
  
  Serial.begin(9600);    // pone la velocidad a 9600 baudios DEL PUERTO SERIE COM no el que vamos a crear nuevo
  Serial.println("Cónsola serie. Teclear el comando AT en la línea de arriba y pulsa Enviar... a ver si sale OK");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);     //esto fija a 9600 la comunicación entre ESP01 y tu ordenador, no la velocidad wifi del ESP01
 
   delay(1000);
   
   Serial.print("Modo 3 ....\n");
   mySerial.write("AT+CWMODE=3\r\n");
   delay (1000);
   mySerial.write("AT+RST\r\n");
   delay (1000);
   Serial.print("Configurando a 9600 baudios ....\n");
   mySerial.write("AT+UART_DEF=9600,8,1,0,0\r\n");
   delay (1000);
   mySerial.write("AT+RST\r\n");
   delay (1000);
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
  
}
```

Te tiene que salir algo así:

[![salidaESP.jpg](https://libros.catedu.es/uploads/images/gallery/2023-01/scaled-1680-/salidaesp.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-01/salidaesp.jpg)

#### <span style="color: #169179;">**Experimenta con los comandos AT**</span>

Los comandos AT son simplemente instrucciones de texto que se envían por el puerto serie, En este caso utilizando Arduino y el puerto creado con SoftwareSerial.h como intermediarios entre tu ordenador y el ESP8266.

OJO, los comandos AT necesitan que terminen con los caracteres **nueva línea**  y **carry return** para eso, tienes que tener activo que se envían estos caracteres en esta lista desplegable de la ventana del monitor serie

[![NR-NL-8266.jpg](https://libros.catedu.es/uploads/images/gallery/2023-01/scaled-1680-/nr-nl-8266.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-01/nr-nl-8266.jpg)

Teclea **AT** y pulsa **Enviar**, te tiene que salir OK esto significa que hay comunicación con el ESP8266 con los comandos AT

[![monitorserieArduinoide3.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/monitorseriearduinoide3.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/monitorseriearduinoide3.png)

<p class="callout info">Verás en Internet programas específicos en Arduino IDE para ejecutar los comandos AT.   
NO ES NECESARIO como ves se puede hacer desde la consola del monitor serie.   
Pero en el Arduino tiene que estar el programa cargado de crear el nuevo puerto y de visualizar los comandos.</p>

Ponlo en modo normal 3 = station+softAp es la más versátil **AT+CWMODE=3**

Luego reinicialo o con el botón de reset o con el comando **AT+RST**

Teclea **AT+CWLAP** y verás las wifis disponibles

**[![monitorserieArduinoide4.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/monitorseriearduinoide4.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/monitorseriearduinoide4.png)**

La instrucción **AT+UART\_DEF=9600,8,1,0,0** configura tu ESP8266 a 9600 baudios

[![monitorserieArduinoide5.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/monitorseriearduinoide5.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/monitorseriearduinoide5.png)

Conectarse a una red wifi concreta **<span class="enlighter-text">AT+CWSAP=</span><span class="enlighter-s0">"ssid"</span><span class="enlighter-text">,</span><span class="enlighter-s0">"password"</span><span class="enlighter-text">,3,0</span>**

<span class="enlighter-text">Ver la IP del 8266 </span>**<span class="enlighter-text">AT+CIFSR</span>**

Para saber más comandos AT [visita esta página de Luis Llamas ](https://www.luisllamas.es/arduino-wifi-esp8266-esp01/)

#### <span style="color: #169179;">**Mentirijillas**</span>

He dicho que esto sólo se hace una sóla vez, que no es necesario hacerlo en la programación habitual con ESP8266 añadir puertos serie. Es una mentirijilla. Realmente siempre hay que usar el **SoftwareSerial.h**  y crear un nuevo puerto con **SoftwareSerial mySerial(3, 5)** para poder manejar el ESP8266, pero esto **lo hace Arduinoblocks por nosotros** de forma transparente.

Cuando ponemos en Arduinoblocks la instrucción para conectarnos a la wifi con el ESP8266 :

[![bloquearduinoblockswifi.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/bloquearduinoblockswifi.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/bloquearduinoblockswifi.png)

Si vemos en el código, ya pone estas instrucciones :

> **\#include &lt;SoftwareSerial.h&gt;**  
> \#include "ABlocksIOTMQTTESP8266.h"
> 
> String s\_LED\_TXT;  
> boolean b\_conectado;  
> const char mqtt\_broker\[\]="io.adafruit.com";  
> const int mqtt\_port=1883;  
> const char mqtt\_user\[\]=".......";  
> const char mqtt\_pass\[\]=".....";  
> const char mqtt\_clientid\[\]="cualquiercosa";  
> const char mqtt\_wifi\_ssid\[\]="...";  
> const char mqtt\_wifi\_pass\[\]="......";  
> **SoftwareSerial mqtt\_esp8266\_serial(3,5);**  
> ESP8266 mqtt\_esp8266\_wifi(&amp;mqtt\_esp8266\_serial);
> 
> etc....

{{@5685}}