---
# System prepended metadata

title: TP Modul 8

---

---
title: TP Modul 8

---

# TP Modul 8
Pembuat : WN

Nama  : M. Avicenna Raffaiz Adiharsa
NPM   : 2206062844
https://hackmd.io/@96kami/ryP8_V5ybe

**JAWABAN TANPA REFERENSI YANG SESUAI DIANGGAP MENDAPATKAN 0 POIN (UNLESS SPECIFIED OTHERWISE)**

### 1. **Jelaskan** mengenai Konsumsi daya pada ESP32, mengapa hal tersebut penting untuk diperhatikan serta faktor apa saja yang dapat mempengaruhi tingkat konsumsi daya! (10 poin).


Konsumsi daya ESP32 adalah energi listrik yang digunakan mikrokontroler (prosesor, WiFi, Bluetooth, periferal). Ini penting untuk:

* Menentukan lama hidup baterai.
* Memastikan stabilitas sistem (jika daya terbatas).
* Mendukung desain IoT yang efisien.

#### Faktor penentu konsumsi daya:

1. **Frekuensi CPU** (semakin tinggi, semakin besar daya).
2. **Aktivitas WiFi/Bluetooth.**
3. **Mode operasi** (Active, Sleep modes).
4. **Beban pemrosesan.**
5. **Tegangan dan arus suplai.**
6. **Peripheral aktif** (sensor, LED, dll.).

#### Referensi:
- Konsumsi Daya pada ESP-32 [Online]. Available: https://learn.digilabdte.com/books/internet-of-things/page/konsumsi-daya-pada-esp-32. [Diakses: 06-Nov-2025]
- ESP32 Active Mode and Deep Sleep Mode Power Consumption Comparison [Online]. Available: https://circuitdigest.com/microcontroller-projects/esp32-active-mode-and-deep-sleep-mode-power-consumption. [Diakses: 06-Nov-2025]
---

### 2. **Jelaskan** secara singkat cara pengaruh CPU frequency pada penggunaan daya serta cara menggantinya pada ESP32! (10 poin)

Semakin tinggi CPU frequency, semakin cepat ESP32 memproses data, tetapi daya yang dibutuhkan juga meningkat secara signifikan. Sebaliknya, menurunkan frekuensi CPU dapat menghemat energi, dengan konsekuensi penurunan performa.

ESP32 mendukung pengaturan frekuensi CPU secara dinamis.
Beberapa frekuensi umum: 80 MHz, 160 MHz, dan 240 MHz.

#### Cara ganti frekuensi CPU
- dengan fungsi bawaan arduino
```cpp!
setCpuFrequencyMhz(80); 
```

- baca freq. saat ini
```cpp!
Serial.println(getCpuFrequencyMhz());
```

bisa diletakkan di setup() untuk menentukan frekuensi sesuai kebutuhan daya.

#### Referensi:
- How to Change CPU Frequency on ESP32 [Online]. Available: https://www.luisllamas.es/en/change-processor-frequency-on-esp32. [Diakses: 06-Nov-2025]
- Energy consumption in ESP32 [Online]. Available: https://www.luisllamas.es/en/esp32-power-consumption/. [Diakses: 06-Nov-2025]

---


### 3. **Jelaskan** mengenai Operating Mode yang didukung oleh ESP32, baik dari fitur / komponen yang bisa atau tidak bisa digunakan serta pengaruhnya pada konsumsi daya! (20 poin)

ESP32 memiliki beberapa mode operasi dengan konsumsi daya bervariasi. **Active Mode** (±160–240 mA) mengaktifkan semua fitur. Untuk hemat daya, **Modem Sleep** (±20–50 mA) menonaktifkan WiFi/Bluetooth namun CPU tetap aktif.

**Light Sleep** (±0.8–1.2 mA) mematikan CPU dan sebagian periferal, namun RTC/memori tetap menyimpan status dan dapat dibangunkan oleh event.

**Deep Sleep** (±0.01–0.15 mA) mematikan hampir semua, hanya menyisakan RTC dan beberapa GPIO untuk wake-up. Hibernation (\< 10 µA) adalah mode daya terendah.

Semakin rendah mode operasinya, semakin rendah konsumsi daya, tetapi waktu "bangun" semakin lama dan fitur terbatas.

#### Referensi:
- Konsumsi Daya pada ESP-32 [Online]. Available: https://learn.digilabdte.com/books/internet-of-things/page/konsumsi-daya-pada-esp-32. [Diakses: 06-Nov-2025]
- ESP32 Active Mode and Deep Sleep Mode Power Consumption Comparison [Online]. Available: https://circuitdigest.com/microcontroller-projects/esp32-active-mode-and-deep-sleep-mode-power-consumption. [Diakses: 06-Nov-2025]
- A Practical Guide to ESP32 Deep Sleep Modes [Online]. Available: https://www.programmingelectronics.com/esp32-deep-sleep-mode. [Diakses: 06-Nov-2025]
- Insight Into ESP32 Sleep Modes & Their Power Consumption
 [Online]. Available: https://lastminuteengineers.com/esp32-sleep-modes-power-consumption. [Diakses: 06-Nov-2025]

---

### 4. Jelaskan apa itu wake up source pada sleep mode ESP32 (20 poin)

Wake up source adalah sumber atau pemicu yang digunakan untuk membangunkan ESP32 dari mode tidur (sleep).

ESP32 mendukung beberapa jenis wake-up source tergantung mode tidurnya.

#### Timer Wake up
Menggunakan internal RTC timer untuk membangunkan chip setelah waktu tertentu.
```cpp!
esp_sleep_enable_timer_wakeup(10 * 1000000);
```

#### External GPIO Wake-up
Menggunakan sinyal dari pin eksternal
```cpp!
esp_sleep_enable_ext0_wakeup(GPIO_NUM_33, 0);
```

#### Touch Wake-up
Menggunakan sensor sentuh internal ESP32
```cpp!
esp_sleep_enable_touchpad_wakeup();
```

#### ULP Co-processor Wake-up
Menggunakan Ultra-Low Power (ULP) co-processor untuk menjalankan tugas kecil saat chip tidur dan membangunkan ESP32 jika kondisi tertentu terpenuhi.

#### Referensi:
- Metode Mengurangi Konsumsi Daya ESP-32 : Mengganti Operating Mode [Online]. Available: https://learn.digilabdte.com/books/internet-of-things/page/metode-mengurangi-konsumsi-daya-esp-32-mengganti-operating-mode. [Diakses: 06-Nov-2025]
- ESP32 External Wake Up from Deep Sleep | Random Nerd Tutorials [Online]. Available: https://randomnerdtutorials.com/esp32-external-wake-up-deep-sleep/. [Diakses: 06-Nov-2025]


---

5. Modifikasilah kode sederhana berikut sehingga bekerja dalam mode light sleep mode! (40 poin)

```cpp
#include <Arduino.h>
#include "esp_sleep.h"

TaskHandle_t counterTaskHandle = NULL;
int counter = 0;

void counterTask(void *parameter) {
  while (true) {
    counter++;
    Serial.printf("Count: %d\n", counter);
    vTaskDelay(1000 / portTICK_PERIOD_MS);
  }
}

void setup() {
  Serial.begin(115200);
  delay(5000);
    
  xTaskCreate(
    counterTask,
    "Counter Task",
    2048,
    NULL,
    1,
    &counterTaskHandle
  );
}

void loop() {
}
```

#### Perubahan
```cpp!
#include <Arduino.h>
#include "esp_sleep.h"

TaskHandle_t counterTaskHandle = NULL;
int counter = 0;

void counterTask(void *parameter) {
  while (true) {
    counter++;
    Serial.printf("Count: %d\n", counter);

    esp_sleep_enable_timer_wakeup(1000000);1.000.000 mikrodetik
    esp_light_sleep_start();
  }
}

void setup() {
  Serial.begin(115200);
  delay(2000); 

  xTaskCreate(
    counterTask,
    "Counter Task",
    2048,
    NULL,
    1,
    &counterTaskHandle
  );
}

void loop() {
}

```

Yang diubah:
* Mengaktifkan `esp_sleep_enable_timer_wakeup()` untuk mengatur waktu tidur.
* Menggunakan `esp_light_sleep_start()` untuk menghemat daya dengan menghentikan sementara CPU.
* ESP32 akan bangun dan melanjutkan perhitungan setelah timer selesai.

#### Referensi:
- ESP32 Deep Sleep Tutorial [Online]. Available: https://www.instructables.com/ESP32-Deep-Sleep-Tutorial. [Diakses: 06-Nov-2025]
- ESP32 Light Sleep Mode and Wake-Up Sources (Arduino IDE)s [Online]. Available: https://randomnerdtutorials.com/esp32-light-sleep-arduino. [Diakses: 06-Nov-2025]