viernes, 4 de noviembre de 2016

Arduino - Cargando un programa en el esp8266

Una de las características del módulo esp8266 es que además de poder usarlo para conectar por WiFi un Arduino, se le puede agregar un programa directamente al módulo que realice alguna función directamente.

La buena noticia es que para pasar un programa al esp8266 se puede usar el IDE de Arduino directamente!

Para instalar el soporte para módulo ESP8266:
  - Agregar la siguiente dirección en "File -> Preferences -> Additional Boards Manager URLs":
       http://arduino.esp8266.com/stable/package_esp8266com_index.json
  - Abrir "Tools -> Board -> Board Manager" y clickear en install en el ESP8266

Solo hay que tener cuidado con las conexiones y entender que los módulos ESP8266 tienen dos modos, un modo que permite cargarles programas y un modo que los ejecuta. Para setear en que modo queremos trabajar podemos usar un programa de Arduino.

El modelo que tengo yo es el ESP01, para el cual hay que poner el pin GPIO en low y resetear para entrar al modo flash y cree un sketch que permite ponerlo en un modo u otro, encendiendo un led azul cuando esta en modo flash.

//sketch para cargar firmware a ESP8266 por medio de Arduino
int ch_pd = 3;
int io0 = 2;
// Seteo de otros pines ESP8266-> Arduino
// VCC -> 3,3 Arduino
// TX -> TX (1) Arduino
// RX -> RX (0) Arduino
// GND -> GND Arduino

void setup() {
  pinMode(ch_pd, OUTPUT);
  pinMode(io0, OUTPUT);
  pinMode(8, OUTPUT);
  digitalWrite(io0, LOW); //-> Manda 0 al GPIO0 para poner en modo Flasheo
  //digitalWrite(io0, HIGH);   //-> Manda 1 al GPIO0 para sacar el modo Flasheo
  digitalWrite(ch_pd, LOW);
  delay(1000);
  digitalWrite(ch_pd, HIGH);
  if (digitalRead(io0)==LOW){
    //Modo Flash
    digitalWrite(8,HIGH);
    } else {
    digitalWrite(8,LOW);
    }
}

void loop()
{

}

Este sketch se carga primero asi como está seleccionando como Board en mi caso Arduino Uno.

Una vez que está cargado (el led en el pin 8 se prende), se puede cargar un sketch para el ESP8266, como este básico de blink que viene como ejemplo (aparece al seleccionar el esp8266 como Board) que hace parpadear la luz azul del esp8266) pero seleccionando Generic ESP8266 Module como Board.



Hay que tener en cuenta que para que funcione hay que sacar el modo flash, para lo cual se puede usar el mismo sketch de modo flasheo pero modificando la siguiente linea. Hay que recordar volver a setear el board como Arduino Uno, porque sino se estaría intentando enviar el programa al ESP8266 en vez de setear los pines.
digitalWrite(io0, HIGH);   //-> Manda 1 al GPIO0 para sacar el modo Flasheo

Si todo funciona bien la luz azul del esp8266 debería empezar a parpadear y ya estamos listos para seguir!

Aclaración: en muchos lados lei que el Arduino Uno no alcanza para proveer la energía que necesita el esp8266 pero la verdad por ahora no tuve problemas en hacerlo arrancar y cargarle programas solamente con el Arduino Uno conectado por el USB a la computadora. 

No hay comentarios.:

Publicar un comentario