Как добиться быстрой и надежной связи между NodeMCU?

У меня есть два NodeMCU, которые должны отправлять данные на сервер (также NodeMCU). Я хочу добиться скорости не менее 10 Гц, потому что датчик отправляет ее с такой скоростью. Я пробовал веб-сокеты и не мог получить скорость передачи более 1 Гц, а данные помещались в буфер.

Есть идеи, как я могу достичь скорости 10 Гц через Wi-Fi?

Спасибо за любую помощь.

, 👍0

Обсуждение

символ единицы измерения частоты "Гц", а не "Гц" ... пожалуйста, исправьте свой вопрос, @jsotola


1 ответ


Лучший ответ:

2

Объект WiFiClient является оболочкой для сокета TCP. Обычный сокет TCP подключен к IP-адресу и порту. WiFiServer запускает прослушивающий сокет на порту. Если к серверу в сокете для прослушивания обращается удаленный клиентский сокет, он создает локальный сокет, связанный с удаленным клиентским сокетом на свободном порту, и возвращает объект WiFiClient, обертывающий сокет. Все, что вы пишете или печатаете в WiFiClient, отправляется на этот удаленный сокет.

Если одна из ваших клиентских плат создает WiFiClient и подключает его к IP-адресу и порту WiFiServer на вашей «серверной» плате, вы получаете там WiFiClient из server. available(), и эти два объекта WiFiClient связаны. То, что вы пишете/печатаете на одной стороне, вы читаете из объекта WiFiClient на другой стороне.

клиентский сокет

if (client.connect(serverIP, PORT)) {
  client.print("request\n");
  String response = client.readStringUntil('\n');
  Serial.println(response);
  client.stop();
}

на стороне сервера

WiFiClient client = server.available();
if (client && client.connected()) {
  String request = client.readStringUntil('\n');
  Serial.println(request);
  client.print("response\n");
  client.stop();
}
,