Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Selasa, 06 Januari 2026

Panduan Lengkap MicroPython ESP8266 - Deep Sleep, Wake Up Source, dan Manajemen Daya

Pada artikel ini, Arduino Indonesia membahas tentang cara menggunakan deep sleep pada ESP8266 serta metode membangunkannya menggunakan timer atau wake up eksternal dengan firmware MicroPython

Pengenalan Deep Sleep

Saat ESP8266 berada dalam mode deep sleep, seluruh sistem dimatikan kecuali Real Time Clock (RTC) yang berfungsi menjaga penghitungan waktu. Dalam mode deep sleep, konsumsi daya chip ESP8266 hanya sekitar 20 µA.


Namun, perlu diingat bahwa pada papan ESP8266 yang sudah dirakit, konsumsi arus akan jauh lebih tinggi.

 

Kami berhasil membuat perekam data stasiun cuaca dengan ESP8266 menggunakan MicroPython yang hanya mengonsumsi 7 µA saat dalam mode deep sleep.

 

Baca juga: Tutorial MicroPython ESP32 - WiFi Manager (Kompatibel ESP8266)

Timer Wake Up judul terbesar


Ada beberapa cara untuk membangunkan ESP8266 dengan timer setelah deep sleep. Salah satu cara termudah adalah dengan menggunakan fungsi berikut dalam kode Anda.

 

def deep_sleep(msecs):

  #configure RTC.ALARM0 to be able to wake the device

  rtc = machine.RTC()

  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

  # set RTC.ALARM0 to fire after Xmilliseconds, waking the device

  rtc.alarm(rtc.ALARM0, msecs)

  #put the device to sleep

  machine.deepsleep()

 

Kami menyarankan untuk menyalin fungsi di atas ke bagian awal kode program Anda, lalu memanggil fungsi deep_sleep() untuk memasukkan ESP8266 ke mode deep sleep.

 

Fungsi deep_sleep() ini membuat timer yang akan membangunkan ESP8266 setelah sejumlah detik yang ditentukan. Untuk menggunakan fungsi ini nanti dalam kode, Anda cukup memberikan argumen deep sleep dalam milidetik.

Kode Program

Pada kode berikut, ESP8266 akan berada dalam mode deep sleep selama 10 detik. Saat terbangun, LED akan berkedip, kemudian kembali tidur. Proses ini akan terus berulang.

 

import machine

from machine import Pin

from time import sleep


led = Pin(2, Pin.OUT)


def deep_sleep(msecs):

  # configure RTC.ALARM0 to be able to wake the device

  rtc = machine.RTC()

  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)


  # set RTC.ALARM0 to fire after X milliseconds (waking the device)

  rtc.alarm(rtc.ALARM0, msecs)


  # put the device to sleep

  machine.deepsleep()

  

#blink LED

led.value(1)

sleep(1)

led.value(0)

sleep(1)


# wait 5 seconds so that you can catch the ESP awake to establish a serial communication later

# you should remove this sleep line in your final script

sleep(5)


print('Im awake, but Im going to sleep')


#sleep for 10 seconds (10000 milliseconds)

deep_sleep(10000)

 

Penjelasan Kode

Pertama, impor library yang diperlukan:

 

import machine

from machine import Pin

from time import sleep

 

Buat objek Pin yang merujuk ke GPIO 2 dengan nama led. Pada papan kami, ini merujuk ke LED onboard.

 

led = Pin(2, Pin.OUT)

 

Setelah itu, tambahkan fungsi deep_sleep() ke dalam kode Anda:

 

def deep_sleep(msecs):

  #configure RTC.ALARM0 to be able to wake the device

  rtc = machine.RTC()

  rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)

  # set RTC.ALARM0 to fire after Xmilliseconds, waking the device

  rtc.alarm(rtc.ALARM0, msecs)

  #put the device to sleep

  machine.deepsleep()

 

Baris berikut membuat LED berkedip.

 

led.value(1)

sleep(1)

led.value(0)

sleep(1)

 

Sebelum masuk ke mode tidur, kami menambahkan jeda 5 detik dan mencetak pesan untuk memberi tahu bahwa perangkat akan tidur.

 

sleep(5)

print('Im awake, but Im going to sleep')

 

