Herramientas de usuario

Herramientas del sitio


sensor_sht30

Manejo de sensor SHT30 (Temperatura-Humedad)


1. ¿Cómo funciona el sensor SHT30?

El sensor SHT30 permite medir humedad relativa y temperatura en los rangos de 0 a 100% para humedad y de 0 a 80°C para temperatura. Normalmente el sensor tiene una tolerancia de 4.5% en humedad y 0.3°C en temperatura. El sensor se conecta a la Raspberry Pi por medio del protocolo I2 C al igual que el Display de Cristal Liquido (LCD). El sensor funciona con un voltaje de 3.3 Voltios. La apariencia y conexiones de este sensor en el laboratorio remoto SmartLabsUniminuto son los siguientes:

sht30.jpg

Conexiones sensor SHT30→Raspberry Pi


2. Configuración de SHT30 y lectura mediante bloques gráficos

Para trabajar con los bloques gráficos y los el SHT30 hemos creado los siguientes bloques gráficos disponibles en la categoria Raspberry Pi (Sensores):

BloqueDescripción
Permite hacer una petición de lectura de humedad y temperatura para el sensor SHT30. Este bloque debe llamarse siempre que se realice la lectura de los valores del sensor.
Lee los valores del sensor SHT30. Para almacenar los valores se necesita una lista. Este es un tipo de dato en Python que almacena valores de diferente tipo, por ejemplo, variables enteras, flotantes, strings, etc. Para el sensor serán de tipo flotante (númericos).

Crea una lista con tres posiciones o campos. En cada posición se almacenará un valor de temperatura o humedad de la siguiente manera:

Lista (Posición 1): Temperatura °C

Lista (Posición 2): Temperatura °F

Lista (Posición 3): Humedad relativa (0-100%)

Con estos bloques la idea es crear nuestro algoritmo para leer los valores de temperatura y humedad con el sensor SHT30, como se muestra a cotinuación:

Explicación del algoritmo

  1. Se crea una lista con tres campos o posiciones para almacenar las variables de temperatura y humedad.
  2. Se inicia el Display de Cristal Liquido (LCD) con la dirección 0x27 (dirección por defecto).
  3. Creamos un bucle infinito (Continuamente se ejecutará en la Raspberry Pi).
  4. Usamos el bloque petición iniciar la lectura de valores del SHT30.
  5. Asignamos a una variable (tempe) el valor de temperatura. Aquí convertimos el valor númerico retornado en String ya que el LCD solo puede representar texto. Con el bloque “get” obtenemos el valor en la posición deseada, en esta caso la posición 1 que contiene el valor de temperatura.

A continuación se muestra el video de explicación del algoritmo con bloques gráficos:


3. Configuración de SHT30 y lectura mediante código Python

Para trabajar con el sensor SHT30 y con el LCD directamente en Python usaremos las siguientes instrucciones:

Instrucción (Sentencia)Descripción
from RPLCD.i2c import CharLCD
Permite importar el paquete RPLCD en Python para enviar la información al LCD.
PeticionSHT30() #peticion sensor SHT30
Permite hacer una petición al sensor SHT30 para iniciar el sensado de los valores de temperatura y humedad relativa. Este bloque debe llamarse siempre que se desee hacer una lectura al sensor.
LeerSHT30() #Lectura sensor SHT30
Permite leer los valores de temperatura y humedad. Esta función almancena los valores en una lista en Python previamente declarada.
lcd=CharLCD('PCF8574',0x27)
Permite crear el objeto lcd para enviar datos al LCD. La comunicación se hace con el integrado PCF8574 que funciona mediante protocolo I2C y esta direcamente conectado el LCD en cada nodo del laboratorio remoto. Además, esta instrucción necesita una dirección del LCD que por defecto es la 0x27.
lcd.write_string('Hola mundo')
Permite enviar el texto que deseemos al LCD.
lcd.cursor_pos=(1,0)
Posiciona el cursor en la fila y columna seleccionadas para comenzar a escribir. En este ejemplo se posiciona el cursor en la fila (2), columna (1). El primer argumento es fila, el segundo columna pero restado en 1, es decir, la fila 2 del LCD seria '1' como argumento en la función.
lcd.clear()
Borra el contenido del LCD.

Para trabajar en Python usaremos el siguiente código base:

import math
 
from RPLCD.i2c import CharLCD #Libreria para LCD
 
from SHT30lectura import * #Libreria de sensor SHT30
 
import time #Libreria de retrasos
listasensor = None
varsensorl = None
 
listasensor = ['', '', ''] #Lista que contendra los valores retornador por el sensor
#Posicion (0): Temperatura grados, Posicion(1): Temperatura en Farenheit, Posicion(2): Humedad relativa
varsensorl = ''
lcd=CharLCD('PCF8574',0x27) #Iniciar LCD en direccion seleccionada
lcd.clear() #Borrar LCD
while True:
  PeticionSHT30() #peticion sensor SHT30
  listasensor = LeerSHT30() #Lectura sensor SHT30 (temperatura-humedad)
  varsensorl = str((round(listasensor[2]))) #Leer posicion especifica, en esta caso humedad relativa
  lcd.cursor_pos=(0,0) #Posicionar cursor LCD en primera fila, primera columna
  lcd.write_string(varsensorl)
  time.sleep(0.5)
  lcd.clear()

El código funciona del siguiente modo:

  • Importamos la librería RPLCD para trabajar con el LCD.
  • Importamos la librería time para retrasos.
  • importamos la librería math para hacer el redondeo de las variables de temperatura, humedad
  • importamos la librería SHT30lectura para hacer lectura de temperatura y humedad en el sensor
  • Creamos dos variables, una lista y una variable normal. La lista se crea debido a que cuando realizemos una lectura del sensor nos devuelve tres datos (temperatura grados centigrados, temperatura grados farenheit y humedad). Estas variable se almacenarán en la lista. La variable normal es para acceder a una posición especifica de la lista y enviar esta posición al LCD. Tanto la lista como la variable serán de tipo texto.
  • Creamos un objeto 'lcd' con el cual enviaremos la información de texto, posición del cursor, etc., al LCD. Se configura la dirección 0x27 como la dirección del LCD.
  • Creamos un bucle infinito (while True). En este bucle infinito se leerán los valores del sensor continuamente cada 0.5 segundos.
  • Hacemos la lectura del sensor con las funciones PeticionSHT30() y LeerSHT30(). Cuando las usamos en este orden (importante) la información se almacenará en la lista.
  • Extraemos una posición especifica de la lista (0-2) que contiene las variables y la transformamos a string o texto para el LCD.
  • Enviamos la variable extraida de la lista al LCD.
  • Esperamos 0.5 segundos para hacer una nueva lectura de datos.

El video de explicación del código se muestra a continuación:

sensor_sht30.txt · Última modificación: 2022/01/16 18:57 por admin