You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/mr/6-consumer/lessons/3-spoken-feedback/wio-terminal-set-timer.md

17 KiB

टाइमर सेट करा - Wio Terminal

या धड्याच्या भागात, तुम्ही तुमचा सर्व्हरलेस कोड कॉल कराल जे भाषण समजून घेईल आणि परिणामांवर आधारित तुमच्या Wio Terminal वर टाइमर सेट करेल.

टाइमर सेट करा

भाषण ते मजकूर कॉलमधून परत आलेला मजकूर तुमच्या सर्व्हरलेस कोडकडे पाठवणे आवश्यक आहे, जे LUIS द्वारे प्रक्रिया केली जाईल आणि टाइमरसाठी सेकंदांची संख्या परत मिळेल. ही सेकंदांची संख्या टाइमर सेट करण्यासाठी वापरली जाऊ शकते.

मायक्रोकंट्रोलर्समध्ये Arduino मध्ये अनेक थ्रेड्ससाठी मूळ समर्थन नसते, त्यामुळे Python किंवा इतर उच्च-स्तरीय भाषांमध्ये कोडिंग करताना तुम्हाला सापडणाऱ्या मानक टाइमर क्लासेस उपलब्ध नसतात. त्याऐवजी तुम्ही टाइमर लायब्ररी वापरू शकता ज्या loop फंक्शनमध्ये कालावधी मोजून काम करतात आणि वेळ संपल्यावर फंक्शन्स कॉल करतात.

कार्य - मजकूर सर्व्हरलेस फंक्शनकडे पाठवा

  1. जर smart-timer प्रकल्प VS Code मध्ये उघडलेला नसेल तर तो उघडा.

  2. config.h हेडर फाइल उघडा आणि तुमच्या फंक्शन अॅपसाठी URL जोडा:

    const char *TEXT_TO_TIMER_FUNCTION_URL = "<URL>";
    

    <URL> ला तुमच्या फंक्शन अॅपसाठी URL ने बदला, जो तुम्ही मागील धड्याच्या शेवटच्या टप्प्यात प्राप्त केला होता, तुमच्या स्थानिक मशीनच्या IP पत्त्याकडे निर्देश करत आहे जे फंक्शन अॅप चालवत आहे.

  3. src फोल्डरमध्ये एक नवीन फाइल तयार करा ज्याचे नाव language_understanding.h असे ठेवा. ही फाइल ओळखलेले भाषण फंक्शन अॅपकडे सेकंदांमध्ये रूपांतरित करण्यासाठी पाठवण्यासाठी एक क्लास परिभाषित करण्यासाठी वापरली जाईल.

  4. या फाइलच्या शीर्षस्थानी खालील कोड जोडा:

    #pragma once
    
    #include <Arduino.h>
    #include <ArduinoJson.h>
    #include <HTTPClient.h>
    #include <WiFiClient.h>
    
    #include "config.h"
    

    यात आवश्यक हेडर फाइल्स समाविष्ट आहेत.

  5. LanguageUnderstanding नावाचा एक क्लास परिभाषित करा आणि या क्लासचे एक उदाहरण घोषित करा:

    class LanguageUnderstanding
    {
    public:
    private:
    };
    
    LanguageUnderstanding languageUnderstanding;
    
  6. तुमच्या फंक्शन अॅपला कॉल करण्यासाठी, तुम्हाला WiFi क्लायंट घोषित करणे आवश्यक आहे. क्लासच्या private विभागात खालील कोड जोडा:

    WiFiClient _client;
    
  7. public विभागात, GetTimerDuration नावाचा एक मेथड घोषित करा जो फंक्शन अॅपला कॉल करेल:

    int GetTimerDuration(String text)
    {
    }
    
  8. GetTimerDuration मेथडमध्ये, फंक्शन अॅपकडे पाठवण्यासाठी JSON तयार करण्यासाठी खालील कोड जोडा:

    DynamicJsonDocument doc(1024);
    doc["text"] = text;
    
    String body;
    serializeJson(doc, body);
    

    हे GetTimerDuration मेथडला पास केलेल्या मजकूराला खालील JSON मध्ये रूपांतरित करते:

    {
        "text" : "<text>"
    }
    

    जिथे <text> हा फंक्शनला पास केलेला मजकूर आहे.

  9. याखाली, फंक्शन अॅप कॉल करण्यासाठी खालील कोड जोडा:

    HTTPClient httpClient;
    httpClient.begin(_client, TEXT_TO_TIMER_FUNCTION_URL);
    
    int httpResponseCode = httpClient.POST(body);
    

    हे JSON बॉडी पास करत POST विनंती करते आणि प्रतिसाद कोड प्राप्त करते.

  10. याखालील कोड जोडा:

    int seconds = 0;
    if (httpResponseCode == 200)
    {
        String result = httpClient.getString();
        Serial.println(result);
    
        DynamicJsonDocument doc(1024);
        deserializeJson(doc, result.c_str());
    
        JsonObject obj = doc.as<JsonObject>();
        seconds = obj["seconds"].as<int>();
    }
    else
    {
        Serial.print("Failed to understand text - error ");
        Serial.println(httpResponseCode);
    }
    

    हा कोड प्रतिसाद कोड तपासतो. जर तो 200 (यशस्वी) असेल, तर टाइमरसाठी सेकंदांची संख्या प्रतिसाद बॉडीमधून मिळवली जाते. अन्यथा, एक त्रुटी सीरियल मॉनिटरवर पाठवली जाते आणि सेकंदांची संख्या 0 सेट केली जाते.

  11. या मेथडच्या शेवटी खालील कोड जोडा जे HTTP कनेक्शन बंद करते आणि सेकंदांची संख्या परत करते:

    httpClient.end();
    
    return seconds;
    
  12. main.cpp फाइलमध्ये, ही नवीन हेडर समाविष्ट करा:

    #include "speech_to_text.h"
    
  13. processAudio फंक्शनच्या शेवटी, टाइमरची कालावधी मिळवण्यासाठी GetTimerDuration मेथड कॉल करा:

    int total_seconds = languageUnderstanding.GetTimerDuration(text);
    

    हे SpeechToText क्लासमधून कॉल केलेल्या मजकूराला टाइमरसाठी सेकंदांमध्ये रूपांतरित करते.

