ESP32 не распознает, что к его точке доступа подключено какое-либо устройство - PullRequest
0 голосов
/ 17 июня 2020

Я получил свой ESP32 для создания точки беспроводного доступа. Он отлично отображается на любом устройстве, однако, независимо от того, какое устройство я пытаюсь подключить (iPhone 6s, iPhone 8, Windows рабочий стол), ESP32 просто сообщает, что устройство не подключено. Мой код:

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>

const char *ssid = "testAP";
const char *password = "0000000000";

WiFiServer server(48899);


void setup() {

  Serial.begin(115200);
  delay(5000);
  Serial.println();
  Serial.println("Configuring access point...");

  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();

  Serial.println("Server started");
}

void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {
    Serial.println(client);// if you get a client,
    Serial.println("New Client.");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        //Serial.write(c);                    // print it out the serial monitor
      }
    }
  }
  // close the connection:
  //client.stop();
  Serial.println(client); //this will print "0" no matter how many clients are connected

  }

Прямо сейчас он будет печатать «0» снова и снова, поскольку это количество подключенных клиентов. Если я подключаю устройство, оно должно увеличиться до 1, но этого не происходит.

При простой установке платы ESP32 (из диспетчера плат) по умолчанию на подробный вывод я получаю "ошибку":

dhcps: send_offer >> udp_sendto result 0

Поиск в Google поднимает довольно много проблем по этому поводу, в основном упоминается эта проблема github. Вопрос был открыт 7 января 2019 года. Последний ответ через несколько недель - go. По сей день не было опубликовано исправление. Многие люди говорят, что обновление до последней версии ESP32 с github (не из менеджера досок) будет работать, поэтому я попробовал. Я удалил его из менеджера досок и установил последнюю версию github. Он больше не выдает мне сообщение 'dhcps: send_offer >> udp_sendto result 0' даже при подробном выводе, но он по-прежнему не распознает, что какое-либо устройство подключено.

В моем коде я попытался использовать Версия библиотеки Arduino: #include <Wifi.h>, а также версия библиотеки ESP: #include "Wifi.h" Там тоже не повезло.

Может ли кто-нибудь указать мне в правильном направлении, как исправить эту проблему?

1 Ответ

0 голосов
/ 17 июня 2020

Это не так. Ваша программа работает правильно; ваши ожидания неверны.

WiFiServer плохо назван. Это не имеет ничего общего с клиентами, подключающимися к сети Wi-Fi, которую создает softAP. Вместо этого он создает сервер, прослушивающий номер порта TCP, который вы дали ему при создании объекта (в данном случае 48899). Его действительно следует называть TCPServer, но, к сожалению, это не так, и нам всем просто нужно с этим смириться.

Если я подключаю устройство, оно должно увеличиться до 1, но это не так.

Это неверно. Если вы подключаете устройство к сети Wi-Fi, это не то же самое, что подключение к WiFiServer.

Чтобы ваш код работал, каждое устройство, которое подключается к сети Wi-Fi, которую предоставляет ваш ESP32 , будет Также на должна быть запущена программа, открывающая TCP-соединение с портом 48899 на ESP32. В противном случае l oop никогда не увидит доступного клиента, потому что его не будет.

Если вы хотите узнать, подключены ли какие-либо устройства к точке доступа WiFi, вы можете использовать WiFi.softAPgetStationNum() - он вернет количество подключенных в настоящий момент устройств.

Например,

Serial.println(WiFi.softAPgetStationNum());

напечатает, сколько устройств подключено.

...