विषयसूची:

उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन: 6 कदम
उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन: 6 कदम

वीडियो: उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन: 6 कदम

वीडियो: उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन: 6 कदम
वीडियो: ट्रैकिंग करने वाले लोगों के साथ वायरलेस वीडियो निगरानी वाईफ़ाई किट 2024, जुलाई
Anonim
उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन
उत्पादन प्रबंधन के लिए वाईफ़ाई प्रदर्शन

मैं IOT और सिंगल बोर्ड कंप्यूटरों के बारे में थोड़ी सी सीरीज हूं।

मैं हमेशा हॉबी एंड फन प्रोजेक्ट्स (वास्तविक उत्पादन और निर्माण) से परे इसका उपयोग करना चाहता हूं।

यह निर्देशयोग्य प्रति घंटा उत्पादन इनपुट दिखाने के लिए ESP नोडमकू के साथ 4 अंकों का 7-खंड वाला वाईफ़ाई डिस्प्ले बनाने वाला है। मैं इलेक्ट्रॉनिक्स मैन्युफैक्चरिंग इंडस्ट्री में काम कर रहा हूं, जहां हम प्रोडक्शन फ्लोर इनपुट, आउटपुट और प्रोसेस की निगरानी और नियंत्रण के लिए मैन्युफैक्चरिंग एक्ज़ीक्यूशन सिस्टम (एमईएस) का उपयोग करते हैं। इस प्रोजेक्ट में मैं छोटी डिस्प्ले यूनिट बना रहा हूं जो उत्पादन इनपुट मात्रा को लाइन, शिफ्ट और घंटे के अनुसार दिखाएगा।

तकनीकी रूप से यह प्रोजेक्ट यूट्यूब सब्सक्राइबर काउंट डिस्प्ले के समान है, जहां हम ऑनलाइन से एपीआई/एचटीटीपी प्रतिक्रिया का उपयोग करते हैं। लेकिन यहां हम इनपुट मात्रा प्राप्त करने के लिए अपने स्थानीय एमईएस सिस्टम के साथ बातचीत करने के लिए अपना स्वयं का एपीआई बनाने जा रहे हैं।

चरण 1: उपयोग किए गए पुर्जे और उपकरण:

प्रयुक्त पुर्जे और उपकरण
प्रयुक्त पुर्जे और उपकरण

प्रयुक्त हार्डवेयर पार्ट्स:

  1. ईएसपी नोडमक्यू
  2. TM1637 4 अंकों की घड़ी का प्रदर्शन
  3. पुश स्विच
  4. 10k रोकनेवाला
  5. कुछ जम्पर तार

उपयोग किए गए सॉफ़्टवेयर उपकरण:

  1. अरुडिनो आईडीई
  2. PHP/अपाचे वेब सर्वर के लिए Xampp

Arduino लाइब्रेरी का उपयोग किया जाता है:

1. tzapu द्वारा वाईफ़ाई प्रबंधक और मैं अपने कस्टम दायर के लिए अनुकूलित (वाईफाई प्रबंधक)

2. फ्लैश मेमोरी में मेरे कस्टम मानों को संग्रहीत करने के लिए ESP_EEPROM

3. प्रदर्शन के लिए सेवनसेगमेंटTM1637

चरण 2: वाईफ़ाई प्रबंधक को अनुकूलित करना

वाईफ़ाई प्रबंधक को अनुकूलित करना
वाईफ़ाई प्रबंधक को अनुकूलित करना

इसमें पहले मैंने पहले वाईफाई मैनेजर स्थापित किया और फिर मैंने वाईफाई मैनेजर फोल्डर को कॉपी किया और फिर से Arduino लाइब्रेरी फोल्डर में उसी में पास हो गया, फिर इसका नाम बदलकर WiFiManager_custom रखा गया।

फ़ोल्डर रूट निर्देशिका ज्यादातर पसंद है

C:\Users\आपके कंप्यूटर का नाम\Documents\Arduino\libraries

फिर मैंने wifimanager_custom फोल्डर खोला और नाम बदलकर हैडर.cpp फाइल को wifimanager_custom के समान, हेडर और.cpp फाइलों में भी जोड़ा।

और हेडर में मेरा कस्टम फॉर्म और बटन जोड़ा।

HTTP_PORTAL_OPTIONS PROGMEM में मैंने मेनू के लिए अपना बटन फॉर्म जोड़ा।

और लाइन और शिफ्ट में प्रवेश करने के लिए नया फॉर्म जोड़ा। मैंने इस फॉर्म को साधारण टेक्स्ट फॉर्म के रूप में बनाया है।

इसके बाद हम इस फॉर्म के लिए.cpp फाइल में एक्शन फंक्शन बनाने जा रहे हैं, इसके लिए हमें हेडर फाइल में फंक्शन डिक्लेरेशन करना होगा।

/* मेरे कस्टम फ़ंक्शन */

शून्य हैंडल कस्टमफॉर्म (); शून्य हैंडलकस्टमसेव ();

मैंने हेडर फ़ाइल में अपने कस्टम फ़ंक्शंस घोषित किए। कि यह, हेडर में हमारा काम समाप्त हो गया है, हमें अपने फ़ंक्शन और क्रियाओं को बनाने के लिए.cpp फ़ाइल के साथ जाना होगा।

चरण 3: प्रपत्र क्रिया के लिए कस्टम कार्य

प्रपत्र क्रिया के लिए कस्टम कार्य
प्रपत्र क्रिया के लिए कस्टम कार्य
प्रपत्र क्रिया के लिए कस्टम कार्य
प्रपत्र क्रिया के लिए कस्टम कार्य
प्रपत्र क्रिया के लिए कस्टम कार्य
प्रपत्र क्रिया के लिए कस्टम कार्य

अब हम अपनी wifimanager_custom.cpp फाइल को ओपन करते हैं।

और जब हमारा फॉर्म पोस्ट होता है तो हमें अपने कार्यों को कॉल करने के लिए हमारे http प्रतिक्रिया हैंडलर को जोड़ना होगा।

सर्वर-> ऑन (स्ट्रिंग (एफ ("/ कस्टम_कॉन्फिग")), एसटीडी:: बाइंड (और वाईफाई मैनेजर:: हैंडल कस्टमफॉर्म, यह)); // मेरा कस्टम हैंडल

सर्वर-> ऑन (स्ट्रिंग (एफ ("/ कस्टम_सेव")), एसटीडी:: बाइंड (और वाईफाई मैनेजर:: हैंडल कस्टमसेव, यह)); // मेरा कस्टम हैंडल

फॉर्म पोस्ट होने पर ये हमारे कस्टम फ़ंक्शंस को कॉल करेंगे।

1.handleCustomForm()-> लाइन और शिफ्ट इनपुट और सेव बटन के लिए हमारे कस्टम फॉर्म के साथ एक पेज बनाएगा।

2.handleCustomSave()-> इस फ़ंक्शन को फ्लैश मेमोरी लोकेशन 0 (लाइन) और 50 (शिफ्ट) में फॉर्म वैल्यू और स्टोर मिलेगा।

चरण 4: कनेक्शन और मुख्य कार्यक्रम

कनेक्शन और मुख्य कार्यक्रम
कनेक्शन और मुख्य कार्यक्रम

कनेक्शन बहुत आसान हैं..

कनेक्शन और वायरिंग:

nodemcu TM1637 डिस्प्ले

3.3v ---- वीसीसी

जी ---- गंद

D2 ---- CLK

डी3----- डीआईओ

nodemcu- पुश स्विच

- +5V से पिन D8 से जुड़ा पुशबटन - जमीन से पिन D8 से जुड़ा 10K रोकनेवाला

