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:
Conexiones sensor SHT30→Raspberry Pi
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):
Bloque | Descripció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:
A continuación se muestra el video de explicación del algoritmo con bloques gráficos:
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:
El video de explicación del código se muestra a continuación: