Latensi terendah dari standar Wi-Fi 802.11

8

Saya membuat proyek menggunakan modul Arduino dan ESP8266 yang menjalankan firmware esp-link - yang memberi saya kemampuan untuk menggunakan MQTT untuk mengendalikan Arduino. Saya telah melihat sesuatu seperti modul XBee - tetapi harganya sangat mahal dibandingkan dengan ESP8266! ( Jika Anda tidak tahu apa itu ESP8266 atau MQTT, jangan khawatir - itu cukup untuk mengetahui bahwa itu menggunakan TCP melalui Wi-Fi ).

Paket MQTT kecil, sehingga throughput jaringan Wi-Fi tidak akan pernah menjadi masalah. Namun, latensi dan keandalan merupakan faktor besar. Sistem MQTT menggunakan TCP, jadi itu harus cukup andal - tapi saya tidak begitu yakin tentang latensi.

Saya punya pilihan untuk menggunakan koneksi 802.11b, .11g atau .11n untuk jaringan yang digunakan ESP8266. Adakah sesuatu dalam standar ini yang membuat seseorang memiliki latensi lebih rendah daripada yang lain? Mana yang saya harapkan memiliki kinerja terbaik dengan paket yang sangat kecil dan jarang?

seanlano
sumber
1
Dalam pertimbangan latensi ada juga pihak lain yang terlibat, ditambah dengan kualitas masalah implementasi. Saya tidak berpikir angka teoritis akan membuat Anda jauh.
PlasmaHH
google untuk artikel LWN bernama "membuat wifi cepat".
user3528438

Jawaban:

10

Pertama-tama, Anda melakukan sesuatu yang SANGAT benar yang tidak dilakukan oleh banyak perancang dan pengguna IoT: Anda mempertimbangkan fakta bahwa operasi harus dapat diandalkan dan dibatasi oleh latensi. Tidak semua orang melakukan hal itu, dan itu sebabnya banyak perangkat IOT benar-benar buruk.

Pilihan standar antara 802.11 b / g / n tidak akan terlalu memengaruhi latensi Anda. Saya berasumsi kita sedang membatasi latensi <10 ms, karena semua hal tentang itu "hanya akan bekerja pada 99,5% kasus menggunakan perangkat keras WiFi yang baik".

Jika Anda berada dalam skenario terikat latensi, Anda tentu tidak akan melakukannya

  • gunakan TCP (dan karenanya, MQTT, yang membangun di atasnya)
  • menggunakan perangkat yang mengemulasi tautan serial lambat - jika paket Anda katakanlah 4 karakter, dan Anda memiliki 9600 baud, maka Anda akan menghabiskan milidetik hanya untuk mendapatkan data dari μC ke perangkat WiFi
  • gunakan WiFi, karena tidak ada jaminan stasiun Anda akan dapat mengirim dalam jendela waktu yang terbatas, sama sekali (hanya kemungkinan)

Jika Anda membutuhkan keandalan, di sisi lain, Anda tidak boleh melakukannya

  • gunakan UDP murni (karena tidak ada jaminan atau umpan balik bahwa paket mencapai tujuan mereka)
  • menggunakan protokol radio satu arah murni (alasan yang sama)
  • menggunakan ESP8266, yang mengambil keuntungan harga karena kurangnya pengujian, desain dan sertifikasi untuk operasi dengan keandalan tinggi (dan dengan demikian, tidak ada produsen elektronik besar yang akan menggunakannya tanpa melakukan pengujian itu sendiri, dalam hal ini modul siap pakai dari produsen yang dapat dipercaya biasanya menjadi lebih murah)

Jadi, pertama-tama, tentukan apa persyaratan latensi Anda, dan persyaratan keandalan Anda. Anda harus memiliki selembar kertas yang bertuliskan

Latensi untuk {satu | dua} -jalan komunikasi harus <{maks latensi} dalam {persentase yang dapat diterima}% dari kasus. Tidak boleh ada probabilitas lebih dari {persentase lumayan}% kehilangan satu paket.

Kemudian, Anda dapat melihat batas teoretis sistem, dan kemudian melihat batas praktis implementasi dari mereka yang cocok dengan itu.

Marcus Müller
sumber
Pertama-tama, Anda melakukan sesuatu yang SANGAT benar ... Terima kasih! :) Ini hanya contoh mainan untuk saat ini, lebih dari sesuatu yang saya rencanakan untuk tersedia sebagai produk nyata. Pilihan standar antara 802.11 b / g / n tidak akan terlalu memengaruhi latensi Anda. Saya tidak berpikir itu akan membuat banyak perbedaan, tetapi saya pikir saya akan bertanya. Saya masih akan melakukan beberapa pengujian saya sendiri, tetapi jelas saya tidak memiliki peralatan untuk melakukannya secara menyeluruh seperti laboratorium. Adapun EPS8266 dan Wi-Fi - saya pikir, karena lebih murah, saya akan coba dulu - dan coba sesuatu yang lain jika tidak dapat diterima.
seanlano
Saya pasti akan mendefinisikan pernyataan latensi yang dapat saya terima dan kemungkinan hilangnya paket - dan menggunakannya sebagai kriteria saya untuk terus menggunakan ESP8266 atau tidak.
seanlano