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

كيفية استخدام ESP8266 كخادم ويب: 5 خطوات
كيفية استخدام ESP8266 كخادم ويب: 5 خطوات

فيديو: كيفية استخدام ESP8266 كخادم ويب: 5 خطوات

فيديو: كيفية استخدام ESP8266 كخادم ويب: 5 خطوات
فيديو: Get Started With ESP8266 Build an ESP8622 Web Server Arduino Arduino IDE NodeMcu 2024, شهر نوفمبر
Anonim
كيفية استخدام ESP8266 كخادم ويب
كيفية استخدام ESP8266 كخادم ويب

مرحبًا ، أنا أستخدم حاليًا Windows 10 و NodeMCU 1.0 وهنا قائمة بالبرامج التي استخدمتها وأدلة التثبيت التي اتبعتها:

  • اردوينو IDE
  • لوحات إضافية لـ esp8266
  • Spiff

المكتبة المستخدمة:

مقبس ويب

لقد استخدمت NodeMCU كخادم لخدمة ملف HTML قمت بإنشائه من هذا البرنامج التعليمي. لخدمة هذا الملف ، قمت بتحميل الملف إلى نظام ملفات nodemcu باستخدام Spiffs. يرسل ملف HTML البيانات إلى nodemcu باستخدام مآخذ ويب ليتم طباعتها على الشاشة التسلسلية لهذا الغرض ، وقد مكن الاتصال السريع ثنائي الاتجاه عبر مآخذ الويب للخادم والعميل من استخدام هذا كوحدة تحكم عن بعد. في الخطوات التالية ، سأشرح كيفية عمل الكود الخاص بي

اللوازم

NodeMCU

الخطوة 1: اجعلها تعمل

العمل على انجاحه
العمل على انجاحه
العمل على انجاحه
العمل على انجاحه
العمل على انجاحه
العمل على انجاحه

فيما يلي خطوات كيفية عمله

  1. قم بتنزيل الملف المرفق وافتح ملف mousebot.ino
  2. انتقل إلى الرسم> إظهار مجلد الرسم وإنشاء مجلد جديد باسم البيانات
  3. احفظ ملف html من هذا البرنامج التعليمي في المجلد المسمى. سميت خاصتي باسم "جويستيك"
  4. تأكد من أن spiff الخاص بك يعمل بالفعل بالانتقال إلى الأدوات التي ترى "esp8266 تحميل بيانات الرسم"
  5. قم بتحميل ملف html إلى nodemcu بالنقر فوق "esp8266 تحميل بيانات الرسم"
  6. بعد تحميل الملف ، قم بتحميل ملف mousebot.ino إلى nodemcu عن طريق oing إلى arduino IDE والضغط على ctrl U

الخطوة 2: كيف يعمل الكود

أولاً ، نقوم بتضمين المكتبات التي سيستخدمها هذا الرمز

// لتمكين ESP8266 من الاتصال بشبكة WIFI

#include #include #include // لتمكين ESP8266 من العمل كخادم #include // يتيح الاتصال بالخادم والعميل (جهازك المتصل) #include #include // لفتح الملف الذي تم ترميزه على nodemcu #include

قم بتعيين esp8266 كخادم ويب مفتوح على المنفذ 80. المنافذ هي مسارات تمر البيانات من خلالها. كمنفذ خادم ، سيرسل ملف HTML إلى العميل (الأجهزة المتصلة به).

يضيف اتصال websocket باستخدام المنفذ 81 للاستماع إلى الرسائل من العميل

تحتوي مآخذ الويب على المعلمة num و WStype_t والحمولة والحجم. الرقم يحدد رقم العميل ، الحمولة هي الرسالة التي يرسلها ، الحجم هو طول الرسالة و WStype_t للأحداث المختلفة مثل

  • WStype_DISCONNECTED - عند قطع اتصال العميل.
  • WStype_CONNECTED: - عند اتصال العميل
  • WStype_TEXT - البيانات المتلقاة من العميل

اعتمادًا على نوع الحدث ، يتم تنفيذ إجراءات مختلفة ويتم التعليق عليها هنا

