sensor de flujo en arduino y esp8266 error

Saludos tengo un duda, por que en el arduino uno tengo un código que leé los pulsos del caudal con un sensor flujo de agua YF-S201, después lo cambio para el esp8266 de lo cual con solo correr el código me inicia a dar numeraciones extrañas sin conectar el sensor, conecto el sensor y no hace ningún cambio me da el mismo error en numeraciones extrañas, cambio el pin o no hace ningún cambio, sigue dando numeraciones extrañas, he buscado en google ejemplos con esp8266 y no hay mucho así como alguna libreria.

volatile int pulsos; // Cantidad de pulsos del sensor. Como se usa dentro de una interrupcion debe ser volatile
#define sensorDeFlujo 2 //Pin al que se conecta el sensor. DEBE ser 2 porque es unico que acepta interrpciones en el Arduino UNO
 
void flujo () // Funcion de interrupcion
 
{
pulsos++; // Simplemente sumar el numero de pulsos
 
}
 
void setup()
 
{
pinMode(sensorDeFlujo, INPUT);
Serial.begin(9600);
attachInterrupt(0, flujo, RISING);
interrupts();
}
 
void loop ()
{
Serial.println("Pulsos: ");
Serial.println(pulsos);
}

No estoy muy familiarizado con ESP8266 pero prueba así

volatile int pulsos; // Cantidad de pulsos del sensor. Como se usa dentro de una interrupcion debe ser volatile
#define sensorDeFlujo 2 //Pin al que se conecta el sensor. DEBE ser 2 porque es unico que acepta interrpciones en el Arduino UNO
// *** NO. Es porque acepta interrupciones por pines 2 y 3 únicamente
 
void flujo () // Funcion de interrupcion
 
{
pulsos++; // Simplemente sumar el numero de pulsos
 
}
 
void setup()
 
{
pinMode(sensorDeFlujo, INPUT);
Serial.begin(9600);
noInterrupts();

// *** forma correcta de asignar una interrupción para que sea compatible con otras placas
attachInterrupt(digitalPinToInterrupt(sensorDeFlujo), flujo, RISING);
interrupts();
}
 
void loop ()
{
Serial.println("Pulsos: ");
Serial.println(pulsos);
}

Hi,
Leeistes las especificaciones del YF5201 dice que la salida es de 4.5 voltios. Las entradas del esp8266 es de 3.3 voltios. Vaz a tener que usar un divisor de voltaje usando dos resistencias para bajar el voltaje de 4.5 a 3.3 voltios. Tambien incluyo un link de una tutoria de como conectarlo. Aunque dices que te trabaja con el arduino UNO.

link:Using A Flow Sensor With Arduino - BC Robotics

tauro0221:
Hi,
Leeistes las especificaciones del YF5201 dice que la salida es de 4.5 voltios. Las entradas del esp8266 es de 3.3 voltios. Vaz a tener que usar un divisor de voltaje usando dos resistencias para bajar el voltaje de 4.5 a 3.3 voltios. Tambien incluyo un link de una tutoria de como conectarlo. Aunque dices que te trabaja con el arduino UNO.

link:Using A Flow Sensor With Arduino - BC Robotics

Si trabaja perfectamente con arduino uno con el voltaje de 5 volts, lo alimento de forma externa, pero ya conectándolo a nodemcu ya es ahi donde no hace la lectura correcta, de echo aun no lo conecto el sensor y ya inicia a mandar datos raros.

Aun no llego a conectar el sensor ningún cable e inician estos datos a correrse, conecto el sensor y no hay diferencia alguna, sigue los mismo datos corriéndose

les dejo el link de la imagen, los datos que se corren
https://drive.google.com/file/d/1pQT0P-uFddaPggQY6kvKkqSLh6x9Ra4M/view?usp=sharing

tauro0221:
Hi,
Leeistes las especificaciones del YF5201 dice que la salida es de 4.5 voltios. Las entradas del esp8266 es de 3.3 voltios. Vaz a tener que usar un divisor de voltaje usando dos resistencias para bajar el voltaje de 4.5 a 3.3 voltios. Tambien incluyo un link de una tutoria de como conectarlo. Aunque dices que te trabaja con el arduino UNO.

link:Using A Flow Sensor With Arduino - BC Robotics

¿Probaste el código que te puse en el post #1?

Y lógicamente, si no conectas nada al pin el ruido va a disparar interrupciones.
En el pin tienes que conectar al menos una resistencia de 10k a masa (o a 5V tambien puede ser) si no pones el sensor, no puede quedar "en el aire".

Y no entiendo el sentido de probar el código sin el sensor ya que como método de testeo no te sirve.

gatul:
¿Probaste el código que te puse en el post #1?

Y lógicamente, si no conectas nada al pin el ruido va a disparar interrupciones.
En el pin tienes que conectar al menos una resistencia de 10k a masa (o a 5V tambien puede ser) si no pones el sensor, no puede quedar "en el aire".

Y no entiendo el sentido de probar el código sin el sensor ya que como método de testeo no te sirve.

Si lo puse así como me ayudó usted, lo puse en el pin D4 que corresponde al 2, inicio conectado el sensor pero de igual forma da el mismo resultado

Si con la resistencia a masa igual se dispara ya no se que más aconsejarte, no me manejo con esa placa todavía (y la verdad que la documentación del fabricante es bastante pobre en cuanto a contenido).

Te aclaro un error que cometí, te dije que podias poner la resistencia a (+) y no puedes porque el disparo está por subida (RISING) y seguro va a generar al menos una interrupción.

En el Atmega sé como limpiar las interrupciones pendientes, hay que modificar el registro, pero no tengo idea como hacerlo en el Esp y encima no encuentro la data de qué interrupción dispara cada pin en la documentación para saber como habría que hacerlo.

les dejo el link de la imagen, los datos que se corren
https://drive.google.com/file/d/1pQT0P-uFddaPggQY6kvKkqSLh6x9Ra4M/view?usp=sharing

La salida te esta diciendo , que ni siquiera puede ejecutar el programa. Específicamente te esta diciendo que no encuentra la función a la que llama la interrupción. Cambia void flujo () por void flujo()
Saludos.

Y el volatile en pulsos esta de mas.

@PeterKantTropus ¿No tiene que declararse volatile una variable que se modifica desde una rutina de interrupción?

Tenes razón, es cierto que se recomienda declararla volatile.