اتصل بأقوى شبكة WiFi في ESP32 باستخدام WiFi متعدد الوظائف

Atsl Baqwy Shbkt Wifi Fy Esp32 Bastkhdam Wifi Mt Dd Alwzayf



ESP32 عبارة عن لوحة متحكم تعتمد على إنترنت الأشياء مع دعم WiFi و Bluetooth. يمكن أن يعمل ESP32 في ثلاثة أوضاع WiFi مختلفة (المحطة أو الوصول أو كليهما). باستخدام كل هذه الأوضاع ، يمكن لـ ESP32 تحسين اتصاله اللاسلكي بعدة طيات. سنناقش اليوم دعم شبكات WiFi المتعددة في ESP32 للاتصال بأقوى شبكة متاحة.

ESP32 مع WiFi متعدد الوظائف

يمكن لـ ESP32 الاتصال بشبكات متعددة إذا كان لدينا وصول إلى أكثر من شبكة واحدة ، نحتاج فقط إلى تحديد SSID وكلمة المرور الخاصة بهم داخل الرمز. سيبحث عن الشبكة المتاحة ويتصل بأقوى شبكة Wi-Fi نحددها في الكود.







ملحوظة: تذكر أنه سيتصل بشبكة واحدة في كل مرة إذا فُقد الاتصال بهذه الشبكة ، فسيقوم ESP32 بالاتصال بشبكات WiFi المتاحة الأخرى.



يمكننا فتح WiFiMulti على سبيل المثال في Arduino IDE:



اذهب إلى : ملف> أمثلة> WiFi> WifiMulti





كيفية إضافة شبكات WiFi متعددة في ESP32

لإضافة شبكات WiFi متعددة في لوحة ESP32. سوف نستخدم ملف واي فاي تعمل مع addAP () . يمكن أن تقبل الدالة addAP () عدة معرفات SSID وكلمات مرور كوسيطة. لإضافة شبكات متعددة ، يجب تحديد SSID وكلمات المرور بشكل منفصل. فيما يلي بناء الجملة لإضافة أكثر من شبكة باستخدام واي فاي تعمل مع addAP () :



واي فاي addAP ( 'شبكة SSID 1' و 'كلمة المرور 1' ) ؛

واي فاي addAP ( 'شبكة SSID 2' و 'كلمة المرور 2' ) ؛

واي فاي addAP ( 'شبكة SSID 3' و 'كلمة المرور 3' ) ؛

كيفية الاتصال بأقوى شبكة WiFi في ESP32

لتوصيل ESP32 بأقوى شبكة متاحة ، سنجمع بين فحص ESP32 WiFi ومثال WiFi المتعدد. سنكتب رمزًا في Arduino IDE يقوم بالخطوات التالية:

  • ابحث عن الشبكات المتاحة
  • اطبع RSSI (قوة الإشارة) الخاصة بهم على الشاشة التسلسلية. لذلك ، يمكننا التحقق من أقوى شبكة متاحة
  • يتصل تلقائيًا بأقوى شبكة
  • إذا فقدت الاتصال ، فسوف تتصل تلقائيًا بأقوى شبكة متوفرة تالية

لاختبار الكود ، سنستخدم ملف هاتف ذكي نقطة اتصال وشبكة WiFi. قم دائمًا بتعيين اسم بسيط لشبكة نقطة الاتصال المحمولة لتجنب أي خطأ.

الآن قم بتحميل الكود الوارد في لوحة ESP32 باستخدام Arduino IDE.

شفرة

افتح Arduino IDE وقم بتحميل الكود في ESP32. تذكر تحديد منفذ COM.

# تضمين / * مكتبة WIFI مضمنة * /

# تضمين / * تتضمن مكتبة WIFI متعددة * /

