جدول المحتويات:

اتصال البيانات المباشر ESP8266: 3 خطوات
اتصال البيانات المباشر ESP8266: 3 خطوات

فيديو: اتصال البيانات المباشر ESP8266: 3 خطوات

فيديو: اتصال البيانات المباشر ESP8266: 3 خطوات
فيديو: Send DHT11 Data to Blynk2.0 IoT App and Web Dashboard: Streamline Your Data Monitoring! 2024, شهر نوفمبر
Anonim
ESP8266 اتصال البيانات المباشر
ESP8266 اتصال البيانات المباشر

مقدمة

أثناء القيام ببعض المشاريع باستخدام وحدات 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.

موصى به: