Casita IOT del gato
Pasos para crear un caja para que tu gatito vaya al baño con tecnología de punta.
La idea del proyecto sería algo así:
El gatito cuando entra y sale pisa la alfombra y se enciende la luz utravioleta antibacterial (circuito eléctrico sencillo).
Tú puedes ver desde tú celular (IOT) la temperatura y humedad de la caja de arena que está dentro, lo que te va a dar indicaciones si es hora de cambiar la arena por la humedad del pis del gatito.
Hablando del proyecto IOT, guia general de lo que vas a lograr:
La placa Lafvin que es un microcontrolador Arduino→ envía lecturas (JSON) por USB/Serial ( yo utilicé este microcontrolador sin wifi pero puedes buscar y trabajar con Arduino ESP 32 que tiene wifi y bluetooth).
La PC lee ese puerto con el programa IDE.
El programa publica los datos en el broker público HiveMQ
Tu celular con IoT MQTT Panel se suscribe y ve los valores en tiempo real
Herramientas digitales:
1- IDE de Arduino (enlace de descarga aquí downloads). Para la computadora.
2- App de Play Store: IoT MQTT Panel (enlace de descarga aquí descarga ). Para tu celular.
3- Broker público HiveMQ (enlace de descarga aquí ).
Deberás conseguir:
Placa Arduino, cables, sensor de humedad DHT 11, placa protoboard
Materiales para el armado de la estructura y luz:
1 -Caja para reciclar de cartón o similar
2- Pistola de silicona y silicona caliente
3- cable de cobre
4- Diodo o led del color que te guste
5- Pila Cr 2032
Pasos para amar un circuito electrónico simple aquí el enlace
Utiliza la caja para armar la estructura y coloca el circuito como en la imagen usando el cable y la fuente o pila y el diodo
.
La conexión de los cables y el sensor a tener en cuenta.
Los pines de la versión con PCB del DHT11 son:
- GND: conexión con tierra
- DATA: transmisión de datos
- VCC: alimentación
Ahora el microcontrolador Arduino y su utilidad:
El Arduino IDE te permite programar y ver los datos del sensor directamente (en el monitor serial).
En este caso, el proyecto funciona localmente, es decir:
-
El Arduino mide temperatura y humedad (DHT11).
-
Enciende el LED cuando hay alarma.
-
Ves los datos en la PC con el Monitor Serial.
Pero los datos no llegan a Internet, o sea no se pueden ver en el celular ni en MQTT
El programa en Python, el script toma esos datos y los publica en un servidor MQTT por ejemplo HiveMQ.
Así que descargar Python es buena idea:
Paso 1: Instalar Python
Duante la instalación: Tildá “Add Python to PATH” antes de continuar.
Para comprobar que se instaló bien , abrí una consola (CMD) y escribí:
python --version
Si te muestra algo como Python 3.12.x, está perfecto.
Paso 2: Instalar los paquetes necesarios
En la misma consola (CMD), escribí:
pip install pyserial paho-mqtt
Esto instala:
pyserial: para leer los datos desde el puerto USB del Arduino/Lafvin
paho-mqtt: para publicar mensajes al broker MQTT
-
Crear el script puente “serial_to_mqtt.py”
Abrir el Bloc de notas o VS Code, pegar el siguiente código, y guardarlo como serial_to_mqtt.py
import serial
import time
import paho.mqtt.client as mqtt
import json
# --- CONFIGURACIÓN ---
SERIAL_PORT = "COM3" # 👈 Cambiá este número si tu Arduino usa otro puerto (COM4, COM5...)
BAUD_RATE = 9600
MQTT_BROKER = "broker.hivemq.com"
MQTT_PORT = 1883
MQTT_TOPIC = "joyce/casita_gato"
# --- CONEXIÓN MQTT ---
client = mqtt.Client()
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.loop_start()
# --- CONEXIÓN SERIAL ---
ser = serial.Serial(SERIAL_PORT, BAUD_RATE)
time.sleep(2)
print("Conectado al Arduino. Enviando datos a MQTT...")
# --- BUCLE PRINCIPAL ---
while True:
try:
line = ser.readline().decode('utf-8').strip()
if line:
print("Dato recibido:", line)
client.publish(MQTT_TOPIC, line)
except Exception as e:
print("Error:", e)
time.sleep(2)IDE de Arduino
El Arduino IDE (entorno de desarrollo) sirve para escribir el código del DHT11 (sensor de humedad), verificarlo para detectar errores y subirlo al Arduino por el cable USB.
DHT 11
Asi que a copiar el código, compilarlo y enviarlo a la placa Lafvin.
#include <DHT.h>
#define DHTPIN 2 // Pin de datos del DHT11
#define DHTTYPE DHT11 // Tipo de sensor
#define CONTACT_PIN 3 // Cable que detecta si el gato entra
#define LED_PIN 13 // LED integrado del Arduino (indica alarma)
DHT dht(DHTPIN, DHTTYPE);
unsigned long lastPublish = 0;
const unsigned long interval = 5000; // cada 5 segundos
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(CONTACT_PIN, INPUT_PULLUP); // usamos pull-up interno
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.println("{\"status\":\"ready\"}"); // mensaje inicial JSON
}
void loop() {
unsigned long now = millis();
if (now - lastPublish >= interval) {
lastPublish = now;
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("{\"error\":\"sensor_error\"}");
return;
}
bool catDetected = (digitalRead(CONTACT_PIN) == LOW); // los cables se tocan
bool humidityHigh = humidity > 70.0; // umbral de humedad alta
bool alarm = catDetected || humidityHigh;
// Enciende o apaga LED integrado
digitalWrite(LED_PIN, alarm ? HIGH : LOW);
// Enviar datos en formato JSON
Serial.print("{\"temp\":");
Serial.print(temperature, 1);
Serial.print(",\"hum\":");
Serial.print(humidity, 1);
Serial.print(",\"contact\":");
Serial.print(catDetected ? 1 : 0);
Serial.print(",\"alarm\":");
Serial.print(alarm ? 1 : 0);
Serial.println("}");
}
}
Código Arduino completo para este proyecto DHT11 + sensor de entrada + LED integrado
Comprobar que la conexión de arduino y la conexión del puerto estén correctas.
Comprobar si está instalada la librería del sensor DHT11 (la que dice DHT sensor library by Adafruit), también se instalará automáticamente Adafruit Unified Sensor.
Paso 6: abrir el monitor serial (arriba derecha en la lupa) elegir 9600 baudios
Deberás ver algo así:
El flujo completo IoT: sensor DHT 11 -Arduino → PC → nube → celular.
</h2>
Desde el celular verás algo así:



Comentarios
Publicar un comentario