И мой NodeMCU, и мой ESP01 выключаются через несколько минут - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь сделать простое оборудование для удаленного выключения и включения лампы в моей комнате, используя имеющуюся у меня базу данных.Для этого я хотел использовать ESP8266 в плате ESP-01.

Для тестирования рабочей среды у меня есть источник питания 2 В 2 А.Я использовал регулятор 3,3 В (LD33V), чтобы включить ESP-01, и сумел установить соединение с базой данных, где у меня есть флаг включения / выключения.Работает как брелок со светодиодом и резистором 330 Ом.

Дело в том, что через несколько секунд (я не замерял, но всего несколько минут) плата полностью выключается.Я понял, что это может быть чрезмерное потребление тока, поэтому я загрузил тот же код на плату NodeMCU и запитал его зарядным устройством для мобильного телефона, включив и выключив встроенный светодиод.Произошло то же самое.

Я предполагаю, что это может быть программная проблема, потому что после этих тестов она не кажется аппаратной.Возможно, мне нужно установить какой-либо виртуальный флаг или что-то в этом роде.

ESP-01 имеет следующие выводы: VCC: 3,3 В от регулятора
GND: 0 В от регулятора
GPI02:Резистор 330 Ом и светодиод
GPIO0: плавающий (да, я программирую его при программировании)
TX / RX: плавающий
RST: Vcc
CH_PD (включить): Vcc

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

#define led 2 //pin of the external led

// Inicialização do WiFi
const char* ssid = "xxxxxx";
const char* pass = "xxxxxx";
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // made-up MAC

WiFiClient client;

// Inicialização do MySQL
MySQL_Connection conn((Client *)&client);
// Create an instance of the cursor passing in the connection
MySQL_Cursor cur = MySQL_Cursor(&conn);
IPAddress server_addr(XXX, XXX , XXX, XXX);          // MySQL server IP
char user[] = "xxxxxx";           // MySQL user
char password[] = "xxxxxx";       // MySQL password
char BANCODEDADOS[] = "USE xxxxxx";

void toggle_lamp(void){

  // FAZ UM SELECT SIMPLES
  char query[] = "SELECT STATUS FROM devices WHERE ID = 1";
  MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
  cur_mem->execute(query);
  Serial.println("");
  Serial.print("Executando query: ");
  Serial.println(query);

  // Fetch the columns (required) but we don't use them.
  column_names *columns = cur_mem->get_columns();

  // Read the row (we are only expecting the one)
  row_values *row = NULL;
  //char* result = NULL;
  int lamp_status;

  do {
    row = cur_mem->get_next_row();
    if (row != NULL) {
     // result = row->values[0];
     lamp_status = atoi(row->values[0]);

    }
  } while (row != NULL);

  // Deleting the cursor also frees up memory used
  delete cur_mem;

  // USA O RESULTADO PARA ACENDER UM LED
  //int lamp_status = atoi(result);
  //Serial.println(result);
  Serial.println(lamp_status);
  if(lamp_status == 1){
    digitalWrite(led,HIGH); 
  }
  else{
    lamp_status = 0;
    digitalWrite(led,LOW);

  }

}

void setup(void){

  // Define a saída como output
  pinMode(led,OUTPUT);

  // Inicializa a porta Serial
  Serial.begin(115200);
  Serial.println("");

  // Inicializa a conexão WiFi
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // REALIZA A CONEXÃO COM O MYSQL
  if (conn.connect(server_addr, 3306, user, password)) 
   {
      delay(1000);

      // Initiate the query class instance
      MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
      cur_mem->execute(BANCODEDADOS);

      Serial.println("");
      Serial.println("Conectado ao MySQL");
      Serial.print("Usuario:");
      Serial.println(user);
   }
   else
   {
      Serial.println("A conexão falhou");
      conn.close();
   }

} // end setup()

void loop(void){

  toggle_lamp();
  delay(1250);

}
...