Implementación de sensores

  • Este proyecto fue realizado como laboratorio #6 en la clase de Sistemas Digitales Programables en la carrera de Mecatrónica Industrial. El propósito principal de esta practica fue afianzar el conocimiento acerca de la implementación de sensores en el ámbito industrial.
  • Este proyecto consiste en la implementación de tres sensores para la medida de Temperatura, Humedad y Distancia. En este caso se utilizaron SHT-30 (Humedad) , HC-SR04 (Distancia), Tersmistor (Temperatura)
  • En esta documentación encontraras una breve recopilación de resultados obtenidos, ademas del código implementado Arduino y Processing para la medida correcta de los sensores SHT-30 (Humedad)💧, HC-SR04 (Distancia)📏, Termistor (NTC 203)🌡️
  • El control del sistema se implementa bajo la creación de una pequeña pagina web por medio de Arduino y una placa ESP32, esta pagina es creada basada en la IP de la red a la cual se conecta la placa, la cual puede ser previamente configurada, por medio de la cual podremos acceder a la red y poder controlar el funcionamiento de nuestra aplicación.
  • También cuenta con una interfaz en Processing, donde se mostraran las medidas de una manera mas gráfica, contando con barras e indicadores que permitirán una mejor visualización y entendimiento de medidas en tiempo real.
  • ⚠️ Importancia:

    Los sensores presentan un papel fundamental en la industria debido a su capacidad para recopilar datos precisos y en tiempo real con respecto a un proceso. Su importancia radica en que permiten optimizar sistemas, monitoreo, implementar estrategias de mantenimiento preventivo, mejorar calidad del proceso, etc.

Componentes

ESP32

El ESP32 es un microcontrolador de bajo costo y alto rendimiento que ha ganado una gran popularidad en la comunidad de desarrollo de hardware y la Internet de las cosas (IoT). Fabricado por Espressif Systems, el ESP32 ofrece una amplia gama de características y funcionalidades que lo hacen ideal para una variedad de aplicaciones, desde proyectos domésticos hasta aplicaciones industriales. Una de las características más destacadas del ESP32 es su potente procesador de doble núcleo, que permite ejecutar múltiples tareas simultáneamente con facilidad. Esto lo convierte en una excelente opción para proyectos que requieren procesamiento intensivo, como la transmisión de datos en tiempo real, el procesamiento de señales y la computación en la nube. Además de su potente procesador, el ESP32 viene equipado con una variedad de periféricos y opciones de conectividad, incluyendo Wi-Fi y Bluetooth integrados. Esto hace que sea fácil conectar el ESP32 a redes inalámbricas y dispositivos externos, lo que lo convierte en una opción popular para aplicaciones IoT que requieren comunicación inalámbrica.

Hc-sr04

El sensor HC-SR04 es un popular y económico dispositivo de ultrasonido utilizado para medir distancias en una variedad de aplicaciones. Este sensor consta de un transmisor ultrasónico y un receptor, que trabajan en conjunto para enviar y recibir pulsos de ultrasonido respectivamente. La operación del HC-SR04 es relativamente simple: el transmisor emite un pulso ultrasónico de corta duración, que se propaga en el aire hasta encontrar un objeto. El pulso reflejado por el objeto es captado por el receptor. Midiendo el tiempo que tarda en viajar ida y vuelta el pulso ultrasónico, el sensor puede calcular la distancia entre el sensor y el objeto.

SHT-30

El SHT-30 es un sensor de temperatura y humedad de alta precisión fabricado por Sensirion. Es un dispositivo compacto y versátil que proporciona mediciones precisas y confiables de la temperatura y la humedad relativa del aire. Este sensor utiliza tecnología CMOSens® de Sensirion, que combina un sensor de humedad y un termistor de platino para lograr mediciones precisas y estables en una amplia gama de condiciones ambientales. El SHT-30 es conocido por su alta precisión y estabilidad a largo plazo, así como por su bajo consumo de energía y su respuesta rápida. Esto lo hace adecuado para una variedad de aplicaciones, incluyendo sistemas de control ambiental, dispositivos portátiles, equipos meteorológicos, y sistemas de monitoreo y control de procesos industriales.

Termistor

El termistor 203 de 20k es un tipo específico de termistor utilizado para medir la temperatura en una amplia variedad de aplicaciones. Como su nombre indica, tiene una resistencia nominal de 20 kilo-ohmios a una temperatura de referencia específica, generalmente 25°C.Este termistor pertenece a la categoría de termistores de coeficiente de temperatura negativo (NTC, por sus siglas en inglés), lo que significa que su resistencia disminuye a medida que aumenta la temperatura. Esta característica permite que el termistor 203 de 20k sea utilizado como un sensor de temperatura sensible y preciso.El termistor 203 de 20k es adecuado para aplicaciones que requieren mediciones de temperatura en un rango amplio, pero su respuesta es particularmente precisa en un rango más estrecho alrededor de la temperatura de referencia. Se utiliza en una variedad de campos, como sistemas de climatización, sistemas de refrigeración y calefacción, dispositivos médicos, electrónica de consumo y automotriz, entre otros.

Instalación

Para la instalación puedes clonarlo mediante git clone https://github.com/Deyverson1/SHT-30-Humidity-HC-SR04-Distance-Termistor-Temperatura.git o puedes descargar el .ZIP en el siguiente link

Una vez clonado tendremos una carpeta llamada SHT-30-Humidity-HC-SR04-Distance-Termistor-Temperatura En esta carpeta encontraras 4 archivos, entre ellos dos principales, los cuales son Lab6Arduino y Lab6Processing.

Lab6Arduino: En esta carpeta encontraremos todo el código de Arduino necesario para el funcionamiento de los sensores, desde definiciones de variables hasta el entorno de la pagina web.

Lab6Processing: Aquí podremos encontrar todo el código de la interfaz gráfica que sera presentada en Processing, a la cual le llegaran los datos registrados desde el ESP32 .

⚠️ Conexiones:

HC-SR04
Extracted from HC-SR04 GND – Alimentación negativa ECHO – Pin para mandar la señal ultrasónica TRIG – Pin para recibir el rebote de la señal ultrasónica VCC – Alimentación positiva
SHT-30
Extracted from SHT-30 GND – Ground SDA – I2C data SCL – I2C clock VCC – Module power supply –2.4 V to 5 V
Termistor
Extracted from Termistor Resistencia – Igual al valor del Termistor

❗ Nota

Para mas información acerca de cada conexión click sobre la imagen respectiva.

Estructura

//Definición de librerías y pines

#include <Wire.h>
#include <SHT31.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#define Led1 17
#define OK 16

//Inicio configuración de Wi-fi

WiFiMulti wifiMulti;
WiFiServer Servidor(80); //puerto de red
SHT31 sht; //inicio sensor

//Configuración del Termistor

const double voltageReference = 3.3; //Voltaje de alimentación
const double R1 = 10000.0; //ohms valor del termistor
const double R2 = 10000.0; //Valor de las resistencias en serie
const double betaCoefficient = -4013.0; //Coeficiente beta ntc termistor
bool lecturasActivas = false;
double steinhart;

//Void Setup

Se inicia la comunicación serial con una velocidad de 9600 baudios, igual que la del SHT-30 a través del protocolo I2C usando la biblioteca Wire.h, se configura los pines para el HC-SR04, el pinTrigger como salida para enviar señales de activación y el pinEcho como entrada para recibir la señal, por ultimo se configura la conexión wifi y se la inicio al servidor web.

//Bucle Loop()

En el bucle loop(), se verifica si las lecturas están activas. Si es así, se realizan las siguientes acciones: primero, se lee el valor analógico del termistor y se calcula la temperatura utilizando la fórmula de Steinhart-Hart. Luego, se activa el sensor de ultrasonido HC-SR04 para medir la distancia. Los valores de temperatura, humedad y distancia se imprimen a través de la comunicación serial para la depuración. Después, se espera un segundo antes de repetir el proceso. Mientras tanto, el ESP32 verifica si hay solicitudes entrantes de clientes conectados al servidor web. Si hay una solicitud, se procesa para determinar si es una solicitud de encendido o apagado de un dispositivo, y se responde en consecuencia.

//Función Verificar()

La función Verificar() procesa los mensajes recibidos desde un cliente web. Si el mensaje indica encender un dispositivo ("GET /on1"), activa la señal correspondiente y marca el estado como "Encendido". Si el mensaje es para apagar un dispositivo ("GET /off1"), desactiva la señal y restablece las lecturas de sensores. Esta función facilita el control remoto de dispositivos a través de solicitudes web.

//Función Response()

La función Responder() se encarga de enviar la respuesta a un cliente web que ha realizado una solicitud. Primero, envía las cabeceras HTTP para indicar que la solicitud fue exitosa. Luego, envía el contenido HTML que representa un panel de control web. Este panel incluye botones para iniciar y detener acciones, así como información sobre la temperatura, humedad y distancia. Además, si las lecturas están activas, la página se recarga automáticamente cada segundo para actualizar los valores mostrados. Esta función permite la visualización y control remoto de dispositivos a través de una interfaz web.

Problemas

Problemas con las medidas del termistor: En algunos casos se soluciona cambiando de pin. La resistencia utilizada debe ser igual a la del termistor Problemas con las medidas del HC-SR04 En algunos casos se presentan poblemas en el voltaje, en caso de tener todas las conexiones a 3.3v probar con 5v para el HC-SR04

Referencias