Latenza più bassa rispetto agli standard Wi-Fi 802.11


8

Sto realizzando un progetto usando un Arduino e un modulo ESP8266 che eseguono il firmware esp-link, il che mi dà la possibilità di usare MQTT per controllare Arduino. Avevo visto qualcosa come un modulo XBee invece - ma sono così dannatamente costosi rispetto all'ESP8266! ( Se non sai cos'è ESP8266 o MQTT, non preoccuparti: è sufficiente sapere che sta usando TCP tramite Wi-Fi ).

I pacchetti MQTT sono minuscoli, quindi il throughput della rete Wi-Fi non sarà mai un problema. Ma la latenza e l'affidabilità sono fattori importanti. Il sistema MQTT utilizza TCP, quindi dovrebbe essere abbastanza affidabile, ma non sono così sicuro della latenza.

Ho la possibilità di utilizzare una connessione 802.11b, .11g o .11n per la rete utilizzata da ESP8266. C'è qualcosa in uno di questi standard che fa sì che uno abbia una latenza inferiore rispetto a qualsiasi altro? Con quale mi aspetterei di ottenere le migliori prestazioni con pacchetti molto piccoli e poco frequenti?


1
Nelle considerazioni sulla latenza c'è anche l'altra parte coinvolta, oltre che una questione di qualità dell'implementazione. Non credo che i numeri teorici ti porteranno molto lontano.
PlasmaHH,

google per un articolo LWN chiamato "rendere veloce il wifi".
user3528438

Risposte:


10

Prima di tutto, stai facendo qualcosa di MOLTO giusto che molti progettisti e utenti IoT non fanno: consideri il fatto che l'operazione deve essere affidabile e limitata alla latenza. Non tutti lo fanno, ed è per questo che molti dispositivi IoT sono davvero male.

La scelta dello standard tra 802.11 b / g / n non influenzerà molto la tua latenza. Suppongo che stiamo delimitando latenze <10 ms, perché tutto ciò "funzionerà solo nel 99,5% dei casi utilizzando un buon hardware WiFi".

Se ti trovi in ​​uno scenario legato alla latenza, sicuramente non lo farai

  • usa TCP (e quindi MQTT, che si basa su quello)
  • usa un dispositivo che emula un collegamento seriale lento - se i tuoi pacchetti hanno 4 caratteri, e hai 9600 baud, spenderai un millisecondo solo per ottenere dati dal µC al dispositivo WiFi
  • usa il WiFi, dal momento che non esiste alcuna garanzia che la tua stazione sarà in grado di inviare entro un intervallo di tempo limitato (solo una probabilità)

Se hai bisogno di affidabilità, d'altra parte, non devi

  • usa UDP puro (poiché non esiste alcuna garanzia o feedback sul fatto che i pacchetti raggiungano la loro destinazione)
  • utilizzare un protocollo radio unidirezionale puro (stesso motivo)
  • utilizzare un ESP8266, che ne trae vantaggio dal punto di vista del prezzo per la mancanza di test, progettazione e certificazione per un funzionamento ad alta affidabilità (e quindi, nessun grande produttore di elettronica lo userà senza farlo da soli, nel qual caso moduli già pronti di produttori affidabili di solito diventa più economico)

Quindi, prima di tutto, definire quali sono i requisiti di latenza e i requisiti di affidabilità. È necessario avere un pezzo di carta che dice

La latenza per la comunicazione {one | two} deve essere <{latenza massima} nella {percentuale tollerabile}% dei casi. Non ci deve essere una probabilità superiore al {percentuale tollerabile}% di perdere un pacchetto.

Quindi, puoi esaminare i limiti teorici dei sistemi e quindi i limiti pratici delle implementazioni di coloro che si adattano a questo.


Prima di tutto, stai facendo qualcosa MOLTO giusto ... Grazie! :) Per ora è solo un esempio di giocattolo, molto più di qualcosa che ho intenzione di rendere disponibile come prodotto reale. La scelta dello standard tra 802.11 b / g / n non influenzerà molto la tua latenza. Non pensavo che avrebbe fatto troppa differenza, ma ho pensato di chiedere. Continuerò anche a fare alcuni dei miei test, ma ovviamente non ho le attrezzature per farlo in modo approfondito come farebbe un laboratorio. Per quanto riguarda l'EPS8266 e il Wi-Fi - ho pensato, dato che era più economico, ci proverei prima - e proverei qualcos'altro se non fosse accettabile.
seanlano,

Definirò sicuramente una dichiarazione della mia latenza accettabile e probabilità di perdita di pacchetti - e lo userò come criterio per continuare a utilizzare ESP8266 o meno.
seanlano,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.