zix07
New member
Здравствуйте. Прошу помощи или куда копать. Есть собственно плата esp-01, есть собранная на стенде схема:
К этой схеме повешена кнопка обычная между GPIO2 и GND - по логике, если я вывожу из глубокого сна контроллер путем нажатия на кнопку (показана на схеме выше), и если нажата кнопка GPIO2 - то отослать GET-запрос. Контроллер помещаю в бесконечный глубокий сон (0 в параметре deepSleep).
С2 - видимо ошибка на схеме, я взял на 100мкФ. 16 нога припаяна к Reset, дежурный светодиод выпаян:
Подаю от качественного лабораторника 5В на MCP1700, на выходе порядка 3.27-3.3В. С дежурным LED потребление 1мА, без него 0.7мА. Есть скетч:
Если схему подключать через AMS1117, то потребление 4мА. Если подключить напрямую от лабораторника, то потребление порядка 0.4мА. Ток старта (загрузки) микроконтроллера порядка 70ма. Тут писали потребление несколько-десятков микроампер. Не могу добиться этого. Батарейку высадит очень быстро при таком потреблении. Буду благодарен за любые наводки в правильную сторону.
К этой схеме повешена кнопка обычная между GPIO2 и GND - по логике, если я вывожу из глубокого сна контроллер путем нажатия на кнопку (показана на схеме выше), и если нажата кнопка GPIO2 - то отослать GET-запрос. Контроллер помещаю в бесконечный глубокий сон (0 в параметре deepSleep).
С2 - видимо ошибка на схеме, я взял на 100мкФ. 16 нога припаяна к Reset, дежурный светодиод выпаян:
Подаю от качественного лабораторника 5В на MCP1700, на выходе порядка 3.27-3.3В. С дежурным LED потребление 1мА, без него 0.7мА. Есть скетч:
Код:
#include <ESP8266WiFi.h>
#include <Bounce2.h>
const char* ssid = "WiFi_SSID";
const char* password = "WiFi_pass";
const char* server = "IP_address";
const char* resource = "URL_PATH";
#define PIN_BUTTON 2
bool buttonPressed = false;
Bounce debouncer = Bounce();
//byte butState = LOW;
//unsigned long msecLst;
void setup() {
Serial.begin(9600);
buttonPressed = false;
// debouncer
pinMode(2, INPUT_PULLUP);
debouncer.attach(PIN_BUTTON);
debouncer.interval(5); // Интервал, в течение которого мы не будем получать значения с пина
#define Timeout 3000
Serial.println("awakening...");
unsigned long start = millis();
while (millis() - start <= Timeout) {
//int buttonstate = digitalRead(buttonPin);
debouncer.update();
int buttonstate = debouncer.read();
if (buttonstate == LOW && !buttonPressed) {
Serial.println("Button pressed");
buttonPressed = true;
initWifi();
makeIFTTTRequest();
}
}
// ESP8266 будет оставаться в режиме глубокого сна,
// пока на контакт RESET не будет подан сигнал «LOW»
// (например, с помощью нажатия на кнопку):
ESP.deepSleep(0);
}
void loop() {
}
void initWifi() {
Serial.print("Connecting to: "); // "Подключаемся к: "
Serial.print(ssid);
WiFi.begin(ssid, password);
int timeout = 10 * 4; // 10 секунд
while (WiFi.status() != WL_CONNECTED && (timeout-- > 0)) {
delay(250);
Serial.print(".");
}
Serial.println("");
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Failed to connect, going back to sleep");
// "Подключиться не удалось,
// переходим обратно в режим сна"
}
Serial.print("WiFi connected in: ");
// "Время подключения к WiFi: "
Serial.print(millis());
Serial.print(", IP address: "); // ", IP-адрес: "
Serial.println(WiFi.localIP());
}
void makeIFTTTRequest() {
Serial.print("Connecting to "); // "Подключаемся к "
Serial.print(server);
WiFiClient client;
int retries = 5;
while (!!!client.connect(server, 8001) && (retries-- > 0)) {
Serial.print(".");
}
Serial.println();
if (!!!client.connected()) {
Serial.println("Failed to connect, going back to sleep");
// "Подключиться не удалось,
// возвращаемся ко сну"
}
Serial.print("Request resource: "); // "Ресурс запроса: "
Serial.println(resource);
client.print(String("GET ") + resource + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n");
int timeout = 5 * 10; // 5 секунд
while (!!!client.available() && (timeout-- > 0)) {
delay(100);
}
if (!!!client.available()) {
Serial.println("No response, going back to sleep");
// "Нет ответа, возвращаемся ко сну"
}
while (client.available()) {
Serial.write(client.read());
}
Serial.println("\nclosing connection");
// "отключаем соединение"
client.stop();
}