Error Monitor Serie y conexión con botón

Hola,

Estoy empezando con esto del Arduino porque quiero hacer esto con mis persianas y Alexa: https://www.instructables.com/id/How-to-Connect-Your-Somfy-Remote-to-Alexa-With-an-/

Ya tengo el código y todo preparado, pero tengo dos problemas:

  • ¿Porque no me sale el texto completo en el Monitor Serie?

  • ¿Cómo puedo saber en que pata del pulsador tengo que soldar la salida del ESP?

Gracias y un saludo,

Primer porque no esta conectando a tu red WIFI.

// Connect
    Serial.printf("[WIFI] Connecting to %s ", WIFI_SSID); // <== ESTO SE EJECUTO
    WiFi.begin(WIFI_SSID, WIFI_PASS);
	
    // Wait
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");                                                 // <== ESTO SE ESTA VIENDO 
        delay(100);
    }

El ultimo comentario es el que dice que no se ha conectado, cuando lo haga, entonces no aparecerán los …
Revisa SSID y password

Capi666:
¿Cómo puedo saber en que pata del pulsador tengo que soldar la salida del ESP?

Toma un multimetro y mide la resistencia entre las patas sin apretar botón y con apretar el botón. Así puedes encontrar las patas correctas.
Pero quita antes las pilas del mando.

@surbyte
Hola,

Si revisas el código en grande, se puede ver que se conecta y aparece [WIFI] pero falta el resto de "Conexión realizada con éxito". Al final era un problema de los PINs, estaba usando el PIN D9 y D10; los he quitado y ya sale todo...

Gracias y un saludo,

ElEspanol:
Toma un multimetro y mide la resistencia entre las patas sin apretar botón y con apretar el botón. Así puedes encontrar las patas correctas.
Pero quita antes las pilas del mando.

Hola,

He encontrado la pata negativa, donde se supone que debe ir la salida del ESP; ¿correcto? Pero he simulado eso haciendo un empalme con un cable conectando directamente al positivo de la pila y el botón no se enciende; ¿porque?

Gracias y un saludo,

Hola @Capi666, yo te respondí (ver post#1) porque en tu imagen inicial solo se ven los ...... tipico cuando se busca WIFI y no se encuentra o no conecta.
El código no lo vi, porque en este foro esperamos que los códigos se posteen aquí.
Ahora bien, tu problema puede deberse a que tarda en conectarse ya que nos confirmas que si lo hace.
Cuando salga de la conexión deberías tener un

Serial.println();

para que en el monitor serie pases de ............................ a la siguiente linea.
No se si eso te resolverá el problema

Me he mirado por encima el instructable. Esta bastante mal hecho en asuntos basicos. Solo intenta conectar en el setup(). Muchas veces los ESP no quieren conectar. Por eso hay que contar el tiempo y después de tantos segundos sin exito resetear el uC. Y luego, en loop(), también hay que comprobar si esta conectado y si no, después de tantos segundos sin conexión, resetear.

Y como último, con el delay el uC bloquea y no se puede cancelar el comando y parar la persiana.

@ElEspanol
Que fue lo que yo pensé, pero resulta que el OP dice que si se conecta.
Como el titulo era "Error Monitor Serie" me pareció que la cosa venía por ahi.

Son los primeros posts del OP, se ha dado de alta en el foro hace 3 días. Por lo tanto supongo que aún no tiene mucha experiencia. Por eso siempre esta bien, explicar un poco más y que ya desde el principio haga mejor. Porque si no, terminamos con tutoriales y instructables como este.
y en el próximo paso tiene que incluir OTA en sus sketches. Porque OTA y una rutina para mantener la conexión wifi es básico si se trabaja con ESP.

@ElEspanol, @surbyte

Hola,

Muchas gracias a los dos… Al decir que si habías mirado el código me refería a la imagen, porque era curioso, si conectaba pero no salia todo el contenido que había dentro del println, sólo la primera palabra.
Al final el problema fue que estaba usando el D9 y D10 y parece que no le gustaba.

Donde tengo ahora el problema es en donde y como soldar la salida del PIN del ESP a una de las patas del botón del mando… He probado de todo y no consigo que se simule una pulsación, se OS ocurre algo?

Gracias y un saludo,

Para comenzar tu mando tiene una masa o GND y luego tiene el otro lado del pulsador.
Lo primero que debes hacer es identificar GND. Retira las baterias que tenga.
Usando un multimetro y con el selector en OHMS o Resistencia elije la escala mas baja, generalmente 200.0 , coloca la punta negativa en el termina (-) y busca aquel terminal del pulsador que te de lo mas proximo a 0. Tal vez no sea 0.0 y leas 0.3 lo que estará bien.

Luego revisa el resto de los otros 3 terminales del mismo pulsador. 1 será igual que el que acabas de medir y los otros daran resultados diferentes.
Los diferentes son el extremo que debes usar para accionar el ESP, pero antes hay que verificar la tensión del control remoto cuando pulses. No se si tienes 1 o 2 baterías.
Con 1 bateria no creo que sea suficiente, con dos si.

Espero tus comentarios.

@surbyte
Hola,

Te adjunto una imagen de como es mi pulsador… Si junto cualquier pata positiva con cualquier pata negativa el botón se acciona.

En el momento de pulsar el botón todas las patas bajan a 0v o 0,03v.

He probado a poner la señal del esp sobre cualquier pata y el botón no se acciona.

Alguna idea?

Gracias y un saludo,

Tienes que conectar gnd del esp con el gnd del mando también.
¿Que voltaje mides entre las patas del botón si no esta apretado?
¿Que voltaje tiene la batería del mando?

@ELEspanol

Conecto el gnd y el 3V del ESP sobre el mando.

El voltaje entre las patas son 3V si cojo una pata + y una pata -

La batería del mando es la típica de botón, de 3V

¿Alguna idea?

Gracias y un saludo,

Si,
Parece que el botón está conectado entre gnd y entrada, con pullup.
Entonces p.e. Cojes el GPIO2 y lo conectas al +pin del mando.
Con digitalWrite(2, LOW) “apretas” el botón, con digitalWrite(2, HIGH) desactivas el botón.
Conecta una led de control con su resistencia entre 3,3V y el GPIO2, así verás Si tu sketch trabaja bien.

@ELEspanol

Nada, al final he usado optó acopladores para hacer activar el botón, la señal directa sobre una pata era imposible

Por otra parte, arriba me comentas que el código esta bastante mal hecho en dos aspectos:

  • Solo intenta conectar en el setup() --> ¿si en el loop hago un if que compruebe si esta conectado o no se solucionaría? ¿constantemente ese if o por tiempo? ¿cómo reseteo el uC?

  • Con el delay el uC bloquea y no se puede cancelar el comando y parar la persiana --> no entiendo esto.

Mi última versión de código:

void loop() {
  // Nos quedamos esperando peticiones todo el tiempo...
  fauxmo.handle();

  // This is a sample code to output free heap every 5 seconds
  // This is a cheap way to detect memory leaks
  static unsigned long last = millis();
  if (millis() - last > 5000) {
      last = millis();
      Serial.printf("[MAIN] Free heap: %d bytes\n", ESP.getFreeHeap());
  }

  if (estadoDispositivos[0]==true) { // Persiana
    Serial.println("ENTRO");
    delay(1000);
    Serial.println("DESACTIVO");
    digitalWrite(PIN_1, LOW);
    estadoDispositivos[0] = false;
  }
...
...
}

void wifiSetup() {
  // Configuramos modo de wifi (estación)
   WiFi.mode(WIFI_STA);

   // Realizamos la conexión
   Serial.println ();
   Serial.printf("[WIFI] Conectando con %s ", WIFI_SSID);
   Serial.println();
   WiFi.begin(WIFI_SSID, WIFI_PASS);

   // Esperamos a que la conexión esté lista
   while (WiFi.status() != WL_CONNECTED) 
   {
      Serial.print(".");
      delay(1000);
   }

   // Conexión realizada
   Serial.println("[WIFI] Conexión realizada con éxito");
   Serial.println();
   Serial.printf("[WIFI] Modo estación, SSID: %s, Dirección IP asignada: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());
   Serial.println();
}