يعد الاتصال اللاسلكي بين الأجهزة والوحدات الإلكترونية أمرًا مهمًا للغاية ، لجعلها "مناسبة" في عالم إنترنت الأشياء. أتاح بروتوكول HTTP ولغة HTML نقل البيانات في أي مكان في العالم عبر الويب. لقد قمنا بالفعل بتغطية بعض المشاريع التي تستخدم Wi-Fi مع Arduino ، ألق نظرة عليها للبدء:
- إرسال بريد إلكتروني باستخدام Arduino و ESP8266 WiFi Module
- روبوت يتم التحكم فيه عن طريق WiFi باستخدام Arduino
- التحكم في RGB LED باستخدام Arduino و Wi-Fi
الآن في هذا البرنامج التعليمي ، نقوم ببناء برنامج لإرسال البيانات إلى الويب باستخدام وحدة Arduino و Wi-Fi. لهذا نحتاج أولاً إلى عنوان IP لخادم عالمي أو محلي ، هنا لغرض السهولة والتوضيح ، نحن نستخدم الخادم المحلي.
المكونات المطلوبة:
- اردوينو UNO
- وحدة واي فاي ESP8266
- كابل USB
- توصيل الأسلاك
- حاسوب محمول
- مزود الطاقة
وحدة Wi-Fi ESP8266:
توصيلات الدائرة:
يرد أدناه مخطط الدائرة لـ "بيانات النشر من Arduino إلى الويب". نحتاج بشكل أساسي إلى وحدة Wi-Fi من Arduino و ESP8266. ترتبط دبابيس Vcc و GND الخاصة بـ ESP8266 مباشرةً بـ 3.3 فولت و GND من Arduino و CH_PD متصل أيضًا بـ 3.3 فولت. دبابيس Tx و Rx من ESP8266 متصلة مباشرة بالدبوس 2 و 3 من Arduino. تُستخدم مكتبة البرامج التسلسلية للسماح بالاتصال التسلسلي على الدبوس 2 و 3 من Arduino. لقد قمنا بالفعل بتغطية واجهة وحدة ESP8266 Wi-Fi إلى Arduino بالتفصيل.
باستخدام Software Serial Library هنا ، سمحنا بالاتصال التسلسلي على الطرف 2 و 3 ، وجعلناهما Rx و Tx على التوالي. بشكل افتراضي ، يتم استخدام Pin 0 و 1 من Arduino للاتصال التسلسلي ولكن باستخدام مكتبة SoftwareSerial ، يمكننا السماح بالاتصال التسلسلي على دبابيس رقمية أخرى في Arduino.
ملاحظة: لمشاهدة استجابة ESP8266 على الشاشة التسلسلية ، يرجى فتح Serial Monitor of Arduino IDE.
شرح العمل:
بادئ ذي بدء ، نحتاج إلى توصيل وحدة Wi-Fi الخاصة بنا بجهاز توجيه Wi-Fi للاتصال بالشبكة. ثم سنقوم بتكوين الخادم المحلي وإرسال البيانات إلى الويب وأخيرًا إغلاق الاتصال. تم شرح هذه العملية والأوامر في الخطوات التالية:
1. نحتاج أولاً إلى اختبار وحدة Wi-Fi عن طريق إرسال أمر AT ، وسيعيد الرد الذي يحتوي على موافق .
2. بعد ذلك ، نحتاج إلى تحديد الوضع باستخدام الأمر AT + CWMODE = mode_id ، وقد استخدمنا معرف الوضع = 3. معرّفات الوضع:
1 = وضع المحطة (العميل)
2 = وضع AP (المضيف)
3 = وضع AP + المحطة (نعم ، ESP8266 به وضع مزدوج!)
3. نحتاج الآن إلى فصل وحدة Wi-Fi الخاصة بنا عن شبكة Wi-Fi المتصلة سابقًا ، باستخدام الأمر AT + CWQAP ، نظرًا لأن ESP8266 هو الاتصال التلقائي التلقائي بأي شبكة Wi-Fi متوفرة مسبقًا
4. بعد ذلك ، يمكن للمستخدم إعادة تعيين الوحدة باستخدام الأمر AT + RST . هذه الخطوة اختيارية.
5. الآن نحن بحاجة إلى توصيل ESP8266 بجهاز توجيه Wi-Fi باستخدام أمر معين
6. احصل الآن على عنوان IP باستخدام الأمر المحدد:
سيعود عنوان IP.
7. الآن قم بتمكين وضع تعدد الإرسال باستخدام AT + CIPMUX = 1 (1 للاتصال المتعدد و 0 للاتصال الفردي)
8. قم الآن بتكوين ESP8266 كخادم باستخدام AT + CIPSERVER = 1 ، port_no (قد يكون المنفذ 80). الآن شبكة Wi-Fi جاهزة. هنا يتم استخدام "1" لإنشاء الخادم و "0" لحذف الخادم.
9. الآن باستخدام أمر معين ، يمكن للمستخدم إرسال البيانات إلى الخادم المحلي المنشأ:
المعرف = رقم المعرف. من اتصال الإرسال
الطول = أقصى طول للبيانات 2 كيلو بايت
10. بعد إرسال المعرف والطول إلى الخادم ، نحتاج إلى إرسال بيانات مثل: Serial.println (“[email protected]”)؛
11. بعد إرسال البيانات ، نحتاج إلى إغلاق الاتصال بأمر معين:
الآن تم نقل البيانات إلى الخادم المحلي.
12. الآن اكتب عنوان IP في شريط العناوين في متصفح الويب واضغط على إدخال. الآن يمكن للمستخدم رؤية البيانات المنقولة على صفحة الويب.
تحقق من الفيديو أدناه لإكمال العملية.
خطوات البرمجة:
1. قم بتضمين SoftwareSerial Library للسماح بالاتصال التسلسلي على PIN 2 و 3 والإعلان عن بعض المتغيرات والسلاسل.
#تضمن
2. بعد ذلك ، علينا تحديد بعض الوظائف لأداء المهام المطلوبة.
في وظيفة Setup () ، نقوم بتهيئة اتصال UART التسلسلي المدمج لـ ESP8266 كـ client.begin (9600) ؛ بمعدل الباود 9600.
إعداد باطل () {Serial.begin (9600) ؛ client.begin (9600) ؛ wifi_init () ، Serial.println ("جاهز للنظام..")؛ }
3. في وظيفة wifi_init () ، نقوم بتهيئة وحدة wifi عن طريق إرسال بعض الأوامر مثل إعادة الضبط ، وضبط الوضع ، والاتصال بجهاز التوجيه ، وتكوين الاتصال وما إلى ذلك. وقد تم شرح هذه الأوامر أيضًا أعلاه في جزء الوصف.
باطل wifi_init () {connect_wifi ("AT" ، 100) ؛ connect_wifi ("AT + CWMODE = 3" ، 100) ؛ connect_wifi ("AT + CWQAP" ، 100) ؛ connect_wifi ("AT + RST" ، 5000) ؛…………………
4. في وظيفة connect_wifi () ، نرسل بيانات الأوامر إلى ESP8266 ثم نقرأ الاستجابة من وحدة ESP8266 Wi-Fi.
void connect_wifi (String cmd، int t) {int temp = 0، i = 0؛ بينما (1) {Serial.println (cmd) ؛…………………
5. يتم استخدام وظيفة sendwebdata () لإرسال البيانات إلى الخادم المحلي أو صفحة الويب.
إرسال بيانات باطلة (سلسلة صفحة ويب) {int ii = 0 ؛ while (1) {unsigned int l = webPage.length () ؛ Serial.print ("AT + CIPSEND = 0،") ؛ client.print ("AT + CIPSEND = 0،") ؛…………………
6. يتم استخدام وظيفة إرسال باطلة () لإرسال سلاسل البيانات إلى وظيفة sendwebdata () . سيتم إرسال ذلك إلى صفحة الويب.
إرسال باطل () {صفحة ويب = "
مرحبًا بكم في Circuit Digest
"؛ sendwebdata (صفحة الويب) ؛ صفحة الويب = الاسم ؛ صفحة الويب + = dat ؛…………………7. تستخدم وظيفة get_ip () للحصول على عنوان IP للخادم المحلي المنشأ.
8. في وظيفة الحلقة الفارغة () ، نرسل تعليمات إلى المستخدم لتحديث الصفحة والتحقق مما إذا كان الخادم متصلاً أم لا. عندما يقوم المستخدم بتحديث أو طلب صفحة الويب ، يتم نقل البيانات تلقائيًا إلى نفس عنوان IP.
حلقة باطلة () {k = 0 ؛ Serial.println ("الرجاء تحديث صفحتك") ؛ بينما (ك <1000)………………
يمكننا عرض أي بيانات من Arduino إلى صفحة الويب باستخدام هذه العملية ، مثل درجة حرارة الغرفة والرطوبة ووقت الساعة وإحداثيات GPS ومعدل ضربات القلب وما إلى ذلك.