Penting untuk menambahkan jeda 5 detik sebelum tidur saat kita mengembangkan kode program. Saat Anda ingin mengunggah kode baru ke papan, perangkat harus dalam keadaan bangun. Jadi, tanpa jeda tersebut, akan sulit untuk menangkap momen bangunnya guna mengunggah kode nanti. Setelah kode final siap, jeda ini dapat dihapus.

 

Terakhir, masukkan ESP8266 ke mode deep sleep selama 10 detik (10.000 milidetik) dengan memanggil fungsi deep_sleep() dan memberikan jumlah milidetik sebagai argumen.

 

deep_sleep(10000)

 

Setelah 10 detik, ESP8266 akan bangun dan menjalankan kode dari awal lagi, mirip seperti ketika Anda menekan tombol RESET.

Mengunggah Kode

Salin kode yang disediakan ke file main.py dan unggah ke ESP8266 Anda. 

Setelah mengunggah kode, Anda perlu menghubungkan GPIO16 (D0) ke pin RST* agar ESP8266 dapat membangkitkan dirinya sendiri.


Demonstrasi

Setelah mengunggah kode dan menghubungkan GPIO 16 (D0) ke pin RST, ESP8266 akan membuat LED onboard berkedip dan mencetak pesan di Shell.

 

Kemudian, papan akan tidur selama 10 detik, bangun, dan menjalankan kode lagi. Proses ini akan terus berulang.


Deep Sleep dengan ESP-01

Jika Anda ingin membuat rangkaian serupa dengan papan ESP-01, Anda perlu menyolder kawat seperti yang ditunjukkan pada gambar berikut. Pin kecil pada chip tersebut adalah GPIO16 dan harus dihubungkan ke pin RST.

Namun, ukuran pin-pin tersebut sangat kecil sehingga sangat sulit untuk menyolder kawat langsung ke GPIO16 tanpa berisiko merusak chip.


External Wake Up

ESP8266 tidak mendukung external wake up langsung seperti ESP32. Namun, ada solusi yang dapat diterapkan.

 

Jika kita memasukkan ESP8266 ke dalam mode deep sleep tanpa batas waktu, papan hanya akan bangun ketika ada sesuatu yang me-reset-nya. Jadi, kita dapat menghubungkan suatu komponen ke pin RST dan menggunakannya sebagai pemicu bangun eksternal. Misalnya, tombol tekan (pushbutton) atau saklar reed magnetik yang mendekat.

 

ESP8266 akan di-reset ketika pin RST mendapat sinyal LOW.

Diagram Rangkaian

Untuk menguji metode ini, hubungkan sebuah pushbutton ke pin RST. Anda memerlukan komponen berikut: 

- ESP8266

- Pushbutton

- Resistor 10k Ohm

- Breadboard

- Kabel jumper

Jika Anda menggunakan modul ESP8266 12-E NodeMCU, ikuti diagram rangkaian berikut.



Jika Anda menggunakan ESP-01, Anda dapat mengikuti diagram rangkaian berikut.



Kode Program

Unggah kode berikut ke ESP8266 sebagai main.py.

 

from machine import deepsleep

from machine import Pin

from time import sleep


led = Pin (2, Pin.OUT)


#blink LED

led.value(0)

sleep(1)

led.value(1)

sleep(1)


# wait 5 seconds so that you can catch the ESP awake to establish a serial communication later

# you should remove this sleep line in your final script

sleep(5)

print('Im awake, but Im going to sleep')

sleep(1)


#sleep for indefinite time

deepsleep()

 

Dalam kasus ini, Anda cukup memanggil machine.deepsleep() setelah eksekusi kode utama. Saat Anda memanggil machine.deepsleep() tanpa argumen, ESP8266 akan masuk ke mode deep sleep tanpa batas waktu hingga Anda menekan tombol RST.

Demonstrasi

Setelah merangkai sirkuit dan mengunggah kode, Anda dapat menguji setup ini. Setiap kali Anda menekan pushbutton yang terhubung ke pin RST, ESP8266 akan di-reset dan terbangun. Papan akan membuat LED onboard berkedip, lalu kembali tidur.

 

 

Baca juga: MicroPython ESP32/ESP8266 - Cara Mengontrol Modul Relay Menggunakan Web Server

 

 

 



Siap Belajar & Bangun Proyek IoT?

KLIK GAMBAR DI BAWAH INI UNTUK BELI TRAINER KIT ESP32

 

Klik gambar untuk pembelian

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.

0 on: "Panduan Lengkap MicroPython ESP8266 - Deep Sleep, Wake Up Source, dan Manajemen Daya "