Latence la plus faible des normes Wi-Fi 802.11

8

Je fais un projet en utilisant un Arduino et un module ESP8266 exécutant le firmware esp-link - ce qui me donne la possibilité d'utiliser MQTT pour contrôler l'Arduino. J'avais plutôt regardé quelque chose comme un module XBee - mais ils sont sacrément chers par rapport à l'ESP8266! ( Si vous ne savez pas ce qu'est ESP8266 ou MQTT, ne vous inquiétez pas - il suffit de savoir qu'il utilise TCP sur Wi-Fi ).

Les paquets MQTT sont minuscules, donc le débit du réseau Wi-Fi ne sera jamais un problème. Mais, la latence et la fiabilité sont des facteurs importants. Le système MQTT utilise TCP, il devrait donc être suffisamment fiable - mais je ne suis pas sûr de la latence.

J'ai le choix d'utiliser une connexion 802.11b, .11g ou .11n pour le réseau utilisé par l'ESP8266. Y a-t-il quelque chose dans l'une de ces normes qui fait que l'un a une latence plus faible que les autres? Avec quoi devrais-je m'attendre à avoir les meilleures performances pour les paquets très petits et peu fréquents?

seanlano
la source
1
Dans les considérations de latence, il y a aussi l'autre partie impliquée, plus son problème de qualité de mise en œuvre. Je ne pense pas que les chiffres théoriques vous mèneront très loin.
PlasmaHH
google pour un article LWN intitulé "Making wifi fast".
user3528438

Réponses:

10

Tout d'abord, vous faites quelque chose de TRÈS bien que beaucoup de concepteurs et d'utilisateurs IoT ne font pas: vous considérez le fait que le fonctionnement doit être fiable et lié à la latence. Tout le monde ne le fait pas, et c'est pourquoi de nombreux appareils IoT sont vraiment mauvais.

Le choix de la norme entre 802.11 b / g / n n'influencera pas vraiment votre latence. Je suppose que nous avons des latences limites <10 ms, car tout cela "fonctionnera dans 99,5% des cas avec un bon matériel WiFi".

Si vous êtes dans un scénario lié à la latence, vous ne le ferez certainement pas

  • utiliser TCP (et donc, MQTT, qui construit au-dessus de cela)
  • utilisez un appareil qui émule une liaison série lente - si vos paquets ont, disons, 4 caractères et que vous avez 9600 bauds, vous passerez une milliseconde juste pour obtenir des données du µC vers l'appareil WiFi
  • utilisez le WiFi, car il n'y a aucune garantie que votre station sera en mesure d'envoyer des messages dans un laps de temps limité (seulement une probabilité)

Si vous avez besoin de fiabilité, en revanche, vous ne devez pas

  • utiliser du UDP pur (car il n'y a aucune garantie ou rétroaction que les paquets atteignent leur destination)
  • utiliser un protocole radio unidirectionnel pur (même raison)
  • utiliser un ESP8266, ce qui lui confère un avantage en termes de prix en raison d'un manque de tests, de conception et de certification pour un fonctionnement à haute fiabilité (et donc, aucun grand fabricant d'électronique n'utilisera cela sans effectuer ces tests eux-mêmes, auquel cas des modules prêts à l'emploi de fabricants fiables) deviennent généralement moins chers)

Donc, tout d'abord, définissez quelles sont vos exigences de latence et vos exigences de fiabilité. Vous devez avoir un morceau de papier qui dit

La latence pour les communications à {un | deux} canaux doit être <{latence max} dans {pourcentage tolérable}% des cas. Il ne doit pas y avoir de probabilité supérieure à {pourcentage tolérable}% de perdre un paquet.

Ensuite, vous pouvez regarder les limites théoriques des systèmes, puis regarder les limites pratiques des implémentations de ceux qui correspondent à cela.

Marcus Müller
la source
Tout d'abord, vous faites quelque chose de TRÈS bien ... Merci! :) C'est juste un exemple de jouet pour l'instant, plus que quelque chose que je prévois de rendre disponible en tant que vrai produit. Le choix de la norme entre 802.11 b / g / n n'influencera pas vraiment votre latence. Je ne pensais pas que cela ferait trop de différence, mais j'ai pensé demander. Je ferai également certains de mes propres tests, mais je n'ai évidemment pas l'équipement pour le faire aussi minutieusement qu'un laboratoire. En ce qui concerne l'EPS8266 et le Wi-Fi - je me suis dit, car c'était moins cher, j'essaierais d'abord - et j'essaierais autre chose si ce n'était pas acceptable.
seanlano
Je vais certainement définir une déclaration de ma latence acceptable et de la probabilité de perte de paquets - et l'utiliser comme critère pour continuer à utiliser l'ESP8266 ou non.
seanlano