esp8266-01 controlar salida GPIO2 para activar rele 5v

Buen día, estoy queriendo controlar desde un ESP8266-01 un rele de 5v de un solo canal (ver imagen) para prender y apagar una mini bomba de agua de 3V (ver imagen). Para controlar el rele tengo que usar el puerto GPIO0 del ESP porque el GPIO2 lo estoy usando para medir la humedad del suelo. La idea es que cuando el suelo este seco accione la bomba para regar una maceta.

Tengo todo conectado según el diagrama adjunto (perdón que lo hice a mano pero no soy electrónico), pero cuando arranca la bomba se cuelga todo el circuito (se encienden todas las luces de todos los componentes). También tengo otro problema, cuando arranca tengo que desconectar el GPIO0 para que botee en modo normal el ESP y luego volverlo a conectar para que funcione el esquema.

Mis consultas son, ¿que tengo que hacer para que cuando arranque el rele no se vuelva todo loco y funcione normalmente?, y ¿que puedo hacer para evitar desconectar y conectar manualmente el GPIO0 todo el tiempo para arrancar en modo "normal"?

Estos son los datos de la bomba de agua:
Link a la bomba de agua

Description:
DC Voltage:2.5-6V
Maximum lift:40-110cm / 15.75"-43.4"
Flow rate:80-120L/H
Outside diameter of water outlet: 7.5mm / 0.3"
Inside diameter of water outlet: 4.7mm / 0.18"
Diameter:Approx. 24mm / 0.95"
Length:Approx. 45mm / 1.8"
Height:Approx. 33mm / 1.30"
Material:engineering plastic
Driving mode: brushless dc design, magnetic driving
Continuous working life of 500 hours

Datos del Rele:

Modulo Rele 5V con bornera
Simple Inversor - Contactos 250V 10A

Gracias!
Fernando

Según el esquema no se ve un un diodo en antiparalelo (anodo a gnd y catodo a 3.3V) conectado a la bomba. No te equivoques al hacerlo.

Prueba a ver si mejora

Gracias por la respuesta. ¿Este diodo seria?

Si, ese mismo. Cuenta si se redujo tu problema o persiste?

Va el esquema en Fritz.

surbyte:
Si, ese mismo.
Cuenta si se redujo tu problema o persiste?

Si, persiste. Es mas, con el transistor 2N2222 apenas conecto el GPIO0 dispara el rele y todo el circuito se vuelve loco. Puse una resistencia de 10K entre ese puerto y la Base del transistor, pero pasa lo mismo. Luego sume dos resistencias, recién ahí dejo de arrancar el Rele en forma directa, pero el programa cuando enciende el Rele no le transmite la fuerza necesaria y solo veo que prende el Led verde de acción, pero no acciona realmente el motor.

Cambie el transistor por otro irfz44n que tenia, con una resistencia de 13K en la Gate del mismo, no arranca el sistema apenas conecto el GPIO0; lo cual es bueno. Luego el programa comienza y cuando acciona el Rele, este prende el motor y nuevamente se cuelga todo.....

Sinceramente ya no se que hacer, probé varios diagramas que encontré en internet pero ninguno de estos funciono. Estos son los dos esquemas que intente.

ubpNw.png

ubpNw.png

Ok. Tranquilo!!

Vamos por pasos. La resistencia de base debería ser : (3.3-1.5)/(100*55) en Kohms Da algo de 2k7 o 3k3 Asi que la versión con 1k estará bien para saturar bien el 2n2222. La opcion con 47k no es válida. El esquema 2 es un esquema no inversor, debería funcionar y al parecer no lo hace. Vayamos a probar algo mas simple.

Ya se que diras que funciona pero prueba con un led. Un led conectado al colector del 2n2222 como en el segundo esquema, con una R de 220 ohms. Verifica que funcione bien.

Probe lo que mencionastes y funciona bien, gracias!.

Luego probé dos cosas adicionales. La primera fue usar únicamente un transistor 2n2222A para prender y apagar el motor, lo curioso es que con la fuente del protoboard funciona perfectamente, pero cuando paso a usar el circuito y el motor con una bateria 18650 6000mha de 3.7V, al apagar el motor, se desestabiliza el circuito y comienzan a aparecer este tipo de errores en el debug del IDE Arduino:

ets Jan  8 2013,rst cause:4, boot mode:(3,0)

wdt reset
load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
~ld

No se como estabilizar esto y a que se debe el reseteo del ESP8266…

Luego continúe probando con el Rele, en este caso tengo el circuito conectado a la fuente del protoboard y el conector común del Rele (y por ende el motor) por medio de la batería mencionada, solo para alimentar el motor. Asi utilizo dos fuentes de energía independientes entre si, una para el circuito y otra para el motor. Nuevamente cuando se prende o apaga el motor, pasa lo mismo que en el caso anterior. Puse transistores entre el negativo del motor y el positivo, pero continua el mismo problema.

Mi idea es que todo el circuito se alimente de la batería de 3.7V mencionada, por eso para el caso del rele tengo un step-up que pasa de 3.7 a 5V solo para alimentar el rele. Luego la bateria la cargo con un panel solar que está conectado a un circuito de carga de batería. Si uso un transistor 2n2222 sin el rele, el circuito es el mismo pero no uso el step-up. En cualquiera de los casos me parece que tal vez la batería no es suficiente o estoy omitiendo algo que estabilice todo… Lo más cercano de que funcione todo es usando solo el transistor 2n2222 (sin el rele) y con la fuente del protoboard, solo que cuando lo paso a bateria da ese error extraño.

Por las dudas este sería mi código simple del prendido y apagado del motor:

if (humidity < MAXDRYNESS){
              Serial.println("Soil dry start watering ");
              digitalWrite(pumpPin, PRENDORELAY);
              delay(WATERDELAY);
              digitalWrite(pumpPin, APAGORELAY);
              Serial.println("Stop watering ");
              delay(WATERPOSTDELAY);

}

surbyte: Ok. Tranquilo!!

Vamos por pasos. La resistencia de base debería ser : (3.3-1.5)/(100*55) en Kohms Da algo de 2k7 o 3k3 Asi que la versión con 1k estará bien para saturar bien el 2n2222. La opcion con 47k no es válida. El esquema 2 es un esquema no inversor, debería funcionar y al parecer no lo hace. Vayamos a probar algo mas simple.

Ya se que diras que funciona pero prueba con un led. Un led conectado al colector del 2n2222 como en el segundo esquema, con una R de 220 ohms. Verifica que funcione bien.

Buen día, gracias por la respuesta. Agregue un post respondiendo a tus sugerencias y mencionando dos pruebas adicionales que hice durante el fin de semana.

fsitios: Buen día, gracias por la respuesta. Agregue un post respondiendo a tus sugerencias y mencionando dos pruebas adicionales que hice durante el fin de semana.

Encontré este tema en el foro, es muy similar (diría que igual, ya sea con o sin rele) a lo que quiero lograr para encender un mini-motor de 3V: Tópico de referencia , ¿tal vez sea un capacitor lo que me falta para estabilizar al ESP?

fsitios van 3 advertencias de no respetar las normas del foro.
Lee las normas del foro y ponlas en práctica por favor, no puedo ni debo estar corrigiendo cada post tuyo!!

Lee las Normas del foro
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
Si tienes que editar un código → Selecciona todo el código y click en </> arriba del emoticon.
**Si tienes que editar un enlace → Selecciona el enlace. Copialo al portapapeles. Click en el eslabón (ver abajo) y sigue los pasos que habras visto al leer las normas. **

Tags.jpg