EPS8266

ESP8266 es un CHIP altamente integrado fabricado por la empresa china Espressif Systems, diseñado para las necesidades de un nuevo mundo conectado. Ofrece una solución de red Wi-Fi completa e independiente, lo que le permite alojar la aplicación o descargar todas las funciones de red Wi-Fi desde otro procesador de aplicaciones. ESP8266 tiene potentes capacidades de procesamiento y almacenamiento a bordo que le permiten integrarse con sensores y otros dispositivos específicos de la aplicación a través de sus GPIO con un desarrollo mínimo inicial y carga mínima durante el tiempo de ejecución.

Su alto grado de integración en chip permite un circuito externo mínimo, y toda la solución, incluido el módulo frontal, está diseñada para ocupar un área mínima de PCB.

1. ESP8266

Es un SoC (Sytem on a Chip), que tiene dentro un uC (Tensilica), modulo WiFi de 2.4 GHz (ESP-12 o ESP-12E), RAM (50 kB), una entrada analógico de 10 bits (ADC) y 17 pines GPIO de propósitos general.

Características ESP8266
ParámetroDescripción
uCTensilica L106 80 MHz de 32 bits
Modo Flash40 MHz
Memoria Flash512 K
Velocidad115200

2. ESP-01

Este modulo proporciona WiFi al Arduino. Tiene varios inconvenientes el principal es que trabaja con 3V3 lo que hace difícil la conexión. Antes había que usar comando AT para programarlo (Hayes), hoy gracias a la comunidad comparte el mismo IDE. Hoy se puede usar de manera autónoma, como si fuera un Arduino pero con algunas limitaciones. Lo primero es cargar un boceto, lo que reemplaza el firmware original que trabaja con comando AT.

Pines ESP-12
PinNombreDescripción
1GNDToma de tierra
2GPIO2Tiene Pull-up
3GPIO0Tiene Pull-up
4Rx(I2C) También GPIO3
5Tx(I2C) También GPIO1
6CH_PDLOW = apaga
7ResetLOW = resetea
8Vcc3V3, 200 mA

Ok entonces solo tenemos 4 pines digitales, no tenemos pines analógicos. Soporta comunicación I2C (Rx y Tx). No podrás alimentarlo desde Arduino porque 3V3 solo da 50 mA y EPS-01 requiere 200 mA. Una opción es usar un adaptador USB-Serie pero cuidado algunos dan apenas 120 mA. Existen dos modos de programarlo con un adaptador USB y con un Arduino UNO.

Arduino entiendo de manera automática que le queremos pasar un boceto, pero ESP-01 no, es manual. A través de GPIO0 (3) y GPIO2 (2) se puede poner en modo UART o Flash. El modo UART se usa para programación con GPIO0 = LOW, GPIO2 = HIGH mientras: encendemos (CH_PD = HIGH) o resetamos (Reset = LOW). El modo Flash se usa para ejecución GPIO0 = LOW, GPIO2 = HIGH, CH_PD = HIGH y Reset = HIGH. Podemos usar un Arduino como pasarela teniendo cuidado de poner divisores de tensión para adaptar los 5V de Arduino a 3V3 del ESP-01.

Pines ESP-12
Pin
ESP-01
Nombrepin
Arduino
5Tx directoTx (pin D1)
4Rx al medio de divisorRx (pin D0) al divisor
2GPIO2Pulsador a GND
7ResetPulsador a GND
6CH_PD10K a GND
3GPIO0Libre
1GNDToma de tierra
8Vcc3V3, 200 mA

Pin RESET de Arduino UNO a tierra, así se convierte en pasarela. Te recomiendo probar con el ejemplo ESP8266WebServer - HelloServer en ingresa los valores SSID y PASSWORD. Abre el monitor serie en 115200 y veras la IP asignada. No olvides regresar a modo FLASH.

Si usas un modulo USB fíjate que tenga los modos TTL (5V) y FTDI (3V3). Bien el lado USB va directo a la PC y el otro a los pines del ESP-01.

Fuente: Programacionfacil.com.

13 soles en Lima.

3. NodeMCU

NodeMCU integra el ESP8266 con un modulo WiFi (ESP-12E). Este módulo tiene, además del microprocesador (Tensilica), una antena PCB, un LED conectado al GPIO2 y una memoria flash de 16 Mbit (= 4 MB). Es un proyecto de código abierto, el firmware y el diseño hardware esta disponible en GitHub

Cuando fue presentada, no existía la integración de ESP8266 con el entorno de IDE de Arduino. No usaba un lenguaje compilado sino uno interpretado llamado LUA. Como todas las placas que usan ESP8266, se les puede cargar cualquier firmware. Puede usarse desde el propio de NodeMCU con lenguaje LUA, a MicroPython. También se puede usar como una placa de Arduino, donde nosotros hacemos el firmware desde cero.

Características
Pines digitales13 (D0~D12)
Pines analógicos1 (A0) de 10 bits
Serie Rx (D9) y Tx (D10)
Sd2 (D11) y SD3 (D12)
3V33V3 que a su vez es alimentación.
5V5V proviene del USB
GNDTierra
LED1D4 y pertenece al ESP-12E
LED2D0 es de la propia placa, parpadea durante la carga de un programa
RSTReset, reinicia la placa pero no borra código.
FLASHDejar estado de ejecución y pasar a estado de recibir código.

El EPS12 se alimenta con 3V3, pero NodeMCU incluye un regulador de tensión, lo que nos permite alimentarlo por USB desde 5V. Tiene un consumo de 8 mA. Tenemos 11 pines de entrada/salida digital. Pero no te recomiendo usar los pines 6~11 porque están conectados a la memoria flash. Tiene dos botones: RST (reset) y FLASH, que permite activar el modo de carga de firmware. Si usamos el IDE Arduino no son necesarios. El puerto serie esta en pin 1 (Rx) y pin 3 (Tx), están protegidos con resistencias de 470 ohms. El ESP8266 también tiene un puerto análogo (A0).

Pines de EPS8266
Pines NodeMCU
NodeMCUNombreArduino
A0ADC
GTierra 
VU
S3Digital 10
S2Digital 11
S1
SC
SO
SK
GTierra 
3V3V3 
EN
RST
GTierra 
VINEntrada (USB=5V) 
D0Digital 0 (LED)16
D1Digital 15
D2Digital 24
D3Digital 30
D4Digital 4 (LED ESP-12E)2
3V3V3 
GTierra 
D5Digital 514
D6Digital 612
D7Digital 713
D8Digital 815
RXDigital 9
TXDigital 10
GTierra 
3V3V3 

Tener en cuenta que para referirse al pin digital 0 (D0) de EPS8266 hay que hacer referencia a 16 (GPIO-16) en Arduino.

pinMode(D2, OUTPUT);
digitalWrite(D2,HIGH);
//Esto es lo mismo en GPIO
pinMode(4, OUTPUT);
digitalWrite(4,HIGH);

Para hacer parpadear el LED interno del modulo EPS-12E (D4 = GPIO-2)

void setup() {
   pinMode(D2, OUTPUT);
}
 
void loop() {
   //El LED tiene una resistencia pull-up, por eso se enciende con LOW
   digitalWrite(D2, LOW);
   delay(1000); //Esperar un segundo
   //Apagar el LED
   digitalWrite(D2, HIGH);
   delay(1000); //Esperar un segundo
}

Para hacer prender el LED interno con botón RESET

#define LED_BUILTIN 2
#define BUTTON_BUILTIN 0 
 
void setup() { 
   pinMode(2, OUTPUT);
   pinMode(0, INPUT);
} 
 
void loop() {
   int estado = digitalRead(0); 
   digitalWrite(2, estado); 
}

Quizás una de las cosas mas interesantes del NodeMCU es que puede conectarse al WiFi.

WiFi.mode(WIFI_STA); //Modo cliente WiFi
WiFi.begin(ssid, password);

25 soles en Lima.

Programarfacil.com

3.1 Cliente Web

Una manera muy fácil de transferir datos desde NodeMCU a MySQL por ejemplo es usar un cliente web, que se conecta a una WiFi y puede lanzar una cadena de conexión del tipo http://192.168.1.100/abc.php?dato='12:28:36.123' que luego es procesado por una pagina justamente llamada abc.php que es ubicada en el servidor loca identificado con el IP 192.168.1.100 que tiene instalado XAMPP por ejemplo y captura el par nombre=valor enviado como parámetro.

#include <ESP8266WiFi.h>
#include <NTPClient.h>

//WiFi
const char *ssid     = "_SSID_";
const char *password = "_CLAVE_";

void setup(){
   Serial.begin(115200);
   WiFi.begin(ssid, password);
   Serial.println("");
   Serial.print("WiFi");
   while (WiFi.status() != WL_CONNECTED) {
      delay(1000);
      Serial.print(".");
   }
   Serial.println("");
   Serial.print("IP: ");
   Serial.println(WiFi.localIP());
}

void loop() {
   //Confirma WiFi
   if (WiFi.status() == WL_CONNECTED) {
      HTTPClient http;
      //Define donde conecta y lo que envia
      string x = "http://192.168.1.100/abc.php?dato=";
		string data = "13";
      x += data;
      http.begin(x);

      int httpCode = http.GET();

      //httpCode sera negativo si hay error
      if (httpCode > 0) {
         if (httpCode == HTTP_CODE_OK){
            String res = http.getString();
            Serial.println(res);
         }
      }else{
         Serial.println("Fallo, error");
      }
      http.end();
   }else{
      Serial.println("WiFi no conectado aun...");      
   }
}

4. ESP32

Es el sucesor del ESP8266, de bajo costo, bajo consumo de energía con WiFi, BLE y Ethernet integrados, dos núcleos, mas GPIS, mas pines de lecturas análogas a digitales (ADC), dos pines de salida digital a análoga (DAC). Ademas tiene la posibilidad de usar más sensores de lecturas analógicas sin la necesidad de usar multiplexores.

Características ESP32
ParámetroDescripción
uCTensilica Xtesa LX6 de doble núcleo de 160 o 240 MHz, 32 bits
Modo Flash40 MHz
Memoria Flash16 MB
SRAM520 KB
ROM448 KB
WiFi802.11 b/g/n/e/i
Bluetoothv4.2 BLE
ADC 12 bits18
DAC 8 bits2
SPI4
I2C2
I2S2
UART3
PWM16
Sensores de toque10
Sensor temperatura1
CAN busv2.0
IRRx/Tx

55 soles en Lima.