Скетч Arduino для NodeMCU v1.0 (ESP8266-12E) не имеет ошибок при компиляции, но не запускается на плате NodeMCU v1.0 (ESP8266-12E)
Я скомпилировал эскиз Arduino для NodeMCU v1.0 (ESP8266-12E), в котором нет ошибок при тестировании с помощью кнопки проверки в Arduino IDE 1.8.6, но я не знаю, в чем проблема, когда я загружаю и тестирую его . он [ NodeMCU v1.0 (ESP8266-12E)] не показывает статический IP-адрес, пока на моем телефоне Android включена точка доступа Wi-Fi. Я делюсь здесь двумя кодами (код 1, код 2). Код 2 подключается к точке доступа Wi-Fi, но я вношу изменения в код 2, чтобы сделать код 1 для желаемого выхода, который не работает. Нужна помощь в написании правильного кода.
код 1
#include <ESP8266WiFi.h>
int pin1 = 2; //GPIO 14 (D5)
int pin2 = 3; // GPIO 5 (D1)
int pin3 = 6; //GPIO 5 (D2)
const char* ssid = "wifi";
const char* password = "12345678";
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(6, OUTPUT);
// Подключаемся к сети Wi-Fi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Запускаем сервер
server.begin();
Serial.println("Server started");
// Распечатываем IP-адрес
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Проверяем, подключился ли клиент
WiFiClient client = server.available();
if (!client) {
return;
}
// Подождем, пока клиент отправит данные
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Читаем первую строку запроса
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Соответствуем запросу
int value = LOW;
if (request.indexOf("/pin1=ON") != -1) {
digitalWrite(2, HIGH);
value = HIGH;
}
if (request.indexOf("/pin1=OFF") != -1) {
digitalWrite(2, LOW);
value = LOW;
}
if (request.indexOf("/pin2=ON") != -1) {
digitalWrite(3, HIGH);
value = HIGH;
}
if (request.indexOf("/pin2=OFF") != -1) {
digitalWrite(3, LOW);
value = LOW;
}
if (request.indexOf("/pin3=ON") != -1) {
digitalWrite(6, HIGH);
value = HIGH;
}
if (request.indexOf("/pin3=OFF") != -1) {
digitalWrite(6, LOW);
value = LOW;
}
// Устанавливаем светодиод по запросу
//digitalWrite(ledPin, значение);
// Возвращаем ответ
// Возвращаем ответ
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // не забудь это
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("</head>");
client.println("<body bgcolor = \"#f7e6ec\">");
client.println("<hr/><hr>");
client.println("<h4><center>Wifi Based Project</center></h4>");
client.println("</center>");
client.println("<hr/><hr>");
client.println("<center>");
client.println("<a href=\"/a\"\"><button>Data </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 1");
client.println("<a href=\"/l1on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l1off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 2");
client.println("<a href=\"/l2on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l2off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 3");
client.println("<a href=\"/l3on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l3off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("<br><br>");
client.println("<center>");
client.println("<table border=\"5\">");
client.println("<br><br>");
client.println("<tr>");
if(digitalRead(pin1)){client.print("<td>Load 1 is ON</td>");}
else{client.print("<td>Load 1 is OFF</td>");}
if(digitalRead(pin2)){client.print("<td>Load 2 is ON</td>");}
else{client.print("<td>Load 2 is OFF</td>");}
if(digitalRead(pin3)){client.print("<td>Load 3 is ON</td>");}
else{client.print("<td>Load 3 is OFF</td>");}
client.println("</tr>");
client.println("</table>");
client.println("</center>");
client.println("</html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
Если вы загрузите этот код в свой NodeMCU v1.0 (ESP8266-12E), он будет подключен к вашему телефону Android. Вы можете считать это кодом 2 и кодом выше 1.
код 2
#include <ESP8266WiFi.h>
int pin1 = 14; //GPIO 14 (D5)
int pin2 = 5; // GPIO 5 (D1)
int pin3 = 4; //GPIO 5 (D2)
const char* ssid = "wifi";
const char* password = "12345678";
WiFiServer server(80);
void setup()
{
Serial.begin(115200);
delay(10);
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
// Подключаемся к сети Wi-Fi
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Запускаем сервер
server.begin();
Serial.println("Server started");
// Распечатываем IP-адрес
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Проверяем, подключился ли клиент
WiFiClient client = server.available();
if (!client) {
return;
}
// Подождем, пока клиент отправит данные
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Читаем первую строку запроса
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
if (request.indexOf("/l1on") > 0) {
digitalWrite(pin1, HIGH);
}
if (request.indexOf("/l1off") >0) {
digitalWrite(pin1, LOW);
}
if (request.indexOf("/l2on") > 0) {
digitalWrite(pin2, HIGH);
}
if (request.indexOf("/l2off") >0) {
digitalWrite(pin2, LOW);
}
if (request.indexOf("/l3on") >0) {
digitalWrite(pin3, HIGH);
}
if (request.indexOf("/l3off") > 0) {
digitalWrite(pin3, LOW);
}
// Устанавливаем светодиод по запросу
//digitalWrite(ledPin, значение);
// Возвращаем ответ
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // не забудь это
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head>");
client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
client.println("</head>");
client.println("<body bgcolor = \"#f7e6ec\">");
client.println("<hr/><hr>");
client.println("<h4><center>Wifi Based Project</center></h4>");
client.println("</center>");
client.println("<hr/><hr>");
client.println("<center>");
client.println("<a href=\"/a\"\"><button>Data </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 1");
client.println("<a href=\"/l1on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l1off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 2");
client.println("<a href=\"/l2on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l2off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("Load 3");
client.println("<a href=\"/l3on\"\"><button>Turn On </button></a>");
client.println("<a href=\"/l3off\"\"><button>Turn Off </button></a><br />");
client.println("</center>");
client.println("<br><br>");
client.println("<center>");
client.println("<br><br>");
client.println("<center>");
client.println("<table border=\"5\">");
client.println("<br><br>");
client.println("<tr>");
if(digitalRead(pin1)){client.print("<td>Load 1 is ON</td>");}
else{client.print("<td>Load 1 is OFF</td>");}
if(digitalRead(pin2)){client.print("<td>Load 2 is ON</td>");}
else{client.print("<td>Load 2 is OFF</td>");}
if(digitalRead(pin3)){client.print("<td>Load 3 is ON</td>");}
else{client.print("<td>Load 3 is OFF</td>");}
client.println("</tr>");
client.println("</table>");
client.println("</center>");
client.println("</html>");
delay(1);
Serial.println("Client disonnected");
Serial.println("");
}
@Saif Ullah, 👍-1
Обсуждение1 ответ
Вы не можете использовать io 6. IO 6 предназначен для внутреннего использования для подключения флэш-памяти к esp8266. У IO 6 на плате нет контакта Dx. А io 3 — это Serial RX, подключенный к USB.
Используйте константы Dx
и соответствующие контакты NodeMcu, помеченные буквой D. (и удалить противоречивые комментарии)
const int pin1 = D2;
const int pin2 = D3;
const int pin3 = D6;
Вывод D3 имеет значение 0 и используется для перевода платы в режим прошивки. не подключайте туда что-то, что переводит вывод LOW при сбросе или включении питания
На самом деле, я новичок в arduino и программировании. Я беру этот код в демонстрационном виде, поэтому не имею понятия о противоречивых комментариях. Но я делюсь обоими кодами (демо+модифицированный), чтобы все могли понять и получить желаемый код., @Saif Ullah
и помог ли ответ?, @Juraj
- Простой запрос GET с ESP8266HTTPClient
- NodeMCU ESP8266 отключился от WiFi после нескольких часов работы
- Как связать MPU9250 и NodeMcu?
- NodeMCU не может подключиться к мобильной точке доступа, когда я включаю коды для считывания датчика температуры
- Невозможно извлечь основные данные с помощью ThingspeakHTTP.
- nodemcu не отвечает в командном режиме
- Как получить список IP-адресов в локальной сети с помощью NodeMcu?
- Как код, набранный в Arduino IDE, работает на nodemcu?
Также задавали вопросы на: https://stackoverflow.com/q/52342641 и http://forum.arduino.cc/index.php?topic=568674 Если вы собираетесь это сделать, то, пожалуйста, будьте достаточно внимательны и добавьте ссылки на другие места, где вы перекрестно размещаете. Это позволит нам избежать траты времени из-за дублирования усилий, а также поможет другим, у кого есть те же вопросы и кто найдет ваш пост, найти всю необходимую информацию., @per1234