Try   HackMD

T.2.3.2 Encendido y apagado de LEDs usando el ESP32

En estos talleres se cubrirán los aspectos relacionados al uso de las interfaces del microcontrolador ESP32 v4 y su uso mediante el lenguaje MicroPython. En particular, se describe los aspectos relacionados al area de trabajo (protoboard y sus conexiones), seguidamente se realizan dos talleres usando LEDs, el primero es el encendido básico de un LED y el segundo es la simulación de un semáforo de transito usando LEDs. Finalmente se plantea el desarrollo de una actividad usando un pulsador.

Escenarios de trabajo

El taller a realizar usa los siguientes dispositivos y materiales:

  1. ESP32 DevKitc v4
  2. Protoboard
  3. Díodo led
  4. Resitencia
  5. Cables de líneas macho macho.

Como se ha indicado en clases el protoboard será nuestro espacio de conexión por lo que se recomienda que todo los dispositivos reposen en la misma. Además, es importante tener en cuenta el diagrama técnico o de puertos de la placa a usar. En la figura siguiente se muestra el diagrama de la placa ESP32 v4

Diagrama ESP32 v4

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Conexión placa - protoboard

El microcontrolador que se va a usar para nuestras pruebas tiene una dimensión un poco mayor a las placas tradicionales por lo que al conectar al protoboard conectaremos todos los pines de la fila "a" y los pines de la fila "i". En consecuencia, esto nos quedaría solo espacio para trabajar con todos los pines disponibles en la fila "j". En la figura siguiente se muestra lo indicado:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Es decir que si observamos la figura anterior y el esquema PINOUT sólo se tendrá disponibles los siguientes pines ver figura:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Como se observa de este lado tendríamos alimientación 3.3v y de 5v . También, se tiene los GPIO que se muestran en la figura anterior y la conexión a tierra. Cabe indicar qué, en estos talleres se usará la alimentación de voltaje de 3.3v.

Finalmente, se procede a realizar las conexiones de alimentación y tierra del microcontrolador al protoboard. En la figura siguiente se observa la alimentación del pin 6 (protoboard) GND y del pin 19 (protoboard) que corresponde a 3.3v. Adicionalmente, se observa los cables de conexión para la parte inferior del protoboard. Esto permite tener disponibles salidas positivas y negativas en sus extremos.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Encendido y apagado del LED

A continuación, se experimentará con la puesta en marcha de un LED que esté parpadeando cada cierto segundo. Al hacerlo, se aprenderá a controlar el estado de un GPIO en el ESP32.

Este ejemplo contiene un LED conectado en serie y una resistencia de 200 ohmios. Puede utilizar cualquier valor de resistencia entre 200 a 500 ohmios, aunque sin resistencia el LED se puede iluminar pero no es lo recomendado .

Esquema de conexión

Conecte el ánodo del LED (lado más largo) a uno de los GPIO disponibles en el ESP32 y el cátodo directamente a la resistencia. La resistencia directamente a tierra. El esquema de conexión se observa a continuación:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Se ha conectado el LED a GPIO32, aunque se podría haber conectado cualquiera de los otros pines. Existen excepciones ya descritas en clases. Especificamente, en esta versión del microcontrolador los GPIO 34, 35, 36, 39 solo se pueden usar como entradas. Por lo tanto, no podemos utilizar ninguno de ellos para activar el LED. Sin embargo, se pueden usar para otras cosas.

Vista con el protoboard

En la figura siguiente se muestra el esquema de conexiones propuesto, más el cable que conecta al LED. Se observa el cable de color naranja que sale desde el GPIO32 (PIN 13) al ánodo del LED.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Evaluación del programa

Abra el IDE de desarrollo Thonny y, una vez adentro conectese al puerto respectivo. Si tiene alguna duda revise el taller de instalación de Thonny. Copie el código que se muestra a continuación y proceda a grabarlo dentro del computador. Para este propósito se le sugiere que cree una carpeta el autor le sugiere un nombre como "MicroExample" y luego grabe el archivo como ejemplo-led.py.

import machine import time #time.sleep(1) # sleep for 1 second #time.sleep_ms(500) # sleep for 500 milliseconds #time.sleep_us(10) # sleep for 10 microseconds led = machine.Pin(32, machine.Pin.OUT) while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1)

En la imagen siguiente se muestra la estructura del directorio y el programa una vez que ha sido almacenado en el computador.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

