Dalam unit ini, Anda akan mempelajari tentang mode tidur dalam (deep sleep) pada ESP32, cara mengonfigurasi mode ini, dan berbagai metode yang dapat digunakan untuk membangunkan ESP32 dari mode tidur dalam.
Catatan: Unit ini merupakan pengantar untuk mode tidur dalam. Untuk contoh implementasi ESP32 deep sleep, silakan lanjutkan ke unit-unit berikutnya dalam Modul ini.
1
Mode Daya ESP32
Berbagai Mode Daya
ESP32 dapat berpindah antara berbagai mode daya yang berbeda:
- Active mode – Mode operasi normal dengan kinerja penuh
- Modem Sleep mode – CPU aktif tetapi WiFi/Bluetooth dimatikan
- Light Sleep mode – CPU dijeda, tetapi RTC tetap aktif
- Deep Sleep mode – CPU dan WiFi dimatikan, hanya RTC yang aktif
- Hibernation mode – Hampir semua komponen dimatikan, hanya timer RTC yang aktif
Anda dapat membandingkan kelima mode yang berbeda pada tabel berikut dari datasheet ESP32 Espressif.
Tabel Perbandingan Mode Daya
Power Mode | Active | Modem-sleep | Light-sleep | Deep-sleep | Hibernation |
---|---|---|---|---|---|
Sleep Pattern | Association sleep pattern | ULP sensor-monitored pattern | – | ||
CPU | ON | ON | PAUSE | OFF | OFF |
Wi-Fi/BT baseband and radio | ON | OFF | OFF | OFF | OFF |
RTC memory and RTC peripherals | ON | ON | ON | ON | OFF |
ULP co-processor | ON | ON | ON | ON/OFF | OFF |
Perbandingan berbagai mode daya ESP32 (Sumber: ESP32 Espressif Datasheet)
Datasheet ESP32 Espressif juga menyediakan tabel yang membandingkan konsumsi daya dari berbagai mode daya.
Konsumsi Daya Berdasarkan Mode
Power Mode | Description | Power Consumption |
---|---|---|
Active (RF working) | Wi-Fi Tx packet 14 dBm ~ 19.5 dBm | Please refer to Table 10 for details. |
Wi-Fi / BT Tx packet 0 dBm | ||
Wi-Fi / BT Rx and listening | ||
Modem-sleep | The CPU is powered on. | Max speed 240 MHz: 30 mA ~ 50 mA |
Normal speed 80 MHz: 20 mA ~ 25 mA | ||
Light-sleep | – | Slow speed 2 MHz: 2 mA ~ 4 mA 0.8 mA |
Deep-sleep | The ULP co-processor is powered on. | 150 μA |
ULP sensor-monitored pattern | 100 μA @1% duty | |
RTC timer + RTC memory | 10 μA | |
Hibernation | RTC timer only | 5 μA |
Power off | CHIP_PU is set to low level, the chip is powered off | 0.1 μA |
Konsumsi daya pada berbagai mode ESP32 (Sumber: ESP32 Espressif Datasheet)
Dan berikut juga Tabel 10 untuk membandingkan konsumsi daya dalam mode aktif:
Tabel 10: Spesifikasi Konsumsi Daya RF
Mode | Min | Typ | Max | Unit |
---|---|---|---|---|
Transmit 802.11b, DSSS 1 Mbps, POUT = +19.5 dBm | – | 240 | – | mA |
Transmit 802.11g, OFDM 54 Mbps, POUT = +16 dBm | – | 190 | – | mA |
Transmit 802.11n, OFDM MCS7, POUT = +14 dBm | – | 180 | – | mA |
Receive 802.11b/g/n | – | 95 ~ 100 | – | mA |
Transmit BT/BLE, POUT = 0 dBm | – | 130 | – | mA |
Receive BT/BLE | – | 95 ~ 100 | – | mA |
Spesifikasi konsumsi daya RF di mode aktif (Sumber: ESP32 Espressif Datasheet)
2
Mengapa Menggunakan Deep Sleep Mode?
Keuntungan Deep Sleep
Mengoperasikan ESP32 dalam mode aktif dengan baterai bukanlah pilihan ideal karena daya baterai akan terkuras dengan sangat cepat.
Ilustrasi tingkat baterai dari penuh hingga habis
Jika Anda menempatkan ESP32 dalam mode tidur dalam, ini akan mengurangi konsumsi daya secara signifikan, dan baterai Anda akan bertahan lebih lama.
Menggunakan ESP32 dalam mode tidur dalam berarti menghentikan aktivitas yang mengkonsumsi daya tinggi saat beroperasi, tetapi tetap menyisakan aktivitas yang cukup untuk membangunkan prosesor ketika terjadi sesuatu yang penting.
Fakta Penting: Dalam mode tidur dalam, baik aktivitas CPU maupun Wi-Fi tidak berlangsung, tetapi co-prosessor Ultra Low Power (ULP) masih dapat tetap aktif. Ini memungkinkan ESP32 tetap dapat merespons kondisi eksternal tertentu dengan konsumsi daya yang sangat rendah.
Saat ESP32 berada dalam mode tidur dalam, memori RTC juga tetap aktif, sehingga kita dapat menulis program untuk co-prosessor ULP dan menyimpannya di memori RTC untuk mengakses perangkat periferal, timer internal, dan sensor internal.
Mode operasi ini sangat berguna jika Anda perlu membangunkan CPU utama oleh peristiwa eksternal, timer, atau keduanya sambil mempertahankan konsumsi daya minimal.
3
Pin RTC_GPIO
Penggunaan Pin Selama Deep Sleep
Selama mode tidur dalam, beberapa pin ESP32 dapat digunakan oleh co-prosessor ULP, yaitu pin RTC_GPIO dan pin Touch. Datasheet ESP32 menyediakan tabel yang mengidentifikasi pin RTC_GPIO. Anda dapat menemukan tabel tersebut di sini pada halaman 15.
Anda dapat menggunakan tabel tersebut sebagai referensi, atau lihat pinout berikut untuk menemukan berbagai pin RTC_GPIO. Pin RTC_GPIO ditandai dengan kotak persegi panjang berwarna oranye.
ESP32 DOIT DEVKIT V1 dengan 30 GPIO (Pin RTC_GPIO ditandai dengan kotak oranye)
ESP32 DOIT DEVKIT V1 dengan 36 GPIO (Pin RTC_GPIO ditandai dengan kotak oranye)
Catatan Penting: Pin RTC_GPIO ini tetap berfungsi bahkan ketika ESP32 dalam mode tidur dalam, sehingga memungkinkan Anda untuk memantau sensor atau sinyal eksternal tanpa harus membangunkan seluruh mikrokontroler.
4
Sumber Wake-Up
Metode Membangunkan ESP32
Setelah menempatkan ESP32 ke dalam mode tidur dalam, ada beberapa cara untuk membangunkannya:
Timer Wake-Up
Anda dapat menggunakan timer untuk membangunkan ESP32 pada interval waktu yang telah ditentukan. Cocok untuk aplikasi pengumpulan data berkala.
External Wake-Up
ESP32 dapat dibangunkan oleh sinyal eksternal. Anda dapat menggunakan satu sumber bangun eksternal atau beberapa sumber yang berbeda.
Touch Wake-Up
ESP32 dapat dibangunkan dengan menggunakan sensor sentuh yang terintegrasi, tanpa memerlukan komponen eksternal tambahan.
ULP Co-processor Wake-Up
Co-prosessor ULP dapat memantau sensor atau sinyal dan membangunkan ESP32 saat kondisi tertentu terpenuhi.
Catatan: Untuk saat ini, kita hanya akan membahas tiga pilihan bangun pertama karena, saat ini, kami belum menemukan contoh yang sesuai dan mudah dipahami untuk menggunakan pilihan bangun co-prosessor ULP.
5
Menulis Sketsa Deep Sleep
Langkah-langkah Dasar
Untuk menulis sketsa yang menempatkan ESP32 ke dalam mode tidur dalam dan kemudian membangunkannya, Anda perlu mengingat bahwa:
- Pertama, Anda perlu mengkonfigurasi sumber-sumber bangun. Ini berarti mengkonfigurasi apa yang akan membangunkan ESP32. Anda dapat menggunakan satu atau menggabungkan lebih dari satu sumber bangun.
- Anda dapat memutuskan periferal mana yang akan dimatikan atau tetap aktif selama tidur dalam. Namun, secara default, ESP32 secara otomatis mematikan periferal yang tidak diperlukan dengan sumber bangun yang Anda tentukan.
- Terakhir, Anda menggunakan fungsi
esp_deep_sleep_start()
untuk menempatkan ESP32 ke dalam mode tidur dalam.
Catatan: Unit-unit berikutnya dalam modul ini akan menunjukkan kepada Anda cara menggunakan berbagai sumber bangun.
Contoh Kerangka Kode
Berikut ini adalah kerangka dasar untuk kode yang menggunakan mode tidur dalam dengan timer sebagai sumber bangun:
#include "esp_sleep.h" // Waktu dalam mikrodetik (1 detik = 1000000 mikrodetik) #define TIME_TO_SLEEP 5000000 void setup() { Serial.begin(115200); Serial.println("Mengonfigurasi timer wake-up..."); // Menyiapkan timer sebagai sumber bangun esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP); Serial.println("Tidur dalam 5 detik..."); Serial.println("========================"); // Memulai mode tidur dalam esp_deep_sleep_start(); } void loop() { // Kode di sini tidak akan dijalankan dalam mode tidur dalam }
Kerangka kode di atas akan:
- Mengkonfigurasi timer sebagai sumber bangun, dengan waktu tidur 5 detik
- Menampilkan pesan ke Serial Monitor sebelum tidur
- Menempatkan ESP32 ke dalam mode tidur dalam
- Setelah 5 detik, ESP32 akan bangun dan me-reset, memulai proses eksekusi dari awal lagi
Tip Penting: Ketika ESP32 bangun dari mode tidur dalam, ia melakukan reset dan menjalankan kode dari awal. Jika Anda perlu mengetahui apakah ESP32 baru saja bangun dari mode tidur dalam, Anda dapat menggunakan fungsi esp_sleep_get_wakeup_cause()
untuk memeriksa penyebab bangun.
6
Sumber Daya Tambahan
Referensi Bermanfaat
Selain modul tidur dalam ini, kami sarankan untuk melihat datasheet ESP32 Espressif, dan dokumentasi API tidur dalam di situs web readthedocs.io:
Tip Belajar: Dokumentasi API dapat tampak rumit pada awalnya, tetapi ini adalah sumber informasi yang sangat berharga ketika Anda perlu menggunakan fitur-fitur lebih lanjut atau mengoptimalkan kode Anda. Luangkan waktu untuk membiasakan diri dengan struktur dan terminologi dokumentasi.
7
Kesimpulan
Mode tidur dalam ESP32 adalah fitur penting untuk aplikasi berbasis baterai atau bertenaga rendah. Dengan memahami konsep dasar, sumber bangun, dan cara menulis sketsa tidur dalam, Anda dapat secara signifikan meningkatkan efisiensi daya proyek ESP32 Anda.
Dalam unit ini, kita telah mempelajari:
- Berbagai mode daya ESP32 dan perbandingannya
- Mengapa mode tidur dalam penting untuk aplikasi berbasis baterai
- Pin RTC_GPIO yang dapat digunakan selama mode tidur dalam
- Berbagai sumber bangun untuk mode tidur dalam
- Langkah-langkah dasar untuk menulis sketsa tidur dalam
Pada unit-unit berikutnya, kita akan menjelajahi implementasi praktis dari konsep-konsep ini dengan contoh-contoh konkret untuk berbagai metode bangun.
Komunitas & Dukungan
Jika Anda memiliki pertanyaan atau ingin berbagi proyek yang telah Anda buat dengan menggunakan mode tidur dalam ESP32, silakan bergabung dengan grup telegram https://t.me/kodingindonesia. Komunitas akan senang melihat kreasi Anda dan membantu jika Anda menghadapi tantangan!