Skip to main content

Grabar el ESP8266 a 9600 baudios por defecto

Tal y como se aconseja aquí, el ESP8266 permite trabajar la wifi a velocidades de 9600 a 115200 baudios pero para evitar problemas se aconseja bajar a 9660.

Cuando hay que hacer esto

Poner el ESP8266 a 9600 por defecto se tiene que hacer si no utilizas instrucciones que lo pongan a esa velocidad. En Arduinoblocks utilizaremos esta instrucción y como puedes ver cada vez lo vamos a poner a 9600 cada vez, luego NO HACE FALTA GRABAR EL ESP8266 a 9660 por defecto

bloquearduinoblockswifi.png 

Pero si no vas a poner en tus programas esta velocidad, entonces es conveniente que la pongas por defecto.

Esta configuración de bajar a 9600 baudios SOLO HAY QUE HACERLO UNA VEZ. El ESP8266 se queda configurado a esa velocidad.

Comunicarnos con el ESP8266

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 extraido de 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
  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.

Pega este código

#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 sí que lo colocafija a 9600 ella nuevocomunicación puertoentre queESP01 hey creadotu PEROordenador, NOno LOla DEJAvelocidad PORwifi DEFECTOdel 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

Este programa NO NOS HA CONFIGURADO EL ESP8266 A 9600 BAUDIOS simplemente este programa nos permite comunicarnos con el ESP8266 por la consola serie

Luego abrimos la monitorización del puerto serie:

monitorserieArduinoide.png

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

monitorserieArduinoide2.png

Ahora sí que podemos configurarlo !!! con comandos 

Comandos AT

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.

Teclea AT y pulsa enviar, te tiene que salir OK esto significa que hay comunicación con el ESP8266

monitorserieArduinoide3.png

Teclea AT+CWLAP y verás las wifis disponibles

monitorserieArduinoide4.png

Y por fin teclea AT+UART_DEF=9600,8,1,0,0 y ya tienes configurado tu ESP8266 a 9600 baudios

monitorserieArduinoide5.png

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 cónsola del monitor serie. Pero en el Arduino tiene que estar el programa cargado de crear el nuevo puerto y de visualizar los comandos.

Para saber más comandos AT visita esta página de Luis Llamas 

Mentirijillas

He dicho que esto sólo se hace una sóla vez, que no es necesario hacerlo en la programación habitual con ESP8266. 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

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

#include <SoftwareSerial.h>
#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(&mqtt_esp8266_serial);

etc....