7.9 KiB
Medir la temperatura - Hardware IoT Virtual
En esta parte de la lección, agregarás un sensor de temperatura a tu dispositivo IoT virtual.
Hardware Virtual
El dispositivo IoT virtual usará un sensor simulado de Humedad y Temperatura Digital Grove. Esto mantiene este laboratorio igual que usar un Raspberry Pi con un sensor físico Grove DHT11.
El sensor combina un sensor de temperatura con un sensor de humedad, pero en este laboratorio solo te interesará el componente del sensor de temperatura. En un dispositivo IoT físico, el sensor de temperatura sería un termistor que mide la temperatura detectando un cambio en la resistencia a medida que cambia la temperatura. Los sensores de temperatura suelen ser sensores digitales que convierten internamente la resistencia medida en una temperatura en grados Celsius (o Kelvin, o Fahrenheit).
Agregar los sensores a CounterFit
Para usar un sensor virtual de humedad y temperatura, necesitas agregar los dos sensores a la aplicación CounterFit.
Tarea - agregar los sensores a CounterFit
Agrega los sensores de humedad y temperatura a la aplicación CounterFit.
-
Crea una nueva aplicación de Python en tu computadora en una carpeta llamada
temperature-sensor
con un único archivo llamadoapp.py
, un entorno virtual de Python, y agrega los paquetes pip de CounterFit.⚠️ Puedes consultar las instrucciones para crear y configurar un proyecto de Python de CounterFit en la lección 1 si es necesario.
-
Instala un paquete adicional de Pip para instalar un shim de CounterFit para el sensor DHT11. Asegúrate de instalarlo desde una terminal con el entorno virtual activado.
pip install counterfit-shims-seeed-python-dht
-
Asegúrate de que la aplicación web de CounterFit esté en ejecución.
-
Crea un sensor de humedad:
-
En el cuadro Create sensor en el panel Sensors, despliega el cuadro Sensor type y selecciona Humidity.
-
Deja las Units configuradas en Percentage.
-
Asegúrate de que el Pin esté configurado en 5.
-
Selecciona el botón Add para crear el sensor de humedad en el Pin 5.
El sensor de humedad será creado y aparecerá en la lista de sensores.
-
-
Crea un sensor de temperatura:
-
En el cuadro Create sensor en el panel Sensors, despliega el cuadro Sensor type y selecciona Temperature.
-
Deja las Units configuradas en Celsius.
-
Asegúrate de que el Pin esté configurado en 6.
-
Selecciona el botón Add para crear el sensor de temperatura en el Pin 6.
El sensor de temperatura será creado y aparecerá en la lista de sensores.
-
Programar la aplicación del sensor de temperatura
Ahora se puede programar la aplicación del sensor de temperatura utilizando los sensores de CounterFit.
Tarea - programar la aplicación del sensor de temperatura
Programa la aplicación del sensor de temperatura.
-
Asegúrate de que la aplicación
temperature-sensor
esté abierta en VS Code. -
Abre el archivo
app.py
. -
Agrega el siguiente código al inicio de
app.py
para conectar la aplicación a CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Agrega el siguiente código al archivo
app.py
para importar las bibliotecas necesarias:import time from counterfit_shims_seeed_python_dht import DHT
La declaración
from seeed_dht import DHT
importa la claseDHT
para interactuar con un sensor virtual de temperatura Grove utilizando un shim del módulocounterfit_shims_seeed_python_dht
. -
Agrega el siguiente código después del anterior para crear una instancia de la clase que gestiona el sensor virtual de humedad y temperatura:
sensor = DHT("11", 5)
Esto declara una instancia de la clase
DHT
que gestiona el sensor virtual de Humedad y Temperatura Digital. El primer parámetro indica que el sensor utilizado es un sensor virtual DHT11. El segundo parámetro indica que el sensor está conectado al puerto5
.💁 CounterFit simula este sensor combinado de humedad y temperatura conectándose a 2 sensores: un sensor de humedad en el pin indicado al crear la clase
DHT
, y un sensor de temperatura que funciona en el pin siguiente. Si el sensor de humedad está en el pin 5, el shim espera que el sensor de temperatura esté en el pin 6. -
Agrega un bucle infinito después del código anterior para consultar el valor del sensor de temperatura e imprimirlo en la consola:
while True: _, temp = sensor.read() print(f'Temperature {temp}°C')
La llamada a
sensor.read()
devuelve una tupla de humedad y temperatura. Solo necesitas el valor de la temperatura, por lo que se ignora la humedad. El valor de la temperatura se imprime en la consola. -
Agrega una pequeña pausa de diez segundos al final del
loop
, ya que no es necesario verificar continuamente los niveles de temperatura. Una pausa reduce el consumo de energía del dispositivo.time.sleep(10)
-
Desde la Terminal de VS Code con un entorno virtual activado, ejecuta lo siguiente para ejecutar tu aplicación de Python:
python app.py
-
Desde la aplicación CounterFit, cambia el valor del sensor de temperatura que será leído por la aplicación. Puedes hacerlo de dos maneras:
-
Ingresa un número en el cuadro Value del sensor de temperatura y selecciona el botón Set. El número que ingreses será el valor devuelto por el sensor.
-
Marca la casilla Random e ingresa un valor Min y Max, luego selecciona el botón Set. Cada vez que el sensor lea un valor, leerá un número aleatorio entre Min y Max.
Deberías ver los valores que configures apareciendo en la consola. Cambia el Value o la configuración de Random para ver cómo cambia el valor.
(.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C
-
💁 Puedes encontrar este código en la carpeta code-temperature/virtual-device.
😀 ¡Tu programa del sensor de temperatura fue un éxito!
Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Aunque nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.