webSocketEvent باطل (uint8_t num، WStype_t type، uint8_t * payload، size_t length) {

التبديل (النوع) {case WStype_DISCONNECTED: Serial.printf ("[٪ u] Disconnected! / n"، num)؛ // يطبع البيانات إلى فاصل الشاشة التسلسلي ؛ الحالة WStype_CONNECTED: {IPAddress ip = webSocket.remoteIP (num) ؛ // يحصل على IP للعميل Serial.printf ("[٪ u] متصل من٪ d.٪ d.٪ d.٪ d url:٪ s / n" ، num ، ip [0] ، ip [1] ، ip [2] ، ip [3] ، الحمولة) ؛ webSocket.sendTXT (الأسطوانات ، "متصل") ؛ // يرسل "conencted" إلى كسر وحدة تحكم المتصفح} ؛ الحالة WStype_TEXT: Serial.printf ("[٪ u] البيانات:٪ s / n" ، الأسطوانات ، الحمولة) ؛ // يطبع رقم العميل في٪ u والبيانات المتلقاة كسلاسل في٪ s / n فاصل ؛}}

الخطوة 3: قم بتعيين NODEMCU كخادم

يعيّن SSID وكلمة المرور اللذين ستستخدمهما للاتصال به لاحقًا

const char * ssid = "جرب" ؛

const char * password = "12345678" ؛

عند الإعداد ، نحدد المعدل الذي سيتواصل به nodemcu والكمبيوتر الخاص بنا ، وهو 115200.

إعداد باطل (باطل) {

Serial.begin (115200) ؛ Serial.print ("\ n") ؛

ضبط على صواب أيضًا شاهد إخراج تشخيص wifi على محطة serila

Serial.setDebugOutput (صحيح) ،

initaliaze نظام الملفات

SPIFFS.begin () ،

قم بإعداد nodemcu كنقطة وصول باستخدام ssid وكلمة المرور defiend مسبقًا وطباعة عنوان IP الخاص بـ nodemcu الذي ستتصل به سابقًا. بشكل افتراضي هو 192.168.4.1

Serial.print ("تكوين نقطة الوصول …") ؛

WiFi.mode (WIFI_AP) ؛ WiFi.softAP (SSID ، كلمة المرور) ؛ IPAddress myIP = WiFi.softAPIP () ، Serial.print ("عنوان IP لـ AP:") ؛ Serial.println (myIP) ؛

تهيئة websocket على nodemcu ، وهو خادم محض

webSocket.begin () ،

لاستدعاء الوظيفة webSocketEvent عند وقوع حدث websocket.

webSocket.onEvent (webSocketEvent) ؛

لتصحيح الأخطاء ، اطبع "WebSocket server started" (بدأ خادم WebSocket ") على سطر جديد. هذا لتحديد سطر الكود الذي يعالجه nodemcu

Serial.println ("بدأ خادم WebSocket.") ؛

عندما يزور العميل 192.168.4.1 ، فإنه يستدعي الوظيفة handleFileRead ويرسل معها خادم URI الذي يمثل في هذه الحالة معلومات nodemcu الخاصة بنا. تخدم الوظيفة handleFileRead ملف html من نظام ملفات nodemcu

server.onNotFound ( () {

إذا (! handleFileRead (server.uri ()))

إذا تعذر العثور عليه ، فسيظهر "FileNotFound"

server.send (404، "نص / عادي"، "FileNotFound") ؛

});

يبدأ الخادم وبدأ خادم طباعة

server.begin () ، Serial.println ("بدأ خادم HTTP") ؛

في الحلقة الفارغة الخاصة بنا ، نقوم بتمكين الخادم من التعامل المستمر مع العميل واتصالات مآخذ الويب الخاصة به على النحو التالي:

حلقة باطلة (باطلة) {

server.handleClient () ، webSocket.loop () ؛}

الخطوة الرابعة: تحميل ملف HTML

سنستخدم وظيفة تسمى handleFileRead لفتح وملف html من نظام ملفات nodemcu. ستعيد قيمة منطقية لتحديد ما إذا كانت محملة أم لا.

عند فتح "192.168.4.1/" بواسطة العميل ، نقوم بتعيين مسار الملف على "/Joystick.html ، اسم ملفنا في مجلد البيانات

bool handleFileRead (مسار السلسلة) {

Serial.println ("handleFileRead:" + مسار) ؛ if (path.endsWith ("/")) path + = "Joystick.html" ؛ if (SPIFFS.exists (path)) {File file = SPIFFS.open (path، "r") ؛ size_t sent = server.streamFile (ملف ، "text / html") ؛ file.close () ؛ العودة صحيح } عودة كاذبة؛ }

تحقق مما إذا كان مسار الملف "/Joystick.html" موجودًا

إذا كان (SPIFFS.exists (مسار)) {

إذا كان موجودًا ، افتح المسار بغرض قراءته المحدد بواسطة "r". اذهب هنا لمزيد من الأغراض.

ملف الملف = SPIFFS.open (المسار ، "r") ؛

يرسل الملف إلى الخادم كما هو الحال مع نوع محتوى "text / html"

size_t sent = server.streamFile (ملف ، "text / html") ؛

أغلق الملف

file.close () ؛

تعيد الدالة handleFileRead صحيحًا

عودة صحيحة؛}

إذا كان مسار الملف غير موجود ، فإن الوظيفة handleFileRead ترجع false

العودة صحيح }

الخطوة الخامسة: جربها

Image
Image

اتصل بـ nodeMCU وانتقل إلى "192.168.4.1" وجربه!:)

موصى به: