ESP8266 отключается через несколько часов
Моя система выглядит так:
ESP8266 подключен к Arduino Uno (2, 3 контакта), а вход данных реле к выходу Arduino 12, а питание для реле - от другого источника.
Arduino получает данные с сервера и включает в себя /выключает реле в соответствии с этим сигналом. Эта система работает отлично в течение нескольких часов, а затем внезапно падает. В моей консоли Wi-Fi у меня есть:
wlan0: STA 2c: 3a: e8: 4e: bf: 70 WPA: завершено соединение с парным ключом (RSN) wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: disassociated wlan0: AP-STA-DISCONNECTED 2c: 3a: e8: 4e: bf: 70 wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: disassociated wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: связанный wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: disassociated wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: disassociated wlan0: STA 2c: 3a: e8: 4e: bf: 70 IEEE 802.11: связанный wlan0: AP-STA-CONNECTED 2с: 3a: e8: 4e: БФ: 70
Я прочитал этот вопрос Arduino , но принципиальная схема, подобная этой один. Я получаю питание от своего ПК, чтобы запустить Arduino.
Это мой код Arduino:
#include "WiFiEsp.h"
// Emulate Serial1 on pins 6/7 if not present
#ifndef HAVE_HWSERIAL1
#include "SoftwareSerial.h"
SoftwareSerial Serial1(2, 3); // RX, TX
#endif
char ssid[] = "RPi"; // your network SSID (name)
char pass[] = "raspberry"; // your network password
int status = WL_IDLE_STATUS; // the Wifi radio's status
char server[] = "192.168.50.1";
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
const unsigned long postingInterval = 10000L; // delay between updates, in milliseconds
int testLED = 12;
// Initialize the Ethernet client object
WiFiEspClient client;
void setup()
{
pinMode(testLED, OUTPUT);
// initialize serial for debugging
Serial.begin(9600);
// initialize serial for ESP module
Serial1.begin(9600);
// initialize ESP module
WiFi.init(&Serial1);
// check for the presence of the shield
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// don't continue
while (true);
}
// attempt to connect to WiFi network
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network
status = WiFi.begin(ssid, pass);
}
Serial.println("You're connected to the network");
//printWifiStatus();
}
void loop()
{
// if there's incoming data from the net connection send it out the serial port
// this is for debugging purposes only
while (client.available()) {
char c = client.read();
//code to run relay
if (c == '#')
{
while (client.available() == 0) { } // Do nothing while we wait for the next value
// reading the second charactor
c = client.read();
if (c == '1') {
Serial.println("On");
digitalWrite(testLED, HIGH);
delay(600000);
}
else if (c == '0') {
Serial.println("Off");
digitalWrite(testLED, LOW);
delay(600000);
} //end of C cheking if-else
} //end of first charactor # if
//end of replay code
}
// if 10 seconds have passed since your last connection,
// then connect again and send data
if (millis() - lastConnectionTime > postingInterval) {
httpRequest();
}
}
// this method makes a HTTP connection to the server
void httpRequest()
{
Serial.println();
// close any connection before send a new request
// this will free the socket on the WiFi shield
client.stop();
// if there's a successful connection
if (client.connect(server, 80)) {
Serial.println("Connecting...");
// send the HTTP PUT request
client.println(F("GET /simple.txt HTTP/1.1"));
client.println(F("Host: localhost"));
client.println("Connection: close");
client.println();
// note the time that the connection was made
lastConnectionTime = millis();
}
else {
WiFi.begin(ssid, pass);
Serial.println("Reconnecting again");
}
}
2 ответа
После довольно продолжительных исследований я нашел решение своей проблемы.
Я немного изменил подключение к ESP-8266.
ESP 8266 --------- Arduino Uno
Vcc
---------> 3.
CH_PD
---------> 5v делится на 3,3 В с использованием резисторов
RX
---------> PIN-2 через регулятор 3.3v.
После этой настройки моя система работала отлично в течение нескольких дней. Спасибо за все предложенные предложения.
Пока я знаю, вам нужно как минимум 170 мА для питания esp8266, вам также нужно 100-200 мА для arduino и 100 мА для реле, поэтому я рекомендую использовать источник питания 1А и припаять некоторые конденсаторы на 5 В и 3,3 В рельсы. Кроме того, если ваш Wi-Fi дает IP-адрес, ограниченный в течение определенного времени, например, 1-2 часа, вам нужно расширить это время для ваших нужд. Если он отключится, esp потеряет свой IP-адрес и попытается восстановить, например, мой NODE MCU работает хорошо в течение нескольких недель. Это также зависит от вашей библиотеки (я использую ESP8266WiFi.h). В любом случае, я рекомендую попробовать пример WebServer для тестирования, если проблема в коде.