हमने अपने वाईफाई प्रबंधक को अनुकूलित करना समाप्त कर दिया। अब हमें अपना मुख्य कार्यक्रम बनाना है।

1. हमारा वाईफाई प्रबंधक कनेक्ट करने के लिए अंतिम उपयोग किए गए क्रेडेंशियल के साथ वाईफाई नेटवर्क से कनेक्ट होगा, अगर यह विफल हो जाता है तो यह एक ऑटोकनेक्टएपी वाईफाई सर्वर खोलता है। हम इस वाईफाई सर्वर से कनेक्ट करके नए वाईफाई क्रेडेंशियल्स, लाइन और शिफ्ट को कॉन्फ़िगर कर सकते हैं।

2. फिर यह मुख्य लूप में प्रवेश करेगा।

हमारे मुख्य लूप में दो भाग होंगे। एक कॉन्फि सबरूटीन है जब हमें लाइन बदलने, शिफ्ट करने या कॉन्फ़िगर करने के लिए डिमांड मोड एपी को कॉल करने के लिए कोई वाईफाई क्रेडेंशियल जोड़ने की आवश्यकता होती है। यह तब कहा जाएगा जब D8 पिन से जुड़ा एक पुश बटन दबाया जाएगा।

शून्य लूप () {

config_loop ();

}

