Saya sedang mengerjakan sistem komunikasi nirkabel. Kami menggunakan sekitar 10 pasang pemancar dan penerima. Kami menggunakan mikrokontroler atmega16 untuk encoding dan decoding oleh port USART.
Sekarang kami dapat mengirimkan data dan menerima yang sama di ujung penerima, tetapi ada masalah besar, ketika kami menemukan 2 data pemancar datang pada waktu yang sama. Penerima tidak dapat mendapatkannya karena gangguan.
Misalkan satu pemancar mengirim "SENDA" sementara itu pemancar lain mengirim "MENDAPATKAN", pada saat itu penerima tidak dapat menerima data yang tepat. Karena semua pemancar dan penerima bekerja dalam frekuensi yang sama, maka gangguan ini terjadi. Bagaimana saya bisa mengatasi masalah ini?
wireless
interference
pengguna934070
sumber
sumber
Jawaban:
Mengembangkan protokol komunikasi RF yang bisa diterapkan sangat cocok untuk menjadi latihan yang rumit tetapi mendidik. Beberapa poin tambahan untuk dipertimbangkan di luar apa yang dikatakan:
Masalah konsensus dapat sangat menjengkelkan jika seseorang mencoba menghemat energi dengan mematikan penerima ketika mereka tidak diperlukan. Misalkan dua P dan Q seharusnya berkomunikasi sekali setiap 10 detik, sehingga mereka menyala dan P mengirim Q paket. Q menerima paket itu, mengirimkan pengakuannya, dan - mengetahui bahwa P tidak akan mengirim apa pun selama hampir sepuluh detik, daya turun. Jika P tidak mendapatkan pengakuan Q, ia akan mengirim ulang; karena Q sedang tidur, bagaimanapun, dia tidak akan mendengar pengiriman ulang P. Dari perspektif Q, itu tidak masalah (dia sudah menerima datanya), tetapi itu berarti tidak peduli berapa kali P mencoba, dia tidak akan memiliki cara untuk mengetahui Q mendapatkan paketnya (setidaknya tidak sampai pertemuan berikutnya tentang sepuluh detik).
Seperti yang dikatakan, protokol komunikasi RF yang bisa diterapkan cenderung menjadi latihan yang rumit. Namun, saya berharap Anda mungkin akan belajar banyak dari pengalaman itu.
sumber
Jika Anda tidak menggunakan protokol standar untuk ini, maka Anda harus merancang dan mengimplementasikannya, misalnya contoh sederhana:
Jadi yang terjadi adalah Anda pertama kali mencoba menghindari "kemacetan" dengan mendengarkan terlebih dahulu, kemudian jika kemacetan masih terjadi, Anda mendeteksi ini melalui kurangnya pengakuan dari node penerima dan kemudian mencoba lagi setelah penundaan acak - dua pemancar gangguan akan gunakan penundaan acak yang berbeda, meminimalkan kemungkinan tabrakan kedua.
sumber
Berikut adalah dua opsi umum
1) Terapkan algoritma Listen Before Talk (LBT), yang memeriksa apakah ada transmisi yang sedang berlangsung sebelum memulai sendiri, dan jika demikian, mundur untuk jangka waktu tertentu. Periode tersebut harus berisi panjang tetap dan panjang acak sehingga mereka tidak mundur untuk periode yang sama. Banyak protokol radio standar menyertakan prosedur ini, lihat ETSI EN 300-220-1.
2) Menerapkan sistem suar di mana transmisi diatur waktunya dari suar. Setiap pemancar mendapatkan slot waktu sendiri. Anda biasanya menggunakan nomor seri di perangkat untuk menentukan slotnya, dan memiliki sistem untuk menentukan siapa yang mengirim suar. Karena ini bergantung pada semua pemancar yang memiliki slot yang berbeda, itu bukan ide yang baik untuk menyerahkannya kepada pengguna untuk secara unik mengidentifikasi semua pemancar, kecuali Anda memiliki prosedur yang solid untuk ini.
sumber
Seperti yang saya pahami dari komentar dll, kekuatan bukanlah masalah, tetapi kecepatan komunikasi. Jadi, inilah saran saya untuk sebuah protokol.
Beri nomor semua node, 0..n-1. Biarkan setiap simpul tahu nomor mana itu. Node 0 akan menjadi master.
Setiap 15ms, simpul 0 mengirim pesan: "0HELO".
1ms kemudian, simpul 1 mengirim pesan: "1DATA".
1ms kemudian, simpul 2 mengirim pesan: "2NICE".
1ms kemudian, simpul 3 mengirim pesan: "3". (Simpul ini tidak ada artinya)
1ms kemudian, simpul 4 mengirim pesan: "2CATS".
...
1ms kemudian, simpul 9 mengirim pesan: "9MICE".
Lalu ada jeda 5ms.
Node selalu mengirim pesan mereka di slot waktu yang benar, bahkan jika mereka tidak punya apa-apa untuk dikatakan. Dengan cara ini Anda dijamin kecepatan komunikasi 66Hz, tanpa tabrakan.
sumber
Komunikasi RF dengan beberapa pemancar asinkron adalah masalah yang rumit. Banyak pemikiran dan rekayasa masuk ke standar 802.11 dan 802.15 untuk mengatasi masalah ini. Jika Anda harus bertanya di sini, maka Anda harus tetap berpegang pada perangkat keras rak yang mengimplementasikan salah satu standar ini.
Perhatikan bahwa meskipun keduanya berguna dan mewakili banyak desain yang cermat, umumnya setiap aplikasi nyata masih harus menerapkan tumpukan protokol di atas standar ini. Ini akan menjadi WiFi dan TCP di atas 802.11 dan Zigbee atau MicroWip WiWi atau yang lain di atas 802.15.
Sekali lagi, merancang jaringan radio multi-point jauh dari kemampuan Anda jika Anda mengajukan pertanyaan mendasar semacam itu di sini. Anda hanya akan menghabiskan banyak waktu dan segala sesuatunya tidak akan selalu berhasil.
Pilihan 802.11 versus 802.15 sebagian besar tergantung pada bandwidth dan persyaratan jangkauan serta daya yang tersedia. 802.15 lebih kecil, daya lebih rendah, bandwidth lebih rendah, dan jangkauan lebih kecil. Dengan perangkat lunak tingkat tinggi yang tepat, perangkat 802.15 dapat berjalan lama dari baterai, sedangkan itu umumnya tidak benar untuk 802.11.
sumber
Saya setuju dengan mendengarkan sebelum berbicara dan sistem suar. Tetapi jika Anda ingin menggunakan saluran tunggal untuk mentransmisikan data pada saat yang sama Anda bisa menggunakan teknik modulasi direct-sequence spread spectrum (DSSS). Ini bisa membantu Anda menghindari gangguan.
Tetapi untuk ini, Anda mungkin perlu membeli chip yang mengimplementasikannya, misalnya Xbee (berdasarkan Zigbee). Jika Anda tidak dapat mengubah pemancar Anda, Anda harus tetap berpegang pada jawaban lainnya.
sumber