¿Es viable? Lectura caudalímetro+mandar datos GSM

Buenos días.

Tengo idea de realizar la lectura de un caudalímetro en medio del campo y mandar los datos resultantes todas las mañanas por GSM.

La idea es coger la lectura actual del caudalímetro y por medio de pulsos ir aumentando la lectura en 1 (contador con flanco de subida).

Dicha lectura actual del caudalímetro la ingresaré por primera vez, y a partir de ese dato que se vaya incrementando en 1, con cada pulso.

Los pulsos que emite el caudalímetro, activarían un relé con el cual haría el aumento de la lectura, a través de una entrada digital.

Esos datos quisiera que se guardaran en una Sd (seria una variable del tipo long), donde poder guardar el valor actual y ese dato que se mandara por SMS.

Quisiera que si el arduino pierde la conexión eléctrica, continúe con el valor guardado en la Sd.

Colocaría todos los dispositivos a una altura considerable, con lo que me gustaría poder modificar la programación por medio de una shield bluetooth.

Los materiales que necesitaría:

  • Arduino uno.
  • Shield bluetooth.
  • Shield SD.
  • Shield GSM.
  • Relé auxiliar.

Espero vuestros comentarios, muchas gracias por vuestra ayuda.

Si claro que es posible y perfectamente realizable, hay varios trabajos similares en este foro que te aliento a que busques usando la Lupa que esta arriba a la derecha. Busca caudalimetro, GSM, SIM900, SIM800, etc

Moderador: Editado: no hace falta repetir lo que se lee arriba.

Gracias Surbyte,

voy a ver hasta donde llego, algo voy consiguiendo pero no sabía si podría hacer todas las cosas a la vez.

Iré publicando mis adelantos, por si alguien más está interesado.

De momento he conseguido lo siguiente:

  • Poder poner el valor actual del caudalímetro.
  • realizar la cuenta, sin ninguna interferencia.
  • Guardar el valor actual en memoria, por hubiera fallo de corriente.

Me falta acoplar el módulo gsm y realizar pruebas.

A los más entendidos, ¿encontráis fallos en el programa?

#include <EEPROM.h>
bool dato = LOW;
bool datoAnterior = LOW;
unsigned long contador;
unsigned long ValorActual=10000;
int Direccion=0;


void setup() {
EEPROM.get (Direccion,contador);//Recoge el valor de la variable de la memoria eeprom
pinMode(2,INPUT_PULLUP);
Serial.begin(9600);

}


void loop() {
 if (ValorActual>contador){
  contador=ValorActual;
  }
 
 dato = digitalRead(2);
 if (dato == LOW && datoAnterior == HIGH)
 {
  contador++;
  EEPROM.put (Direccion,contador);
  }
 datoAnterior = dato;
 Serial.println(contador);
  
}

El programa me funciona correctamente guardando la variable contador en la eeprom, pero quisiera hacerlo en un sd porque en unos meses superaría el número máximo de escrituras en la eeprom

¿Podéis echarme una mano de como guardar esa variable en una sd y luego recuperarla ante un corte de corriente?

Gracias