UDP لاءِ وائي فائي ۽ LoRa جي وچ ۾ گيٽ وي ٺاهڻ

منهنجو ننڍپڻ جو خواب هو ته هر گهريلو ڊوائيس کي وائي فائي کان سواءِ هڪ نيٽ ورڪ رسائي ڪارڊ ڏيان، يعني هڪ IP پتو ۽ پورٽ. ڪجهه وقت کان پوءِ، مون کي احساس ٿيو ته ان کي بند ڪرڻ جو ڪو به مطلب ناهي. مون کي اهو ڪرڻو هو.
ٽيڪنيڪل ڪم
LoRa ماڊيول کي گيٽ وي جي طور تي نصب ڪندي هڪ M5Stack سيٽ اپ ڪريو (شڪل 1). گيٽ وي هڪ وائي فائي نيٽ ورڪ سان ڳنڍيل هوندو، جتي اهو DHCP ذريعي هڪ مقامي IP پتو وصول ڪندو. گيٽ وي وقتاً فوقتاً پنهنجو نالو (وائي فائي لاءِ SSID وانگر) ۽ LoRa نيٽ ورڪ تي موجود پورٽس جي رينج کي نشر ڪندو، ٻين ڊوائيسز کي ٻڌائيندو ته هڪ نيٽ ورڪ آهي جنهن سان اهي ڳنڍجي سگهن ٿا ۽ اهي ڪهڙي رينج جي پورٽس کي چونڊي سگهن ٿا. جيئن ته هي هڪ پروٽوٽائپ هوندو، تصديق جي ضرورت نه هوندي. نوان ڪلائنٽ ڊوائيسز هڪ موجود LoRa نيٽ ورڪ ڳوليندا ۽ چونڊيل پورٽ کي ان ڏانهن نشر ڪندا. گيٽ وي کي نئين ڪلائنٽ کان پورٽ حاصل ڪرڻ کان پوءِ، اهو چيڪ ڪندو ته اهو دستياب آهي يا نه. جيڪڏهن ائين آهي، ته اهو نئين ڪلائنٽ کي رجسٽر ڪري ٿو ۽ هن پورٽ تي پنهنجي غير مطابقت رکندڙ UDP سرور تي ٻڌڻ شروع ڪري ٿو. رجسٽريشن کان پوءِ، ڪلائنٽ کي تصديق ملندي ته ڇا اعلان ڪيل پورٽ استعمال ڪجي. آپريٽنگ طريقيڪار جدول 1 ۾ ڏيکاريل آهي.

1 شڪل
ٽيبل 1
طرف
هدايت ۽ ڊيٽا
طرف
سيشن
[ڪلائنٽ]
<— بيڪن سگنل —
[ گيٽ وي ]
0xA1
[ڪلائنٽ]
— چونڊيل پورٽ —>
[ گيٽ وي ]
0xB1
[ڪلائنٽ]
<— رضامندي يا انڪار —
[ گيٽ وي ]
0xA2
[ڪلائنٽ]
— UPD پيڪيج —>
[ گيٽ وي ]
0xB2
[ڪلائنٽ]
<— UPD-پيڪيج —
[ گيٽ وي ]
0xA3
[ نيٽ ]
<— UPD-پيڪيج —
[ گيٽ وي ]
0xC1
منهنجي ڊيسڪ تي هر قسم جا M5Stack ماڊلز پيا آهن، بور ٿي چڪو آهيان. اچو ته ڪجهه LoR وٺون ۽ ان سان ڪجهه مزو وٺون. ماڊلز جو تصور شاندار آهي! مان ڇا ٿو چوان؟ پر منهنجا ماڊلز پهرين نظرثاني آهن، ۽ انهن ۾ هڪ خوفناڪ بلٽ ان اينٽينا آهي، جيڪو هڪ لچڪدار پرنٽ ٿيل سرڪٽ بورڊ تي ٺاهيو ويو آهي ۽ ڪيس جي پاسي تي چپڪيو ويو آهي. مون هڪ ڀيرو انهن ماڊلز کي فيلڊ ٽيسٽ ڪيو (توهان ان کي روسي ٻولي جي يوٽيوب چينل تي ڏسي سگهو ٿا):

قدرتي طور تي، مون کي اهي نشان هٽائڻا پيا ۽ معياري هيليڪل اينٽينن ۾ سولڊر ڪرڻا پيا جيڪي Ra-01 سان گڏ ايندا آهن. هن ڪسٽمائيزيشن کان پوءِ، ڪميونيڪيشن رينج ۾ خاص طور تي بهتري آئي، پر هڪ ضمني اثر پيدا ٿيو: اينٽينا جو قطر ماڊيولز جي وچ ۾ جائز فاصلي کان وڏو هو. مون کي منصوبي جي مدت لاءِ فائنل ماڊل کي ڇڏڻو پيو.
هم وقت ساز سختي کان پهرين مشڪلاتون
اهو لڳي ٿو، لائبريري وٺو وائي فائي يو ڊي پي ايڇ، جنهن ۾ هر شيءِ آهي جيڪا هڪ UDP سرور کي آرام سان ڪم ڪرڻ لاءِ گهربل آهي، پر نه. لائبريري هڪ هم وقت ساز سرور هلائڻ لاءِ ٺهيل آهي، جيڪا بدقسمتي سان، هڪ ئي ٿريڊ ۾ هڪ ئي وقت ڪيترن ئي ڪنيڪشن کي سنڀالي نٿي سگهي. اهڙي لائبريري موجوده ڪم لاءِ مناسب ناهي. مون کي ڪيترائي پيالا چانهه پيئڻي پئي ۽ هڪ لائبريري ڳولڻي پئي جيڪا مون کي هڪ غير هم وقت ساز UDP سرور هلائڻ جي اجازت ڏئي جيڪا هڪ ئي وقت ڪيترن ئي ڪنيڪشن کي سپورٽ ڪرڻ جي قابل هجي. مون کي اهڙي لائبريري ملي - غير هم آهنگ يو ڊي پي. ايڇهڪ هم وقت ساز ۽ هڪ غير هم وقت ساز سرور ۾ ڇا فرق آهي؟ اچو ته شڪل 2 ۾ ڇهن منظرنامي تي نظر وجهون، جيڪي ساکٽ آپريشن آپشنز کي معمولي طور تي بيان ڪن ٿا.

2 شڪل
اسٽارنگ:
شخص ڪردار ۾ ساکٽ;
کبوتر ڪردار ۾ ڪنيڪشن;
خط ڪردار ۾ ых.
قسط الف. وقت ختم ٿيڻ کان سواءِ هم وقت ساز ساکٽ
ماڻهو بيٺو رهندو جيستائين ڪبوتر کيس خط نه آڻيندو.
قسط B. وقت ختم ٿيڻ سان هم وقت ساز ساکٽ
اهو شخص ڪبوتر سان طئي ٿيل وقت جو انتظار ڪري ٿو، ۽ جيڪڏهن اهو وقت تي نه پهچندو ته اهو شخص هليو ويندو.
قسط سي. ملٽي ٿريڊنگ سان هم وقت ساز ساکٽ
ماڻهو پوئتي ويٺو آهي ۽ ڪبوترن کي پاڻ خط پهچائيندي ڏسي ٿو.
قسط ڊي. غير هم وقت ساز ساکٽ (جڏهن حاصل ڪرڻ لاءِ ٻيو ڪجهه به نه هجي)
ماڻهو پنهنجي پسنديده شين ۾ مصروف آهي، پر ڪبوترن بابت نه وساريندو آهي.
قسط E. غير هم وقت ساز ساکٽ (جڏهن ڪجهه حاصل ڪرڻ لاءِ هجي)
ان ماڻهوءَ پنهنجي ڪم کان وقفو وٺڻ لاءِ هڪ لمحو ورتو ته جيئن ڪبوتر جو خط ملي سگهي.
قسط ايف. ملٽي ٿريڊنگ سان غير هم وقت ساز ساکٽ
هڪ ماڻهو پنهنجي ڪم ۾ لڳي ٿو ۽ ڪبوترن کي پاڻ خط پهچائيندي ڏسي ٿو.
جيڪڏهن توهان ڌيان ڏئي رهيا آهيو، ته توهان شايد محسوس ڪيو هوندو ته هر قسط ۾ ڊوز جا ڪالر مختلف رنگ جا آهن. ۽ اهو ڪو اتفاق ناهي. قسط A ۽ B ۾، سرور ۾ صرف هڪ ساڪٽ هلندڙ آهي. قسط C ۾، ٻه ساڪٽ هلندڙ آهن. قسط D، E، ۽ F ۾، هر هڪ ۾ ٽي ساڪٽ آهن. "ٻه اتي ڇو ۽ ٽي هتي؟" توهان پڇي سگهو ٿا. اهي 2 ۽ 3 آهن، پر حقيقت ۾، 2 20 ٿي سگهن ٿا، ۽ 3 200 ٿي سگهن ٿا. مقصد اهو ڏيکارڻ آهي ته غير هم وقت ساز ساڪٽ هم وقت ساز ساڪٽ وانگر گهربل نه آهن.
ڪهڙي شيءِ ڪيتري حد تائين ڪٿي فٽ ٿئي ٿي؟
اچو ته ٽيبل 1 تي نظر وجهون، جيڪو UDP پيڪٽ جي بناوت کي ڏيکاري ٿو، ۽ سوچيو ته اسان ان سان ڇا ڪري سگهون ٿا.
ٽيبل 1. يو ڊي پي پيڪٽ جي جوڙجڪ
بِٽس
0 - 15
16 - 31
0-31
سورس پورٽ
منزل پورٽ
32-63
ڊيٽاگرام جي ڊيگهه (ڊگهائي)
چيڪسم
64- ...
ڊيٽا
اچو ته هن ٽيبل جي بلڪل شروعات ۾ هڪ ٻيو فيلڊ شامل ڪريون. سيشن (1 بائيٽ). هي هن منصوبي لاءِ ڪافي آهي. سيشن جي بنياد تي، ڊوائيس کي خبر پوندي ته ايندڙ پيڪٽ سان ڇا ڪرڻو آهي. هاڻي اچو ته سيشن ڪوڊ ٺاهيون ۽ انهن کي ٽيبل 2 ۾ رڪارڊ ڪريون.
ٽيبل 2. سيشن جي وضاحت
ڪوڊ
ٽائيٽل
وضاحت
0xA1
ڪميونٽي
گيٽ وي وقتي طور تي LoRa نيٽ ورڪ جو نالو ۽ اجازت ڏنل بندرگاهن جي حد کي نشر ڪندو آهي. اهو ضروري آهي ته جيئن نوان گراهڪ دستياب نيٽ ورڪ ڏسي سگهن ۽ موجوده گراهڪ سگنل جي طاقت جو تعين ڪري سگهن جڏهن ڪو ٽرانسميشن نه هجي.
0xB1
اپليڪيشن
جڏهن ڪلائنٽ هڪ نيٽ ورڪ ڳولي ٿو، ته اهو پنهنجي پسنديده پورٽ موڪلي ٿو.
0xA2
رضامندي يا انڪار
جيڪڏهن ڪلائنٽ پاران درخواست ڪيل پورٽ مفت آهي، ته سرور رضامندي سان جواب ڏيندو، ٻي صورت ۾ انڪار سان.
0xB2
مٿي لنڪ
جڏهن ڪو ڪلائنٽ يو ڊي پي پيڪٽ گيٽ وي ڏانهن منتقل ڪري ٿو.
0xA3
ڊائون لنڪ
جڏهن گيٽ وي ڪلائنٽ ڏانهن يو ڊي پي پيڪٽ منتقل ڪري ٿو.
0xC1
مٿي لنڪ جاري رکڻ
جڏهن گيٽ وي مقامي نيٽ ورڪ ڏانهن يو ڊي پي پيڪٽ موڪلي ٿو.
ٺيڪ آهي. هاڻي اچو ته ٽيبل 3 ۾ سيشن جي جوڙجڪ تي بحث ڪريون.
ٽيبل 3. سيشن
سيشن جو نالو
تخليق
ڪميونٽي
سيشن ڪوڊ (1 بائيٽ) + LoRa نيٽ ورڪ جو نالو (4 بائيٽ) + شروعاتي پورٽ (2 بائيٽ) + آخر پورٽ (2 بائيٽ)
اپليڪيشن
ٽرانسميشن ڪوڊ (1 بائيٽ) + LoRa نيٽ ورڪ جو نالو (4 بائيٽ) + ترجيحي پورٽ (2 بائيٽ)
رضامندي يا انڪار
ٽرانسميشن ڪوڊ (1 بائيٽ) + LoRa نيٽ ورڪ جو نالو (4 بائيٽ) + ترجيحي پورٽ (2 بائيٽ) + نتيجو (1 بائيٽ)
مٿي لنڪ
ٽرانسميشن ڪوڊ (1 بائيٽ) + LoRa نيٽ ورڪ جو نالو (4 بائيٽ) + ريموٽ IP پتو (4 بائيٽ) + ريموٽ پورٽ (2 بائيٽ) + مقامي IP پتو (4 بائيٽ) + مقامي پورٽ (2 بائيٽ) + ڊيٽا سائيز (2 بائيٽ) + ڊيٽا
ڊائون لنڪ
ٽرانسميشن ڪوڊ (1 بائيٽ) + LoRa نيٽ ورڪ جو نالو (4 بائيٽ) + ريموٽ IP پتو (4 بائيٽ) + ريموٽ پورٽ (2 بائيٽ) + مقامي IP پتو (4 بائيٽ) + مقامي پورٽ (2 بائيٽ) + ڊيٽا سائيز (2 بائيٽ) + ڊيٽا
مٿي لنڪ جاري رکڻ
ريموٽ IP پتو (4 بائيٽ) + ريموٽ پورٽ (2 بائيٽ) + ڊيٽا سائيز (2 بائيٽ) + ڊيٽا
مون Arduino ۽ M5Stack لاءِ ٻه ڪلائنٽ لکيا. توهان ڏسي سگهو ٿا ته اهو ڪيئن ڪم ڪري ٿو. اپارٽمينٽ اندر ڪو مسئلو ناهي، پر مون اڃا تائين ڪو به فيلڊ ٽيسٽ نه ڪيو آهي.
سورس ڪوڊ GitHub تي موجود آهي
توهان M5Stack بنيادي ڊوائيس بابت وڌيڪ سکو ۽ ان کي هتي خريد ڪري سگهو ٿا.
توهان بيس ڊيوائس لاءِ وائرليس LoRa ماڊلز چونڊي سگهو ٿا
مون کي خوشي ٿيندي جيڪڏهن هي منصوبو توهان لاءِ ڪارآمد ثابت ٿئي. توهان جي وقت لاءِ تمام گهڻو مهرباني!
حوالن ۽ (يا) ذريعن جي فهرست:
جو ذريعو: www.habr.com
