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

 

dht11 con pcb 

 Cómo conectar sensor de temperatura DHT11 Arduino – Arduino Spain

 

 

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

    What is Arduino software (IDE), and how use it? - AndProf 

    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.

    DHT11 Temperature And Humidity Sensor Module – ielectronyDHT 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

Entradas populares