Dispensador de comida y agua para mascotas controlado por SMS

Publicado el: 20 de junio de 2019
Intermedio
Acerca de este proyecto
Dispensador de comida y agua para mascotas con tarjeta linkit one que se controla desde un mensaje de texto.
linkit one
Publicidad
DETALLES

Este proyecto utiliza la tarjeta linkit one aprovchando su modulo GSM para la recepcion de mensajes  de texto.

Para activar el dispensador de comida se enviar la letra 'F' y para activar el dispensador de agua se envía la letra 'W'. Estos comandos pueden cambiarse en el codigo, en caso que se desee usar otras letras.

Cuando se activa el dispensador de agua, este comienza a llenarse hasta cierto nivel, deterinado por el sensor ulttrasonico que posee en la parte superior.

LISTA DE MATERIALES Y COMPONENTES


  • Tarjeta linkit one con su antena GSM y tarjeta SIM.
  • Servo sg5010
  • Sensor ultrasonico HSR-04
  • Mini bomba de agua.
  • 1 metro de tubo para la bomba de agua.
  • Cables de conexión
  • Y por supuesto, comida para mascotas y agua XD.

Yo lo hice en madera pero pienso que se vería mucho mejor si se elabora en acrílico.


Vista previa


VIDEO DE FUNCIONAMIENTO


DIAGRAMA ESQUEMATICO


Diagrama


Realice las conexione como se muestra en el diagrama, tenga en cuenta que la bomba de agua debe ser conectada a una fuente de voltaje externa debido a su alto consumo de corriente.


EL DISPENSADOR DE COMIDA



Como se menciono arriba, este se activa cuando se envia un mensaje de texto con la letra 'F'. 

Mi diseño fue utilizando una cubeta plástica y cortandole la parte inferior de tal manera que esta se abra o cierra gracias a un alambre introducido en ella como se muestra en la figura. Este alambre se ajusta al servomotor de tal manera que cuando el servo gire, mueva el alambre y este a su vez abra o cierre la salida de la comida.

Se debe usar un servo con el torque suficiente para mover la varilla atada a el y a la jarra.


EL DISPENSADOR DE AGUA



El dispensador de agua es controlado por una mini bomba de agua que se activa cuando el micro recibe un mensaje de texto con la letra 'W'. La bomba de agua se activa gracias a un rele de 5V y permanece encendido hasta que el sensor de distancia ultrasonico detecte cierto nivel configurado en el código. En este proyecto, la distancia es de aproximadamente 8 cms, usted puede configurarla según su necesidad.

Ala bomba de agua se conecta un tubo de 4mm de diámetro.




CODIFICACIÓN
Codigo para la tarjeta linkit one-
Este es el código que se le debe cargar a la tarjeta linkit one usando el IDE de arduino.
/*Programa para el manejo de un dispensador de comida y agua para mascotas controlado desde un mensaje de texto. Con la letra 'F' se activa el dispensador de comida y con 
la letra 'W´se activa el dispensador de agua */

#include <LGSM.h>    //Library for sms/ Libreria para mensajes de texto
#include <LDateTime.h>  //For the ultrasonic sensor HSR-04/ Para el sensor HSR-04
#include <Servo.h>
Servo servo;

int relay = 7; // Relay connected to the water pump

//***** Variables used for ultrasonic sensor***** 
const int TRIG_PIN = 8;
const int ECHO_PIN = 9;

void activatePump()
{
  digitalWrite(relay,HIGH);
}

void deactivatePump()
{
  digitalWrite(relay,LOW);
}

void activateServo()
{
  delay(1000);
  servo.write(180);

  delay(3000);
  servo.write(135);
  
  delay(1000);
  servo.write(70);
}


 
void setup()
{
  // initialize serial communication:
  Serial.begin(9600);
  
  servo.attach(3);
  servo.write(80);

  pinMode(relay,OUTPUT); 
  digitalWrite(relay,0);
  
  pinMode(TRIG_PIN,OUTPUT);
  pinMode(ECHO_PIN,INPUT);
  
  while(!LSMS.ready())
    {  
      delay(1000);
    }
    
    Serial.println('Tarjeta SIM lista para su uso!');

  }
  
 
void loop()
{
  long duration, distanceCm;
 
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse/ mando un pequeño pulso en bajo de antemano para asegurar un pulso limpio en alto
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  duration = pulseIn(ECHO_PIN,HIGH);
 
  distanceCm = duration / 29.1 / 2 ;
 
   Serial.println('Water bowl full');
 
   Serial.print(distanceCm);
   Serial.print('cm');
   Serial.println();
    
  //If theSi el tanque ya está lleno apago la bomba
    if(distanceCm<=8)
      {
          deactivatePump();
      }
      
  //********* SMS /Mensaje de texto ***************  
    char buf[20];
    
    int v;
    
    //If a text message is received... /Si se recibe un mensaje de texto...
    if(LSMS.available())
    {
      
      //*******************These lines are only for monitoring the received message in the serial port , they can be omitted in the program ********************************************
      Serial.println('Hay un nuevo mensaje.');
      
      LSMS.remoteNumber(buf, 20);    // Display Number part
      
      Serial.print('Numero:');
      
      Serial.println(buf);
      
      Serial.print('Contenido:');      // display Content part
      //*******************************************************************************************************************************************************************************
      
        while(true)
        
        {
          v = LSMS.read();   
        
          if(v < 0)
          
          break;
          
          Serial.print((char)v);
          
          if((char)v=='W')  //If receives letter W, then activate the mini pump water of the water dispenser/ Si recibe el caracter W activa la mini bomba de agua del dispensador de agua
            {
              activatePump();
            }
           
           if((char)v=='F')  //If receives letter F, then activates the servo of the food dispenser/ si recibe la letra F activa el servomotor del dispensador de comida
            {
              activateServo();
            
            }
            
            else
            
              digitalWrite(13,LOW);
        }  // end serial available
        
        Serial.println();
        
        LSMS.flush();  //Delete the received message / Borra el mensaje recibido
      
      }
    
    delay(1000);
    
    
}   // end loop

Autor: sistemasymicros
26 proyectos 6 seguidores 0 siguiendo

Ingeniero en electrónica. Maker, apasionado por la programación. Sigueme en sistemasymicros.

COMENTARIOS
Para publicar un comentario debes