विषयसूची:

डुअल कोर के साथ Arduino IDE: रिमोट कंट्रोल: 8 कदम
डुअल कोर के साथ Arduino IDE: रिमोट कंट्रोल: 8 कदम

वीडियो: डुअल कोर के साथ Arduino IDE: रिमोट कंट्रोल: 8 कदम

वीडियो: डुअल कोर के साथ Arduino IDE: रिमोट कंट्रोल: 8 कदम
वीडियो: Joystick Robot | Best Arduino Project #shorts 2024, जुलाई
Anonim
Image
Image
प्रदर्शन
प्रदर्शन

यह वीडियो "बहु" के बारे में है। हम मल्टीटास्किंग, मल्टीकोर और मल्टीक्लाइंट के साथ काम कर रहे हैं। कुछ समय पहले, मैंने दो ईएसपी के साथ रिमोट कंट्रोल बनाया: एक क्लाइंट और एक एक्सेस प्वाइंट। इसके आधार पर, आज हम एक बहु-ग्राहक सर्वर स्थापित करेंगे। इसका मतलब है कि हमारे पास एक ही ईएसपी में कई क्लाइंट जुड़े होंगे।

इस प्रकार, आज के पाठ में ESP32 में एक सर्वर का निर्माण, लूप में नए क्लाइंट्स को जोड़ना और दूसरे कोर में अनुरोधों को हैंडल करना शामिल है। ग्राहक अपने पिन के राज्य परिवर्तन के बारे में जानकारी भेजेंगे, और सर्वर इन राज्य परिवर्तनों को पुन: पेश करेगा।

चरण 1: प्रदर्शन

चरण 2: बढ़ते सर्वर

बढ़ते सर्वर
बढ़ते सर्वर

चरण 3: क्लाइंट असेंबली

ग्राहक सभा
ग्राहक सभा

चरण 4: प्रवाह - सर्वर

प्रवाह - सर्वर
प्रवाह - सर्वर

चरण 5: प्रवाह - ग्राहक

प्रवाह - ग्राहक
प्रवाह - ग्राहक

चरण 6: Client.ino

घोषणाएं और चर

#शामिल करें // स्ट्रक्चर क्यू परिभाषित ओएस डैडोस क्यू वामोस एनवीयर (डेवे सेर इगुअल नो सर्वर) टाइपिफ़ स्ट्रक्चर {इंट नंबर; अंतर स्थिति; }पिन; // क्वांटिडेड डी पिनोस क्यू इरेमोस लेर ई एनवीयर ओ स्टेटस # परिभाषित पिन_COUNT 2 // ऐरे कॉम ओएस पिनोस डेफिनिडोस // नो कैसो वामोस ट्रैबलर कॉम ओएस 21 ई 19 मास वोक पॉड अल्टर पैरा ओएस पिनोस क्यू डेसेजर पिन पिन [पिन_काउंट] = { {.संख्या = 21}, {.संख्या = 19}};

सेट अप

शून्य सेटअप () {Serial.begin (115200); // टेम्पो पैरा पर विचार एक कोमो पेर्डिडा क्लाइंट.सेटटाइमआउट (5000); // Conectamos WiFi e conectamos ao सर्वर सेटअपWiFi (); कनेक्ट क्लाइंट (); के लिए(int i=0; i

सेटअप वाईफाई

शून्य सेटअप वाईफाई () {सीरियल.प्रिंट ("कनेक्टिंग टू" + स्ट्रिंग (एसएसआईडी)); // Conectamos वाईफाई क्रिआडो पेलो आउट्रो ESP WiFi.begin (SSID, PASSWORD) को फिर से करें; // Esperamos conectar जबकि (WiFi.status() != WL_CONNECTED) { Serial.print("."); देरी (500); } // से चेगौ एक्वी एस्टा कोनेक्टैडो वाईफाई सीरियल को फिर से करें।प्रिंट्लन (); Serial.println ("कनेक्टेड!"); }

कनेक्ट क्लाइंट

शून्य कनेक्ट क्लाइंट () {Serial.println ("कनेक्टिंग क्लाइंट"); // Esperamos conectar com o सर्वर जबकि (!client.connect(WiFi.gatewayIP(), SERVER_PORT)) { Serial.print("."); देरी (500); } // सर्वर सीरियल.प्रिंट्लन (); Serial.println ("क्लाइंट कनेक्टेड!"); }

कुंडली

शून्य लूप () {// से não estiver conectado वाईफाई को फिर से करें, mandamos conectar if(WiFi.status() != WL_CONNECTED) { setupWiFi (); } }

हैंडल कनेक्शन

शून्य हैंडल कनेक्शन (शून्य * पीवी पैरामीटर) {// महत्वपूर्ण: एक तारे नो पॉड टर्मिनर, देवे फिकार प्रेसा एम उम लूप इनफिनिटो जबकि (सत्य) {// से नो एस्टिवर कनेक्टेडो कॉम ओ सर्वर, मैंडामोस कनेक्टर अगर (! क्लाइंट। कनेक्टेड ())) {कनेक्ट क्लाइंट (); }//पैरा कैडा पिनो, वेरिफिकामोस से मुदौ ओ एस्टाडो। सर्वर ओ नोवो एस्टाडो के लिए (int i=0; i.)

हैपिनस्टैटसबदल गया

// वेरिफ़िका से ओ एस्टाडो दो पिनो ना पॉसीकाओ 'आई' डू एरे मडौ // रिटोरना 'ट्रू' से मुडौ या 'झूठी' कैसो कॉन्ट्रारियो बूलियन हैपिनस्टैटस चेंजेड (इंट आई) {//फैज ए लेटुरा डो पिनो इंट पिनस्टैटस = डिजिटलरीड (पिन्स) [मैं]। संख्या); // से ओ एस्टाडो डू पिनो फॉर डिफरेंट अगर (पिन । स्टेटस! = पिनस्टैटस) {//गार्डामोस ओ नोवो एस्टाडो ई रेटोर्नमोस ट्रू पिन । स्टेटस = पिनस्टैटस; सच लौटना; } // सो चेगरा एक्वी से ओ एस्टाडो नो फोई अल्टरैडो // एंटाओ रेटोर्नामोस फाल्सो रिटर्न झूठा; }

पिन स्थिति भेजें

// सर्वर पर सर्वर ओएस के बारे में बताएं 'i' do arrayvoid sendPinStatus(int i) { client.write((uint8_t*)&pins, sizeof(Pin)); क्लाइंट.फ्लश (); }

चरण 7: Server.ino

घोषणाएं और चर

#include #include //Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 //Criamos um Server na porta definida por 'SERVER_PORT' WiFiServer Server(SERVER_PORT); //Vector onde vamos adicionar os क्लाइंट्स कन्फर्म eles फोरम conectando std::vector क्लाइंट; // स्ट्रक्चर क्यू परिभाषित ओएस डैडोस क्यू वामोस एनवीयर (डेवे सेर इगुअल नो क्लाइंट) टाइपिफ़ स्ट्रक्चर {इंट नंबर; अंतर स्थिति; }पिन;

सेट अप

शून्य सेटअप () {Serial.begin (115200); //Ciamos a rede WiFi e iniciamos या सर्वर setupWiFi (); सर्वर। शुरू (); xTaskCreatePinnedToCore (हैंडल क्लाइंट, // फ़नकाओ क्यू सेरा एक्जीक्यूटाडा "हैंडल क्लाइंट", // नोम दा तारेफ़ा 10000, // तमनहो दा पिला न्यूल, // पैरामेट्रो दा तारेफ़ा (नो कैसो नो उसामोस) 2, // प्राथमिकता न्यूल, // कैसो क्वेरिया मैन्टर उमा रेफरेन्सिया पैरा ए तारेफा क्यू वै सेर क्रिआडा (नो कैसो नो प्रीसीसामोस) 0); // नोमेरो डू कोर क्यू सेरा एक्जीक्यूटाडा ए तारेफा (उसमोस ओ कोर ० पैरा ओ लूप फिकर लिवर कॉम ओ कोर १) }

सेटअपवाईफाई

शून्य सेटअप वाईफाई () {// कोलोका एस्टे ईएसपी कॉमो एक्सेस प्वाइंट वाईफाई। मोड (वाईफाई_एपी); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }

कुंडली

शून्य लूप () {// वेरिफ़िका से उम नोवो क्लाइंट एस्टा टेंटंडो से कनेक्ट वाईफाई क्लाइंट क्लाइंट = सर्वर। उपलब्ध (); // से सिम कोलोकैमोस और कोई वेक्टर नहीं है अगर (क्लाइंट) {क्लाइंट्स.पुश_बैक (क्लाइंट); } }

हैंडल क्लाइंट

शून्य हैंडल क्लाइंट (शून्य * pvParameters) {// महत्वपूर्ण: एक tarefa não pod टर्मिनर, deve ficar presa em um loop infinito जबकि (true) {//para cada क्लाइंट que temos no vector for(int i=0; i

चरण 8: फ़ाइलें

फ़ाइलें डाउनलोड करें

पीडीएफ

मैं नहीं

सिफारिश की: