ESP32 adalah pesaing tangguh untuk banyak SoC WiFi/MCU, unggul dalam kinerja dan harga. Namun, tergantung pada mode yang digunakan, ESP32 bisa menjadi perangkat yang cukup boros daya. Jika proyek IoT Kamu menggunakan daya dari stopkontak, konsumsi daya mungkin bukan masalah besar. Namun, jika proyek Kamu menggunakan baterai, setiap miliampere (mA) menjadi penting. Untuk mengatasi ini, Kamu bisa memanfaatkan salah satu mode tidur ESP32 untuk mengurangi konsumsi daya. Strategi ini sangat efektif untuk memperpanjang masa pakai baterai, terutama pada proyek yang tidak perlu aktif sepanjang waktu.
Di Dalam Chip ESP32
Memahami apa yang ada di dalam chip ESP32 dapat membantu kita memahami cara kerjanya dalam mengelola penghematan daya. Di dalamnya, terdapat berbagai komponen seperti prosesor, modul Wi-Fi dan Bluetooth, serta berbagai unit kontrol dan sensor yang saling bekerja sama. Diagram blok ESP32 menunjukkan bagaimana komponen-komponen ini terhubung dan mendukung pengaturan daya, memungkinkan perangkat untuk beralih antara mode aktif dan mode hemat daya dengan efisien. Hal ini menjadikan ESP32 sangat fleksibel untuk berbagai kebutuhan proyek.
Chip ESP32 memiliki mikroprosesor dual-core 32-bit yang kuat. Chip ini dilengkapi dengan ROM sebesar 448 KB, SRAM sebesar 520 KB, dan memori flash sebesar 4 MB. Kombinasi ini memungkinkan ESP32 untuk menjalankan tugas yang kompleks, menyimpan data penting, dan mendukung berbagai aplikasi, mulai dari proyek sederhana hingga sistem IoT yang lebih canggih.
ESP32 tidak hanya mengemas mikroprosesor dan memori, tetapi juga menyertakan modul Wi-Fi dan Bluetooth untuk konektivitas nirkabel, akselerator kriptografi yang mempercepat operasi keamanan, modul RTC (Real-Time Clock) yang mengelola waktu, serta berbagai periferal lainnya. Fitur-fitur ini menjadikan ESP32 perangkat yang sangat serbaguna dan ideal untuk mendukung aplikasi IoT dengan koneksi cepat, keamanan tinggi, dan fungsi tambahan yang fleksibel.
Mode Daya ESP32
Berkat manajemen daya canggihnya, ESP32 mendukung lima mode daya yang dapat dikonfigurasi. Chip ini dapat beralih di antara mode-mode tersebut sesuai kebutuhan daya, memungkinkan penggunaan energi yang lebih efisien. Mode-mode tersebut adalah:
- Active Mode
- Modem Sleep Mode
- Light Sleep Mode
- Deep Sleep Mode
- Hibernation Mode
Setiap mode memiliki fitur dan kemampuan hemat daya yang berbeda. Mari kita lihat satu per satu:
ESP32 Active Mode
Mode Normal, atau Active Mode, adalah keadaan di mana semua bagian dan perangkat pendukung chip ESP32 bekerja sepenuhnya. Dalam mode ini, Wi-Fi, Bluetooth, dan inti pemrosesan tetap aktif untuk menyelesaikan tugas-tugas. Karena semua fitur ini selalu hidup, chip menggunakan daya sekitar 240 mA. Bahkan, jika Wi-Fi dan Bluetooth digunakan bersama-sama, konsumsi daya bisa naik hingga lebih dari 790 mA. Mode ini cocok untuk aplikasi yang membutuhkan kinerja penuh, tetapi kurang ideal untuk perangkat berbasis baterai karena menghabiskan banyak daya.
Menurut lembar data ESP32, konsumsi daya selama pengoperasian RF dalam mode aktif adalah sebagai berikut:
Mode | Konsumsi Daya |
Wi-Fi Tx packet 13dBm~21dBm | 160~260mA |
Wi-Fi/BT Tx packet 0dBm | 120mA |
Wi-Fi/BT Rx and listening | 80~90mA |
Mode ini memakai paling banyak listrik, jadi kurang hemat energi. Kalau mau lebih irit, kamu bisa mematikan fitur yang tidak dipakai dan mengganti ke mode lain yang lebih hemat daya.
ESP32 Modem Sleep
Dalam mode tidur modem, hampir semua bagian masih menyala, kecuali Wi-Fi, Bluetooth, dan radio. Otak utamanya (CPU) tetap bekerja, dan kamu bisa mengatur waktu seperti biasa. Mode ini membantu menghemat energi ketika koneksi internet atau Bluetooth tidak sedang digunakan.
Dalam mode ini, chip mengkonsumsi sekitar 3 mA pada kecepatan lambat dan 20 mA pada kecepatan tinggi.
Agar tetap terhubung ke internet, Wi-Fi, Bluetooth, dan radio dihidupkan pada waktu tertentu yang sudah dijadwalkan. Ini disebut Association Sleep Pattern.
Dalam pola ini, ESP32 bergantian antara mode Active dan mode Sleep Modem. Cara kerjanya, ESP32 terhubung ke router dalam mode stasiun menggunakan sinyal bernama DTIM. Ketika tidak ada sinyal, modul Wi-Fi dimatikan supaya perangkat bisa menghemat daya.. Tapi, modul Wi-Fi akan otomatis menyala lagi tepat sebelum sinyal suar berikutnya muncul.
Interval waktu tidur ini bergantung pada router, biasanya antara 100 ms hingga 1000 ms, dan strategi ini membantu menghemat energi tanpa memutuskan koneksi.
Apa itu Mekanisme Suar DTIM?
DTIM adalah singkatan Pesan Indikasi Lalu Lintas Pengiriman.
Router atau titik akses (AP) secara berkala mengirimkan sinyal yang disebut beacon frames. Sinyal ini membawa informasi penting tentang jaringan, seperti nama jaringan dan statusnya. beacon frames ini memberi tahu perangkat yang terhubung tentang ketersediaan jaringan dan menyinkronkan perangkat-perangkat tersebut agar tetap terhubung dengan baik.
ESP32 Light Sleep
Light Sleep mirip dengan Modem Sleep, karena chip tetap bisa terhubung ke jaringan dengan pola tidur tertentu. Tapi, dalam Light Sleep, chip menggunakan fitur khusus bernama “Clock Gating” yang bekerja seperti tombol on/off otomatis. Fitur ini bisa menyalakan atau mematikan bagian-bagian seperti CPU, sebagian besar RAM, dan alat digital lainnya sesuai kebutuhan, untuk menghemat energi.
Clock Gating menghemat energi dengan menghentikan sinyal pengatur waktu (clock) di bagian perangkat yang tidak digunakan. Saat sinyal dihentikan, bagian itu mati dan tidak memakai energi sama sekali. Jadi, hanya bagian penting yang tetap aktif, membuat perangkat jadi lebih hemat daya.
Selama Light Sleep, perangkat mematikan CPU dengan menghentikan pulsa pengaturnya, sehingga CPU berhenti bekerja. Namun, Coprosesor RTC dan ULP tetap aktif. Dengan cara ini, perangkat bisa menghemat lebih banyak energi dibandingkan Modem Sleep dan hanya menggunakan sekitar 0,8 mA daya.
Sebelum tidur sebentar (Light Sleep), ESP32 menyimpan semua data penting di RAM. Saat bangun, ESP32 langsung melanjutkan pekerjaannya dari tempat terakhir berhenti. Proses ini disebut Full RAM Retention, karena RAM menyimpan semua data dengan aman saat ESP32 tidur.. Jadi, ESP32 bisa bekerja lagi tanpa kehilangan apa pun.
ESP32 Deep Sleep
Dalam mode Deep Sleep, perangkat mematikan CPU, sebagian besar RAM, dan semua alat pendukung digitalnya supaya bisa menghemat banyak daya. Namun, beberapa bagian chip tetap aktif, yaitu:
- ULP Coprocessor
- RTC Controller
- RTC Peripherals
- RTC fast and slow memory
Dalam Deep Sleep, chip hanya menggunakan sedikit energi, sekitar 0,15 mA jika koprosesor ULP (Ultra-Low Power) aktif. Jika kita tidak menggunakan koprosesor ini, perangkat hanya memakai sedikit sekali daya, bahkan bisa turun hingga 10 µA. Mode ini sangat hemat energi, membuatnya ideal untuk perangkat yang harus bertahan lama dengan daya baterai.
Dalam mode tidur nyenyak, chip mematikan CPU utama tetapi tetap mengaktifkan Koprosesor Ultra-Low-Power (ULP). Koprosesor ini membaca data dari sensor dan membangunkan CPU saat diperlukan. Pola tidur yang dipantau sensor ULP ini membuat CPU hanya bangun ketika terjadi kejadian tertentu, seperti saat sensor mengirim sinyal, pengatur waktu aktif, atau keduanya, sambil tetap menjaga konsumsi daya sangat rendah.
Selain mematikan CPU, chip juga mematikan memori utamanya dalam mode ini, sehingga semua data yang tersimpan di memori utama hilang. Namun, chip mempertahankan memori RTC agar data di dalamnya tetap aman dan dapat diakses kembali saat chip bangun. Sebelum masuk ke mode tidur nyenyak, chip menyimpan informasi penting, seperti data koneksi Wi-Fi dan Bluetooth, di memori RTC untuk digunakan kembali setelah bangun.
Jika Anda ingin data tetap ada setelah reboot atau saat chip bangun dari Deep Sleep, Kamu bisa menyimpannya di memory RTC. Caranya adalah dengan mendefinisikan variabel global menggunakan atribut RTC_DATA_ATTR. Misalnya:
RTC_DATA_ATTR int myVar = 0;
Ketika chip bangun dari tidur nyenyak, ia melakukan reset dan memulai eksekusi program dari awal.
Ketika ESP32 bangun dari tidur nyenyak, dia bisa menjalankan sebuah kode kecil bernama wake stub. Kode ini bekerja langsung setelah ESP32 hidup, bahkan sebelum program utamanya mulai berjalan. Wake stub ini bisa digunakan untuk memeriksa sesuatu dengan cepat, seperti apakah harus tetap hidup atau kembali tidur lagi. Setelah itu, ESP32 bisa memilih untuk kembali tidur nyenyak atau melanjutkan menjalankan program utamanya.
ESP32 Hibernation mode
Hibernation modi hampir sama dengan Deep Sleep, tetapi ada satu perbedaan utama. Dalam mode hibernasi, chip mematikan lebih banyak bagian, seperti osilator internal 8 MHz dan koprosesor ULP. Hanya Timer RTC (yang berjalan lambat) dan beberapa pin RTC GPIO yang tetap aktif untuk membangunkan chip. Mode ini sangat hemat energi, cocok untuk perangkat yang hanya perlu aktif sesekali.
Karena Hibernation mode mematikan memori pemulihan RTC, chip tidak bisa menyimpan data apa pun selama berada dalam mode ini. Mode ini juga menghapus data yang sebelumnya tersimpan di memori RTC, sehingga chip kehilangan semua informasi sebelum masuk ke mode hibernasi. Meskipun mode ini menghemat energi secara signifikan, chip tidak dapat menyimpan data yang perlu dipertahankan selama mode ini aktif.
Akibatnya, chip menggunakan daya yang sangat kecil dalam Hibernation mode, hanya sekitar 2,5 μA. Mode ini sangat cocok untuk proyek yang tidak perlu aktif sepanjang waktu, karena dapat menghemat energi baterai dengan maksimal.
Sumber Dari : https://lastminuteengineers.com/esp32-sleep-modes-power-consumption/#google_vignette