مكتبة لإجراء استعلامات HTTP باستخدام وحدة ESP8266 WiFi وArduino

مكتبة لإجراء استعلامات HTTP باستخدام وحدة ESP8266 WiFi وArduino

مكتبة لإجراء استعلامات HTTP باستخدام وحدة ESP8266 WiFi وArduino

تتمثل إحدى الطرق البسيطة لإرسال المعلومات من وإلى وحدة التحكم الدقيقة في مركزيتها على خادم الويب. على الرغم من أنها ليست طريقة فعالة مثل، على سبيل المثال، الوصول المباشر إلى قاعدة بيانات، إلا أنها فعالة بما فيه الكفاية، خاصة إذا كنت تفكر في مشروع يعتمد على وحدة تحكم دقيقة، وأضفت مزايا الوجود المطلق (البيانات في السحابة) والبساطة (أنها يمكن التعامل معها كمعلومات وأوامر نصية).يمكن أن يتكون إرسال المعلومات باستخدام هذا النظام من تقديم طلبات HTTP POST واستلامها من خلال تحليل محتوى الاستجابة لطلب HTTP GET.

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

    El وحدة واي فاي ESP8266 إنه خيار اقتصادي للغاية، مع أداء مناسب جدًا للاستخدام مع وحدات التحكم الدقيقة وسهل الاستخدام للغاية مع أوامر AT.

    لتنظيم استخدامه مع طلبات HTTP، قمت بتطوير مكتبة صغيرة تدعم احتياجات مشروع جهاز إدارة النوم الخاص بي (الذي أسميته SleepManager) نظرًا لأنه يبني بنيته التحتية على خادم ويب يسمح بتوسيعها إلى كائن. IOT كما الخدمة السحابية. ليس من الصعب إضافة خدمات أخرى مثل طلبات UDP إلى المكتبة على سبيل المثال مزامنة الوقت عبر NTP على الرغم من أنه، كما أوضحت في النص المرتبط، فهو ليس بالغ الأهمية لاحتياجاتي ويمكنني حله بشكل مقبول من خلال طلب HTTP إلى صفحة ويب معدة لهذا الغرض، كما أوضح في مثال استخدام هذه المكتبة.

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

    تستفيد المكتبة من حقيقة أن وحدة ESP8266 WiFi تقوم بإرجاع رمز +IPD كتحذير لاستقبال البيانات لملء مخزن مؤقت صغير بالمعلومات التي يعيدها الخادم. بالنسبة لمشروع جهاز إدارة النوم، أحتاج إلى تحليل القليل جدًا من البيانات التي يتم إرجاعها من الخادم، لذلك، من أجل التوفير، يكون المخزن المؤقت والمؤشر الذي يعمل من خلاله صغيرًا بشكل خاص؛ سيكون هذا أحد الأشياء الأولى التي سيتعين عليك تغييرها لإعادة استخدام المكتبة لمعالجة حجم أكبر من البيانات.

    تسمح الوظائف التي يتم عرضها للعامة (1) بمعرفة حالة الوحدة: إذا كانت متصلة أم لا، وما إذا كانت هناك بيانات في المخزن المؤقت وكم، وما إذا كانت وحدة ESP8266 قد أكملت العملية المطلوبة ; (2) الاتصال بنقطة وصول WiFi على شبكة بها خادم DHCP و(3) تقديم طلبات HTTP GET وPOST، على الرغم من أن الكود، كما سترون، مصمم لتسهيل إضافة الآخرين.

    فيما يتعلق بالأداء الداخلي، تم أولاً إنشاء مصفوفتين، إحداهما بأوامر AT والأخرى بالاستجابات المتوقعة للنجاح والخطأ؛ بعد ذلك، يجب على البرنامج الذي يستخدم المكتبة استدعاء الدالة من وقت لآخر إرسال والذي سيكون مسؤولاً عن إرسال الطلبات إلى الوحدة إذا كانت متوفرة وكانت الوظيفة غير مشغولة بالفعل recibir والتي ستعالج الاستجابات من وحدة ESP8266 (ومن خادم HTTP من خلالها إن أمكن)

    نظرًا لأنه قد يتم فصل الوحدة بسبب فقدان الإشارة، يمكن للبرنامج الرئيسي التحقق مما إذا كانت وحدة ESP8266 متصلة بنقطة وصول WiFi (مع الوظيفة متصل) وحاول الاتصال بطريقة أخرى (مع الوظيفة Connect_wifi)

    لمعرفة ما إذا كانت العملية المطلوبة قد انتهت، يمكن للبرنامج استخدام الوظيفة Operation_finished وفي هذه الحالة أرسل آخر أو استخدم البيانات الناتجة التي يتم استخدام الوظيفة من أجلها read_buffer، والتي تقوم بإرجاع محتويات المخزن المؤقت الذي تم ملؤه بالبيانات التي وصلت إلى وحدة ESP8266 حتى اكتمال العملية، والدالة buffer_length الذي يُبلغ عن مقدار هذه البيانات التي حذر الخادم من أنه سيتم إرسالها (بحيث يمكن خصم المعلومات من الوحدة نفسها)

    يستخدم المثال أدناه مكتبة استعلام HTTP مع وحدة ESP8266 WiFi لإرسال البيانات إلى الخادم (نسبة مئوية يتم الحصول عليها من قراءة المدخلات التناظرية) كل فترة زمنية معينة. نظرًا لأنه لا يتوقع تلقي أي استجابة، فهو لا يستخدم المخزن المؤقت ويكفي لإكمال العملية بشكل صحيح. هذا النظام هو ما أستخدمه في مشروع جهاز إدارة النوم الخاص بي لتخزين نتائج قراءات المستشعر على الخادم.

    يستخدم المثال التالي استعلام HTTP GET للاستعلام عن وقت الخادم ومزامنته مع وقت الجهاز الذي يتم التحكم فيه بشكل دقيق عن طريق إضافة وقت الاستجابة المقدر؛ في الواقع، فهي تضيف 4 إلى 6 ثوانٍ أخرى للتأكد من أن وقت الجهاز أكبر من وقت الخادم وللتحقق بسهولة مما إذا كان الوقت على ساعة الوقت الفعلي التي تعد جزءًا من الجهاز صحيحًا أم أنه تم فقده بسبب التنزيل . بطارية.

    بعد العديد من الاختبارات تأكدت من أن هذا النظام مزامنة الوقت مع وحدة WiFi ESP8266 إنه دقيق بما فيه الكفاية لاحتياجاتي. في أسوأ الحالات مع خطأ أقل من 10 ثوانٍ وهو أمر غير ذي صلة إلى حد ما في حالتي.

    كما يمكن رؤيته في الكود، من الضروري أولاً الاستعلام عن طول المخزن المؤقت حيث أن القراءة تعيد تعيينه بحيث يكون متاحًا لتخزين البيانات الجديدة.

    بمجرد قراءة محتوى المخزن المؤقت، تتم معالجته في هذا المثال للحصول على الوقت. أولاً، يتم تحديد النص الموجود بين الأقواس (يستجيب الخادم باستخدام الأمر PHP echo “{“.time().”}”) lo transforma en un “objeto tiempo” y de él obtiene en formato humano la fecha y la hora.

    يُستخدم مثال البرنامج التالي، المستوحى من استعلام المستخدم، للعثور على عنوان IP العام باستخدام الخدمة CheckIP AWS (خدمات ويب أمازون) كل خمس دقائق.

    كما في الأمثلة السابقة، تم وضع سلسلة من الافتراضات التي يجب تغييرها اعتمادًا على تكوين الشبكة المستخدم (192.168.1.X، في المثال)، وSSID ومفتاح WiFi... طريقة العثور على عنوان IP ليس أنيقًا جدًا، فهو يفترض أنه السطر الأخير من الاستجابة لطلب HTTP GET على الرغم من أنه قد يكون هناك واجهة برمجة تطبيقات (API) للقيام بذلك بطريقة أكثر تقليدية.


    يمكنك قم بتنزيل مكتبة ESP8266 لاستعلامات HTTP باستخدام Arduino Uno (بدون وحدة التحكم) ومن هنا يمكنك ذلك قم بتنزيل مكتبة استعلام ESP8266 HTTP لـ Arduino يستخدم وحدة تحكم، أي أنه يحتاج إلى تنفيذ منفذ تسلسلي عن طريق البرنامج أو استخدامه كجهاز، على سبيل المثال، اللوحة الأم ميجا اردوينو o اردوينو ليوناردو.

    أكتب تعليق

    ربما تكون قد فاتتك