جدول المحتويات:
- الخطوة 1: الأجزاء والأدوات المستخدمة:
- الخطوة 2: تخصيص Wifi Manager
- الخطوة 3: وظائف مخصصة لعمل النموذج
- الخطوة 4: التوصيلات والبرنامج الرئيسي
- الخطوة الخامسة: إنشاء خادم الويب
- الخطوة 6: الخطوة النهائية !
فيديو: عرض WIFI لإدارة الإنتاج: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
أنا سلسلة صغيرة حول IOT وأجهزة الكمبيوتر أحادية اللوحة.
أرغب دائمًا في استخدامه خارج مشاريع الهوايات والمرح (الإنتاج والتصنيع الحقيقيين).
هذا Instructable على وشك إنشاء شاشة WIFI مكونة من 4 أرقام مع nodemcu ESP لإظهار مدخلات الإنتاج كل ساعة. أنا أعمل في مجال تصنيع الإلكترونيات ، حيث نستخدم نظام تنفيذ التصنيع (MES) لمراقبة مدخلات الإنتاج والمخرجات والعملية والتحكم فيها. في هذا المشروع ، أقوم بإنشاء وحدة عرض صغيرة ستعرض كمية مدخلات الإنتاج حسب الخط والوردية والساعة.
من الناحية الفنية ، يشبه هذا المشروع عرض عدد المشتركين في Youtube ، حيث نستخدم استجابة API / HTTP من الإنترنت ، ولكن هنا سننشئ واجهة برمجة التطبيقات الخاصة بنا للتفاعل مع نظام MES المحلي الخاص بنا للحصول على كمية المدخلات.
الخطوة 1: الأجزاء والأدوات المستخدمة:
أجزاء الأجهزة المستخدمة:
- Nodemcu ESP
- TM1637 عرض ساعة مكون من 4 أرقام
- مفتاح دفع
- 10 كيلو المقاوم
- عدد قليل من الأسلاك الطائر
أدوات البرمجيات المستخدمة:
- اردوينو IDE
- 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. يمكنك تغيير الجهاز وإعادة تعيينه.
الفكرة الرئيسية لتعليماته أن توضح لك كيف يمكننا استخدام مشاريعنا للهوايات والمرح في منطقة الإنتاج والتصنيع الحقيقية والعرض
موصى به:
مقابس Arduino Mega RJ45 لإدارة الكابلات: 5 خطوات
مقابس Arduino Mega RJ45 لإدارة الكابلات: يحتوي Arduino Mega على الكثير من المسامير - وهذا سبب كبير لشراء واحدة ، أليس كذلك؟ نريد استخدام كل تلك الدبابيس! يمكن أن تصبح الأسلاك بسرعة فوضى معكرونة بدون إدارة الكابلات. يمكننا دمج الأسلاك باستخدام مقابس إيثرنت. دبابيس البيانات على
D4E1: أداة القراءة 2.0 (عملية الإنتاج المتقدمة): 9 خطوات
D4E1: أداة القراءة 2.0 (عملية الإنتاج المتقدمة): معلومات: - ابتكر طالبان تصميم المنتجات الصناعية في Kortrijk (بلجيكا) أداة القراءة هذه. بدأنا بناء على تصميم موجود وقمنا بتطويره إلى تصميم آخر. تم تطوير أداة القراءة في الأصل من أجل cli & euml؛ nt
فئة لإدارة التكوين في ESP32 EEPROM: 5 خطوات
فئة لإدارة التهيئة في ESP32 EEPROM: مرحبًا ، أريد أن أشارككم جميع الفئات التي قمت بتطويرها وهي تبسط مهمة إضافة معلومات التكوين على أجهزة ESP32. الفئة الأهداف التالية: تسهيل إنشاء التكوين نظام على أجهزة ESP32
الهاتف المحمول مكيف الهواء بالأشعة تحت الحمراء التحكم عن بعد الإنتاج DIY: 7 خطوات
إنتاج مكيف الهواء بالأشعة تحت الحمراء للهاتف المحمول: في الصيف الحار ، عندما تذهب إلى المنزل أو المكتب ، تريد تشغيل مكيف الهواء ولكن لا يمكنك العثور على جهاز التحكم عن بعد لفترة من الوقت. إنه شيء مزعج للغاية. في العصر الذي لا يغادر فيه هذا الهاتف المحمول ، هل يمكنك استخدام الهاتف المحمول كـ
POMODORO TECHNIQUE TIMER - جهاز سهل الاستخدام لإدارة الوقت: 4 خطوات
POMODORO TECHNIQUE TIMER - جهاز سهل الاستخدام لإدارة الوقت: 1. ما هذا؟ تقنية بومودورو هي مهارة إدارة الوقت التي تقسم وقت العمل إلى كتلة 25 دقيقة ويتبع 5 دقائق وقت كسر. التفاصيل على النحو التالي: https: //francescocirillo.com/pages/pomodoro-techni .. هذا المؤقت سهل الاستخدام