- تقاضے
- ESP32 سلیپ موڈ سرکٹ ڈایاگرام
- ESP32 میں نیند کے طریقوں کا جائزہ
- گہری نیند موڈ کے لئے پروگرامنگ ESP32
- گہری نیند موڈ میں ESP32 کی جانچ کرنا
ای ایس پی 32 ایک انتہائی مقبول وائی فائی پر مبنی مائکروکونٹرولر ماڈیولز میں سے ایک ہے اور یہ بہت سے پورٹ ایبل آئی او ٹی ایپلی کیشنز میں مقبول انتخاب ہے ۔ یہ ایک طاقتور کنٹرولر ہے جو ڈوئل کور پروگرامنگ کی حمایت کرتا ہے اور اس میں بلٹ بلوٹ لو لو انرجی (بی ایل ای) کی حمایت کرتا ہے جس سے یہ پورٹیبل ایپلی کیشنز جیسے آئی بیکن ڈیوائسز ، جی پی ایس ٹریکرز وغیرہ کے لئے ایک اچھا انتخاب بن سکتا ہے ، تاہم ، اس طرح کی بیٹری سے چلنے والے ایپلی کیشنز میں ، سب سے بڑی تشویش بیٹری کا بیک اپ ہے۔ اس بیٹری کے بیک اپ کو مائکروکونٹرولر یونٹ پر زیادہ بہتر کنٹرول کے ذریعہ بڑھایا جاسکتا ہے جیسے کوئی مثالی حالت کے دوران ڈیوائس کی بیٹری بیک اپ کو بڑھانے کے لئے نیند موڈ میں ESP32 پروگرام کرسکتا ہے۔
اس پروجیکٹ میں ، ہم عمومی ورکنگ موڈ اور گہری نیند موڈ میں وسیع پیمانے پر مقبول وائی فائی اور بلوٹوتھڈ مائیکروکنٹرولر یونٹ ESP32 کی موجودہ کھپت کی جانچ کریں گے۔ نیز ، ہم فرق کی جانچ کریں گے اور جانچ کریں گے کہ ESP32 کو گہری نیند کے موڈ میں کیسے ڈالا جائے۔ آپ اس مضمون کو بھی چیک کرسکتے ہیں کہ مائکروکونٹرولروں میں بجلی کی کھپت کو کم سے کم کرنے کے ل tips دوسرے اشاروں کے ل that جو آپ کے ڈیزائن کو زیادہ سے زیادہ موثر بنانے کے ل be استعمال ہوسکتے ہیں۔ مزید برآں ، اگر آپ دوسرے مائکروکینٹرولرز کے نیند موڈ میں دلچسپی رکھتے ہیں تو آپ ارڈینو سلیپ موڈ اور ای ایس پی 8266 نوڈیم سی یو نیند موڈ بھی چیک کرسکتے ہیں۔
تقاضے
ایسا کرنے کے لئے ، ہم ESP32 پر مبنی ڈوکیٹ V4.0 کا استعمال ایسپرسیف سے کریں گے جس میں USB سے UART پُل کے ساتھ ساتھ دیگر ESP32 پن آؤٹ آسان رابطے کے ل. ہیں۔ پروگرامنگ اردوینو IDE کے ذریعہ کی جائے گی۔ اگر آپ مکمل طور پر نئے ہیں تو ، پھر ارڈوینو کا استعمال کرتے ہوئے ESP32 کے ساتھ شروعات کرنے کے ل the ، آگے بڑھنے سے پہلے منسلک مضمون کو پڑھیں۔
اس منصوبے کی ضروریات درج ذیل ہیں۔
- یہ بٹن دبانے سے گہری نیند کی حالت میں جائے گا۔
- یہ کسی دوسرے بٹن کو دبانے سے گہری نیند کی حالت میں جاگے گا۔
- ESP32 کی حالت کا پتہ لگانے کے لئے ، ایک ایل ای ڈی 1000 ملی سیکنڈ کے ٹرن آن وقت کے ساتھ پلک جھپکائے گی۔ نیند کے موڈ کے دوران ، اسے آف کر دیا جائے گا۔
لہذا ، اضافی اجزاء کی ضرورت ہے۔
- ایل ای ڈی - 1 پی سی
- پش بٹن (سپرش سوئچ) - 2 پی سیز
- 4.7k مزاحم۔ 2 پی سیز
- 680R ریزٹر - 1 پی سی
- بریڈ بورڈ
- تار ہک اپ
- 5V اڈاپٹر یا بجلی کی فراہمی کا یونٹ
- ایک مائکرو USB کیبل
- پی سی یا لیپ ٹاپ میں ESP32 پروگرامنگ انٹرفیس کے ساتھ ارڈینوو IDE۔
ESP32 سلیپ موڈ سرکٹ ڈایاگرام
ای ایس پی 32 کو سونے کے لئے پش بٹن کے ساتھ رکھنے کا منصوبہ ذیل میں دکھایا گیا ہے۔
منصوبہ بندی بہت آسان ہے. اس کے دو بٹن ہیں۔ نیند کا بٹن ESP32 کو گہری نیند کے موڈ میں ڈالے گا اور ESP32 کو نیند کے انداز سے بیدار کرنے کے لئے دوسرا سوئچ استعمال کیا جاتا ہے۔ دونوں بٹنوں کو پن 16 اور پن 33 میں منسلک کیا گیا ہے۔ دونوں بٹن دبانے پر ایکٹو لو کے بطور تشکیل شدہ ہیں ، لہذا ایک اضافی پل اپ دیا گیا ہے۔ تاہم ، اس بات کا پتہ لگانے کے لئے کہ ESP 32 نیند موڈ میں ہے یا عام کام کرنے کی حالت میں ہے ، ایل ای ڈی IO پن 4 سے منسلک ہے۔
ESP32 میں نیند کے طریقوں کا جائزہ
ESP32 کے لئے بہت سارے پاور موڈز ہیں ، یعنی ایکٹو موڈ ، موڈیم نیند موڈ ، ہلکا نیند موڈ ، گہری نیند موڈ ، اور ہائبرنیشن موڈ۔
عام کام کرنے کی حالت کے دوران ، ESP32 ایکٹو موڈ پر چلتا ہے۔ ESP32 ایکٹو موڈ کے دوران ، سی پی یو ، وائی فائی / بی ٹی ہارڈ ویئر ، آر ٹی سی میموری ، اور آر ٹی سی پیریفیرلز ، یو ایل پی شریک پروسیسرز ، سب متحرک ہیں اور کام کے بوجھ پر منحصر کام کرتے ہیں۔ تاہم ، بجلی کے مختلف طریقوں پر ، ایک یا زیادہ پردیی بند کردیئے جاتے ہیں۔ مختلف پاور موڈ آپریشنوں کو چیک کرنے کے لئے ، نیچے دیئے گئے ٹیبل پر عمل کریں-
ہارڈ ویئر |
ایکٹو موڈ |
موڈیم نیند موڈ |
ہلکا نیند موڈ |
گہری نیند کا طریقہ |
ہائبرنیشن |
سی پی یو |
آن |
آن |
PAUSE |
بند |
بند |
وائی فائی / بی ٹی |
آن |
بند |
بند |
بند |
بند |
آر ٹی سی اور آر ٹی سی پیریفیرلز |
آن |
آن |
آن |
آن |
بند |
ULP-Co پروسیسر |
آن |
آن |
آن |
کبھی کبھی |
بند |
جیسا کہ ہم مذکورہ جدول میں دیکھ سکتے ہیں کہ ESP32 گہری نیند کے موڈ میں جسے اکثر ULP سینسر مانیٹرڈ پیٹرن کہا جاتا ہے۔ صرف آر ٹی سی میموری اور آر ٹی سی پیریفیرلز آن ہیں۔
ویک اپ کی صورتحال کے دوران ، ESP32 کو واگ اپ سورس کے ذریعہ مطلع کرنے کی ضرورت ہے جو ESP32 کو گہری نیند کی حالت سے جاگے گی ۔ تاہم ، چونکہ آر ٹی سی کے پیری فیرلز آن کردیئے گئے ہیں ، لہذا ، ای ٹی ایس 32 کو آر ٹی سی فعال جی پی آئی اوز کے ذریعہ بیدار کیا جاسکتا ہے۔ اس کے علاوہ بھی دیگر اختیارات ہیں۔ ای ایس پی 32 کو جگانے کے ل It یہ بیرونی ویک اپ رکاوٹ پنوں کے ذریعہ یا ٹائمر کا استعمال کرکے جاگا جاسکتا ہے۔ اس پروجیکٹ میں ، ہم پن 33 پر ایکسٹیک ویک اپ استعمال کر رہے ہیں۔
گہری نیند موڈ کے لئے پروگرامنگ ESP32
مکمل پروگرام اس صفحے کے نیچے پایا جاسکتا ہے۔ یہ آرڈینوو IDE کے لئے لکھا گیا ہے اور اسی وجہ سے آپ کی ضروریات کو آسانی سے ڈھال لیا جاسکتا ہے۔ کوڈ کی وضاحت مندرجہ ذیل ہے۔
کوڈ کے آغاز میں ،
// پش بٹن متغیر پش بٹن پش بی ٹی این = {GPIO_NUM_16 ، 0 ، غلط} بنائیں۔ // لیڈ پن کی وضاحت کریں uint8_t led_pin = GPIO_NUM_4؛ // ویک اپ پن کی وضاحت کریں uint8_t ویک اپ_پیین = GPIO_NUM_33؛
مذکورہ بالا تین لائنیں ویک اپ پن ، ایل ای ڈی پن ، اور نیند موڈ پن کی تعریف کرتی ہیں۔
باطل سیٹ اپ () { // اپنے سیٹ اپ کوڈ کو یہاں رکھیں ، ایک بار چلانے کے لئے: // سیریل پورٹ کو 115200 سیریل.بیگین (115200) پر سیٹ کریں۔ تاخیر (1000)؛ // اندرونی پل اپ پنموڈ (pushBtn.pin، INPUT_PULLUP) کے ساتھ پش بٹن پن کو ان پٹ کے بطور سیٹ کریں ؛ // گرنے والے موڈ اٹیچ انٹرپریٹ میں پش بٹن پن کے ساتھ رکاوٹ ہینڈلر مرتب کریں (پش بٹن ڈن ، اسر_ ہینڈل ، فالنگ)؛ // لیڈ پن کو آؤٹ پن پن موڈ (لیڈ_پن ، اوٹپٹ) کے بطور مقرر کریں۔ // ایک ایسا ٹاسک بنائیں جس کو جھپکنے () میں ، ترجیح 1 کے ساتھ اور بنیادی 0 xTaskCreate ( blinkLed، / * ٹاسک فنکشن ) پر پھانسی دی جائے گی ۔ * / "blinkLed" ، / * ٹاسک کا نام۔ * / 1024 * 2 ، / * ٹاسک کا اسٹیک سائز * / NULL ، / * ٹاسک کا پیرامیٹر * / 5 ، / * ترجیح ٹاسک * / & ٹاسک لنکڈ)؛ / * تخلیق کردہ ٹاسک کو برقرار رکھنے کے لئے ٹاسک ہینڈل * / تاخیر (500)؛ // ایل او لوجک لیول esp_sleep_enable_ext0_wakeup ((gpio_num_t) ویگ اپ_پن ، 0) کے ذریعہ پن 33 کو ایکسٹیک ویک اپ سورس کے بطور تشکیل دیں ۔ }
مذکورہ بالا میں ، کوڈ کے ٹکڑوں کے ذریعہ مداخلت کو گرتے ہوئے موڈ پر سیٹ کیا گیا ہے
منسلک انٹرپروٹ (پش بی ٹی این ڈن ، آئس آر ہینڈل ، گر)
لہذا ، جب بھی سوئچ دبایا جاتا ہے ، منطق کی سطح منطق 1 (3.3V) سے منطق 0 (0V) میں تبدیل ہوجائے گی۔ بٹن پن کی وولٹیج گر جائے گی اور ESP32 شناخت کرے گا کہ سوئچ دب گیا ہے۔ ایل ای ڈی کو پلکنے کے لئے بھی ایک کام تیار کیا گیا ہے۔
xTaskCreate ( blinkLed، / * ٹاسک تقریب. * / "blinkLed"، / * کام کے نام پر. * / 1024 * 2، کام کی / * اسٹیک سائز * / نل، / * کام کے پیرامیٹر * / 5، / * ترجیح ٹاسک * / & ٹاسک لنکڈ)؛ / * تخلیق کردہ ٹاسک کو برقرار رکھنے کے لئے ٹاسک ہینڈل * / تاخیر (500)؛
پن 33 کو نیچے والے کوڈ کے ٹکڑوں کو بیرونی ویک اپ سورس کے طور پر بھی استعمال کیا گیا ہے جسے ext0 کے نام سے شناخت کیا گیا ہے۔
esp_sleep_enable_ext0_ وایک اپ ((gpio_num_t) ویک اپ / پن ، 0)؛
اگلا ، تھوڑی دیر میں
باطل لوپ () { // بار بار چلانے کے لئے اپنا مرکزی کوڈ یہاں رکھیں: اگر (pushBtn.pPress) ial Serial.printf ("پش بٹن (٪ d) پریسڈ \ n" ، pushBtn.pin)؛ سیریل.پرنٹف ("'پلک جھپکنے والی ٹاسک معطل کریں \ n")؛ // پلک جھپکنے والی ٹاسک vTaskSpend ( ٹاسک لنکڈ) معطل کریں ؛ ڈیجیٹل رائٹ (لیڈ_پن ، کم)؛ سیریل.پرنٹف ("سونے کے لئے جا رہے ہیں….. \ n"، pushBtn.pin)؛ pushBtn.pressed = false؛ // اب سونے کے لئے جائیں esp_दीप_sl_start ()؛ } wakeupReason esp_sleep_wakeup_cause_t؛ ویک اپ ریس - esp_sleep_get_wakeup_cause ()؛ سوئچ (واگ اپ ریسن) { کیس ESP_SLEEP_WAKEUP_EXT0: سیریل.پرنٹ لین ("نیند سے ویک اپ کے لئے بیرونی سگنل ایکسٹ0 کا استعمال کرتے ہوئے")؛ توڑ کیس ESP_SLEEP_WAKEUP_EXT1: Serial.println ("نیند سے WakeUp کے لئے بیرونی سگنل ext1 کا استعمال کرتے ہوئے")؛ توڑ کیس ESP_SLEEP_WAKEUP_TIMER: Serial.println ("نیند سے WakeUp کے لئے ٹائمر سگنل کا استعمال کرتے ہوئے")؛ توڑ کیس ESP_SLEEP_WAKEUP_TOUCHPAD: Serial.println ("نیند سے WakeUp کے لئے ٹچ پیڈ سگنل کا استعمال کرتے ہوئے")؛ توڑ کیس ESP_SLEEP_WAKEUP_ULP: Serial.println ("نیند سے WakeUp کے لئے ULP سگنل کا استعمال کرتے ہوئے")؛ توڑ پہلے سے طے شدہ: توڑ سیریل.پرنٹف ("'پلک جھپکتے ہوئے کام کو دوبارہ شروع کریں \ n")؛ // پلک جھپکنے والی ٹاسک کو دوبارہ شروع کریں vTaskResume ( ٹاسک لنکڈ)؛ } }
جبکہ لوپ مسلسل جانچ پڑتال کرتا ہے کہ آیا نیند کا بٹن دب گیا ہے یا نہیں۔ اگر بٹن دبایا جاتا ہے تو ، یہ ایل ای ڈی پلک جھپکانے والے کام کو روک دے گا یا معطل کردے گا اور esp گہری نیند شروع کرنے والے فنکشن کو چلائے گا۔
esp_deep_sl_start ()؛
اس صورتحال میں ، اگر ext0 بیرونی مداخلت کے بٹن کو دبایا جاتا ہے تو ، یہ فوری طور پر گہری نیند کے انداز سے اٹھ جائے گا ، اور پلک جھپکانے والی کام کو دوبارہ شروع کرے گا۔
آخر میں ، ایل ای ڈی پلک جھپکانے والی تقریب کو نیچے کے ٹکڑوں میں دیکھا جاسکتا ہے ، یہ ایل ای ڈی 1000 ایم ایس سیکنڈ میں پلک جھپکائے گا۔
باطل جھپکنے والی (باطل * پیرم) { جبکہ (1) { جامد uint32_t پن_وال = 0؛ // ٹوگل کریں پن ویلیو پن_وال ^ = 1؛ ڈیجیٹل رائٹ (لیڈ_پن ، پن_ول)؛ سیریل.پرنٹف ("لیڈ -----------------٪ s \ n" ، پن_والا؟ "آن": "آف")؛ / * ہر 1000 ملی میٹر یا 1 سیکس * / وی ٹاسک ڈیلی (1000 / پورٹٹیک_پی آر آئی او ڈی_ایم ایس) کو سیدھے سیدھے ٹاگل کریں۔ } taskBlinkled نل =؛ vTaskDelete (NULL)؛ }
گہری نیند موڈ میں ESP32 کی جانچ کرنا
سرکٹ ایک روٹی بورڈ میں تعمیر کی گئی ہے اور موجودہ پیمائش کے ل to میٹرووی XB ایڈیشن ملٹی میٹر استعمال کیا جاتا ہے۔ موجودہ موڈ میں سرکٹ کے ذریعہ تیار کردہ تقریبا 58 ایم اے ہے لیکن گہری نیند کے موڈ میں ، موجودہ تقریبا 4.10 ایم اے ہے۔ تصویر کے ذیل میں دکھایا جا رہا ہے ESP32 فعال موڈ موجودہ کھپت -
گہری نیند کے موڈ میں ، موجودہ کھپت کو تقریبا95 3.95mA تک ریکارڈ کیا گیا ہے ، ذیل کی تصویر ESP32 گہری نیند موڈ میں موجودہ کھپت کو دکھاتی ہے۔
تاہم ، گہری نیند کے موڈ میں ، ESP32 کی موجودہ کھپت تقریبا 150 یو اے ہے۔ لیکن اس ESP32 دیوکیٹ بورڈ کے لئے ریکارڈ شدہ موجودہ کھپت تقریبا 4.10 ایم اے ہے۔ یہ CP2102 اور لکیری ریگولیٹر کی وجہ سے ہے۔ یہ دونوں 5V پاور لائن سے جڑے ہوئے ہیں۔ پاور لائن میں منسلک ایک پاور ایل ای ڈی بھی ہے جو موجودہ تقریبا 2 ایم اے استعمال کررہی ہے۔
لہذا ، یہ آسانی سے پہچانا جاسکتا ہے کہ ESP32 بہت کم مقدار میں توانائی گہری نیند کی حالت میں کھاتا ہے جو بیٹری سے چلنے والے کاموں کے ل very بہت مفید ہے۔ اس کے کام کرنے کے بارے میں مزید معلومات کے ل below ، نیچے لنک کردہ ویڈیو دیکھیں۔ اگر آپ کے کوئی سوالات ہیں تو ، انہیں نیچے تبصرہ سیکشن میں چھوڑ دیں یا دیگر تکنیکی سوالات کے لئے ہمارے فورمز کا استعمال کریں۔