Subir a Inicio

Introducción a ESP32: Lolin32 Lite

Vamos a comenzar una serie de entradas sobre el chip ESP32,  y especialmente en una implementación creada por WEMOS denominada "LOLIN32 Lite".

Las placas con el chip ESP32 pueden ser utilizadas con la plataforma Arduino, facilitando de esa manera su programación, y utilizando muchas de sus bibliotecas.

La gran ventaja que tiene la placa Lolin32 Lite es que por un precio muy reducido tenemos un sistema Arduino con Wifi, bluetooth, sensores de contacto,...y con unos componentes optimizados para su uso con batería (con un consumo muy reducido).

Esta placa se puede comprar en AliExpress.






Descripción del Chip ESP32


El ESP32 integra en un único chip: Wi-Fi (2.4 GHz),  Bluetooth 4.2, un procesador Xtensa Dual-Core LX6 con dos núcleos de altas prestaciones (32bits que pueden funcionar a 160 o 240MHz), y un coprocesador de muy bajo consumo (Ultra Low Power ) que permite poner al chip en modo de sueño profundo con un consumo muy bajo.
Expressive suministra un sistema de programamación para este chip denominado ESP-IDF, pero nosotros utilizaremos el entorno Arduino.

El micro Xtensa utiliza uno de los núcleos para gestionar la Wifi y Bluetooth, y el otro para el resto de los procesos.
  • 34 × Entradas/Salidas programables
  • 18 canales ADC de 12-bit
  • 2 × 8-bit DAC
  • 10 × touch sensors (de proximidad capacitivo)
  • Un sensor de temperatura integrado
  • 4 × SPI
  • 2 × I2S
  • 2 × I2C
  • 3 × UART
  • 1 host (SD/eMMC/SDIO)
  • 1 slave (SDIO/SPI)
  • Ethernet MAC interface with dedicated DMA and IEEE 1588 support
  • CAN 2.0
  • IR (Tx/Rx)
  • Motor PWM
  • 16 canales LED PWM
  • Sensor integrado de efecto Hall
Características del Chip ESP32





NOTAS

Cada una de las entradas/Salidas pueden suministrar una intensidad regulable entre 5 y 40mA, y por defecto están configuradas a 20mA. Parece ser que todavía en este parámetro no se puede modificar desde Arduino. (Punto 8 del apéndice A del datasheet).
El consumo de las resistencias Pull-Up y Pull-Down es de ~75uA.

Los pines GPIO 34-39 son sólo de entrada.



Enlaces de interés:
Página Web de ESP32 de Espressiv
ESP32 Technical Reference Manual
ESP32 datasheet
The internet of things with ESP32


Características de Lolin32-Lite





Un documento en varios formatos del patillaje del Lolin32 Lite puedes descargarlo aquí.
 
La placa Lolin32-Lite utiliza el chip  CH340C como convertidor USB-Serial, por lo que si queremos que nuestro ordenador lo reconozca es necesario instalar el correspondiente driver.





Como regulador de tensión, utiliza el chip ME6211-33, con las siguientes características:





Maximum Output Current: 500mA(VIN=5V,VOUT=3.3V)
Dropout Voltage: 100mV @ IOUT=100mA
Operating Voltage Range: 2V~6.0V
Highly Accuracy: ±2%
Low Power Consumption: 50uA(TYP.)
Standby Current: 0.1uA(TYP.)
High Ripple Rejection: 70dB@1KHz(ME6211C33)
Low output noise: 50uVrms
Line Regulation: 0.05%(TYP.)

Las características a destacar de este chip es su bajo consumo tanto en funcionamiento (50uA) como en reposo (0,1uA).
Este chip puede trabajar desde 2v a 6v con una caída de tensión de 0,1v pero como el ESP32 solo puede trabajar entre 2,3v y 3,6v. Por lo que podremos alimentar la placa con una tensión entre 2,4 y 6v.

Es decir si tenemos un cargador de móvil viejo (5v y 500mA) podemos utilizarlo para alimentar el Lolin32.
 Y desde luego si queremos programarlo (además de alimentarlo ya que las salidas USB de nuestro PC suministran normalmente unos 500mA), deberemos tener un cable que permita conectar el PC con la placa. (cable MicroUSB Macho - USB Macho)


La placa también tiene integrado un cargador de baterías Lipo con el chip TP4054, a partir de la tensión de 5v del conector micro-USB.  
El LED2 es de color rojo, y permanece encendido mientras la batería se está cargando, una vez cargada y cuando está funcionando sólo con la alimentación de la batería el LED2 permanece apagado.


Unas baterías que podemos utilizar, son de Litio-Ion del tipo 18650, que son más grandes que las típicas AA, que suelen tener unos 3,6v y pueden tener distintas capacidades. Si utilizamos este tipo de batería, tenemos que utilizar un porta baterías al que deberíamos poner un conector compatible con la placa Lolin32 Lite (PH-2; 2.0mm).



Otras baterías que podemos utilizar son las de litio-polímero, que suelen tener 3,7v y podemos encontrarlas con capacidades de 150mah a 2000mah. Hemos de tener en cuenta que si utilizamos el sistema Wifi o Bluetooth deberíamos utilizar una batería que tenga como mínimo 500mah.





El led integrado típico de todos los Arduino está asociado a la patilla 22:
Y es un led de color azul situado sobre el marcador de la patilla GPIO22.



Enlaces:
Página Web de Wemos
Esquema eléctrico de Lolin32 Lite
Driver para Lolin32 (CH340C) 

Integrar ESP32 en el entorno Arduino
El entorno Arduino no tiene integrado el microprocesador ESP32 por defecto, pero podemos añadirlo fácilmente si realizamos los siguientes pasos (en Windows):

1.- Descargar la última versión del entorno Arduino (Download the Arduino IDE)
2.- Descargar e instalar Git de git-scm.com
3.- Ejecutar "Guit Gui"
4.- Hacer click en "Create New Repository"
 5.- En "Source Location" introducimos : https://github.com/espressiv/arduino-esp32.git 
6.- En "Target Directory" introducimos [ARDUINO_SKETCHBOOK_DIR]/hardware/espressiv/esp32
Donde [ARDUINO_SKETCHBOOK_DIR] es el directorio donde se guardan los sketches de Arduino. Por defecto estará en : C:/Usuarios/NOMBRE_USUARIO/Documentos/Arduino
Por lo que la ruta completa será: C:/Usuarios/NOMBRE_USUARIO/Documentos/Arduino/hardware/espressiv/esp32
En mi caso sería:
7.- Ahora podemos clonar el repositorio haciendo click en "Clone"
8.- Una vez acabado, abre el directorio  C:/Usuarios/NOMBRE_USUARIO/Documentos/Arduino/hardware/espressiv/esp32/tools
y haz doble click sobre el archivo "get.exe"

9.- Cuando "get.exe" acaba, deberías ver los archivos siguientes en el directorio "tols"

10.- Ahora debemos instalar los drivers del Lolin32 que los puedes descargar de aquí.
Descomprimir el archivo Zip y ejecutar el archivo "CH341SER.EXE".


11.- Seleccionamos "CH341SER.INF" y hacemos doble Click en "Install".

12.- Iniciamos El entorno Arduino

13.- Seleccionamos "WEMOS LOLIN32" En "Herramientas > PLACA"
(A día de hoy no existe la opción "WEMOS LOLIN32 LITE" pero funciona perfectamente)



14.- Seleccionamos la puerta serie (en mi caso COM3)



15.- y configuramos su velocidad a 115200
Y ya podemos cargar el ejemplo de blink en nuestra placa Lolin32 Lite!!


 Cómo actualizar el código de Github
Como la implementación del ESP32 en Arduino está todavía en fase de desarrollo, puede ser conveniente que de vez en cuando actualicemos el código de Github, para lo cual realizaremos los siguientes pasos:

1.- Iniciar "Guit Gui", y podremos ver el enlace al repositorio bajo "Open Recent Repository", Hacemos doble click en él. (Si te das cuenta, yo no tengo el repositorio en su lugar por defecto ya que lo he cambiado, no te preocupes, a ti te tendría que salir el lugar que hemos indicado en el paso 6 anterior)
2.- Seleccionamos en el menú "Remote > Fetch from > origin"


3.- Esperamos a que "Git" realice los cambios y cerramos "Git Gui".

4.- Con el administrador de archivos vamos a
C:/Usuarios/NOMBRE_USUARIO/Documentos/Arduino/hardware/espressiv/esp32/tools
y hacemos doble click sobre el archivo "get.exe"


Comprobando que todo funciona

Para ver que hemos hecho todo correctamente, vamos a instalar el sketch blink en la placa Lolin32 Lite

Abrimos el entorno Arduino, y seleccionamos Menu-Archivo-Ejemplos-01 Basics



Si lo instalamos en el Lolin32 parece que hemos hecho algo mal, pero el problema es que hemos elegido la placa Lolin32, en vez de la placa Lolin32 Lite (Hoy por hoy todavía no está disponible en el entorno Arduino).  En el Lolin32 la constante LED_BUILTIN está definido en el GPIO05, mientras que en Lolin32 el LED está conectado a la patilla 22, por lo que si ponemos un led entre GND y la patilla 5 vemos que verdaderamente hemos cargado el sketch blink en la placa.




Si queremos que el programa blink funcione con el led de la placa de Lolin32 Lite, hemos de modificar el sketch para asociar el LED a la Patilla 22: 

________________________________________________________________

/* BLINK modificado
*/

// La función setup sólo se ejecuta una vez cuando aprietas el botón reset o alimentas la placa
void setup() {

  #define  LED_PIN  22                  // define el LED_PIN en GPIO22
  pinMode(LED_PIN, OUTPUT);  // inicializa el pin digital LED_PIN como salida.
}

// La función loop se ejecuta una y otra vez indefinidamente
void loop() {
  digitalWrite(LED_PIN, HIGH);    // Apaga el LED (El led está conectado a 3v3)
  delay(1000);                                  // Espera un segundo
  digitalWrite(LED_PIN, LOW);    // Enciende el LED
  delay(1000);                                 // Espera un segundo
}

______________________________________________________________


Ahora si!!







Notas
Para la realización de este proyecto se han utilizado los programas: ArduinoInkscapeOpenofficeGimpPicasaFritzing
Si encuentras algún fallo, se te ocurre alguna mejora, o simplemente quieres hacer algún comentario, te lo agradeceré: Gracias :-)