miércoles, 7 de diciembre de 2016

ARDUINO CON SENSOR MEDIDOR DE VOLTAJE DE 0 24 VOLTIOS EN CONTINUA CON SIM 800L GSM ENVIANDO MENSAJE

      EN ESTE TUTORIAL EXPLICO COMO MEDIR EL VOLTAJE  DE 0 A 24 VOLTIOS EN CONTINUA. NOS ENVIARÁ UN MENSAJE CUANDO EL VOLTAJE BAJE DE UNA VALOR PREDEFINIDO Y CUANDO SE VUELA A ESTABILIZAR.

POR EJEMPLO PODRÍAS TENERLO PARA UNA INSTALACIÓN FOTOVOLTÁICA Y QUE NOS ENVÍE UN MENSAJE CUANDO EL VOLTAJE CAMBIE  DE UN VALOR PREDEFINIDO, PARA SABER SI UNA FUENTE DE ALIMENTACIÓN SE HA AVERIADO, QUE ENCENDIERA UN GRUPO ELECTRÓGENO HASTA QUE EL VOLTAJE SE HAYA ESTABILIZADO,ETC.



COMPONENTES:

ARDUINO MEGA
MODULO SENSOR DE VOLTAJE
SIM 800L GSM










CONEXIONES:




1º  PASO  VAMOS A CALIBRAR EN SENSOR DE VOLTAJE

   CONECTAREMOS EL SENSOR  POR LA PARTE DE LECTURA AL A NEGATIVO(GND) Y EL POSITIVO AL 3.3 V.



CÓDIGO ARDUINO:

int sensorPin = A0;    
int sensorValue = 0;  
void setup() {
Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);//LEEMOS LA LECTURA DEL SENSOR
  Serial.print("EL VARLOR ES: ");
  Serial.print(sensorValue);// MOSTRAMOS LA LECTURA DE SENSOR
  Serial.print("  voltaje es:  ");
  Serial.println(sensorValue*0.024);//MULTIPLICAMOS PARA SABER EL VOLTAJE
  delay(1000);
}


COMO LA SALIDA QUE HEMOS CONECTADO ES DE 3.3 , Y EL VALOR DE LECTURA ES DE 135.  DIVIDIMOS 3.3/135 QUE NOS DA UN RESULTADO DE 0.0244, ESTE VALOR ES QUE PONEMOS PARA MULTIPLICAR PARA SABER EL VOLTAJE, HA CADA UNO DE DARÁ UN VALOR DIFERENTE .   3.3 DIVIDO ENTRE EL VALOR OBTENIDO .

2º  PASO  PONER EL DATO OBTENIDO EL LA VARIABLE FLOAT calibracion he introducir el teléfono del destinatario. Si tenéis dudas sobre el código del gsm ver el tutorial.

EN MI CASO ES DE 0.0244, Y SUBIR ESTE CÓDIGO AL ARDUINO

int sensorPin = A0;  
int sensorValue = 0;
boolean a=false;
String mensajeenviado;
float voltaje;
float calibracion=0.024;

void setup() {
Serial.begin(9600);
Serial1.begin(19200);
//delay(9000);
Serial1.println("AT+CMGF=1"); //Configuramos el módulo para trabajar con los SMS en modo texto
delay(1000);
Serial1.print("AT+CNMI=2,2,0,0,0\r");//El módulo enviará los mensaje directamente al puerto serial                                                                  //del dispositivo
delay(500);
a=false;
}

void loop() {
  sensorValue = analogRead(sensorPin);//LEEMOS LA LECTURA DEL SENSOR
  Serial.print("EL VARLOR ES: ");
  Serial.print(sensorValue);// MOSTRAMOS LA LECTURA DE SENSOR
  Serial.print("  voltaje es:  ");
  voltaje=sensorValue*calibracion;
  Serial.println(voltaje);//MULTIPLICAMOS PARA SABER EL VOLTAJE
  delay(1000);
  if (voltaje<2){ //SI EL VOLTAJE ES INFERIOR A 2
 
    if (a==false){  //SI LA VARIABLE ESTA EN FALSO
    Serial.println("no hay voltaje");//MOSTRAMOS EL MENSAJE POR EL PUERTO SERIE
    mensajeenviado="EL SISTEMA NO HA DETECTADO VOLTAJE";
    EnviaSMS();  //ENVIAMOS EL MENSAJE
    a=true;  // PONEMOS LA VARIABLE EN VERDADERO PARA QUE NO ENVIÉ MAS SMS
    }
    }

  if (voltaje>2){
  if (a==true){
    Serial.println("hay voltaje");
    mensajeenviado="EL SISTEMA HA ESTABLECIDO EL VOLTAJE";
    a=false;  //PONEMOS LAS VARIABLE EN FALSO PARA QUE NO ENVIÉ MAS SMS
    EnviaSMS();   //ENVIAMOS EL MENSAJE
    }
 
  }
}

void EnviaSMS(){            
 Serial1.println("AT+CMGS=\"+34------\"");  // Definimos el numero del destinatario en formato internacional
 delay(100);                                   // Pequeña pausa
 Serial1.print( mensajeenviado);   // Ponemos las variable String para su envio
 delay(500);                                 // Pequeña pausa
 Serial1.print(char(26));            // Enviamos el equivalente a Control+Z
 delay(100);                            // Pequeña pausa
 Serial1.println("");             // Enviamos un fin de linea
 delay(100);                     // Pequeña pausa
}

6 comentarios:

  1. hola estoy trabajando con una placa arduino uno y claro que me da problemas al subir el codigo, me pudieras indicar el cambio que debo hacer para trabajar este mismo codigo con una placa de arduino uno ???

    saludos

    ResponderEliminar
  2. Buenas tardes
    tiene que incluir la librería softwareSerial y cambiar lo siguiente
    #include
    SoftwareSerial gsm(10, 11); // RX, TX

    donde dice Serial1. tiene que poner gsm. Tienes que cambiarlo en toda las partes de código

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. hola buenas me gustaría contactarme con vosotros gracias

    ResponderEliminar
    Respuestas
    1. Buenas tardes enviame un correo electrónico para tener su dirección. Un saludo

      Eliminar