Tarea 6%3A Interrupciones y MQTT - SilviaFO/Maquinas-Digitales GitHub Wiki

Interrupciones

  1. Video del monitor serie mostrando el conteo de veces que se ha presionado el botón, usando el programa "IntButton". Se tiene que ver que se está presionando el botón.
video_2023-03-18_14-50-07.mp4
  1. ¿Qué ventaja tienen las interrupciones contra el polling? ¿Por qué es más adecuado usarlas para leer un botón?

Las interrupciones dejan en pausa los procesos que se estan haciendo hasta acabar, para despues seguir con lo que ya estaban. Mientras que el polling sigue el programa una y otra vez continuamente checando que no haya cambios y cuando detecta uno lo hace y regresa. En el caso de un boton que manda cambios al programa, las interrupciones serian un metodo más rapido de hacer este cambio pues puede que cunado en el polling se revise todo, no se haya oprimido el boton y tarde en verlo de nuevo siguiendo todo el proceso.

  1. Explicar qué es el rebote del botón (bouncig) y explicar sus técnicas de mitigación: Por software y por hardware.

El bouncing es cuand un boton, al ser mecanico, tiene fluctuaciones y no sube de manera uniforme, sino que oscila hasta establecerse. Por un lado, una de sus tecnicas de mitigacion es por software y hace referencia a que, en el mismo programa, cambias algo para que no tome en cuenta estas oscilaciones. Por ejemplo, puede ser desde un delay(), hasta medir la cantidad de tiempo que ha pasado desde una medicion a otra y saltarnos ese intervalo con millis().

Por el otro lado tenemos la mitigacion por hardware, que se refiere a que conectamos dispositivos externos que ayuden a estabilizarso. Por ejemplo, podemos tener un capacitor que actue como un filtro pasa altas o pasa bajas

  1. ¿Cuál es la duración máxima default de una función que se invoca por interrupción en ESP32? ¿Se puede usar un Serial.println() dentro de un ISR?

Si esta entre los $230 ms$, la ESP32 ignorara la interrupción e inmediantamente ira atras a seguir con lo que ya hacia y no se puede usar porque al requerir que sean acciones muy rapidas, Serial.pritnln() no pertenece a ISR

Fuentes: https://lastminuteengineers.com/handling-esp32-gpio-interrupts-tutorial/#:~:text=If%20it%20is%20within%20250ms,to%20what%20it%20was%20doing.

  1. Push del programa "IntButton" image

MQTT

  1. Captura con las pruebas de alcance del endpoint del servidor MQTT (Broker MQTT) de Amazon y explica cuál es el propósito de cada una.Las pruebas se hacen desde la terminal del sistema operativo:
  • ping: nos sirve para que el servidor nos de una direccion IP image

  • tracert(Windows): nos dice cuales son los servidores y routers que hay entre mi consola y ese servidor image

  • telnet: te permite conocer el puerto del servidor image

  1. Captura del objeto Axolote_{tu_nombre} en la consola de administración de IoT Core. image

  2. Captura de la terminal serie donde se muestre que el ESP envía lecturas al servidor MQTT. image

  3. Captura del cliente de prueba de IoT Core leyendo los mensajes que llegan al servidor MQTT. image

  4. Video que muestre que se envía un mensaje desde el cliente de prueba hacia el tópico al que está suscrito el ESP. En la terminal serial debe verse que el ESP recibe el mensaje y lo despliega. https://user-images.githubusercontent.com/76855650/226152805-89385124-7648-4908-b6f2-b33b0fcd0672.MOV

  5. Push con el programa "aws_mqtt". image

⚠️ **GitHub.com Fallback** ⚠️