Estoy tratando de implementar un "pulsador de botones" con algunos transistores controlados por un módulo ESP-01, para presionar los botones de un control remoto. Tengo un problema en el que si los GPIO (estoy usando 0, 2 y 3) están conectados a la base del transistor (a través de una resistencia de 1 k) cuando aplico energía, el ESP no se iniciará y los transistores (2n2222) están en el estado on. La luz roja se enciende, la luz azul parpadea brevemente, pero los LED con los que estoy probando los transistores están encendidos y ESP nunca comienza a transmitir su red. Si desconecto los pines GPIO 0, 2 y 3, enciendo el ESP, luego los reconecto, entonces todo funciona bien hasta que se reinicie. Aquí hay una parte del circuito, el real tiene 3 transistores, pero todos están configurados de la misma manera.
Y aquí está mi código:
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
const char *ssid = "RemoteControl";
const char *password = "********";
const int button1 = 0;
const int button2 = 2;
const int button3 = 3;
const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 1, 1);
DNSServer dnsServer;
ESP8266WebServer webServer(80);
String webpage = "<!DOCTYPE html><html><head><title>Remote Control</title><meta name='mobile-web-app-capable' content='yes' /><meta name='viewport' content='width=device-width' /><script type='text/javascript'>var eventLocked=false;function handleEvent(button){if(eventLocked||button>3){return;}var params='b='+button;var req=new XMLHttpRequest();req.open('POST','?'+params,true);req.send();eventLocked=true;req.onreadystatechange=function(){if(req.readyState==4){eventLocked=false;}}}</script></head><body style='margin: 0px; padding: 0px;'><button onclick='handleEvent(1)' style='width:100%;'><h1>1</h1></button><br><br><button onclick='handleEvent(2)' style='width:100%;'><h1>2</h1></button><br><br><button onclick='handleEvent(3)' style='width:100%;'><h1>3</h1></button></body></html>";
void handleRoot() {
String button = webServer.arg(0);
switch(button.toInt()) {
case 0:
// initialize webpage
digitalWrite(button1, LOW);
digitalWrite(button2, LOW);
digitalWrite(button3, LOW);
break;
case 1:
digitalWrite(button1, HIGH);
delay(250);
digitalWrite(button1, LOW);
break;
case 2:
digitalWrite(button2, HIGH);
delay(250);
digitalWrite(button2, LOW);
break;
case 3:
digitalWrite(button3, HIGH);
delay(250);
digitalWrite(button3, LOW);
break;
}
webServer.send(200, "text/html", webpage);
}
void setup() {
pinMode(button1, OUTPUT);
pinMode(button2, OUTPUT);
pinMode(button3, OUTPUT);
digitalWrite(button1, LOW);
digitalWrite(button2, LOW);
digitalWrite(button3, LOW);
delay(1000);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP(ssid, password);
dnsServer.start(DNS_PORT, "remote", apIP);
webServer.on("/", handleRoot);
webServer.begin();
}
void loop() {
dnsServer.processNextRequest();
webServer.handleClient();
}
¿Hay algo que estoy haciendo mal o es algo inevitable con el ESP en sí?