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

عرض WIFI لإدارة الإنتاج: 6 خطوات
عرض WIFI لإدارة الإنتاج: 6 خطوات

فيديو: عرض WIFI لإدارة الإنتاج: 6 خطوات

فيديو: عرض WIFI لإدارة الإنتاج: 6 خطوات
فيديو: فيلم سيب وأنا أسيب | الجزء الرابع | 9 خطوات لقلب الراجل | بطولة هنا الزاهد و محمد الشرنوبي - حصريـا 2024, يوليو
Anonim
عرض WIFI لإدارة الإنتاج
عرض WIFI لإدارة الإنتاج

أنا سلسلة صغيرة حول IOT وأجهزة الكمبيوتر أحادية اللوحة.

أرغب دائمًا في استخدامه خارج مشاريع الهوايات والمرح (الإنتاج والتصنيع الحقيقيين).

هذا Instructable على وشك إنشاء شاشة WIFI مكونة من 4 أرقام مع nodemcu ESP لإظهار مدخلات الإنتاج كل ساعة. أنا أعمل في مجال تصنيع الإلكترونيات ، حيث نستخدم نظام تنفيذ التصنيع (MES) لمراقبة مدخلات الإنتاج والمخرجات والعملية والتحكم فيها. في هذا المشروع ، أقوم بإنشاء وحدة عرض صغيرة ستعرض كمية مدخلات الإنتاج حسب الخط والوردية والساعة.

من الناحية الفنية ، يشبه هذا المشروع عرض عدد المشتركين في Youtube ، حيث نستخدم استجابة API / HTTP من الإنترنت ، ولكن هنا سننشئ واجهة برمجة التطبيقات الخاصة بنا للتفاعل مع نظام MES المحلي الخاص بنا للحصول على كمية المدخلات.

الخطوة 1: الأجزاء والأدوات المستخدمة:

الأجزاء والأدوات المستخدمة
الأجزاء والأدوات المستخدمة

أجزاء الأجهزة المستخدمة:

  1. Nodemcu ESP
  2. TM1637 عرض ساعة مكون من 4 أرقام
  3. مفتاح دفع
  4. 10 كيلو المقاوم
  5. عدد قليل من الأسلاك الطائر

أدوات البرمجيات المستخدمة:

  1. اردوينو IDE
  2. Xampp لخادم الويب PHP / Apache

مكتبة اردوينو المستخدمة:

1.مدير Wifi بواسطة tzapu & i مخصص لحقولي المخصصة (wifimanager)

2. ESP_EEPROM لتخزين قيمي المخصصة في ذاكرة فلاش

3. SevenSegmentTM1637 للعرض

الخطوة 2: تخصيص Wifi Manager

تخصيص مدير واي فاي
تخصيص مدير واي فاي

في هذا أولاً ، قمت بتثبيت wifi manager أولاً ثم قمت بنسخ مجلد مدير Wifi ومرت مرة أخرى في المجلد نفسه في مجلد مكتبة Arduino ، ثم أعيدت تسميته باسم WiFiManager_custom.

مجلد جذر الدليل في الغالب مثل

C: / المستخدمون / اسم الكمبيوتر / المستندات / أردوينو / المكتبات

ثم فتحت مجلد wifimanager_custom وأعدت تسمية ملف header.cpp بنفس طريقة wifimanager_custom ، وأضفت نفس الشيء في ملفات الرأس &.cpp أيضًا.

وأضفت النموذج المخصص والزر الخاص بي في العنوان.

في HTTP_PORTAL_OPTIONS PROGMEM أضفت نموذج الزر الخاص بي للقائمة.

وأضاف نموذج جديد لدخول الخط و التحول. لقد قمت بإنشاء هذا النموذج كنموذج نصي بسيط.

بعد ذلك سنقوم بإنشاء وظائف عمل لهذه النماذج في ملف.cpp ، لذلك علينا القيام بإعلان الوظيفة في ملف الرأس.

/ * وظائفي المخصصة * /

مقبض باطلCustomForm () ، مقبض باطلCustomSave () ؛

لقد أعلنت عن وظائفي المخصصة في ملف الرأس. أنه ، تم الانتهاء من عملنا في الرأس ، وعلينا الانتقال مع ملف.cpp لإنشاء وظيفتنا وإجراءاتنا.

الخطوة 3: وظائف مخصصة لعمل النموذج

وظائف مخصصة لعمل النموذج
وظائف مخصصة لعمل النموذج
وظائف مخصصة لعمل النموذج
وظائف مخصصة لعمل النموذج
وظائف مخصصة لعمل النموذج
وظائف مخصصة لعمل النموذج

الآن نفتح ملف wifimanager_custom.cpp الخاص بنا.

وعلينا إضافة معالج استجابة http الخاص بنا لاستدعاء وظائفنا عندما يكون النموذج الخاص بنا هو post.

server-> on (String (F ("/ custom_config")) ، std:: bind (& WiFiManager:: handleCustomForm، this)) ؛ // مقبض بلدي المخصص

server-> on (String (F ("/ custom_save")) ، std:: bind (& WiFiManager:: handleCustomSave، this)) ؛ // مقبض بلدي المخصص

هذه سوف تستدعي وظائفنا المخصصة عند نشر النموذج.

1.handleCustomForm () -> ستنشئ صفحة مع نموذجنا المخصص لزر إدخال الخط والحفظ.

2.handleCustomSave () -> ستحصل هذه الوظيفة على قيم النموذج وتخزينها في مواقع ذاكرة فلاش 0 (سطر) و 50 (تحول).

الخطوة 4: التوصيلات والبرنامج الرئيسي

التوصيلات والبرنامج الرئيسي
التوصيلات والبرنامج الرئيسي

التوصيلات بسيطة جدا..

التوصيلات والأسلاك:

عرض nodemcu TM1637

3.3 فولت ---- Vcc

G ---- Gnd

D2 ---- CLK

D3 ----- DIO

nodemcu- مفتاح دفع

- زر انضغاطي متصل بالدبوس D8 من + 5 فولت - 10 كيلو المقاوم متصل بالدبوس D8 من الأرض

انتهينا من تخصيص wifimanager الخاص بنا. الآن علينا إنشاء برنامجنا الرئيسي.

1. سيتصل مدير wifi الخاص بنا بشبكة wifi مع آخر بيانات اعتماد مستخدمة للاتصال ، إذا فشلت ، فإنه يفتح خادمًا للاتصال التلقائي عبر wifi. يمكننا تكوين معلومات سرية جديدة لشبكة wifi وخط وتحويل من خلال الاتصال بخادم wifi هذا.

2. ثم يدخل في الحلقة الرئيسية.

سوف تحتوي الحلقة الرئيسية لدينا على جزأين. الأول هو روتين فرعي Confi عندما نحتاج إلى تغيير الخط أو تغيير أو إضافة أي بيانات اعتماد wifi لاستدعاء وضع الطلب AP لتكوينه. سيتم استدعاء هذا عند الضغط على زر ضغط متصل بطرف D8.

حلقة فارغة() {

config_loop () ،

}

config_loop () باطل {Serial.println ("") ؛

Serial.println ("في انتظار حالة زر التكوين …") ؛

//display.print("Wait ") ؛

إذا (قراءة رقمية (TRIGGER_PIN) == عالية)

{

display.print ("Conf") ؛ // WiFiManager

// التهيئة المحلية. بمجرد الانتهاء من أعمالها ، ليست هناك حاجة لإبقائها حول WiFiManager wifiManager ؛

// إعادة ضبط الإعدادات - للاختبار

//wifiManager.resetSettings () ،

// يعين المهلة حتى يتم إيقاف تشغيل بوابة التكوين // مفيدة لإعادة المحاولة كلها أو الانتقال إلى وضع السكون // في ثوانٍ

//wifiManager.setTimeout(120) ؛

// يبدأ نقطة وصول بالاسم المحدد

// هنا "AutoConnectAP" // ويدخل في حلقة حظر في انتظار التكوين

// بدون هذا لا يبدو أن AP تعمل بشكل صحيح مع SDK 1.5 ، قم بالتحديث إلى 1.5.1 على الأقل //WiFi.mode(WIFI_STA) ؛

if (! wifiManager.startConfigPortal ("OnDemandAP")) {Serial.println ("فشل الاتصال وضرب المهلة") ؛ تأخير (3000) ؛ // إعادة التعيين والمحاولة مرة أخرى ، أو ربما وضعه في وضع النوم العميق ESP.reset () ؛ تأخير (5000) ؛ }}

//Serial.println("Button status False. Back to Main loop ")؛ //display.print(" حلقة رئيسية ") ؛ //display.clear () ،

}

الثاني سيكون برنامجنا الرئيسي للحصول على استجابة HTTP من خادم معين وعرض كمية الإدخال في الشاشة.

لهذا أولاً ، يتعين علينا الحصول على تفاصيل خطنا وتحويلنا من تخزين فلاش لـ ESP (العنوان 0-> سطر ، 50-> تحول)

EEPROM.begin (100) ، // eeprom storageEEPROM.get (0، line)؛ // الحصول على قيمة من العنوان 0

EEPROM.get (50 ، التحول) ؛ // الحصول على قيمة من العنوان 50

ثم يتعين علينا تمرير هذا الخط ونقل التفاصيل إلى خادم http الخاص بنا عن طريق الحصول على طريقة للحصول على قيمة المدخلات والمخرجات.

String Base_url = "تمت إزالته" ؛ // عنوان url الأساسي الخاص بي HTTPClient http ؛ // كائن من فئة

عنوان URL للسلسلة = Base_url + "؟" + "line =" + line + "& shift =" + shift؛

Serial.println (URL) ؛

http.begin (URL) ،

int httpCode = http. GET () ،

Serial.println (http.getString ()) ، // هذا سوف يطبع كل سلسلة استجابة http ؛

إذا كنت تريد معرفة كيفية كل النص ، فسيتم الانتهاء من عملك هنا بنفسه ، يمكننا عرضه مباشرة في شاشة tm1637.

display.print (http.getString ()) ،

لكني لا أرغب في إظهار كل النص ، لأنه يحتوي على مدخلات ومخرجات في شكل json وبعض النصوص العامة الأخرى حول قاعدة البيانات الخاصة به.

لذلك قمت أولاً بإزالة هذا النص العام من سلسلة الاستجابة باستخدام وظيفة Substring ().

أحصيت طول النص العام وقمت بقصه.

إذا (httpCode> 0) {const size_t bufferSize = 100 ؛ // DynamicJsonDocument jsonBuffer (bufferSize) ؛ جذر DynamicJsonDocument (bufferSize) ؛

// JsonObject & root = doc.parseObject (http.getString ()) ؛

String json_string = http.getString (). substring (121) ؛ / * هذا هو إزاحتي للنص العام إذا كان ردك لا يحتوي على أي شيء من هذا القبيل يمكنك إزالة هذا الرمز ؛ * /

//Serial.println(json_string) ؛

خطأ في إلغاء التسلسل = إلغاء تسلسل Json (root، json_string) ؛

// JsonObject & root = jsonBuffer.parseObject (http.getString ()) ؛

إذا (خطأ)

{Serial.print (F ("deserializeJson () فشل:"))؛

Serial.println (error.c_str ()) ،

إرجاع؛

}

آخر{

const char * input = root ["input"] ؛

الحرف الثابت * الإخراج = الجذر ["الإخراج"] ؛

Serial.print ("الإدخال:") ؛

Serial.println (إدخال) ؛

Serial.print ("الإخراج:") ؛

Serial.println (الإخراج) ؛

display.print (".. in..") ؛

display.clear () ؛ // امسح العرض

display.print (الإدخال) ؛ // طباعة عد بعض الأرقام

}

هذا هو برنامجنا الرئيسي انتهى.

الخطوة الخامسة: إنشاء خادم الويب

إنشاء خادم الويب
إنشاء خادم الويب
إنشاء خادم الويب
إنشاء خادم الويب

أنا أستخدم xampp كخدمة ويب وكود PHP للحصول على بيانات من قاعدة بيانات SQL الخاصة بي للحصول على الكمية الدقيقة.

لكن لا يمكنني مشاركة جميع الرموز الأصلية منه. بسبب سريتها الخاصة بشركتي. لكنني سأوضح كيفية إنشاء خادم ويب واحد ، وإظهار كمية الإدخال والإخراج الثابتة الوهمية.

لهذا ، يجب أن تحتاج إلى أي مضيف ويب ، وأنا أستخدم هنا xampp كمضيف.

يمكنك تنزيل xampp هنا.

قم بتثبيت xampp… إذا كنت بحاجة إلى تعليمات واضحة ، يمكنك استخدام هذا الرابط.

بعد تثبيت xampp ، يجب عليك الانتقال إلى الدليل الجذر الخاص بك.

ج: / xampp / htdocs

يجب أن تكون جميع برامج php داخل هذا الجذر.

لقد أنشأت صفحتي باسم callled esp_api.php

هذا هو كود php الخاص بي. هنا أنا فقط أعرض القيم الثابتة للمدخلات والمخرجات ؛

$ line = $ _ GET ['line'] ؛ $ shift = $ _ GET ['shift'] ؛

صدى ("myString") ؛ // نص عام

if ($ line == 'a0401' and $ shift = 'dd') {$ result ['input'] = 100 ؛ نتيجة $ ['الإخراج'] = 99 ؛ }

آخر {$ result ['input'] = 200 ؛ النتيجة $ ['الإخراج'] = 199 ؛ }

$ myObj-> input = ''. نتيجة $ ['input']. ''؛

$ myObj-> output = ''. نتيجة $ ['output']. ''؛

$ myJSON = json_encode ($ myObj) ؛

صدى $ myJSON؛

الآن تم الانتهاء من واجهة برمجة تطبيقات استجابة HTTP الخاصة بنا.

سيكون عنوان url الأساسي لـ http الخاص بنا مثل

you_ip_address / esp_api.php

يمكنك التحقق من نص استجابة API الخاص بك عن طريق

localhost/esp_api.php؟ line = a0401 & shift = dd

هنا ذكرت الخط كـ a0401 والتحول كـ dd.

الخطوة 6: الخطوة النهائية !

الخطوة النهائية!!!
الخطوة النهائية!!!
الخطوة النهائية!!!
الخطوة النهائية!!!
الخطوة النهائية!!!
الخطوة النهائية!!!

أدخل عنوان IP لجهاز الكمبيوتر الخاص بك في Base URL

String Base_url = "تمت إزالته" ؛ // عنوان url الأساسي الخاص بك

وتحميله إلى Nodemcu ESP الخاص بك. بمجرد الانتهاء من تشغيل wifi الخاص بك من هاتفك المحمول أو الكمبيوتر المحمول ، ستحصل على شبكة تسمى AutoConnectAP. تواصل معه وأدخل بيانات الاعتماد وتكوينات الخط.

ثم أعد ضبط جهازك وتحقق من توصيل شبكتك بمجرد توصيلها ، ثم يتم تنفيذ كل شيء.

يمكنك رؤية المدخلات معروضة على الشاشة.

إذا كنت ترغب في تغيير أي خط أو بيانات اعتماد wifi ، يمكنك الضغط على مفتاح الضغط لبضع ثوان ، يعرض العرض confi.

دخلت إلى وضع الطلب AP. يمكنك تغيير الجهاز وإعادة تعيينه.

الفكرة الرئيسية لتعليماته أن توضح لك كيف يمكننا استخدام مشاريعنا للهوايات والمرح في منطقة الإنتاج والتصنيع الحقيقية والعرض

موصى به: