Problema con señal de arranque en 8266

Hola, tengo una duda para conectar el gpio2 de un esp-01s.
Tengo que controlar cuando se enciende (o se apaga) una bombilla de 12v y enviarlo a una cuenta telegram. Había pensado en una división de tensión a 3.3v. El problema estriba en que, según tengo entendido, el esp debe arrancar con el gpio2 a high que ya dispone de resistencia interna pull-up. Es decir, tengo que invertir el valor de la bombilla encendida. He pensado en un transistor a gnd, pero.....

¿alguna idea de como cambiar los +12v a low y que los 0v no tengan 12V (o 3.3V) para que la resistencia interna marque high?

Saludos y gracias

bosoft:
...que los 0v no tengan 12V ...

:o

Un optoacoplador.
Los 12VDC alimentan via una resistencia el led de un optoacoplador y del lado del fototrasistor tu lees su estado.

Te has expresado mal bosoft. Te hago la corrección porque vale la pena el comentario.
Cuando se habla de controlar es que tu con el ESP vas a controlar la bombilla.

Tengo que controlar cuando se enciende (o se apaga) una bombilla de 12v y enviarlo a una cuenta telegram.

Acá quieres decir eso pero luego lo que pides tiene que ver con leer el estado de la bombilla.

Este es un posible esquema

El fototransistor es discutible.
Puede ser un 4N25 o cualquiera de la serie 4N25. El indicado tmb puede ser.
Como verás por un lado tienes 12V y por el otro 5 pero puedes usar 3.3V y en lugar de 10k bajas a 4k7 o 3k3 para asegurarnos.

Un pulso de 12V o sea HIGH en el LED será un LOW en el fototransistor o para leer con el ESP
Un 0V o LOW en el LED será un HIGH en el fototransistor, o a la entrada del GPIO.

Si quieres que HIGH sea HIGH y LOW sea LOW, mueve la resistencia al emisor del fototransistor.
O sea.. 3.3V al colector del fototransistor. El emisor del fototransistor a la resistencia y al pin GPIO
EL otro extremo de la resistencia a GND.
Listo un HIGH sera HIGH y un LOW sera LOW.
Pero nada que un poco de programación no resuelva.

surbyte:
Te has expresado mal bosoft. Te hago la corrección porque vale la pena el comentario....

Pues eso parece.
Veamos: quiero que cuando se encienda una bombilla de 12V la cual no controlo, me mande un mensaje telegram desde un ESP01s.
¿El problema? que cuando arranca el ESP, el GPIO2 no debe ser LOW y para ello el gpio dispone de una pullup interna.

Gracias por tu gran explicación surbyte.

El tema sería:
cuando lleguen los 12V a la bombilla, con el fototransistor le mando GND al ESP.
cuando la bombilla esté apagada, el transistor no debería transmitir nada y ser la pullup interna a 3.3V la que reciba el GPIO.

Voy a por el fototransistor.

Saludos y muchas gracias

Mira este código?

const int BUTTON=2;
const int LED=0  ;
int BUTTONState=0;
void setup() {
  // put your setup code here, to run once:
pinMode(LED,OUTPUT);
pinMode(BUTTON,INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
BUTTONState=digitalRead(BUTTON);
if(BUTTONState==HIGH)
{
  digitalWrite(LED,HIGH);
}
else
{
  digitalWrite(LED,LOW);
}
}

La pregunta es, ese pin GPIO02 funciona correctamente con un pulsador? Claro que si.
Si lo hace bien con un pulsador porque lo hará mal con tu detector de Lámpara?
Solo dale tiempo en el setup para estabilizar funciones y que nada complique el comportamiento enviando avisos por Telegram que no quieres.
Has pruebas simples de este modo con un pulsador y cuando te convenzas sigues con el opto.
Te aseguro que funciona bien.

Quieres exprimir mas al ESP01? Acá tienes, esta guía me sirvió mucho a mi al comienzo de su uso.
link

Gracias de nuevo surbyte pero creo que hay algo que se te está escapando.
Si al botón lo alimento con +12V (igual que la bombilla), tengo que hacer un divisor de tensión. Cuando el botón no está pulsado (bombilla apagada) al arrancar el ESP, le da 0V al GPIO2 y el ESP se vuelve loco. Si desconecto el gnd del divisor y de la bombilla al arrancar el ESP, todo funciona correcto. Es bombilla de filamento (no puedo cambiarla), por lo que me pasa el gnd a través de la resistencia del divisor que unido a la otra resistencia a gnd.....

Haré unas pruebas con un fototransistor y con un transistor simple y os voy contando.
Las primeras pruebas las hice con un relé que conectaba a gnd el GPIO2 al activar la bombilla (y el relé de 12V) y funcionó. El HIGH lo hace al tener el pin libre a través de la pullup interna. Pero me pareció chapucero

Gracias por el link.

Saludos y gracias de nuevo

PD: por aclarar algo mas. Se trata de un ESP01S que lleva la pullup interna siempre activa

El opto como en el diagrama que te puso @surbyte deberia funcionarte perfectamente.
Solo no pongas la resistencia pullup que ya la tiene el esp.

Una duda, los 12V son de continua o alterna?
Porque si es alterna vas a tener que poner un puente rectificador.

Edito: el diodo del opto tendrías que ingresarle la señal por la resistencia del cátodo y conectar el ánodo a masa para que trabaje como inversor.

Gracias gatul por tu ayuda
Si, son 12V en continua.
Hago las pruebas en cuanto tenga unos minutos (y los materiales) y os cuento

Saludos

Si al botón lo alimento con +12V (igual que la bombilla), tengo que hacer un divisor de tensión. Cuando el botón no está pulsado (bombilla apagada) al arrancar el ESP, le da 0V al GPIO2 y el ESP se vuelve loco. Si desconecto el gnd del divisor y de la bombilla al arrancar el ESP, todo funciona correcto. Es bombilla de filamento (no puedo cambiarla), por lo que me pasa el gnd a través de la resistencia del divisor que unido a la otra resistencia a gnd.....

Porque no haces un esquema. Sencillamente hablando no se entiende un foro de electrónica y/o programación.

Puedes tener un boton a 12V con el que prendes/apagas una lampara de 12VDC okay.
también puedes tener un optoacoplador tal que cuando prendas dicho boton haga lo que te he indicado con el esquema anterior.
Entonces son dos circuitos uno para la lámpara y otro que enciende un LED con 12V a través de una Resistencia que ya te dije como calcular.
El segudo esquema del opto es el que le informa al micro sobre el estado del pulsador/switch/boton de 12V.

Se entiende?

Hola de nuevo. Voy a ver si me explico con 2 esquemas.
El primero no funciona aunque pareciera que si. El no funcionar es debido a la conexión a masa tanto de la bombilla de filamento como la resistencia de 33K del divisor. Entre ambas superan a la pullup interna del ESP01S y arranca con el pin GPIO2 en low. ¿Resultado? se vuelve loco y no funciona.

El segundo es mi idea inicial (seria lo mismo con un fototransistor). Ese esquema deriva de poner un relé de 12V (sustituyendo al transistor) y enviando la señal al GPIO low al activar el relé (luz encendida) y dejando libre la conexión al desactivar. Con el relé funcionó correctamente en pruebas, pero, como ya dije, me pareció algo chapucero.

La prueba con transistor o fototransistor la realizaré en unos días

Saludos y gracias

esp2.jpg

esp2.jpg

¿Por que estas utilizando GPIO2 para una entrada? En el Esp 01 se utilizan (generalmente) los GPIO3 Y GPIO1 como entradas y GPIO0 y GPIO2 como salida, para evitar que el sistema entre en diferentes modos de booteo..
Saludos.

Hola PeterKantTropus
Estoy todavía en pruebas y, si no estoy equivocado, esos 2 pins son los que se usan para Rx y Rx. De momento necesito ver el puerto serie para arreglar los errores. Corrígeme si estoy equivocado

Gracias por tu puntualización PeterKantTropus

Si son usados por la comunicación serie, pero generalmente no se utilizan en la versión final del dispositivo, entonces ¿por que preocuparse y montar hardware adicional si puedes utilizarlo en el prototipo final ? Has todas las pruebas con GPIO0 o 2 sin importante que ocasionalmente falle o poniéndole un swich.

Es que, literalmente, ni he conseguido arrancar. Además de la falta de tiempo y algún que otro material.
Hice una prueba simple con un relé y arrancó (solo eso). Pero después de eso, al quitarle el relé, nada de nada
He ido averiguando poco a poco, pero necesito si o si el serial. Y estoy todavía al inicio en proto board. Una vez lo tenga todo claro y programado, podré conectar donde quiera.

Gracias y saludos

Hablando de tu esquema.
La primera configuración, desde ya que no te sirve porque no es inversora, con esos valores de resistencia creo que nunca pasa de LOW.
La segunda, con transistor, debería funcionar sin problemas siempre que esté activa la resistencia pullup interna (yo de terco igual pondría 10K en colector).
¿Probaste reducir la resistencia de base?
Me parece que está muy al límite, no hice los cálculos pero 4K7 creo que iría mejor.

Gracias gatul
El primer esquema tiene el problema de que siempre esta low con la bombilla apagada y bloquea el esp al arrancar. Y si, el problema del ESP01s es que siempre tiene la resistencia pullup activada.

El segundo, como digo en el post, no le he probado todavía. De hecho, hice la primera prueba con un relé para ver si el esp arrancaba correctamente y evitar bajar a 3.3V la entrada al gpio. Y ahí estoy todavía por falta de tiempo.

Saludos y gracias

Ah, creí leer que ya lo habías probado sin resultado..
Entonces, no dije nada. :wink:

Bueno ahora que hablamos el mismo idioma (te hice trabajar bosoft, jajaja) podemos continuar la idea.
Ya presta atención a la recomendación de PeterKanTropus. Asi que ajusta tus GPIOx de trabajo.

Tal como te dije y ahora quiero explicarlo mejor.
En tu primer o segundo esquema tienes tu boton que enciende la lámpara 12VDC. Okay hasta ahi.
Ahora olvida las dos opciones, divisor de tensión y transistor.

Agrega ahora el optoacoplador, R y led del opto al pulsador.
Cuando lo presiones le llegará 12V a la R del opto y tendras del otro lado el nivel adecuado.
Ya te expliqué que puedes usar versión inversor o versión no inversor con el opto.

Eso funciona. Inconveniente el agregado del opto y sus componentes.
Con 1k en el lado 12V tendras 12mA que es nada para algo de 12V y suficiente para el led del optacoplador.

Se entiende o no te gusta la idea?

Gracias surbyte, pero el pulsador esta puesto ahí para pruebas. En la instalación real he sacado los 2 hilos desde el portalámparas de la bombilla sin quitar la bombilla, puesto que la maquinita se para cuando de funde o se quita, y no me preguntéis como. Debo hacer la conexión tal cual los esquemas. Y como ya dije, el opto supliría al transistor, que supliría al relé que suple al divisor (uff que lio)

En unos días me podré en ello porque ya me están apretando, pero he pedido unos componentes adicionales para hacer las pruebas, dcdc de 12v a 3.3v, zócalo para ESP01, opto, etc, y están tardando mas de lo habitual.

Saludos y gracias

Otra alternativa, si tienes el GPIO0 libre, es utilizarlo como enable de la señal de entrada de GPIO2 ( de elegante nada, pero funcionara). Utilizas el GPIO0 para habilitar un transistor, optoaclopador o un relé desde el setup , y de esa manera habilitar la entrada de GPIO2.
Saludos.