- தேவைகள்
- ESP32 ஸ்லீப் மோட் சர்க்யூட் வரைபடம்
- ESP32 இல் தூக்க முறைகளின் கண்ணோட்டம்
- ஆழ்ந்த தூக்க பயன்முறையில் ESP32 ஐ நிரலாக்குகிறது
- ஆழ்ந்த தூக்க பயன்முறையில் ESP32 ஐ சோதிக்கிறது
ESP32 மிகவும் பிரபலமான வைஃபை அடிப்படையிலான மைக்ரோகண்ட்ரோலர் தொகுதிகளில் ஒன்றாகும், மேலும் இது பல போர்ட்டபிள் ஐஓடி பயன்பாடுகளில் பிரபலமான தேர்வாகும். இது இரட்டை கோர் புரோகிராமிங்கை ஆதரிக்கும் ஒரு சக்திவாய்ந்த கட்டுப்படுத்தி மற்றும் உள்ளமைக்கப்பட்ட புளூடூத் லோ எனர்ஜி (பி.எல்.இ) ஆதரவையும் கொண்டுள்ளது, இது ஐபிகான் சாதனங்கள், ஜி.பி.எஸ் டிராக்கர்கள் போன்ற சிறிய பயன்பாடுகளுக்கு இது ஒரு சிறந்த தேர்வாக அமைகிறது. இருப்பினும், இது போன்ற பேட்டரி மூலம் இயங்கும் பயன்பாடுகளில், முக்கிய கவலை பேட்டரி காப்பு. இந்த பேட்டரி காப்புப்பிரதியை மைக்ரோகண்ட்ரோலர் யூனிட்டின் மீது சிறந்த கட்டுப்பாட்டின் மூலம் அதிகரிக்க முடியும், இது சாதனத்தின் பேட்டரி காப்புப்பிரதியை அதிகரிக்க சிறந்த நிலையில் ESP32 ஐ தூக்க பயன்முறையில் நிரல் செய்யலாம்.
இந்த திட்டத்தில், பரவலாக பிரபலமான வைஃபை மற்றும் புளூடூத் இயக்கப்பட்ட மைக்ரோகண்ட்ரோலர் யூனிட் ESP32 இன் தற்போதைய நுகர்வு சாதாரண பணி முறை மற்றும் ஆழ்ந்த தூக்க பயன்முறையில் சரிபார்க்கிறோம். மேலும், வித்தியாசத்தை சோதித்து, ESP32 ஐ ஆழ்ந்த தூக்க பயன்முறையில் எவ்வாறு வைப்பது என்பதை சரிபார்க்கிறோம். உங்கள் வடிவமைப்பை அதிக சக்தி வாய்ந்ததாக மாற்றுவதற்குப் பயன்படுத்தக்கூடிய பிற உதவிக்குறிப்புகளுக்கு மைக்ரோகண்ட்ரோலர்களில் மின் நுகர்வு எவ்வாறு குறைப்பது என்ற கட்டுரையையும் நீங்கள் பார்க்கலாம். மேலும், பிற மைக்ரோகண்ட்ரோலர்களின் தூக்க பயன்முறையில் நீங்கள் ஆர்வமாக இருந்தால், நீங்கள் Arduino Sleep mode மற்றும் ESP8266 NodeMCU ஸ்லீப் பயன்முறையையும் சரிபார்க்கலாம்.
தேவைகள்
இதைச் செய்ய, எஸ்பிரெசிஃபில் இருந்து ESP32 அடிப்படையிலான தேவ்கிட் வி 4.0 ஐப் பயன்படுத்துவோம், இது யூ.எஸ்.பி முதல் யு.ஆர்.டி பிரிட்ஜ் மற்றும் பிற ஈ.எஸ்.பி 32 பின்அவுட்களை எளிதாக இணைக்க வேண்டும். நிரலாக்கமானது Arduino IDE உடன் செய்யப்படும். நீங்கள் முற்றிலும் புதியவர் என்றால், Arduino ஐப் பயன்படுத்தி ESP32 உடன் தொடங்குவதற்கு, நீங்கள் தொடர்வதற்கு முன் இணைக்கப்பட்ட கட்டுரையைப் படியுங்கள்.

