botón que despierta el esp8266 del sueño profundo, pero se puede usar como botón común

1

El objetivo es tener un botón que despierte el esp8266 de la suspensión profunda, pero se puede usar como un botón común mientras se ejecuta el código. Este es un seguimiento de una pregunta no resuelta de Arduino SE.

esp8266 puede activarse desde el sueño profundo conectando el pin de reinicio a tierra. Para el sueño profundo temporizado, esp8266 usa io 16 para restablecer LOW para despertarse, por lo que io 16 debe estar conectado para restablecer el pin para que funcione el sueño profundo temporizado.

io 16 es una opción lógica para nuestro botón. En esta configuración, el botón está conectado a io 16 y el restablecimiento despierta un esp8266 en reposo, pero restablece un runnig esp8266. por lo tanto, debemos desconectar el pin de reinicio del io 16 (y el botón) mientras se ejecuta el código o asegurarnos de que el pin de reinicio se mantenga en ALTO incluso si el botón conecta el pin 16 a tierra.

simular este circuito : esquema creado usando CircuitLab

(io 16 no tiene un pullup interno, por lo que se necesita un pullup externo)

¿Qué circuito es adecuado para esto?

    
pregunta kamen

1 respuesta

1

Lo primero que me viene a la mente cuando veo una pregunta similar a esta es un diode . En este caso, un diodo puede "habilitar". O ... un BJT.

simular este circuito : esquema creado usando CircuitLab

Querría que \ $ R_2 \ $ sea 10X el valor de \ $ R_3 \ $ . Por lo tanto, probablemente recomiendo \ $ R_1 = R_3 = 1 \: \ text {k} \ Omega \ $ y \ $ R_2 = 10 \: \ text {k} \ Omega \ $ , como una estimación inicial de los valores a considerar (o intentar).

Establezca IO X en activo-LO cuando desee desactivar el RST controlado por el interruptor.

Los procesadores salen de reinicio con sus pines IO como entradas de alta impedancia. Por lo tanto, en el caso de que aún no haya tenido tiempo de configurar IO X , ya que acaba de salir de RESET, el interruptor aún reiniciará el procesador.

Una vez que tenga tiempo para configurar la actividad de IO X , puede asegurarse de que esté configurado en cualquiera de estos:

  1. RST deshabilitado: configure IO X como una salida programada para activo-LO.
  2. RST habilitado: configure IO X como una entrada o bien una salida HI activa muy débil (si es posible en su procesador).

Esto le permite controlar la actividad del conmutador y deshabilitar su funcionalidad RST cuando está en funcionamiento y lo quiere deshabilitado. En cualquier caso, el comportamiento de IO 16 no se ve afectado.

Aquí hay una simulación del circuito:

Novoyaresponderporlosgrandescoloresaquí.Perocreoquetienesentido,

Latrazainferior(azuloscuro)eslaactividaddelconmutadorensí.EsHIcuandosepresionaactivamenteelinterruptor.EsLOcuandosesueltaelinterruptor.(EstaesunalíneadecontrolqueestoyusandosoloparalasimulacióndeSpice.Asíquetenloencuentaalinterpretarla).

Elsiguienterastreo(¿magenta?)eselcomportamientodelalíneaIO16.Comopuedever,respondedirectamenteysiemprealacondicióndelatrazainferior.Nuncaestábloqueadooinhibido.Simplementesigueelcomportamientodelconmutadorensí.

Elsiguienterastreo(rojo)representasulíneadecontrol,IOX.EsHIparaelcaso#1arribayLOparaelcaso#2arriba.LacondiciónLOrepresentaelcasodondeRSTestáhabilitado.LacondiciónHIrepresentaelcasodondeRSTestádeshabilitado.(Siobservaelesquema,heagregadounaresistencia \ $ 100 \: \ Omega \ $ para representar la impedancia de salida típica de un pin IO, cuando LO.)

La traza superior (verde) representa la actividad de la línea RST en respuesta a las trazas debajo de ella. Como puede ver, solo está habilitado de forma activa para responder al estado del conmutador cuando se produce un conjunto específico de condiciones, como creo que desea aquí.

    
respondido por el jonk

Lea otras preguntas en las etiquetas