Paso 4: Otro truco – conducir un relé y un pulsador usando GPIO0 de lectura / GPIO2
Aquí es otra manera de configurar los pines. Nota: Este truco sólo funciona si tienes un módulo de relé con una entrada aislada (N1 y N1-com). Debido a esta limitación y la complejidad del código de soporte, el ejemplo anterior, utilizando RX como entrada, es preferible.
Utilizando ESP8266 GPIO0/GPIO2/GPIO15 pins ha cubierto ya cómo usar GPIO0/GPIO2 juntos para obtener un extra entrada. Aquí se extenderá ese ejemplo para utilizar GPIO0 como una salida de relé controlador GPIO0/GPIO2 como entrada.
Aquí es el esquema en formato pdf.
Aquí GPIO0 se utiliza como salida para el relé y GPIO0/GPIO2 se utiliza como entrada para leer el pulsador momentáneo que se utiliza como una invalidación manual para activar el relé de encendido y apagado, además del control remoto sobre la conexión WiFi. También se utiliza el pulsador momentáneo para activar el modo de configuración si es prensa cuando se aplica energía.
El truco aquí es hacer todo esto mientras se mantiene GPIO0 y GPIO2 alto cuando se está inicializando el módulo ESP8266.
Las resistencias de pull-up R1 y R3, proporcionan el alto necesario para estos pasadores, pero usted tiene que asegurarse de que cualquier circuitería extra al GPIO0 y GPIO2 no puede no tirar pernos bajo. El relé ópticamente aislado está conectado entre el + 3, 3V y GPIO0. Este sigue GPIO0 alta en marcha pero permite GPIO0 una salida, después de la puesta en marcha, y el relé de entrada para operar el relé de tierra. No importa si el pulsador momentáneo es operado mientras está iniciando el módulo, ya sólo conecta GPIO0 a GPIO2 y conectar ambos a su enderezamiento.
Detección de configuración de modo
Utilizando el ESP8266 como un punto de acceso temporal que usted puede configurarlo a través de una página web como se describe aquí. Parte de ese proceso es utilizar un botón o enlace de cortocircuito, de poder indicar al software que usted quiere entrar en el modo de configuración.
Una vez que se inicializa el módulo de ESP8266, se ejecuta el código setup() . En ese código detectar que si se presiona el pulsador momentáneo, usted necesita no hacer GPIO0 baja a una toma de tierra para pulsar el botón y luego comprobar el GPIO2 entrada a ver si lo bajo. Un efecto lateral de este cheque es que el relé siempre será operado cuando la unidad está en modo de configuración. Una vez que vea el relé funciona usted puede puede liberar el pulsador, ya que su entrada haya sido detectada por entonces. Aquí le damos algunos ejemplos del código para hacer esto en el setup()
Detectar el botón de anulación Manual
La sección anterior cubierto cuando se presionó el botón de empuje en el poder hasta activar el modo config. También queremos utilizar ese botón como un alumbrado para dar vuelta el relé de encendido y apagado además de ser capaz de controlar el relé vía WiFi.
El WiFi control del relé no está cubierto, pero puede fácilmente ser hecho usando pfodApp. Ver Generador de menú de OLIMEX para cómo generar código de Arduino con pfodDesigner para ESP8266 módulos.
Esta sección tratará sobre cómo detectar cuando se pulsa el botón, indicando que el usuario quiere cambiar el relé, es decir, apagarlo es o encender si está apagado. El esquema es el mismo que el anterior, todos los trucos en el código. Hay dos casos a considerar:-
- El Relais está apagado y el usuario quiere activar utilizando el pulsador,
- El relé está activado y el usuario quiere apagarlo utilizando el botón.
El Relais está apagado y el usuario quiere activar usando el botón.
En este caso la salida de GPIO0 es alta. GPIO0 puede ser en realidad que una entrada en este caso ya la tire para arriba del resistor R1 asegurará el relé no se activa. Ese es el truco. Este GPIO0 una entrada y GPIO2 salida baja y luego cuando el usuario presiona el botón, se suceden dos cosas: - a) el relé se enciende debido al suelo proporcionado por GPIO2 mediante el pulsador y b) el GPIO0 de la entrada irá bajo. El código comprueba el estado de la GPIO0 de entrada y cuando pasa bajo que el código sabe el uso ha presionado el pulsador y quiere que el relé a. El código entonces hace GPIO0 una baja salida para mantener el relé en cuando se suelta el botón.
El relé está activado y el usuario quiere apagarlo utilizando el botón.
En este caso, siguiendo el caso anterior, GPIO0 es un bajo de salida con el encendido del relé. Ahora para este caso hacer GPIO2 insumo (levantado por R3) y luego cuando el usuario presiona el botón de la entrada GPIO2 tira bajo la salida baja de GPIO0. Cuando el uso libera el pulsador el código detecta la baja a la transición de alta y luego hace GPIO0 una aportación, que libera el relé debido al tirón hasta resistencia, R1 y hace GPIO2 una baja salida de establecer para el caso) por encima.
Un truco más. Para el caso ii) necesitamos GPIO2 como entrada que detecta un bajo transición alta para desactivar el relé. Pero si hacemos GPIO2 y entrada al final del caso me) luego llegaremos a baja o alta transición como el usuario suelta el botón presiona a para activar el relé. Para evitar que el relé apagado inmediatamente, la primera baja a alta transición después de encender el relé será ignorado como lo es sólo al usuario liberar el botón pulsador presiona para encender el relé.
Loop() muestra código de relé Manual over-ride
En este código estoy ignorando la debounce interruptor para simplicidad. Las entradas deben ser debounced en cualquier aplicación real.
El código de ejemplo está aquí, ESP8266_01pinMagic_1.ino
Otra vez esto deja el TX / RX de los pernos disponibles para el uso como otros I/O o depuración serie
Conclusión
Esta página muestra cómo obtener el máximo de los pernos limitados disponibles en el ESP8266-01. Con GPIO0 / GPIO2 como un bus I2C da la mayor expansión, pero si el proyecto no utiliza I2C, todavía puede manejar un relé y detectar un pulsador de entrada utilizando GPIO0 / GPIO2. En cualquiera caso TX / RX están también disponibles para la depuración de la serie o si envía declaraciones de impresión de depuración sobre el WiFi link, estos pernos están disponibles para la entrada-salida general así...