Está en la página 1de 7

Guía para T3 examen 3

Temperature and Humidity Sensor & Monitor


1. processTemperatureData()

• Calcula el valor máximo de temperatura (maxTemperature) usando


MyStatistics::getMax.

• Calcula el valor mínimo de temperatura (minTemperature) usando


MyStatistics::getMin.

• Calcula la media de temperatura (temperatureMean) usando


MyStatistics::getMean.

• Calcula la desviación estándar de la temperatura (temperatureStandardDeviation)


usando MyStatistics::getStandardDeviation.

• Calcula el error estándar de la media de la temperatura


(temperatureStandardErrorOfTheMean).

• Estima un valor de temperatura (temperatureEstimatedValue) usando


MyStatistics::getEstimatedValue.

2. processHumidityData()

• Calcula el valor máximo de humedad (maxHumidity) usando


MyStatistics::getMax.

• Calcula el valor mínimo de humedad (minHumidity) usando MyStatistics::getMin.

• Calcula la media de humedad (humidityMean) usando MyStatistics::getMean.

• Calcula la desviación estándar de la humedad (humidityStandardDeviation)


usando MyStatistics::getStandardDeviation.

• Calcula el error estándar de la media de la humedad


(humidityStandardErrorOfTheMean).

• Estima un valor de humedad (humidityEstimatedValue) usando


MyStatistics::getEstimatedValue.

3. showTemperatureInformation()

• Muestra la información de temperatura procesada, incluyendo el máximo, mínimo,


media, desviación estándar, error estándar de la media y el valor estimado.

4. showHumidityInformation()
• Muestra la información de humedad procesada, incluyendo el máximo, mínimo,
media, desviación estándar, error estándar de la media y el valor estimado.

5. setup()

• Inicializa los objetos monitor, esp y dht.

• Muestra un mensaje de inicio en el monitor serial.

• Inicializa el contador de muestras (samplesCounter).

6. loop()

• Lee la temperatura y la humedad del sensor DHT11.

• Almacena los valores leídos en los arrays temperatureValues y humidityValues.

• Procesa los datos de temperatura y humedad cuando se alcanza el número de


muestras especificado.

• Muestra la información de temperatura y humedad procesada.

• Reinicia el contador de muestras o lo incrementa.

• Espera 30 milisegundos antes de la siguiente iteración del bucle.

Project #8: Temperature and Humidity Sensor & TFT display.

1. createMainView()

• Configura la pantalla TFT con un color de fondo específico.

• Configura y muestra etiquetas para la temperatura y la humedad.

• Configura y muestra un campo de texto para la temperatura y la humedad.

• Configura y muestra una etiqueta de espera ("Waiting...").

2. updateTextFields(double temperature, double humidity)

• Actualiza los campos de texto en la pantalla TFT con los valores estimados de
temperatura y humedad.

• Formatea y muestra la temperatura y la humedad en la pantalla TFT.

3. setup()

• Inicializa los objetos monitor, esp, dht, y tft.

• Configura la orientación de la pantalla TFT.

• Asigna los campos de texto y las etiquetas al dispositivo TFT.

• Muestra un mensaje de inicio en el monitor serial.

• Llama a createMainView() para configurar la vista principal en la pantalla TFT.


• Inicializa el contador de muestras (samplesCounter).

4. loop()

• Muestra la etiqueta de espera si es necesario.

• Lee la temperatura y la humedad del sensor DHT11.

• Almacena los valores leídos en los arrays temperatureValues y humidityValues.

• Procesa los datos de temperatura y humedad cuando se alcanza el número de


muestras especificado.

• Muestra los valores estimados de temperatura y humedad en el monitor serial y


en la pantalla TFT.

• Reinicia el contador de muestras o lo incrementa.

• Espera 30 milisegundos antes de la siguiente iteración del bucle.

The AD8232 ECG sensor & Plotter


1. Manejo de la Señal del AD8232

• Lectura de la Señal: La función loop() lee continuamente la señal del sensor


AD8232 a través de ad8232.getSignal(DELAY). Esta señal representa la actividad
eléctrica del corazón medida por el AD8232.

• Detección de Desconexión de Electrodos: Utiliza los pines esp.rx2 y esp.tx2 para


detectar si los electrodos están desconectados. Si alguno de los pines esp.rx2 o
esp.tx2 está en alto, significa que uno de los electrodos se ha desconectado, y el
sistema imprime 'no signal!' en el monitor serial.

2. Procesamiento de la Señal

• Almacenamiento de Lecturas: Las lecturas del sensor se almacenan en el array


readings. Esto permite realizar un procesamiento posterior, como calcular el
promedio.

• Cálculo del Promedio: Una vez que se han recopilado suficientes lecturas (definido
por NUMBER_OF_READINGS), se calcula el promedio de estas lecturas utilizando
MyStatistics::getMean. Este promedio representa una señal más estable y menos
susceptible a ruido o variaciones rápidas.

3. Visualización de Datos

• Uso del Serial Plotter: La función plot() está diseñada para trabajar con el Serial
Plotter de Arduino. Envía una serie de valores separados por comas, que el Serial
Plotter puede interpretar y mostrar en forma de gráfico.
• Parámetros del Gráfico: Los valores enviados incluyen los límites superior e
inferior del gráfico (UPPER_LIMIT y LOWER_LIMIT), el umbral (THRESHOLD), y el
promedio de la señal (signalAverage). Esto ayuda a visualizar dónde se encuentra
la señal en relación con estos parámetros.

4. Indicación Visual con LED

• Uso del LED: El código utiliza un LED (conectado al pin esp.led) para proporcionar
una indicación visual. Si la señal está por debajo del umbral (THRESHOLD), el LED
se enciende, lo que podría interpretarse como la detección de un latido del
corazón.

5. Gestión de Tiempo

• Delay en la Lectura: Hay un pequeño retraso (DELAY) en cada iteración del bucle
loop(). Esto controla la frecuencia de muestreo de la señal del sensor.

The AD8232 ECG sensor & generating a web page


1. handleRoot()

• Esta función se llama cuando se accede a la URL raíz del servidor web (dirección IP
del ESP32). Envía el contenido HTML de la página web al cliente (navegador web)
utilizando server.send().

2. setHtmlContent()

• Configura el contenido HTML de la página web. Establece el título, encabezado, y


agrega líneas de texto y gráficos. También incluye información como BPM (latidos
por minuto) y el intervalo entre latidos.

3. printInformation(int bpm, double beatToBeatInterval)

• Imprime información sobre los latidos por minuto (BPM) y el intervalo entre
latidos en el monitor serial.

4. setup()

• Inicializa el monitor serial, configura los pines para la detección de desconexión de


los electrodos (LO+ y LO-), y establece variables iniciales.

• Conecta el ESP32 a una red WiFi y muestra su dirección IP.

• Configura el contenido HTML de la página web y establece handleRoot para


manejar las solicitudes a la URL raíz.

• Inicia el servidor web.

5. loop()
• Verifica si hay una señal del sensor AD8232. Si los electrodos están desconectados
(LO+ o LO- activos), imprime 'no signal!' en el monitor serial.

• Lee la señal del sensor AD8232 y registra los latidos del corazón.

• Calcula el promedio de las últimas 3 señales del sensor y almacena estos valores
para el gráfico en la página web.

• Si se alcanza el tiempo de medición definido


(MEASUREMENT_TIME_IN_SECONDS), procesa los datos de los latidos del
corazón, actualiza los valores en la página web y reinicia las variables para la
próxima medición.

• Escucha y maneja las solicitudes del servidor web.

1. ad8232.registerHeartBeat(MyEsp32 esp, int sensorSignal, int THRESHOLD)

• Esta función, perteneciente a la clase MyAD8232, se utiliza para registrar un latido


del corazón. Toma la señal del sensor y un umbral (THRESHOLD) como parámetros
y determina si la señal actual representa un latido del corazón.

2. ad8232.processHeartBeatsData(int MEASUREMENT_TIME_IN_SECONDS)

• Procesa los datos de los latidos del corazón recopilados durante el período de
tiempo especificado (MEASUREMENT_TIME_IN_SECONDS). Esta función es
probablemente responsable de calcular métricas como el BPM y el intervalo entre
latidos.

3. ad8232.getBPM()

• Retorna el valor de los latidos por minuto (BPM) calculado por la función
processHeartBeatsData.

4. ad8232.getBeatToBeatInterval()

• Retorna el valor del intervalo entre latidos, también calculado por


processHeartBeatsData.

5. ad8232.resetHeartBeats()

• Reinicia o limpia los datos internos relacionados con los latidos del corazón,
preparando el sistema para una nueva medición.

6. webPage.changeValue(String key, String value)

• Cambia el valor de una métrica específica en la página web. Por ejemplo, actualiza
los valores de BPM y el intervalo entre latidos en la interfaz web.

7. webPage.setGraphValues(int[] sensorValues)
• Establece los valores que se mostrarán en el gráfico de la página web. Esta función
toma un array de valores de sensores y los prepara para su visualización.

8. webPage.addGraph()

• Añade o actualiza el gráfico en la página web con los últimos valores de los
sensores.

Using the flash memory of the ESP32

1. showEntries()

• Esta función muestra la cantidad de entradas totales, usadas y libres en el archivo.


Utiliza métodos de la clase MyRandomAccessFile para obtener esta información y
la imprime en el monitor serial.

2. writing()

• Esta función es responsable de escribir datos en el archivo. En el código, se asigna


un valor entero (dataInt = 1234) y un valor doble (dataDouble = 56.789). Luego,
estos valores se escriben en el archivo en las posiciones especificadas (registro
número 11 para el entero y registro número 66 para el doble) utilizando los
métodos writeInt y writeDouble de la clase MyRandomAccessFile.

3. setup()

• Esta función se ejecuta una vez al inicio. Inicializa el monitor serial y el objeto
ESP32, muestra un mensaje de aplicación, abre el archivo llamado "miArchivo"
para operaciones de escritura y lectura, muestra las entradas del archivo, borra el
archivo (limpia su contenido), muestra nuevamente las entradas para confirmar
que el archivo está vacío, escribe datos en el archivo y finalmente cierra el archivo.

4. loop()

• En este sketch, la función loop no realiza ninguna acción (//nothing). Esto es


común en programas que solo necesitan ejecutar código en el setup y no
requieren una operación continua o repetitiva.

1. showEntries()

• Esta función muestra la cantidad de entradas totales, usadas y libres en el archivo.


Utiliza métodos de la clase MyRandomAccessFile para obtener esta información y
la imprime en el monitor serial.

2. reading()
• Esta función se encarga de leer datos del archivo. Lee un valor entero y un valor
doble de posiciones específicas en el archivo (registro número 11 para el entero y
registro número 66 para el doble) utilizando los métodos readInt y readDouble de
la clase MyRandomAccessFile. Luego, imprime estos valores en el monitor serial.

3. setup()

• Esta función se ejecuta una vez al inicio. Inicializa el monitor serial y el objeto
ESP32, muestra un mensaje de aplicación, abre el archivo llamado "miArchivo"
para operaciones de lectura, muestra las entradas del archivo, lee los datos del
archivo y finalmente cierra el archivo.

4. loop()

• Al igual que en el código anterior, la función loop no realiza ninguna acción


(//nothing). Esto es común en programas que solo necesitan ejecutar código en el
setup y no requieren una operación continua o repetitiva.

Time from Server

1. showTime()

• Esta función imprime la hora actual en el monitor serial. Utiliza las variables hours,
minutes y seconds del objeto myTime de la clase MyTime para obtener la hora
actual.

2. setup()

• Esta función se ejecuta una vez al inicio. Inicializa el monitor serial y el objeto ESP32,
muestra un mensaje de aplicación, se conecta a una red WiFi específica, inicia el
objeto myTime para operaciones de tiempo y establece la diferencia de tiempo con
respecto a Greenwich (en este caso, -6 horas para la Ciudad de México).

3. loop()

• Esta función se ejecuta repetidamente después de setup(). Obtiene la hora actual


del servidor de tiempo utilizando el método obtainTimeFromServer del objeto
myTime, muestra la hora actual utilizando la función showTime y luego espera 5000
milisegundos (5 segundos) antes de repetir el proceso.

También podría gustarte