واي فاي متعدد ؛
/ * لكل وقت اتصال AP. تزداد عندما يستغرق ESP32 وقتًا أطول للاتصال * /
مقدار ثابت uint32_t connectTimeoutMs = 10000 ؛
فارغ اقامة ( ) {
مسلسل. يبدأ ( 115200 ) ؛ / * يبدأ الاتصال التسلسلي * /
تأخير ( 10 ) ؛
واي فاي. الوضع ( WIFI_STA ) ؛ / * تمت تهيئة ESP32 WIFI كمحطة * /
/ * اكتب كل SSID المعروف وكلمات المرور الخاصة به * /
واي فاي addAP ( 'SSID الخاص بك' و 'كلمه السر' ) ؛ / * الشبكة 1 التي نريد الاتصال بها * /
واي فاي addAP ( 'هاتف' ) ؛ / * الشبكة 2 التي نريد الاتصال بها * /
// WiFi.scanNetworks سيعطي إجمالي الشبكات
int ن = واي فاي. مسح الشبكات ( ) ؛ / * البحث عن الشبكة المتاحة * /
مسلسل. println ( 'تم الفحص' ) ؛
إذا ( ن == 0 ) {
مسلسل. println ( 'لا توجد شبكات متاحة' ) ؛ / * يطبع إذا لم يتم العثور على شبكة * /
}
آخر {
مسلسل. مطبعة ( ن ) ؛
مسلسل. println ( 'تم العثور على شبكات' ) ؛ / * يطبع إذا وجدت الشبكة * /
إلى عن على ( int أنا = 0 ؛ أنا < ن ؛ ++ أنا ) {
مسلسل. مطبعة ( أنا + 1 ) ؛ / * اطبع SSID و RSSI للشبكة المتاحة * /
مسلسل. مطبعة ( ':' ) ؛
مسلسل. مطبعة ( واي فاي. SSID ( أنا ) ) ؛
مسلسل. مطبعة ( '(' ) ؛
مسلسل. مطبعة ( واي فاي. RSSI ( أنا ) ) ؛
مسلسل. مطبعة ( ')' ) ؛
مسلسل. println ( ( واي فاي. نوع التشفير ( أنا ) == WIFI_AUTH_OPEN ) ؟ '' : '*' ) ؛
تأخير ( 10 ) ؛
}
}
/ * يتصل بأقوى شبكة معرفة متوفرة مع SSID وكلمة المرور المتاحة * /
مسلسل. println ( 'جارٍ الاتصال بشبكة Wifi ...' ) ؛
إذا ( واي فاي يجري ( ) == WL_CONNECTED ) {
مسلسل. println ( '' ) ؛
مسلسل. println ( 'متصل بشبكة WIFI' ) ؛
مسلسل. println ( 'عنوان IP للشبكة المتصلة:' ) ؛
مسلسل. println ( واي فاي. عنوان IP المحلي ( ) ) ؛ / * طباعة عنوان IP للشبكة المتصلة * /
}
}
فارغ عقدة ( ) {
إذا ( واي فاي يجري ( connectTimeoutMs ) == WL_CONNECTED ) { / * في حالة فقد الاتصال ، سيتم الاتصال بالشبكة التالية * /
مسلسل. مطبعة ( 'اتصال WiFi متصل:' ) ؛
مسلسل. مطبعة ( واي فاي. SSID ( ) ) ؛
مسلسل. مطبعة ( '' ) ؛
مسلسل. println ( واي فاي. RSSI ( ) ) ؛
}
آخر {
مسلسل. println ( 'WiFi غير متصل!' ) ؛ / * إذا فشلت جميع الشروط ، اطبع هذا * /
}
تأخير ( 1000 ) ؛
}

بدأ الكود بتعريف مكتبات WiFi لـ ESP32 ، ثم أنشأنا ملف واي فاي هدف. بعد ذلك ، في جزء الإعداد أضفنا شبكتين. إحداها عبارة عن شبكة WiFi مشفرة بكلمة مرور ، لذا يتعين علينا توفير كلمة مرور أثناء فتح الشبكة الثانية وهي نقطة اتصال للهاتف الذكي ، لذلك لا نحتاج إلى أي كلمة مرور نكتبها فقط SSID للشبكة.

بعد ذلك ، باستخدام wifiMulti.run () سيتصل الأمر ESP32 بأقوى شبكة متوفرة. بمجرد توصيل WiFi ، سيطبع الرمز SSID للشبكة المتصلة وعنوان IP و RSSI.

انتاج |

بعد تحميل الكود إلى ESP32 أولاً ، سوف يقوم بالبحث عن الشبكة المتاحة ثم يتصل بأقوى شبكة متاحة. هنا يمكننا أن نرى قيمة RSSI لكل شبكة ، ويعني انخفاض RSSI أن الشبكة أقوى.

  يتم إنشاء وصف النص تلقائيًا

يمكننا أن نرى أن ESP32 متصل بـ شبكة الهاتف لأنه يحتوي على RSSI قيمة ال -62 والشبكة الأخرى التي تم تعريف SSID وكلمة المرور الخاصة بها هي فريق سام الذي قيمته -73. هنا ، تحتوي شبكة نقطة الاتصال المحمولة على قيمة RSSI أقرب إلى الصفر مما يعني اتصالاً أقوى.

الآن افصل نقطة اتصال الهاتف الذكي. سيقوم ESP32 بتوصيل نفسه بشبكات أخرى متاحة أقوى. كما هو الحال في الإخراج ، يمكننا أن نرى أن ESP32 متصل الآن بأقوى شبكة متاحة تالية. الشبكة التي تتصل بها هي Team SAM التي لها قيمة RSSI 0f -65.

استنتاج

يمكن لـ ESP32 الاتصال بأقوى شبكة متوفرة في دائرتها. نحتاج فقط إلى تحديد شبكات متعددة SSID وكلمة مرور داخل الكود. باستخدام واي فاي الوظيفة سوف يقوم ESP32 بالبحث عن الشبكات المتاحة وعند فقدان الاتصال ، سيتم الاتصال بالشبكات الأخرى المتاحة داخل نطاق ESP32.