[SOLUCIONADO]Problema inicialización nodemcu

Hola muy buenas. Estoy trasteando con un nodemcu exactamente el Lolin V3.El circuito se compone de 4 relés de Arduino con optoacoplador y 3 detectores infrarrojos también de Arduino.

Uno de los problemas que tengo que para cargar el código tengo que desconectar todos los pines y dejar el nodemcu sólo.

Luego otro problema y es el que más me preocupa es que le quito alimentación al nodemcu, se la vuelvo a dar y no se inicializa el programa. Tengo que resetear la placa manualmente y conectar los 5v de los reles(dejando el Vin y los +5v de los infrarrojos conectados).

La alimentación la hago con una fuente estabilizada de 5 v a 2 amperios.

Al + de esa fuente va: Vin del nodemcu,+5v de los infrarrojos y los +5v de los 4 reles.

Y al - va: al gnd del nodemcu, gnd de los infrarrojos y los gnd de los reles.
Aquí dejo el código por si vale de algo...

#define BLYNK_PRINT Serial


#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
BlynkTimer timer;
#include <TimeLib.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "cddfdfsfdytuygiyyt";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxxxx";
char pass[] = "xxxxxxxxxxxx";






int s1=D1;
int s2=D2;
int s3=D0;
int ldr=A0;

int led1=D5;
int led2=D6;
int led3=D7;
int led4=D8;

int estados1=0;
int estados2=0;
int estados3=0;
int estadoldr;


const unsigned long ret1 =  400;
const unsigned long ret2 =  800;
const unsigned long lumenes=400;


unsigned long cont1     = 0;
unsigned long cont2     = 0;
unsigned long cont3     = 0;
unsigned long cont4     = 0;
unsigned long cont5     = 0;
unsigned long cont6     = 0;
unsigned long cont7     = 0;
unsigned long cont8     = 0;
unsigned long cont9     = 0;
unsigned long cont10    = 0;
unsigned long cont11    = 0;
unsigned long cont12    = 0;
unsigned long cont13    = 0;

unsigned long tempp1=0;
unsigned long tempp2=0;
unsigned long tempp3=0;
unsigned long tempp4=0;
unsigned long tempp5=0;
unsigned long tempp6=0;

int temp1=0;
int temp2=0;
int temp3=0;
int temp4=0;
int temp5=0;
int temp6=0;
int temp7=0;
int temp8=0;
int temp9=0;
int temp10=0;
int temp11=0;
int temp12=0;

int temp111=0;
int temp222=0;
int temp333=0;

BLYNK_READ(V6){
  Blynk.virtualWrite(V6, estadoldr);}  

void setup(){
 Serial.begin(9600);

  Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);

 pinMode(s1, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
 pinMode(s2, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
 pinMode(s3, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
 pinMode(ldr,INPUT);
 
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 
 digitalWrite(led1,HIGH);
 digitalWrite(led2,HIGH);
 digitalWrite(led3,HIGH);
 digitalWrite(led4,HIGH);
   
 
}

void loop(){

 Blynk.run();

estados1=digitalRead(s1);
estados2=digitalRead(s2);
estados3=digitalRead(s3); 
estadoldr=analogRead(ldr);
Serial.println(estadoldr);
if (estados1==HIGH&&estados2==LOW&&estados3==LOW) { temp1++; temp111=0;} else{temp1=0;temp2=0;temp111++;}
if (temp1 == 1&&estadoldr<lumenes){temp2=1;
                tempp1 = millis();
                cont1 = tempp1+ ret1;
                cont2 = tempp1+ ret2;
                }

                
  
if (temp2 == 1) {digitalWrite(led4,LOW);digitalWrite(led1,LOW);
                 if (millis()>= cont1){digitalWrite(led2,LOW);}
                 if (millis()>= cont2) {digitalWrite(led3,LOW);}
                 }

          
if(estados1==LOW&&temp222>1&&temp333>1&&temp111==1){temp3++;} else {temp3=0;temp4=0;}

  if(temp3 == 1){temp4=1;
                 tempp2=millis();
                 cont3 = tempp2+ ret1;
                 cont4 = tempp2+ ret2;
                 }
                 
               

  if (temp4 == 1 ){digitalWrite(led1,HIGH);
                   if (millis()>= cont3) {digitalWrite(led2,HIGH);}
                   if (millis()>= cont4) {digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);
                  } temp111=0;
                  }






          


if (estados2==HIGH&&estados1==LOW&&estados3==LOW) { temp5++; temp222=0;} else{temp5=0;temp6=0;temp222++;}
if (temp5 == 1&&estadoldr<lumenes){temp6=1;
                tempp3 = millis();
                
                cont5 = tempp3+ ret1;
               }

                
  
if (temp6 == 1) {digitalWrite(led4,LOW);digitalWrite(led2,LOW);
                 if (millis()>= cont5){digitalWrite(led1,LOW);digitalWrite(led3,LOW);}
             
                 }

          
if(estados2==LOW&&temp111>1&&temp333>1&&temp222==1){temp7++;} else {temp7=0;temp8=0;}

  if(temp7 == 1){temp8=1;
                 tempp4=millis();
               
                 cont6 = tempp4+ ret1;
                }
               

  if (temp8 == 1 ){digitalWrite(led1,HIGH);digitalWrite(led3,HIGH);
                   if (millis()>= cont6) {digitalWrite(led2,HIGH);digitalWrite(led4,HIGH);}
                   temp222=0; 
                   
                  

                  }  




                  


   if (estados3==HIGH&&estados2==LOW&&estados1==LOW) { temp9++;temp333=0; } else{temp9=0;temp10=0;temp333++;}
if (temp9 == 1&&estadoldr<lumenes){temp10=1;
                tempp5 = millis();
                cont7 = tempp5+ ret1;
                cont8 = tempp5+ ret2;
               
                }

                
  
if (temp10 == 1) {digitalWrite(led4,LOW);digitalWrite(led3,LOW);
                 if (millis()>= cont7){digitalWrite(led2,LOW);}
                 if (millis()>= cont8) {digitalWrite(led1,LOW);
                  }
                 }

          
if(estados3==LOW&&temp111>1&&temp222>1&&temp333==1){temp11++;} else {temp11=0;temp12=0;}

  if(temp11 == 1){temp12=1;
                 tempp6=millis();
                 cont9 = tempp6+ ret1;
                 cont10 = tempp6+ ret2;
                }
                 
               

  if (temp12 == 1 ){digitalWrite(led3,HIGH);
                   if (millis()>= cont9) {digitalWrite(led2,HIGH);}
                   if (millis()>= cont10) {digitalWrite(led1,HIGH);digitalWrite(led4,HIGH);}
                    temp333=0;
                   
                  }
          
               
                   
    }

También he probado en quitar los digitalWrite en el Setup...

Muchas gracias!!

Hi,
El mcuV3 tienes que tener cuidado pues no puedes usar todo los pines. Solamente puedes usar los que tiene el numbre empezando con GPIO. Eso es uno de los problemas que tiene. La mayorias de los pines estan dedicados a ciertas funciones y son los que tienen diferentes colores. Adjunto el dibujo o sketch de los pines de salidas. Solamente puedes usar los que tiene el cuadro blancos y que empiezan con GPIO.

Hola!! Todos los pines que estoy utilizando io, son gpio...

Siempre el mismo tema con lo que un módulo como el LOLIN u Arduino puede hacer.
Todos los dispositivos tienen limitaciones de corriente. Miren su regulador y verán que no puede entregar grandes cantidades de corriente.
Si dices tener 3 RELES hablas entonces de 4x60 o 65mA = 240 a 260mA.
El ESP de por si necesita 200mA para sus momentos TX de modo que ya estamos en casi 450mA.

A donde voy con este detalle? PUes que usa el ESP para generar control no para alimentar dispositvos que requieran mucha corriente. Si es el caso, considera una fuenta que entregue los 5V necesarios por fuera del ESP y comparte GND como hemos dicho infinidad de veces.

Prueba del modo que te digo y nos comentas si siguen los problemas de reinicio.

Hola!! Lo estoy alimentando desde los 5 v del módulo, supongo que esos 5 v salen del regulador que comentas , lo modificaré... ¿haría falta algún transistor para dar señal a esos relés o como dices tú dándole alimentación con esos 5 voltios de otra fuente y compartiendo gnd?

Muchas gracias!!

No hace falta nada. Solo alimenta el LOLIN por un lado, comparte GND y los RELES con otra fuente de 5V.

Vale perfecto Gracias!! Ya funciona así..