இந்த திட்டத்தின் தேவைகள் பின்வருமாறு-
- இது ஒரு பொத்தானை அழுத்துவதன் மூலம் ஆழ்ந்த தூக்க பயன்முறையில் செல்லும்.
- இது மற்றொரு பொத்தானை அழுத்துவதன் மூலம் ஆழ்ந்த தூக்க பயன்முறையிலிருந்து எழுந்திருக்கும்.
- ESP32 இன் நிலையைக் கண்டறிய, ஒரு எல்.ஈ.டி 1000 மில்லி விநாடிகளின் இயக்க நேரத்துடன் ஒளிரும். தூக்க பயன்முறையில், அது அணைக்கப்படும்.
எனவே, கூடுதல் கூறுகள் தேவை-
- எல்.ஈ.டி - 1 பிசி
- புஷ்-பொத்தான் (தொட்டுணரக்கூடிய சுவிட்ச்) - 2 பிசிக்கள்
- 4.7 கே மின்தடையங்கள் - 2 பிசிக்கள்
- 680 ஆர் மின்தடை - 1 பிசி
- ப்ரெட்போர்டு
- ஹூக் அப் கம்பி
- 5 வி அடாப்டர் அல்லது மின்சாரம் வழங்கல் அலகு
- மைக்ரோ-யூ.எஸ்.பி கேபிள்
- பிசி அல்லது லேப்டாப்பில் ஈஎஸ்பி 32 நிரலாக்க இடைமுகத்துடன் அர்டுயினோ ஐடிஇ.
ESP32 ஸ்லீப் மோட் சர்க்யூட் வரைபடம்
புஷ் பொத்தானைக் கொண்டு தூங்க ESP32 ஐ வைக்கும் திட்டம் கீழே காட்டப்பட்டுள்ளது.

திட்டவட்டம் மிகவும் எளிது. இதில் இரண்டு பொத்தான்கள் உள்ளன. தூக்க பொத்தான் ESP32 ஐ ஆழ்ந்த தூக்க பயன்முறையில் வைக்கும், மற்றொரு சுவிட்ச் தூக்க பயன்முறையிலிருந்து ESP32 ஐ எழுப்ப பயன்படுத்தப்படுகிறது. இரண்டு பொத்தான்களும் PIN 16 மற்றும் PIN 33 இல் இணைக்கப்பட்டுள்ளன. இரண்டு பொத்தான்களும் அழுத்தும் போது செயலில் குறைவாக கட்டமைக்கப்படுகின்றன, எனவே கூடுதல் இழுத்தல் வழங்கப்படுகிறது. இருப்பினும், ஈஎஸ்பி 32 தூக்க பயன்முறையில் உள்ளதா அல்லது சாதாரண பணி நிலை பயன்முறையில் உள்ளதா என்பதைக் கண்டறிய, எல்இடி ஐஓ பின் 4 உடன் இணைக்கப்பட்டுள்ளது.
ESP32 இல் தூக்க முறைகளின் கண்ணோட்டம்
செயலில் உள்ள பயன்முறை, மோடம் ஸ்லீப் பயன்முறை, ஒளி தூக்க பயன்முறை, ஆழ்ந்த தூக்க பயன்முறை மற்றும் உறக்கநிலை முறை என ESP32 க்கு பல்வேறு சக்தி முறைகள் உள்ளன.
இயல்பான பணி நிலையில், ESP32 செயலில் உள்ள பயன்முறையில் இயங்குகிறது. போது ESP32 பயன்முறையிலிருக்கும், சிபியு WiFi / பிடி வன்பொருள், போக்குவரத்துக் கழக நினைவகம், மற்றும் போக்குவரத்துக் கழக பாகங்களை, ULP இணை செயலிகள், அனைத்து செயல்படுத்தப்படுகின்றன மற்றும் வேலை பணிச்சுமையைப் பொறுத்து. இருப்பினும், வெவ்வேறு சக்தி முறைகளில், ஒன்று அல்லது அதற்கு மேற்பட்ட சாதனங்கள் அணைக்கப்படும். வெவ்வேறு சக்தி முறை செயல்பாடுகளை சரிபார்க்க, கீழே உள்ள அட்டவணையைப் பின்பற்றவும்-
|
வன்பொருள் |
செயலில் பயன்முறை |
மோடம்-தூக்க முறை |
ஒளி தூக்க முறை |
ஆழ்ந்த தூக்க முறை |
உறக்கநிலை |
|
CPU |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
இடைநிறுத்தம் |
முடக்கப்பட்டுள்ளது |
முடக்கப்பட்டுள்ளது |
|
வைஃபை / பி.டி. |
இயக்கப்பட்டது |
முடக்கப்பட்டுள்ளது |
முடக்கப்பட்டுள்ளது |
முடக்கப்பட்டுள்ளது |
முடக்கப்பட்டுள்ளது |
|
ஆர்டிசி மற்றும் ஆர்டிசி சாதனங்கள் |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
முடக்கப்பட்டுள்ளது |
|
யுஎல்பி-கோ செயலி |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
இயக்கப்பட்டது |
ஆன் / ஆஃப் |
முடக்கப்பட்டுள்ளது |
மேலே உள்ள அட்டவணையில் நாம் காணக்கூடியது, ஈஎஸ்பி 32 ஆழ்ந்த தூக்க பயன்முறையில் பெரும்பாலும் யுஎல்பி சென்சார் கண்காணிக்கப்பட்ட முறை என அழைக்கப்படுகிறது - சிபியு, வைஃபை / பிடி, ஆர்டிசி மெமரி மற்றும் சாதனங்கள், யுஎல்பி இணை செயலிகள் அனைத்தும் அணைக்கப்பட்டுள்ளன. ஆர்டிசி நினைவகம் மற்றும் ஆர்டிசி சாதனங்கள் மட்டுமே இயக்கப்பட்டன.
விழித்திருக்கும் சூழ்நிலையின் போது, ESP32 ஐ விழித்தெழுந்த மூலத்தால் அறிவிக்க வேண்டும், இது ESP32 ஐ ஆழ்ந்த தூக்க பயன்முறையிலிருந்து எழுப்புகிறது. இருப்பினும், ஆர்டிசி சாதனங்கள் இயக்கப்பட்டிருப்பதால், ஆர்டிசி இயக்கப்பட்ட ஜிபிஐஓக்கள் மூலம் ஈஎஸ்பி 32 ஐ எழுப்ப முடியும். மற்ற விருப்பங்களும் உள்ளன. இது வெளிப்புற விழித்தெழுந்த குறுக்கீடு ஊசிகளின் மூலம் அல்லது ESP32 ஐ எழுப்ப டைமரைப் பயன்படுத்தலாம். இந்த திட்டத்தில், முள் 33 இல் ext0 விழிப்புணர்வைப் பயன்படுத்துகிறோம்.
ஆழ்ந்த தூக்க பயன்முறையில் ESP32 ஐ நிரலாக்குகிறது
முழுமையான நிரலை இந்த பக்கத்தின் கீழே காணலாம். இது Arduino IDE க்காக எழுதப்பட்டுள்ளது, எனவே உங்கள் தேவைகளுக்கு எளிதில் மாற்றியமைக்க முடியும். குறியீட்டின் விளக்கம் பின்வருமாறு.
குறியீட்டின் தொடக்கத்தில், // புஷ்பட்டன் மாறியை உருவாக்கவும் புஷ்பன்ட் புஷ் பி.டி.என் = {ஜி.பி.ஐ.ஓ.என்.எம்_16, 0, பொய்}; // லெட் பின் வரையறுக்கவும் uint8_t led_pin = GPIO_NUM_4; // எழுந்திரு முள் வரையறுக்கவும் uint8_t விழிப்பு_பின் = GPIO_NUM_33;
மேலே உள்ள மூன்று வரிகள் விழித்தெழுந்த முள், எல்.ஈ.டி முள் மற்றும் தூக்க பயன்முறை முள் ஆகியவற்றை வரையறுக்கின்றன.
void setup () { // உங்கள் அமைவு குறியீட்டை இங்கே வைக்கவும், ஒரு முறை இயக்கவும்: // சீரியல் போர்ட்டை 115200 Serial.begin (115200) இல் அமைக்கவும்; தாமதம் (1000); // புஷ்பட்டன் முள் உள் புல்அப் பின்மோட் (pushBtn.pin, INPUT_PULLUP) உடன் உள்ளீடாக அமைக்கவும்; // குறுக்கீடு கையாளுபவரை புஷ்பட்டன் முள் கொண்டு வீழ்ச்சி பயன்முறையில் இணைக்கவும் இன்டெரப்ட் (pushBtn.pin, isr_handle, FALLING); // லெட் பின்னை அவுபட் பின்மோடாக அமைக்கவும் (லெட்_பின், OUTPUT); // பிளிங்க்லெட் () செயல்பாட்டில் முன்னுரிமை 1 உடன் செயல்படுத்தப்படும் மற்றும் கோர் 0 xTaskCreate ( blinkLed, / * Task function. * / "blinkLed", / * பணியின் பெயர். * / 1024 * 2, / * பணியின் அடுக்கு அளவு * / NULL, / * பணியின் அளவுரு * / 5, / * பணியின் முன்னுரிமை * / & taskBlinkled); / * உருவாக்கப்பட்ட பணியைக் கண்காணிக்க பணி கைப்பிடி * / தாமதம் (500); // குறைந்த தர்க்க நிலை esp_sleep_enable_ext0_wakeup ((gpio_num_t) ವೇக்அப்_பின், 0) உடன் பின் 33 ஐ ext0 விழித்தெழுக்கும் மூலமாக உள்ளமைக்கவும் ; }
மேலே உள்ளவற்றில், குறுக்கீடு குறியீட்டு துணுக்கால் வீழ்ச்சி பயன்முறையில் அமைக்கப்படுகிறது
attachInterrupt (pushBtn.pin, isr_handle, FALLING);
எனவே, சுவிட்ச் அழுத்தும் போதெல்லாம், லாஜிக் நிலை லாஜிக் 1 (3.3 வி) இலிருந்து லாஜிக் 0 (0 வி) ஆக மாறும். பொத்தான் முள் மின்னழுத்தம் வீழ்ச்சியடையும் மற்றும் சுவிட்ச் அழுத்தியதை ESP32 அடையாளம் காணும். எல்.ஈ.டி ஒளிரும் பணியும் உருவாக்கப்பட்டுள்ளது.
xTaskCreate ( blinkLed, / * Task function. * / "blinkLed", / * பணியின் பெயர். * / 1024 * 2, / * பணியின் அடுக்கு அளவு * / NULL, / * பணியின் அளவுரு * / 5, / * முன்னுரிமை பணியின் * / & taskBlinkled); / * உருவாக்கப்பட்ட பணியைக் கண்காணிக்க பணி கைப்பிடி * / தாமதம் (500);
எக்ஸ்ட் 0 என அடையாளம் காணப்பட்ட வெளிப்புற விழித்தெழுந்த மூலமாக கீழே உள்ள குறியீடு துணுக்கைப் பயன்படுத்தி முள் 33 கட்டமைக்கப்பட்டுள்ளது.
esp_sleep_enable_ext0_wakeup ((gpio_num_t) விழிப்புணர்வு_பின், 0);
அடுத்து, அதே நேரத்தில் வளையத்தில்-
void loop () { // மீண்டும் மீண்டும் இயக்க, உங்கள் முக்கிய குறியீட்டை இங்கே வைக்கவும்: if (pushBtn.pressed) { Serial.printf ("PushButton (% d) அழுத்தப்பட்ட \ n", pushBtn.pin); Serial.printf ("'ஒளிரும்' பணியை இடைநிறுத்து \ n"); // ஒளிரும் பணி vTaskSuspend (taskBlinkled) ஐ இடைநிறுத்துங்கள் ; டிஜிட்டல்ரைட் (லெட்_பின், குறைந்த); Serial.printf ("தூங்கப் போகிறது….. \ n", pushBtn.pin); pushBtn.pressed = பொய்; // இப்போது தூங்கச் செல்லுங்கள் esp_deep_sleep_start (); } esp_sleep_wakeup_cause_t விழிப்புணர்வு காரணம்; விழிப்புணர்வு = esp_sleep_get_wakeup_cause (); சுவிட்ச் (விழிப்புணர்வு) { வழக்கு ESP_SLEEP_WAKEUP_EXT0: Serial.println ("தூக்கத்திலிருந்து எழுந்திருப்பதற்கான வெளிப்புற சமிக்ஞை ext0 ஐப் பயன்படுத்துதல்"); உடைத்தல்; வழக்கு ESP_SLEEP_WAKEUP_EXT1: Serial.println ("தூக்கத்திலிருந்து எழுந்திருப்பதற்கான வெளிப்புற சமிக்ஞை ext1 ஐப் பயன்படுத்துதல்"); உடைத்தல்; வழக்கு ESP_SLEEP_WAKEUP_TIMER: Serial.println ("தூக்கத்திலிருந்து எழுந்திருப்பதற்கான டைமர் சிக்னலைப் பயன்படுத்துதல்"); உடைத்தல்; வழக்கு ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println ("தூக்கத்திலிருந்து எழுந்திருப்பதற்கான டச்பேட் சிக்னலைப் பயன்படுத்துதல்"); உடைத்தல்; வழக்கு ESP_SLEEP_WAKEUP_ULP: Serial.println ("தூக்கத்திலிருந்து எழுந்திருப்பதற்கான ULP சமிக்ஞையைப் பயன்படுத்துதல்"); உடைத்தல்; இயல்புநிலை: இடைவெளி; Serial.printf ("'blinkLed' Task \ n ஐ மீண்டும் தொடங்குங்கள்); // ஒளிரும் பணி vTaskResume (taskBlinkled) ஐ மறுதொடக்கம் செய்யுங்கள்; } }
தூக்க பொத்தானை அழுத்துகிறதா இல்லையா என்பதை தொடர்ந்து சரிபார்க்கிறது. பொத்தானை அழுத்தினால், அது எல்.ஈ.டி சிமிட்டும் பணியை நிறுத்திவிடும் அல்லது நிறுத்தி எஸ்பி ஆழமான தூக்க தொடக்க செயல்பாட்டை இயக்கும்-
esp_deep_sleep_start ();
இந்த சூழ்நிலையில், ext0 வெளிப்புற குறுக்கீடு பொத்தானை அழுத்தினால், அது உடனடியாக ஆழ்ந்த தூக்க பயன்முறையிலிருந்து எழுந்து, தலைமையிலான ஒளிரும் பணியை மீண்டும் தொடங்கும்.
கடைசியாக, எல்.ஈ.டி ஒளிரும் செயல்பாட்டை கீழே உள்ள துணுக்குகளில் காணலாம், இது எல்.ஈ.டி 1000 எம்.எஸ் வினாடிகளில் ஒளிரும்.
void blinkLed (void * param) { போது (1) { நிலையான uint32_t pin_val = 0; // முள் மதிப்பை மாற்றுக pin_val ^ = 1; டிஜிட்டல்ரைட் (லெட்_பின், பின்_வால்); Serial.printf ("Led -----------------% s \ n", pin_val? "On": "Off"); / * ஒவ்வொரு 1000ms அல்லது 1sec * / vTaskDelay (1000 / portTICK_PERIOD_MS) ஐ எல்.ஈ.டி மாற்றவும்; } taskBlinkled = NULL; vTaskDelete (NULL); }
ஆழ்ந்த தூக்க பயன்முறையில் ESP32 ஐ சோதிக்கிறது
சுற்று ஒரு பிரெட் போர்டில் கட்டப்பட்டுள்ளது மற்றும் மின்னோட்டத்தை அளவிட மெட்ராவி எக்ஸ்பி பதிப்பு மல்டிமீட்டர் பயன்படுத்தப்படுகிறது. செயலில் பயன்முறையில் சுற்று மூலம் வரையப்பட்ட மின்னோட்டம் கிட்டத்தட்ட 58 mA ஆகும், ஆனால் ஆழ்ந்த தூக்க பயன்முறையில், மின்னோட்டம் கிட்டத்தட்ட 4.10 mA ஆகும். படத்தின் கீழே ESP32 செயலில் உள்ள பயன்முறை தற்போதைய நுகர்வு காட்டுகிறது -

ஆழ்ந்த தூக்க பயன்முறையில், தற்போதைய நுகர்வு சுமார் 3.95mA ஆகக் குறைக்கப்பட்டுள்ளது, கீழேயுள்ள படம் ESP32 ஆழமான தூக்க பயன்முறையின் தற்போதைய நுகர்வு-
இருப்பினும், ஆழ்ந்த தூக்க பயன்முறையில், ESP32 இன் தற்போதைய நுகர்வு கிட்டத்தட்ட 150 uA ஆகும். ஆனால் இந்த ESP32 தேவ்கிட் போர்டுக்கான தற்போதைய நுகர்வு கிட்டத்தட்ட 4.10 mA ஆகும். இது CP2102 மற்றும் லீனியர் ரெகுலேட்டர் காரணமாகும். இவை இரண்டும் 5 வி மின் இணைப்போடு இணைக்கப்பட்டுள்ளன. கிட்டத்தட்ட 2 எம்ஏ மின்னோட்டத்தை நுகரும் மின்வழியில் ஒரு மின் எல்இடி இணைக்கப்பட்டுள்ளது.
ஆகையால், பேட்டரி மூலம் இயங்கும் செயல்பாடுகளுக்கு மிகவும் பயனுள்ளதாக இருக்கும் ஆழ்ந்த தூக்க பயன்முறையில் ESP32 மிகக் குறைந்த அளவு ஆற்றலைப் பயன்படுத்துகிறது என்பதை எளிதில் அடையாளம் காணலாம். இது எவ்வாறு செயல்பட்டது என்பது பற்றிய கூடுதல் தகவலுக்கு, கீழே இணைக்கப்பட்ட வீடியோவைப் பாருங்கள். உங்களிடம் ஏதேனும் கேள்விகள் இருந்தால், அவற்றை கீழே உள்ள கருத்துப் பிரிவில் விடுங்கள் அல்லது பிற தொழில்நுட்ப கேள்விகளுக்கு எங்கள் மன்றங்களைப் பயன்படுத்தவும்.
