সুচিপত্র:
- ধাপ 1: ভূমিকা
- ধাপ 2: ESP32 জাগানোর উপায়
- ধাপ 3: টাইমার
- ধাপ 4: বাহ্যিক জাগরণ (ext0)
- ধাপ 5: বাহ্যিক জাগরণ (ext1)
- ধাপ 6: ULP Coprocessor Wakeup
- ধাপ 7: টাচপ্যাড
- ধাপ 8: গভীর ঘুম মোডে প্রবেশ করা
- ধাপ 9: এখানে আরো কিছু গুরুত্বপূর্ণ তথ্য রয়েছে
- ধাপ 10: বিক্ষোভ
- ধাপ 11: ওয়াইফাই নোড MCU-32S ESP-WROOM-32
- ধাপ 12: সমাবেশ
- ধাপ 13: প্রোগ্রাম
- ধাপ 14: লাইব্রেরি প্রয়োজন
- ধাপ 15: লাইব্রেরি এবং পরিবর্তনশীল
- ধাপ 16: সেটআপ
- ধাপ 17: লুপ, কলব্যাক এবং কনফিগার ডিসপ্লে
- ধাপ 18: Print_wakeup_reason (জাগরণের কারণ জানা)
- ধাপ 19: Print_wakeup_touchpad (GPIO টাচ জানুন)
- ধাপ 20: ফাইল ডাউনলোড করুন
ভিডিও: গভীর ঘুমের সাথে ব্যাটারির জীবন বাঁচানো: ২০ টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
আপনি কি আপনার ESP32 দিয়ে ব্যাটারি ব্যবহার করতে আগ্রহী? যদি তাই হয়, আমি আজ এই বিষয়ে কিছু গুরুত্বপূর্ণ প্রযুক্তিগত তথ্য আলোচনা করব। আমরা জানি যে এই মাইক্রোকন্ট্রোলার যখন তথ্য প্রেরণ করে তখন প্রচুর শক্তি ব্যয় করে। এটি 190 মিলিঅ্যাম্পের কাছাকাছি খরচ করে। এই ভিডিওতে, আমি দেখাবো কিভাবে তথাকথিত "ডিপ স্লিপ" ফাংশন দিয়ে ESP32 থেকে শক্তি সংরক্ষণ করা যায়। আমরা এই মোডে প্রবেশ করার জন্য চিপ সেট করব, এই মোড থেকে বের হওয়ার উপায়গুলি শিখব এবং ESP32 কে জাগানোর তিনটি ভিন্ন উপায় দেখিয়ে একটি উদাহরণ তৈরি করব।
এটি মনে রাখা গুরুত্বপূর্ণ যে রেডিও প্রসেসরের পরিবর্তে প্রচুর শক্তি ব্যয় করে। শক্তি সঞ্চয় খুবই গুরুত্বপূর্ণ। এর কারণ হল এন্ডপয়েন্ট (সার্কিট যা তথ্য পাঠাচ্ছে) প্রায়ই ব্যাটারি চালিত এবং পাঁচ বছর পর্যন্ত চলতে পারে। কিছু নির্মাতারা আছেন যারা মেয়াদে দশ বছর পর্যন্ত প্রতিশ্রুতি দেন এবং এটি উচ্চ মানের ব্যাটারির জন্য বৈধ যা এন্ডপয়েন্টগুলি বেশি ব্যবহার করে না। অন্য সব ক্ষেত্রে, আমি আপনাকে আপনার সার্কিট থেকে শক্তি বাঁচাতে গভীর ঘুম ব্যবহার করার পরামর্শ দিই।
ধাপ 1: ভূমিকা
ESP32- এর একটি পাওয়ার-সেভিং মোড আছে, যার নাম "গভীর ঘুম"। এই মোডে, সিপিইউ, বেশিরভাগ র RAM্যাম এবং সমস্ত ডিজিটাল ক্লকড পেরিফেরাল বন্ধ থাকে। চিপের একমাত্র অংশ যা এখনও সংযুক্ত হতে পারে তা হল আরটিসি কন্ট্রোলার, আরটিসি পেরিফেরালস (ইউএলপি কোপ্রসেসর সহ), এবং আরটিসি স্মৃতি।
ঘুমানোর সময় আমাদের ESP32 জাগানোর বিভিন্ন উপায় আছে। ডিপ স্লিপ মোডে beforeোকার আগে যেকোনো সময় জেগে ওঠার উৎসগুলি সেট আপ করা যেতে পারে।
ধাপ 2: ESP32 জাগানোর উপায়
ESP32 জাগানোর পাঁচটি উপায় রয়েছে:
• টাইমার
• বাহ্যিক জাগরণ (ext0)
• বাহ্যিক জাগরণ (ext1)
• ULP coprocessor wakeup
• টাচপ্যাড
ধাপ 3: টাইমার
আরটিসি কন্ট্রোলারের একটি অন্তর্নির্মিত টাইমার রয়েছে যা পূর্বনির্ধারিত সময়ের পরে চিপটি সক্রিয় করতে ব্যবহার করা যেতে পারে। সময়টি মাইক্রোসেকেন্ড নির্ভুলতার সাথে নির্দিষ্ট করা আছে।
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
time_in_us> হল মাইক্রোসেকেন্ডে সময়
ধাপ 4: বাহ্যিক জাগরণ (ext0)
আরটিসি আইও মডিউলে এলার্ম ট্রিগার করার জন্য যুক্তি থাকে যখন আরটিসি জিপিআইওগুলির মধ্যে একটি পূর্বনির্ধারিত লজিক লেভেলে প্রবেশ করে। আরটিসি আইও আরটিসি পেরিফেরালগুলির পাওয়ার ডোমেইনের অংশ, তাই অ্যাক্টিভেশনের উৎস অনুরোধ করা হলে আরটিসি পেরিফেরালগুলি গভীর ঘুমের সময় বাঁচিয়ে রাখা হবে।
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, int level)
gpio_num> GPIO নম্বরটি সক্রিয়করণের উৎস হিসেবে ব্যবহৃত হয়। শুধুমাত্র RTC- কার্যকরী GPIO ব্যবহার করা যেতে পারে: 0, 2, 4, 12-15, 25-27, 32-39।
লেভেল> ইনপুট লেভেল যা এলার্ম ট্রিগার করবে (0 = LOW, 1 = HIGH)
ধাপ 5: বাহ্যিক জাগরণ (ext1)
আরটিসি কন্ট্রোলারে একাধিক আরটিসি জিপিআইও ব্যবহার করে অ্যালার্ম ঘড়ি ট্রিগার করার জন্য যুক্তি রয়েছে।
esp_deep_sleep_enable_ext1_wakeup (uint64_t মাস্ক, esp_ext1_wakeup_mode_t মোড)
জিপিআইও নম্বরের মাস্ক> বিট মাস্ক যা সক্রিয়করণের কারণ হবে। 0, 2, 4, 12-15, 25-27, 32-39 এই বিটম্যাপে শুধুমাত্র RTC- সক্ষম GPIO ব্যবহার করা যেতে পারে।
মোড> অ্যাক্টিভেশন শর্ত নির্ধারণ করতে ব্যবহৃত লজিক ফাংশন নির্বাচন করুন:
• ESP_EXT1_WAKEUP_ALL_LOW: যখন সমস্ত নির্বাচিত GPIOs কম থাকে তখন জাগ্রত হয়
• ESP_EXT1_WAKEUP_ANY_HIGH: জাগ্রত হয় যখন নির্বাচিত GPIO গুলোর মধ্যে কোনটি উচ্চ হয়
ধাপ 6: ULP Coprocessor Wakeup
চিপ গভীর ঘুমে থাকা অবস্থায় ULP কপো প্রসেসর কাজ করতে পারে এবং সেন্সর অনুসন্ধান, ADC বা ক্যাপাসিটিভ টাচ সেন্সর মান পর্যবেক্ষণ করতে এবং একটি নির্দিষ্ট ঘটনা ধরা পড়লে চিপটি সক্রিয় করতে ব্যবহার করা যেতে পারে।
ইউএলপি কোপ্রসেসর আরটিসি পেরিফেরালগুলির পাওয়ার ডোমেনের অংশ এবং ধীর মেমরি আরটিসিতে সঞ্চিত প্রোগ্রামটি চালায়। অতএব, এই অ্যাক্টিভেশন মোডটি অনুরোধ করা হলে গভীর ঘুমের সময় আরটিসি পেরিফেরাল এবং আরটিসি স্লো মেমরি সক্রিয় হবে।
ধাপ 7: টাচপ্যাড
আরটিসি কন্ট্রোলারে ক্যাপাসিটিভ টাচ সেন্সর ব্যবহার করে অ্যালার্ম ট্রিগার করার জন্য যুক্তি রয়েছে। টাচ পিনের সংজ্ঞা অবশ্য ভিন্ন। আমাদের প্রতিটি কাঙ্ক্ষিত পিনের জন্য স্পর্শ বাধা ব্যবহার করতে হবে।
বাধাগুলি সেট করার পরে, আমরা সেন্সরগুলি ব্যবহার করার জন্য জাগ্রত মোড সক্ষম করেছি।
// টাচপ্যাডকে জেগে ওঠার উৎস হিসেবে কনফিগার করুন esp_sleep_enable_touchpad_wakeup ();
ধাপ 8: গভীর ঘুম মোডে প্রবেশ করা
জেগে ওঠার মোড সেট করার পরে, ডিপ স্লিপ মোডে ESP32 রাখার জন্য একটি একক কমান্ড (2.5 μA বা তার কম খরচ করা) যথেষ্ট। আমি এখানে জোর দিয়েছি যে এই ব্যয়টি ইএসপি চিপ থেকে এবং প্লেট নয়, কারণ পরবর্তীটি বেশি ব্যয় করে।
esp_deep_sleep_start ();
এই কমান্ড থেকে, ESP32 ঘুমিয়ে পড়ে এবং উদাহরণস্বরূপ কোডের পরবর্তী লাইনগুলি চালায় না।
গুরুত্বপূর্ণ: উপরের কমান্ডটি কার্যকর করার আগে সমস্ত জেগে ওঠার সেটিংস তৈরি করতে হবে।
ধাপ 9: এখানে আরো কিছু গুরুত্বপূর্ণ তথ্য রয়েছে
নীচের কলটি ESP32 জেগে ওঠার কারণ প্রদান করে।
1: EXT0 2: EXT1 3: টাইমার 4: টাচপ্যাড 5: ULP
esp_sleep_get_wakeup_cause ();
যদি আমরা টাচপ্যাড দ্বারা জাগিয়ে তুলি, তাহলে আমরা কোন GPIO- কে স্পর্শ করতে পারি তা কমান্ডের মাধ্যমে পুনরুদ্ধার করতে পারি
esp_sleep_get_touchpad_wakeup_status ();
প্রতিবার ইএসপি 32 জেগে উঠলে, এটি আবার সেটআপের মাধ্যমে চক্র করবে। এইভাবে সমস্ত ভেরিয়েবল যা আরটিসি মেমরিতে সংজ্ঞায়িত করা হয় না তাদের নিজ রাজ্যে ফিরে আসবে।
ঘুমের পরেও ভেরিয়েবলগুলিকে স্মৃতিতে রাখতে, নীচের উদাহরণে পরিবর্তনশীল ঘোষণা ব্যবহার করুন:
// RTC_DATA_ATTR aloca a variável na memória RTCRTC_DATA_ATTR int bootCount = 0;
ধাপ 10: বিক্ষোভ
ভিডিওটি চিত্রের সাথে সামঞ্জস্য রেখে প্রোগ্রামটি দেখায়।
ধাপ 11: ওয়াইফাই নোড MCU-32S ESP-WROOM-32
ধাপ 12: সমাবেশ
ধাপ 13: প্রোগ্রাম
আমরা এখন একটি প্রোগ্রাম তৈরি করব যেখানে আমরা গভীর ঘুমের মোডে প্রবেশের জন্য ESP32 কনফিগার করব। এটি তিনটি ভিন্ন উপায়ে জাগ্রত হবে: একটি বহিরাগত জাগানোর জন্য (ext0), একটি টাইমারের জন্য এবং একটি টাচপ্যাডের জন্য। তারা একসাথে কাজ করতে পারে না, তাই আমরা একটি ভেরিয়েবল ব্যবহার করব যা ESP32 বুটকে জাগানোর উপায় কনফিগার করার জন্য একটি কাউন্টার হবে।
ধাপ 14: লাইব্রেরি প্রয়োজন
ওএলইডি ডিসপ্লে নিয়ন্ত্রণ করতে আমাদের একটি বহিরাগত লাইব্রেরি দরকার। এর জন্য, আমরা U8g2 লাইব্রেরি ডাউনলোড করব।
Arduino IDE তে, স্কেচ মেনুতে যান >> লাইব্রেরি অন্তর্ভুক্ত করুন >> লাইব্রেরি পরিচালনা করুন…।
ধাপ 15: লাইব্রেরি এবং পরিবর্তনশীল
আমরা OLED ডিসপ্লে নিয়ন্ত্রণের জন্য লাইব্রেরির পাশাপাশি ডিসপ্লে কন্ট্রোলার ইনস্ট্যান্সের একজন কনস্ট্রাক্টর অন্তর্ভুক্ত করেছি। এছাড়াও, আমরা RTC মেমরিতে ভেরিয়েবল বরাদ্দ করি। আমরা স্পর্শ গ্রহণের জন্য সংবেদনশীলতা, মাইক্রোসেকেন্ড রূপান্তর ফ্যাক্টর, এবং ESP32 স্লিপ মোডে যাওয়ার সময় (সেকেন্ডে) সেট করি।
#অন্তর্ভুক্ত // biblioteca para controle do display oled
// construtor da instancia do controlador do display // SDA = 21 e SCL = 22 U8X8_SSD1306_128X64_NONAME_SW_I2C ডিসপ্লে (SCL, SDA, U8X8_PIN_NONE); // RTC_DATA_ATTR aloca a variável na memoria RTC RTC_DATA_ATTR int bootCount = 0; // sensibilidade para aceitação do toque #define threshold 40 // fator de conversão de microsegundos para segundos #define uS_TO_S_FACTOR 1000000 // tempo que o ESP32 ficará em modo sleep (em segundos) #define TIME_TO_SLEEP 3
ধাপ 16: সেটআপ
সেটআপে, আমরা বুট সংঘটিত হওয়ার সংখ্যা বৃদ্ধি করি। আমরা বুট মোটিফ প্রিন্ট করার জন্য ফাংশনটিকে কল করি। যদি বুট নম্বরটি PAR হয়, আমরা ESP32 সেট করি (EXT0) বোতামের মাধ্যমে জেগে উঠতে। যদি এটি 3 এর একাধিক হয়, আমরা একটি নির্ধারিত সময়ের পরে জেগে উঠার জন্য ESP32 সেট করি। অন্যথায়, আমরা ESP32 জাগানোর জন্য ক্যাপাসিটিভ টাচ পিন সেট আপ করি। অবশেষে, আমরা টাচপ্যাডকে জাগার উত্স হিসাবে সেট করেছি এবং ESP32 কে ঘুমের মোডে প্রবেশ করতে বাধ্য করি।
অকার্যকর সেটআপ () {Serial.begin (115200); বিলম্ব (1000); // incrementa o numero de vezes que o BOOT ocorreu ++ bootCount; কনফিগার ডিসপ্লে (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se o numero de boot for PAR configuramos o ESP32 para despertar através do botão (EXT0) if (bootCount % 2 == 0) {esp_sleep_enable_ext0_wakeup (GPIO_NUM_39, 1); // 1 = High, 0 = Low} // se for multiplo de 3 configuramos o ESP32 para despertar depois de um tempo definido else if (bootCount % 3 == 0) {esp_sleep_enable_timer_wakeup (TIME_TO_SLEEP * uS_TO_S_FACTOR); } // caso contrario configuramos os pinos de touch capacitivo para despertar o ESP32 else {// Setup interrupt on Touch Pad 5 (GPIO12) touchAttachInterrupt (T5, callback, Threshold); // টাচপ্যাডকে জেগে ওঠার উৎস হিসেবে কনফিগার করুন esp_sleep_enable_touchpad_wakeup (); } Serial.println ("entrando em modo sleep"); esp_deep_sleep_start (); // força o ESP32 entrar em modo SLEEP}
ধাপ 17: লুপ, কলব্যাক এবং কনফিগার ডিসপ্লে
লুপে, আমাদের কিছুই করার নেই। আমরা তখন কলব্যাককে বাধাগ্রস্ত করতে এগিয়ে যাই যদি বাধা সৃষ্টি হলে আমাদের কিছু করার থাকে। কনফিগার ডিসপ্লে সম্পর্কে, আমরা প্রদর্শন শুরু করি এবং কিছু পরামিতি কনফিগার করি। আমরা স্ক্রিনে যতবার বুট হয়েছে ততবার মুদ্রণ করি।
// nada a se fazer no loopvoid loop () {} // callback das interrupções void callback () {// caso queira fazer algo ao ocorrer a interrupção} void configureDisplay () {// inicializa o display e configura alguns parametros display। শুরু (); display.setPowerSave (0); // modo powerSave (0-Off? 1-On) display.setFont (u8x8_font_torussansbold8_u); // fonte utilizada // imprime no display os numero de vezes que aconteceu o BOOT display.drawString (0, 0, "BOOT NUM:"); display.drawString (0, 2, String (bootCount).c_str ()); display.drawString (0, 4, "MOTIVO:"); }
ধাপ 18: Print_wakeup_reason (জাগরণের কারণ জানা)
এখানে, আমাদের ESP32 জেগে ওঠার কারণ মুদ্রণ করার কাজ আছে। পিন চেক করুন এবং ডিসপ্লেতে প্রিন্ট করুন।
// função para imprimir a causa do ESP32 despertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; স্ট্রিং কারণ = ""; wakeup_reason = esp_sleep_get_wakeup_cause (); // recupera a causa do despertar switch (wakeup_reason) {case 1: reason = "EXT0 RTC_IO BTN"; বিরতি; কেস 2: কারণ = "EXT1 RTC_CNTL"; বিরতি; কেস 3: কারণ = "টাইমার"; বিরতি; কেস 4: কারণ = "টাচপ্যাড"; বিরতি; কেস 5: কারণ = "ইউএলপি প্রোগ্রাম"; বিরতি; ডিফল্ট: কারণ = "কোন ডিএস কারণ"; বিরতি; } Serial.println (কারণ); display.clearLine (6); // apaga a linha 6 do display display.drawString (0, 6, reason.c_str ()); // imprime a causa do despertar no display // se despertou por TOUCHPAD, então vamos verificar em qual dos pinos ocorreu if (wakeup_reason == 4) {print_wakeup_touchpad (); // verifica o pino e imprime no display}}
ধাপ 19: Print_wakeup_touchpad (GPIO টাচ জানুন)
এখন, এই ধাপে, আমাদের স্পর্শ করা পিনটি মুদ্রণ করার ফাংশন রয়েছে। আমরা জিপিআইও উদ্ধার করেছি যা ইএসপি 32 জাগিয়েছে এবং ডিসপ্লেতে মুদ্রণ করেছে।
// função para imprimir o pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // recupera o GPIO que despertou o ESP32 স্ট্রিং GPIO = ""; সুইচ (টাচপিন) {কেস 0: জিপিআইও = "4"; বিরতি; কেস 1: জিপিআইও = "0"; বিরতি; কেস 2: জিপিআইও = "2"; বিরতি; কেস 3: জিপিআইও = "15"; বিরতি; কেস 4: জিপিআইও = "13"; বিরতি; কেস 5: জিপিআইও = "12"; বিরতি; কেস 6: জিপিআইও = "14"; বিরতি; কেস 7: জিপিআইও = "27"; বিরতি; কেস 8: জিপিআইও = "33"; বিরতি; কেস 9: জিপিআইও = "32"; বিরতি; ডিফল্ট: Serial.println ("ওয়েকআপ নয় টাচপ্যাডে"); বিরতি; } Serial.println ("GPIO:"+GPIO); display.clearLine (7); // apaga a linha 7 do display display.drawString (0, 7, "GPIO:"); display.drawString (6, 7, GPIO.c_str ()); // imprime o GPIO}
ধাপ 20: ফাইল ডাউনলোড করুন
পিডিএফ
আইএনও
প্রস্তাবিত:
আইআর ঘুমের জন্য থার্মোমিটার: 5 টি ধাপ
ঘুমের জন্য IR থার্মোমিটার: তাই এই অলস ওল্ড গিক (L.O.G.) সম্প্রতি AliExpress.com থেকে একটি IR থার্মাল মডিউল MLX90614 কিনেছে। ছবি দেখুন এই একই ধরনের সেন্সর যা তৃতীয় ছবিতে দেখানো কপাল এবং কানের থার্মোমিটারে ব্যবহৃত হয়। তাদেরকে বলা হয় অ-যোগাযোগ কারণ
আবহাওয়া স্টেশন: গভীর ঘুম, এসকিউএল, ফ্লাস্ক এবং প্লটলি গ্রাফিং সহ ESP8266: 3 ধাপ
আবহাওয়া স্টেশন: গভীর ঘুম, এসকিউএল, ফ্লাস্ক এবং প্লটলি গ্রাফিং সহ ESP8266: আপনার বারান্দায় তাপমাত্রা, আর্দ্রতা বা আলোর তীব্রতা জানতে কি মজা হবে? আমি জানি আমি করবো। তাই এই ধরনের তথ্য সংগ্রহের জন্য আমি একটি সহজ আবহাওয়া কেন্দ্র তৈরি করেছি। নিম্নোক্ত বিভাগগুলি হল একটি নির্মাণের জন্য আমি যে পদক্ষেপগুলো নিয়েছি তা শুরু করা যাক
গভীর ঘুমের সাথে ESP-01 মোশন সেন্সর: 5 টি ধাপ
ESP-01 মোশন সেন্সর উইথ ডিপ স্লিপ: আমি হোমমেড মোশন সেন্সর তৈরিতে কাজ করছি যা ট্রিগার হলে ইমেইল মেসেজ পাঠায়। এটি করার অনেক উদাহরণ নির্দেশাবলী এবং অন্যান্য উদাহরণ রয়েছে। আমার সম্প্রতি এটি একটি ব্যাটারি চালিত পিআইআর মোশন সেন্সর এবং একটি ইএসপি দিয়ে করা দরকার ছিল
স্মার্ট ল্যাম্প দিয়ে বিরক্তিকর জীবন বাঁচানো: 3 টি ধাপ
একটি স্মার্ট ল্যাম্প দিয়ে বিরক্তিকর জীবন বাঁচানো: আমরা সবাই আশা করি যে আমরা বাড়িতে আরও স্বাচ্ছন্দ্যে থাকতে পারি। আপনি কি প্রায়ই অস্বস্তি বোধ করেন কারণ গৃহস্থালির আলো নিভে যাওয়া যথেষ্ট স্মার্ট নয়? অথবা আপনি একঘেয়ে মনে করেন কিনা কারণ গৃহস্থালীর প্রদীপের কাজ? এই বাতিটি আপনার সমস্যার সমাধান করতে পারে
জীবন বাড়ান (নোটবুক ব্যাটারির): 10 টি ধাপ
আয়ু বাড়ান … বিশেষ করে ব্যাটারি হতাশার একটি অব্যাহত বিন্দু। কতবার এমন হয়নি যে আপনি যখন আপনার নোটবুকটি বের করেন, ব্যাটারি শেষ হয়ে যায়, এমনকি যদি আপনি কেবল পুনরায় রেকর্ড করেন