कार्य - टाइमर सेट करा

सेकंदांची संख्या टाइमर सेट करण्यासाठी वापरली जाऊ शकते.

  1. platformio.ini फाइलमध्ये खालील लायब्ररी डिपेंडन्सी जोडा जे टाइमर सेट करण्यासाठी लायब्ररी जोडते:

    contrem/arduino-timer @ 2.3.0
    
  2. main.cpp फाइलमध्ये या लायब्ररीसाठी एक include निर्देश जोडा:

    #include <arduino-timer.h>
    
  3. processAudio फंक्शनच्या वर खालील कोड जोडा:

    auto timer = timer_create_default();
    

    हा कोड timer नावाचा टाइमर घोषित करतो.

  4. याखाली, खालील कोड जोडा:

    void say(String text)
    {
        Serial.print("Saying ");
        Serial.println(text);
    }
    

    ही say फंक्शन मजकूर भाषणात रूपांतरित करेल, परंतु सध्या ती फक्त पास केलेला मजकूर सीरियल मॉनिटरवर लिहील.

  5. say फंक्शनच्या खाली, खालील कोड जोडा:

    bool timerExpired(void *announcement)
    {
        say((char *)announcement);
        return false;
    }
    

    ही एक कॉलबॅक फंक्शन आहे जी टाइमर संपल्यावर कॉल केली जाईल. टाइमर संपल्यावर सांगण्यासाठी एक संदेश पास केला जातो. टाइमर पुन्हा चालू होऊ शकतो, आणि हे कॉलबॅकच्या परत मूल्याद्वारे नियंत्रित केले जाते - हे false परत करते, टाइमर पुन्हा चालू न करण्यासाठी.

  6. processAudio फंक्शनच्या शेवटी खालील कोड जोडा:

    if (total_seconds == 0)
    {
        return;
    }
    
    int minutes = total_seconds / 60;
    int seconds = total_seconds % 60;
    

    हा कोड एकूण सेकंदांची संख्या तपासतो, आणि जर ती 0 असेल, तर फंक्शन कॉलमधून परत येतो जेणेकरून कोणतेही टाइमर सेट केले जात नाहीत. नंतर एकूण सेकंदांना मिनिटे आणि सेकंदांमध्ये रूपांतरित करते.

  7. या कोडखाली, टाइमर सुरू झाल्यावर सांगण्यासाठी एक संदेश तयार करण्यासाठी खालील कोड जोडा:

    String begin_message;
    if (minutes > 0)
    {
        begin_message += minutes;
        begin_message += " minute ";
    }
    if (seconds > 0)
    {
        begin_message += seconds;
        begin_message += " second ";
    }
    
    begin_message += "timer started.";
    
  8. याखाली, टाइमर संपल्यावर सांगण्यासाठी समान कोड जोडा:

    String end_message("Times up on your ");
    if (minutes > 0)
    {
        end_message += minutes;
        end_message += " minute ";
    }
    if (seconds > 0)
    {
        end_message += seconds;
        end_message += " second ";
    }
    
    end_message += "timer.";
    
  9. यानंतर, टाइमर सुरू झाल्याचा संदेश सांगा:

    say(begin_message);
    
  10. या फंक्शनच्या शेवटी, टाइमर सुरू करा:

    timer.in(total_seconds * 1000, timerExpired, (void *)(end_message.c_str()));
    

    हे टाइमर ट्रिगर करते. टाइमर मिलिसेकंदांमध्ये सेट केला जातो, त्यामुळे एकूण सेकंदांची संख्या 1,000 ने गुणाकार केली जाते जेणेकरून ती मिलिसेकंदांमध्ये रूपांतरित होईल. timerExpired फंक्शन कॉलबॅक म्हणून पास केले जाते, आणि end_message कॉलबॅकला पास करण्यासाठी एक आर्ग्युमेंट म्हणून पास केले जाते. हा कॉलबॅक फक्त void * आर्ग्युमेंट घेतो, त्यामुळे स्ट्रिंग योग्य प्रकारे रूपांतरित केली जाते.

  11. शेवटी, टाइमरला tick करणे आवश्यक आहे, आणि हे loop फंक्शनच्या शेवटी खालील कोड जोडून केले जाते:

    timer.tick();
    
  12. हा कोड तयार करा, Wio Terminal वर अपलोड करा आणि सीरियल मॉनिटरद्वारे तपासा. एकदा तुम्हाला सीरियल मॉनिटरमध्ये Ready दिसले की, C बटण (डाव्या बाजूला, पॉवर स्विचजवळ) दाबा आणि बोला. 4 सेकंदांचे ऑडिओ कॅप्चर केले जाईल, मजकूरात रूपांतरित केले जाईल, नंतर तुमच्या फंक्शन अॅपकडे पाठवले जाईल, आणि टाइमर सेट केला जाईल. तुमचे फंक्शन अॅप स्थानिक पातळीवर चालू असल्याची खात्री करा.

    तुम्हाला टाइमर सुरू झाल्याचे आणि संपल्याचे दिसेल.

    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1101  9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Connecting to WiFi..
    Connected!
    Got access token.
    Ready.
    Starting recording...
    Finished recording
    Sending speech...
    Speech sent!
    {"RecognitionStatus":"Success","DisplayText":"Set a 2 minute and 27 second timer.","Offset":4700000,"Duration":35300000}
    Set a 2 minute and 27 second timer.
    {"seconds": 147}
    2 minute 27 second timer started.
    Times up on your 2 minute 27 second timer.
    

💁 तुम्ही हा कोड code-timer/wio-terminal फोल्डरमध्ये शोधू शकता.

😀 तुमचा टाइमर प्रोग्राम यशस्वी झाला!


अस्वीकरण:
हा दस्तऐवज AI भाषांतर सेवा Co-op Translator वापरून भाषांतरित करण्यात आला आहे. आम्ही अचूकतेसाठी प्रयत्नशील असलो तरी कृपया लक्षात ठेवा की स्वयंचलित भाषांतरांमध्ये त्रुटी किंवा अचूकतेचा अभाव असू शकतो. मूळ भाषेतील दस्तऐवज हा अधिकृत स्रोत मानला जावा. महत्त्वाच्या माहितीसाठी व्यावसायिक मानवी भाषांतराची शिफारस केली जाते. या भाषांतराचा वापर करून निर्माण होणाऱ्या कोणत्याही गैरसमज किंवा चुकीच्या अर्थासाठी आम्ही जबाबदार राहणार नाही.