शून्य config_loop () {Serial.println ("");

Serial.println ("कॉन्फ़िगरेशन बटन स्थिति की प्रतीक्षा कर रहा है …");

// डिस्प्ले.प्रिंट ("प्रतीक्षा करें");

अगर (डिजिटल रीड (TRIGGER_PIN) == उच्च)

{

डिस्प्ले.प्रिंट ("कॉन्फ़"); // वाईफाई प्रबंधक

// स्थानीय आरंभीकरण। एक बार इसका व्यवसाय हो जाने के बाद, इसे WiFiManager wifiManager के आसपास रखने की कोई आवश्यकता नहीं है;

// रीसेट सेटिंग्स - परीक्षण के लिए

//wifiManager.resetSettings();

// कॉन्फ़िगरेशन पोर्टल बंद होने तक टाइमआउट सेट करता है // यह सब पुनः प्रयास करने के लिए उपयोगी है या सो जाता है // सेकंड में

//wifiManager.setTimeout(120);

// यह निर्दिष्ट नाम के साथ एक एक्सेस प्वाइंट शुरू करता है

// यहां "ऑटोकनेक्टएपी" // और कॉन्फ़िगरेशन की प्रतीक्षा में अवरुद्ध लूप में जाता है

// इसके बिना एपी एसडीके 1.5 के साथ ठीक से काम नहीं करता है, कम से कम 1.5.1 पर अपडेट करें //WiFi.mode(WIFI_STA);

if (!wifiManager.startConfigPortal("OnDemandAP")) { Serial.println ("कनेक्ट करने और टाइमआउट हिट करने में विफल"); देरी (3000); // रीसेट करें और फिर से प्रयास करें, या शायद इसे गहरी नींद में डाल दें ESP.reset (); देरी (5000); } }

// Serial.println ("बटन की स्थिति गलत है। मुख्य लूप पर वापस जाएं"); // डिस्प्ले। प्रिंट ("मुख्य लूप"); // डिस्प्ले। क्लियर ();

}

दूसरा विशेष सर्वर से HTTP प्रतिक्रिया प्राप्त करने और प्रदर्शन में इनपुट मात्रा प्रदर्शित करने के लिए हमारा मुख्य कार्यक्रम होगा।

इसके लिए सबसे पहले हमें ईएसपी के फ्लैश स्टोरेज (पता 0-> लाइन, 50-> शिफ्ट) से अपनी लाइन और शिफ्ट विवरण प्राप्त करना होगा।

EEPROM.begin(100); // ईप्रोम स्टोरेज EEPROM.get (0, लाइन); // पते से मूल्य प्राप्त करें 0

EEPROM.get(50, शिफ्ट); // पते से मूल्य प्राप्त करें 50

तो हमें इस लाइन को पास करना होगा और इनपुट और आउटपुट का मूल्य प्राप्त करने के लिए विधि प्राप्त करके हमारे http सर्वर पर विवरण स्थानांतरित करना होगा।

स्ट्रिंग बेस_यूआरएल = "हटाया गया"; // मेरा आधार urlHTTPClient http; // HTTP क्लाइंट वर्ग की वस्तु

String URL=Base_url+"?"+"line="+line+"&shift="+shift;

सीरियल.प्रिंट्लन (यूआरएल);

http.begin (यूआरएल);

इंट httpCode = http. GET ();

Serial.println (http.getString ()); // यह सभी http प्रतिक्रिया स्ट्रिंग को प्रिंट करेगा;

यदि आप चाहते हैं कि सभी पाठ कैसे हों तो आपका काम यहाँ समाप्त हो गया है, हम इसे सीधे tm1637 डिस्प्ले में प्रदर्शित कर सकते हैं।

डिस्प्ले.प्रिंट (http.getString ());

लेकिन मैं सभी टेक्स्ट नहीं दिखाना चाहता, क्योंकि इसमें इनपुट, आउटपुट जेसन फॉर्म और इसके डेटाबेस और आदि के बारे में कुछ अन्य सामान्य टेक्स्ट शामिल हैं।

तो सबसे पहले मैंने सबस्ट्रिंग() फ़ंक्शन का उपयोग कर प्रतिक्रिया स्ट्रिंग से उस सामान्य पाठ को हटा दिया।

मैंने सामान्य पाठ की लंबाई गिन ली और उसे काट दिया।

अगर (httpCode> 0) { const size_t bufferSize = 100; //DynamicJsonDocument jsonBuffer(bufferSize); डायनामिकजसन डॉक्यूमेंट रूट (बफरसाइज);

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

स्ट्रिंग json_string = http.getString ()। सबस्ट्रिंग (121); /* यह मेरे सामान्य पाठ की भरपाई है यदि आपकी प्रतिक्रिया में ऐसा कुछ नहीं है तो आप इस कोड को हटा सकते हैं; */

// सीरियल.प्रिंट्लन (json_string);

DeserializationError त्रुटि = deserializeJson (रूट, json_string);

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

अगर (त्रुटि)

{ सीरियल.प्रिंट (एफ ("deserializeJson () विफल:"));

Serial.println (त्रुटि.c_str ());

वापसी;

}

अन्यथा{

कास्ट चार * इनपुट = रूट ["इनपुट"];

कास्ट चार * आउटपुट = रूट ["आउटपुट"];

सीरियल.प्रिंट ("इनपुट:");

सीरियल.प्रिंट्लन (इनपुट);

सीरियल.प्रिंट ("आउटपुट:");

Serial.println (आउटपुट);

डिस्प्ले.प्रिंट ("..in..");

डिस्प्ले.क्लियर (); // डिस्प्ले को क्लियर करें

डिस्प्ले.प्रिंट (इनपुट); // कुछ अंकों की गिनती प्रिंट करें

}

बस हमारा मुख्य कार्यक्रम समाप्त हो गया है।

चरण 5: वेब सर्वर बनाना

वेब सर्वर बनाना
वेब सर्वर बनाना
वेब सर्वर बनाना
वेब सर्वर बनाना

मैं सटीक मात्रा प्राप्त करने के लिए अपने SQL डेटाबेस से डेटा प्राप्त करने के लिए अपने वेब सेवा और PHP कोड के रूप में xampp का उपयोग कर रहा हूं।

लेकिन मैं इसके सभी मूल कोड साझा नहीं कर सकता। क्योंकि यह मेरी कंपनी की गोपनीयता है। लेकिन मैं दिखाऊंगा कि एक वेब सर्वर कैसे बनाया जाता है, डमी स्थिर इनपुट और आउटपुट मात्रा दिखाएं।

इसके लिए आपको किसी वेब होस्ट की आवश्यकता होगी, मैं यहां xampp को अपने होस्ट के रूप में उपयोग कर रहा हूं।

आप यहां xampp डाउनलोड कर सकते हैं।

xampp स्थापित करें … यदि आपको स्पष्ट निर्देश की आवश्यकता है तो आप इस लिंक का उपयोग कर सकते हैं।

xampp इंस्टॉल करने के बाद आपको अपने रूट डायरेक्टरी में जाना होगा।

सी:\xampp\htdocs

आपके सभी PHP प्रोग्राम इस रूट के अंदर होने चाहिए।

मैंने अपना पेज esp_api.php नाम से बनाया है

यह मेरा PHP कोड है। यहाँ मैं सिर्फ इनपुट और आउटपुट के स्थिर मान प्रदर्शित कर रहा हूँ;

$ लाइन = $ _ प्राप्त करें ['लाइन']; $ शिफ्ट = $ _ प्राप्त करें ['शिफ्ट'];

इको ("माईस्ट्रिंग"); // सामान्य पाठ

अगर($line=='a0401' और $shift='dd') {$result['input']=100; $ परिणाम ['आउटपुट'] = 99; }

और {$ परिणाम ['इनपुट'] = 200; $ परिणाम ['आउटपुट'] = 199; }

$myObj->input =''.$result['input'].'';

$myObj->output =''.$result['output'].'';

$myJSON = json_encode($myObj);

इको $ myJSON;

अब हमारी HTTP प्रतिक्रिया API समाप्त हो गई है।

हमारा एचटीटीपी बेस यूआरएल इस तरह होगा

you_ip_address/esp_api.php

आप अपने एपीआई प्रतिक्रिया पाठ की जांच कर सकते हैं

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

यहाँ मैंने a0401 के रूप में लाइन का उल्लेख किया है और dd के रूप में शिफ्ट किया है।

चरण 6: अंतिम चरण !

अंतिम चरण!!!
अंतिम चरण!!!
अंतिम चरण!!!
अंतिम चरण!!!
अंतिम चरण!!!
अंतिम चरण!!!

बेस यूआरएल में अपना कंप्यूटर आईपी पता दर्ज करें

स्ट्रिंग बेस_यूआरएल = "हटाया गया"; // आपका आधार url

और अपने ESP nodemcu पर अपलोड करें। एक बार जब आप अपने मोबाइल या लैपटॉप से अपना वाईफाई चालू कर देते हैं, तो आपको AutoConnectAP नामक नेटवर्क मिलेगा। इसके साथ कनेक्ट करें और अपना क्रेडेंशियल और लाइन कॉन्फ़िगरेशन दर्ज करें।

फिर अपने डिवाइस को रीसेट करें और अपने नेटवर्क में चेक इन कनेक्ट होने के बाद कनेक्ट होने के बाद सब कुछ हो जाता है।

आप देख सकते हैं कि इनपुट डिस्प्ले में प्रदर्शित होता है।

यदि आप किसी भी लाइन या वाईफाई क्रेडेंशियल को बदलना चाहते हैं तो आप कुछ सेकंड के लिए पुश स्विच दबा सकते हैं, डिस्प्ले कॉन्फिडेंस दिखाता है।

आपने डिमांडएपी मोड में प्रवेश किया है। आप डिवाइस को बदल और रीसेट कर सकते हैं।

उनके निर्देश का मुख्य मकसद आपको यह दिखाना है कि हम वास्तविक उत्पादन और निर्माण क्षेत्र में अपने शौक और मज़ेदार परियोजनाओं का उपयोग कैसे कर सकते हैं और दिखा सकते हैं

सिफारिश की: