History: 2. Programación en Arduino

Revision made 7 years ago by Jaime Laborda. Go to the last revision.

El chip ESP8266 puede ser programado de varias maneras y en varios lenguajes:

  • Modulo sin Firmware: Mediante comandos AT: instrucciones directas que entiende el micro. Esta es la manera más a bajo nivel de programar el ESP8266.
  • Programación con el SDK original de expressif en C++
  • Programación por scrips de Lua: Requiere de compilar el SDK de Lua y descargarlo en la placa ya que Lua es un lenguaje interpretado. Existe una API de NodeMCU de programación en LUA que nos permite guardar varios scripts en su memoria.
  • Programación con Micro Phyton.
  • Programación con Arduino Ide en C++: Compatibilidad con librerías de Arduino, entorno muy conocido para la mayoría de usuarios.

Para el desarrollo de este taller usaremos este ultimo método por considerarlo el más sencillo, pero una opción muy interesante, la cual os invito a probar, es la programación con la API de NodeMCU en Lua.

1. Configurando Arduino IDE

El Arduino IDE por defecto NO viene preparado para trabajar con el chip ESP8266. Para hacerlo compatible hemos de descargar e instalar unas librerías que contienen todas las definiciones para que el compilador sea capaz de generar un codigo máquina que el ESP8266 entienda. A continuación guiaremos paso a paso el proceso de instalación de dichas librerias.

1.1. Añadir el repositorio

Para que Arduino sepa de donde tiene que descargar las definiciones de la nueva tarjeta que vamos a cargar, hemos de añadir primeramente el repositorio del ESP8266.

  • Vamos a Archivos -> Preferencias
  • En Gestor de URLs Adicionales de Tarjetas añadimos:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Le damos a Ok para cerrar las Preferencias y guardar la configuración.

1.2. Añadir la placa

A continuación debemos añadir la placa a la lista de Arduino. Esto hará que se descarguen del repositorio todos los archivos necesarios para que Arduino sepa como compilar sketches para el ESP8266. Esto se hace desde el Gestor de Placas.

  • Entramos en Herramientas -> Placa -> Gestor de Placas
  • Buscamos "esp8266" en la barra de busquedas
  • Instalamos la última versión esp8266 by ESP8266 Community (v.2.3.0)

Esperamos que se descarguen e instalen las definiciones, puede tardar bastante. Cuando finalice debe poner "INSTALLED" como se muestra en la imagen.

2. ¡Hola Mundo!

Una vez tengamos la placa instalada, vamos a cargar el famoso Blink a modo de Hola Mundo para ver si todo está funcionando correctamente y somos capaces de cargar un sketch en el ESP8266.

El Blink usa la función void delay(int ms) para generar un retardo que es usado para hacer parpadear un LED. La NodeMCU lleva un LED interno conectado al pin D0 (GPIO16).

  • El sketch que cargaremos lo podemos encontrar en Archivos -> Ejemplos -> ESP8266 -> Blink
/*
  ESP8266 Blink by Simon Peter
  Blink the blue LED on the ESP-01 module
  This example code is in the public domain
  
  The blue LED on the ESP-01 module is connected to GPIO1 
  (which is also the TXD pin; so we cannot use Serial.print() at the same time)
  
  Note that this sketch uses LED_BUILTIN to find the pin with the internal LED
 */

 void setup() {
   pinMode(LED_BUILTIN, OUTPUT);     // Initialize the LED_BUILTIN pin as an output
 }

 // the loop function runs over and over again forever

 void loop() {
   digitalWrite(LED_BUILTIN, LOW);   // Turn the LED on (Note that LOW is the voltage level
                                     // but actually the LED is on; this is because 
                                     // it is acive low on the ESP-01)
   delay(1000);                      // Wait for a second
   digitalWrite(LED_BUILTIN, HIGH);  // Turn the LED off by making the voltage HIGH
   delay(2000);                      // Wait for two seconds (to demonstrate the active low LED)
 
}

Antes de cargar el sketch debemos decirle al Arduino IDE que debe compilar el codigo para ESP8266, así como la placa donde vamos a subirlo y el puerto COM donde se encuentra conectada.

  • Nos vamos a Herramientas -> Placa y seleccionamos NodeMCU 1.0 (ESP-12E Module).
  • Especificamos el puerto al que está conectado nuestra placa. Mirar Administrador de Dispositivos en Windows.
  • El resto de configuraciones relacionadas con la velocidad de comunicación serie, frecuencia de la CPU y tamaño de la memoria flash lo dejamos por defecto como vienen.
  • El LED que incorpora la NodeMCU se enciende a nivel bajo (LOW), es decir cuando el pin se pone a 0V.
  • Cargamos el sketch y observamos que todo funcione como debe. El LED azul de la placa se debería encender de manera alterna en intervalos de 1 y 2 segundos.
  • Podemos probar de cambiar el LED_BUILTIN por el pin 13 y conectar un LED al pin D7. Adjunto una imagen con el mapeo correspondiente de los pines GPIO del ESP8266 en la placa NodeMCU.