Я пытаюсь сделать простое оборудование для удаленного выключения и включения лампы в моей комнате, используя имеющуюся у меня базу данных.Для этого я хотел использовать 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);
}