En el código:

  • El objeto Pin se utiliza para controlar los pines de E/S (también conocido como GPIO - entrada/salida de propósito general). Los objetos Pin se asocian comúnmente con un Pin físico que puede conducir un voltaje de salida y voltajes de entrada (lectura). La clase Pin tiene métodos para establecer el modo del Pin (IN, OUT, etc.) y métodos para obtener y establecer el nivel lógico digital. Para el control analógico de un pin, consulte la clase ADC.

  • Un objeto Pin se construye utilizando un identificador que especifica de forma inequívoca un determinado pin de E/S. Las formas permitidas del identificador y el Pin físico al que se asigna el identificador son específicas del puerto. Las posibilidades para el identificador son un número entero, una cadena o una tupla con puerto y número de Pin.

Más detalles de los métodos del objeto Pin se puede consultar en Guía oficial de MicroPython.

Una vez, grabado el programa ejecútelo y compruebe su comportamiento. Además, verífique que los estados del led enciende y se apaga cada cierto tiempo de espera. En particular, el código espera 2 segundos para cambiar de estado. También, en sus evaluaciones, presione los botones que tiene el microcontrolador. Verifique su comportamiento.

Ejecutar programa desde el microcontrolador

MicroPython en su sistema de ficheros presenta dos archivos que son importantes para la ejecución de los códigos en el microcontrolador estos son: boot.py y main.py

  • boot.py: este script se ejecuta cuando se inicia el microcontrolador. Establece hasta varias opciones de configuración para el ESP32.
  • main.py: este es el script principal que contendrá su programa Python. Se ejecuta después de boot.py.

En ese sentido Thonny tiene una caraterísticas que permite observar los archivos que se encuentran en el sistema de archivos del dispositivo (microcontrolador). En consencuencia, se puede escribir directamente al microcontrolador.

Para este propósito:

  1. Haga click en el archivo ´boot.py´ y proceda a escribir el siguiente código:
import machine machine.main('main.py')

Lo que se está indicando es que una vez concluya el archivo de inicio (boot) ejecute el programa principal.

  1. Cree un nuevo archivo con el nombre main.py y guardelo en el dispositivo.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

  1. Edite el archivo main.py y sobre escriba el código con el contenido de ejemplo-led.py. Guarde y presione el botón reset del microcontrolador.

También, pruebe desconectando y conectando el USB del microcontrolador. Observe lo ocurrido.

Creación de un semáforo utilizando Led RGB de tres colores

En está práctica se propone afianzar los conocimientos acerca de las interfaces GPIOs de nuestro controlador. Para este propósito se facilita un código para que posteriormente el estudiante realice las respectivas conexiones y que el semáforo de tránsito entre en funcinamiento.

El módulo LED RGB está hecho de un enchufe a todo color respectivamente (Red, Gree, Blue). El voltaje de entrada PWM de tres pines se puede ajustar en la fuerza de tres colores primarios como son (rojo/azul/verde) para lograr el efecto de mezcla a otros colores. En la figura siguiente se muestra el LED a usar para lograr la práctica.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

En particular, se ha propuesto un semáforo con una singularidad en donde se ha reemplazado el color amarillo por el color azul. Esto se debe a que el dispositivo no provee de dicho color. A continuación algunas consideraciones del semáforo de tránsito propuesto:

  • Inicia con el color verde y dura 30 segundos en dicho estado. Permite la circulación.
  • El color azul es el color de alerta y dura 5 segundos para cambiar de estado.
  • El color rojo es el color de stop y dura 20 segundos para retornar al estado de circulación.

Código propuesto

Copie el siguiente código y cree un nuevo programa, posteriormente guardelo con el nombre ejemplo-semaforo.py .

import machine import time ledBlue = machine.Pin(25, machine.Pin.OUT) #ALERTA 5 SEGUNDOS (AMARILLO) ledGreen = machine.Pin(26, machine.Pin.OUT) #SE PUEDE AVANZAR 30 SEGUNDOS ledRed = machine.Pin(27, machine.Pin.OUT) #PARRAR 20 SEGUNDOS while True: try: ledGreen.value(1) print("Puede circular :) ") time.sleep(30) ledGreen.value(0) ledBlue.value(1) #Funciones amarilla print("Alerta disminuya la velocidad y frene !") time.sleep(5) ledBlue.value(0) ledRed.value(1) print("Pare la marcha !") time.sleep(20) ledRed.value(0) except KeyboardInterrupt: print ("Saliendo del programa ") break print("fin del programa")

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Tarea: Se solicita que realice lo siguiente:

  1. Use el dispositivo de entrada (pulsador) y mediante dicho mecanismo permita que cambie el estado del led.