جدول المحتويات:
فيديو: اتصال البيانات المباشر ESP8266: 3 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
مقدمة
أثناء القيام ببعض المشاريع باستخدام وحدات Arduinos و nRF24l01 ، كنت أتساءل عما إذا كان بإمكاني توفير بعض الجهد باستخدام وحدة ESP8266 بدلاً من ذلك. تتمثل ميزة الوحدة النمطية ESP8266 في أنها تحتوي على وحدة تحكم صغيرة على اللوحة ، لذلك لا حاجة إلى لوحة Arduino إضافية. بالإضافة إلى ذلك ، فإن حجم ذاكرة ESP8266 أكبر بكثير وفيما يتعلق بالسرعة يعمل ESP8266 بحد أقصى 160 ميجاهرتز بدلاً من 16 ميجاهرتز في Arduino. بالطبع هناك بعض الجوانب السلبية.
يعمل ESP8266 على 3.3 فولت فقط ، ويحتوي على عدد أقل من المسامير ويفقد المدخلات التناظرية الرائعة التي يمتلكها Arduino (يحتوي على مدخل واحد ، ولكن فقط لـ 1.0 فولت وليس 3.3 فولت). بالإضافة إلى ذلك ، هناك العديد من أمثلة الأكواد الخاصة بـ Arduino + nRF24l01 ثم هناك ESP8266 خاصة عندما يتعلق الأمر بنقل البيانات المباشر.
لذلك مع وضع مشروع في الاعتبار ، نظرت في موضوع نقل البيانات السريع والخفيف بين جهازي ESP8266 بدون كل عناصر WWW و
أثناء البحث في الإنترنت عن أمثلة (تم اختيار معظم الكود أدناه من الشبكة في أماكن مختلفة) صادفت العديد من الأسئلة حول كيفية تنفيذ نقل البيانات المباشر بدون أمثلة "افعل ذلك على هذا النحو" اللطيفة. كان هناك بعض الأمثلة على الكود ، ولكن في الغالب مع التساؤل عن سبب عدم نجاحها.
لذلك بعد بعض القراءة ومحاولة الفهم ، قمت بإنشاء الأمثلة التالية التي تسمح بنقل سريع وبسيط للبيانات بين جهازي ESP8266.
الخطوة 1: الحدود والخلفيات (TCP مقابل UDP)
للوصول إلى هناك ، يجب توضيح بعض الحدود مقارنةً بـ nRF24l01.
لاستخدام ESP8266 في بيئة Arduino ، فإن المكتبة الأساسية التي يجب استخدامها هي ESP8266WiFi.h. قد تكون مختلفة ، ولكن معظم الأمثلة تستخدم في. عند استخدام هذا ، تحتاج إلى توصيل اتصالاتك بمستوى WiFi.
لذلك ، للتواصل ، يجب أن يكون هناك على الأقل نقطة وصول (AP) / خادم وعميل. يوفر AP اسم الشبكة وعناوين IP وسيقوم العميل بالاتصال بهذا الخادم.
مقارنةً بـ nRF24l01 ، حيث يكون الرمز في كلا الطرفين متماثلًا إلى حد ما (باستثناء قنوات الإرسال) ، يختلف رمز ESP8266 اختلافًا جوهريًا ، حيث تم تكوين أحدهما كـ AP والآخر كعميل.
الموضوع التالي هو أنه بدلاً من مجرد إرسال بعض البايتات إلى nRF24l01 ، يجب مراعاة بروتوكولات النقل ESP8266.
هناك نوعان من البروتوكولات الشائعة المستخدمة: TCP و UDP.
TCP (بروتوكول التحكم في الإرسال) هو بروتوكول يسمح بنقل خالي من الخسارة بين الخادم والعميل. يشتمل البروتوكول على "المصافحة" (الكثير من الأعلام والإشارات المرسلة بين الطرفين) وترقيم الحزم والكشف لتحديد وإعادة إرسال الحزم المفقودة. بالإضافة إلى ذلك ، باستخدام كل هذه المصافحة ، يمنع البروتوكول فقدان البيانات بسبب إرسال العديد من الحزم في نفس الوقت في الشبكة. تنتظر حزم البيانات حتى يتم استلامها.
يفتقر UDP (بروتوكول مخطط بيانات المستخدم) إلى جميع عمليات الاتصال وترقيم الحزم وإعادة الإرسال. وبالتالي ، فإن حملها أصغر ولا توجد حاجة لجميع المصافحة للحفاظ على الاتصال. يتضمن UDP بعض اكتشاف الأخطاء الأساسية ، ولكن لا يوجد تصحيح (تم إسقاط الحزمة التالفة للتو). يتم إرسال البيانات دون معرفة ما إذا كان للطرف المتلقي حرية استلام البيانات. في الوقت نفسه ، يمكن أن تتعارض الحزم المتعددة ، حيث يرسل كل طرف البيانات كلما دعت الحاجة. بحذف جميع المصافحات ، هناك ميزة أخرى لطيفة لـ UDP تسمى "البث المتعدد" و "البث". في حالة "الإرسال المتعدد" ، يتم إرسال حزم البيانات إلى مجموعة محددة مسبقًا من الأعضاء ، في حزم بيانات "البث" يتم إرسالها إلى جميع الأعضاء المتصلين. هذا يقلل بشكل كبير من نقل البيانات في حالة تلقي تدفقات من قبل أعضاء متعددين (على سبيل المثال عن طريق إرسال تغذية فيديو إلى أجهزة استقبال متعددة أو عن طريق إرسال الوقت الحالي إلى أجهزة متصلة متعددة).
هناك بعض مقاطع الفيديو الجيدة على Youtube تشرحها بشكل أفضل.
لذلك عند إرسال البيانات ، من المهم معرفة احتياجاتك:
- بيانات غير تالفة ، إدارة العديد من الأقران عن طريق المصافحة → TCP
- بيانات الوقت الحقيقي ، اتصال سريع → UDP
لقد بدأت أولاً بتنفيذ اتصال قائم على بروتوكول TCP (بين خادم واحد وعميل واحد). أثناء اختباره ، واجهت مشاكل في المماطلة في الإرسال. في البداية تم تبادل البيانات بسرعة ، ثم بعد فترة انخفضت السرعة بشكل كبير. استنتجت أن هذه كانت مشكلة نموذجية لنهج TCP (وهو خطأ!) ، لذلك تغيرت بعد ذلك إلى حل يعتمد على UDP. أخيرًا ، اقتربت من العمل. لذلك سيتم توفير كلا الحل.
الرسومات أدناه لها القاسم المشترك بين TCP و UDP وهي:
- مستقلة عن أي شبكة WiFi موجودة. لذلك ستعمل في أي مكان بعيدًا عن الإنترنت وأجهزة التوجيه المتصلة.
- ترسل بيانات ASCII لتتم طباعتها عبر الشاشة التسلسلية.
- ترسل البيانات التي تم الحصول عليها بواسطة الدالة millis () - لتحليل سرعة الإرسال.
- لم يتم اختبارها لعدة عملاء (نظرًا لوجود الأجهزة اللازمة لإعداد الشبكة في الوقت الحالي)
الخطوة 2: الأجهزة
لاختبار الإعداد بالكامل ، استخدمت وحدتي ESP8266. وحدة واحدة هي محول ESP-01 + USB-to-UART. الوحدة الأخرى عبارة عن وحدة قائمة على ESP-12 تتضمن اتصال USB ومنظم الجهد وبعض الأشياء الممتعة مثل المفاتيح و LDR و LED متعدد الألوان.
احتاجت وحدة USB-to-UART لـ ESP-01 إلى التعديل قليلاً لتتمكن من استخدامها كمبرمج (مرة أخرى Youtube بواسطة Csongor Varga).
لتشغيل الرسومات ، تحتاج إلى تثبيت مكتبات ESP8266 (كما هو موضح في العديد من الأماكن على الإنترنت). في كلتا الحالتين (TCP و UDP) يوجد مخطط لكل من الخادم والعميل. الرسم الذي تم تحميله إلى أي وحدة لا يهم.
شكر وتقدير
كما ذكرنا ، تستند الرسومات إلى العديد من الأجزاء والقطع التي وجدتها على الويب. لم أعد أتذكر أين وجدت ماذا ، وما هو الرمز الأصلي أو ما الذي قمت بتغييره. لذلك أردت فقط أن أشكر المجتمع الكبير بشكل عام لنشر جميع الأمثلة الرائعة.
الخطوة 3: الرسومات
يتكون الكود من رسمين لكل منهما (كما هو موضح) ، رسم تخطيطي للخادم ورسم تخطيطي للعميل ، لكل من TCP و UDP.
موصى به:
احصل على سعر البيتكوين المباشر TTGO ESP32: 10 خطوات
احصل على سعر مباشر للبيتكوين TTGO ESP32: في هذا البرنامج التعليمي سوف نتعلم كيفية الحصول على سعر البيتكوين الحالي بالدولار الأمريكي واليورو باستخدام TTGO ESP32 و Visuino. شاهد الفيديو (ملف محدث جديد للتنزيل أدناه!)
كيفية بدء البث المباشر للألعاب: 9 خطوات
كيفية بدء البث المباشر للألعاب: ستوضح لك هذه التعليمات كيفية إعداد بث باستخدام Open Broadcaster Software أو OBST لبدء البث المباشر باستخدام OBS ، فأنت تريد الأشياء التالية كمبيوتر قادر على تشغيل لعبتك وبرنامج البث
كيفية البث المباشر باستخدام Raspberry Pi: 5 خطوات
كيفية البث المباشر باستخدام Raspberry Pi: في هذا البرنامج التعليمي ، سوف نتعلم كيفية صنع كاميرا المراقبة الخاصة بنا باستخدام Raspberry Pi. يمكنك الوصول إلى هذا البث باستخدام أي جهاز طالما أنه متصل بنفس الشبكة التي يستخدمها RPi
نظام الحصول على البيانات وتصور البيانات لدراجة سباق كهربائية MotoStudent: 23 خطوة
نظام الحصول على البيانات وتصور البيانات لدراجة سباق كهربائية MotoStudent: نظام الحصول على البيانات عبارة عن مجموعة من الأجهزة والبرامج تعمل معًا من أجل جمع البيانات من أجهزة الاستشعار الخارجية وتخزينها ومعالجتها بعد ذلك بحيث يمكن تصورها بيانياً وتحليلها ، السماح للمهندسين بعمل
اتصال TCP / IP عبر GPRS: كيفية إرسال البيانات إلى الخادم باستخدام وحدة SIM900A: 4 خطوات
اتصال TCP / IP عبر GPRS: كيفية إرسال البيانات إلى الخادم باستخدام وحدة SIM900A: في هذا البرنامج التعليمي سأخبرك عن كيفية إرسال البيانات إلى خادم TCP باستخدام وحدة sim900. سنرى أيضًا كيف يمكننا تلقي البيانات من الخادم إلى العميل (وحدة GSM)