Informe 2 1 ESP32

´ ORIENTADA INFORME DE PROGRAMACION A OBJETOS Sampedro Nayelli - Viteri Anthony [email protected] - aaviteri3@espe

Views 77 Downloads 1 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

´ ORIENTADA INFORME DE PROGRAMACION A OBJETOS Sampedro Nayelli - Viteri Anthony [email protected] - [email protected]

Resumen—

I.

O BJETIVOS

Instalaci´on del entorno MicroPython y reseteo de la tarjeta ESP-32 Entradas y salidas de la ESP-32 Resoluci´on de ejercicios propuestos Aprender a utilizar el entorno de Upycraft II.

M ATERIALES

PC port´atil Microcontrolador ESP32 Leds Protoboard Resistencias Cables Pulsadores III.

´ M ARCO TE ORICO

Programaci´on Orientada a objetos (POO) La programaci´on orientada a objetos es un tipo de programaci´on donde tenemos que trabajar con clases y a partir de estas crear objetos los cuales tendr´an acciones que nosotros les asignaremos . Esta programaci´on es la m´as cercana a la forma en como nosotros los humanos realizamos una acci´on. Lo bueno de esta programaci´on es que se separa en partes simples y hay la posibilidad de reutilizar c´odigo. Programaci´on orientada a objetos tiene como fin poder imaginar todo lo que tenemos a nuestro alrededor como objeto para as´ı poderlo manipular d´andole ciertos atributos y acciones que este puede realizar, por eso debemos cambiar la forma de pensamiento en programaci´on y ahora pensar en programar con clases objetos, atributos , etc Las principales caracter´ısticas de POO son: Abstracci´on Es la representaci´on de las caracter´ısticas esenciales de un objeto sin incluir antecedentes o detalles irrelevantes. Encapsulaci´on Consiste en agrupar en un ente informaci´on y funcionalidad , con el fin de ocultar la complejidad del c´odigo

Herencia Es el mecanismo para compartir autom´aticamente m´etodos y atributos entre clases y subclases. Polimorfismo Es la caracter´ıstica que permite implementar m´ultiples formas de un mismo m´etodo, dependiendo cada una de ellas de la clase sobre la que se realice la implementaci´on Micropython Micropython es un interprete del Lenguaje de programaci´on Python el cual incluye librerias b´asicas para el funcionamiento de este en microcontroladores y ambientes los cuales sean restringidos. Una de las mayores ventajas es que como utiliza python su redacci´on es mas sencilla por lo que ser´a mas f´acil que otros como por decir arduino el cual esta basado en lenguaje C o C++. Micropython nos permite hacer diversas cosas junto con la ESP32 , como por ejemplo: Controlar pines de las tarjetas Encender LED Lectura digital Generar se˜nales PWM Controlar motores o servomotores Conexiones inal´ambricas Entre muchas cosas m´as.. Algunas desventajas que puede tener micropython es que en grandes c´odigos el tiempo es mayor y que los archivos son un poco m´as pesados que otros que utilizan lenguaje C o C++. uPycraft Upycraft es un IDE orientado para micropython , este IDE permite subir firmware de micropython a microcontroladores como el ESP32. Dispones una gran variedad de ejemplos de y aparte posee una muy buena documentaci´on. Sus caracter´ısticas principales son: Soporta actualizaci´on en l´ınea Soporta tanto el sistema Windows como el sistema Mac Simplificaci´on en el dise˜no, f´acil de usar Admite la actualizaci´on en linea de placas Proporciona soporte t´ecnico en el foro y github IV.

´ P ROCEDIMIENTO Y AN ALISIS

1. Instalaci´on del entorno

a) Realizamos la instalaci´on de python en nuestro sistema operativo. 1.- Nos dirigimos a la pagina oficial de python y descargamos la ultima versi´on.

Figura 6: Entorno de Upycraft

Figura 1: P´agina de python

2. Instalaci´on de MicroPython 1.- Descargamos el micropython para la ESP32

2.- Instalamos el archivo descargado

Figura 7: Descarga de micropython

2.- Abrimos el Upycraft y flasheamos la tarjeta Figura 2: Instalaci´on de python

Figura 8: Resetear la tarjeta con BurnFirmware Figura 3: P´agina de python 3.9

2.- Descargamos e instalamos Upycraft

Figura 4: Descargamos Upycraft

Figura 5: Archivo ejecutable Upycraft

Figura 9: Configuracion para resetear la tarjeta y cargar el archivo de micropython

Figura 10: Confirmaci´on de el formateo

Figura 14: Led de la ESP32 usando el c´odigo para parpadear

Figura 11: Reseteo en Proceso

3. Ejercicio 1 Salidas Se realizo el c´odigo en el entorno de uPyCraft para que el led de la ESP32 parpadee, en donde la funci´on sleep() determinara cuando tiempo se quedara prendido y apagado este led .

An´alisis En el c´odigo declar´aramos el pin 2 para usarlo como salida del LED, finalmete un bucle while para que prenda y apague el led infinitas veces gracias a la clase sleep(). ¿Cual es la funci´on de la clase PIN y de sleep del c´odigo anterior? La clase ”Pin()”se utiliza para configurar GPIO2 como de salida y el ”sleep()”se lo utiliza para que la placa espere el numero de segundos especificados. 4. Ejercicio 2 Implementar un circuito de 2 leds que parpadean al mismo tiempo. Implementar el siguiente circuito:

Figura 12: C´odigo en el uPyCraft para que el Led parpadee en un tiempo de 1s

Figura 13: Led de la ESP32 apagado

Figura 15: Circuito de dos leds que parpadean al mismo tiempo

El c´odigo del circuito es el siguiente:

declaramos un bucle infinito el cual enciendo y apaga los leds en intervalos de 1 segundo. En el circuito de la protoboard conectamos los leds con su resistencia para limitar la corriente y se ve como funciona el circuito 5. Ejercicio 3 Pulsadores como entradas Implementamos el circuito

Figura 16: C´odigo de dos leds que parpadean al mismo tiempo

Implementamos el circuito en la protoboard y los resultados son los siguientes.

Figura 17: Encendido de leds simult´aneamente

Figura 19: Circuito de un LED en el cual se encender´a cada vez que se presione el pulsador

Implementamos el c´odigo para el circuito

Figura 18: Apagado de leds simult´aneamente

An´alisis: En este codigo lo que hacemos es declarar al pin 19 y 23 como salida para nuestros leds, luego

Figura 20: C´odigo en el uPyCraft para que el led se prenda cada vez que se presione el pulsador

Resultados obtenidos al implementar el c´odigo en el microcontrolador ESP32.

Figura 21: Led apagado es decir sin tener presionado el pulsador Figura 23: Circuito ejercicio 4

C´odigo del circuito:

Figura 24: C´odigo para el circuito 4

Figura 22: Led encendido es decir cuando se mantiene presionado el pulsador

An´alisis En el c´odigo declaramos al motor con el pin 2 como entrada y al led con el pin 18 como pin de salida , finalmente con un bucle infinito que tendr´a la variable state que evaluara cada vez que se presione el pulsador con un valor de 0 para cuando no se lo presione y un valor de 1 cuando este presionado, en donde este valor sera evaluado para prender o apagar el led en un tiempo de 0.1s con la clase sleep(). 6. Ejercicio 4 Realizar un codigo para el siguiente circuito

Figura 25: C´odigo para el circuito 4.

Implementaci´on del circuito en la protoboard:

7. Ejercicio 5 Implementar la simulaci´on de dos sem´aforos sincronizados Implementamos el circuito:

Figura 26: Implementaci´on del circuito 4

Figura 28: Circuito de un sem´aforo sincronizado

Figura 27: Implementaci´on del circuito 4

An´alisis: Para este circuito hicimos un codigo el cual se usa los dos pulsadores conectados en pull down el cual me da constantemente un 0 l´ogico, y cuando se pulse me de un 1 l´ogico , el primer pulsador sirve para encender y apagar el led , mientras que el segundo bot´on genera una secuencia en la que el led empieza desde una frecuencia alta y va disminuyendo y luego vuelve a subir su frecuencia y por ultimo se apaga.

Implementamos el c´odigo para el circuito

Figura 30: El rojo indica que paren en una v´ıa y el verde que circule en la otra v´ıa

Figura 31: El rojo indica que paren en una v´ıa y el amarillo como aviso para que dejen de circular en la otra v´ıa

Figura 29: C´odigo en el uPyCraft para sincronizar un sem´aforo

Resultados obtenidos al implementar el c´odigo en el microcontrolador ESP32

Figura 32: El verde indica que circulen en una v´ıa y el rojo que paren en la otra v´ıa

eso suceda el usuario podr´a apagarlo o cambiar de direcci´on. V.

C ONCLUSIONES

Upycraft nos permite desarrollar c´odigos basados en python de una forma sencilla VI.

Figura 33: El amarillo indica un aviso para que dejen de circular en la v´ıa y el rojo que paren en la otra v´ıa

An´alisis En el c´odigo declaramos 6 pines los cuales son: al led rojo un pin de salida 23, al led amarillo un pin de salida 21, al led verde un pin de salida 2,al otro led rojo un pin de salida 14, al otro led amarillo un pin de salida 26 y al otro led verde un pin de salida 25, finalmente prendemos y apagamos los leds dependiendo de la sincronizaci´on que querramos. 8. Ejercicio 6 Elaborar un sem´aforo en cual el usuario pueda estableces el tiempo de duraci´on de cada estado(verde, amarillo y rojo) y que adem´as disponga de pulsadores que permita un inicio, paro y cambio de direcci´on para el funcionamiento La implementaci´on para este circuito en la protoboard es la siguiente:

Figura 34: Circuito ejercicio 6

El codigo el cual Enciende, apaga y cambia de direcci´on es el siguiente: An´alisis: En este codigo lo que hacemos es declarar 3 pines de entrada y tres pines de salida. Los pines de salida ser´an para los leds del sem´aforo, mientras que los leds de entrada sera para leer 3 botones los cuales ser´an de encendido, apagado y cambio de direcci´on. Al iniciar el sem´aforo estar´a apagado hasta que el usuario presiones la tecla de encendido y una vez

R ECOMENDACIONES

Tener en cuenta cuales pines son de salida ya que como el 33, 34 y algunos otros solo son de entrada y al declararlo como salida esto generara un error en el c´odigo. Tener en cuenta que las salidas de la ESP-32 solo son de 3.3 V , distinto a otros microcontroladores como arduino el cual su salida es de 5V Al armar los circuitos hacerlo de manera ordenada y conectar bien el negativo o punto de referencia ya que si no se hace esto puede generar problemas en el circuito R EFERENCIAS [1] Hektor Profe, Primeros pasos PyQt5 y Qt Designer, https://medium.com/@hektorprofe/primeros-pasos-en-pyqt-5-y-qtdesigner-programas-gr´aficos-con-python-6161fba46060 [2] EcuRed, PyQt, https://www.ecured.cu/PyQt [3] Rip Tutoria, Empezando con pyqt, https://riptutorial.com/es/pyqt