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, 30 Desember 2025

Tutorial MicroPython ESP32/ESP8266 - Mengontrol Perangkat AC dengan Modul Relay via Web Server

Tutorial ini adalah panduan langkah demi langkah untuk membangun Web Server mandiri pada ESP32 atau ESP8266 NodeMCU yang mengontrol modul relay apa pun menggunakan firmware MicroPython. Kami akan membuat Web Server di ESP32/ESP8266 yang responsif di perangkat seluler dan dapat diakses oleh perangkat apa pun yang memiliki browser dalam jaringan lokal Anda.

Mengenal Relay

Relay adalah sakelar yang dioperasikan secara elektrik. Seperti sakelar pada umumnya, ia dapat dihidupkan (ON) atau dimatikan (OFF), mengizinkan arus mengalir atau tidak. Relay dapat dikontrol dengan tegangan rendah (seperti 3.3V dari GPIO ESP32/ESP8266) dan memungkinkan kita untuk mengontrol tegangan tinggi seperti 12V, 24V, atau tegangan listrik rumah (230V di Eropa dan 120V di AS).

 

Terdapat berbagai modul relay dengan jumlah saluran (channel) yang berbeda. Anda dapat menemukan modul relay dengan satu, dua, empat, delapan, hingga enam belas saluran. Jumlah saluran menentukan berapa banyak output yang dapat Anda kontrol.

Menghubungkan Modul Relay ke ESP32/ESP8266

Peringatan: Dalam contoh ini, kita berurusan dengan tegangan listrik rumah (AC). Penggunaan yang salah dapat menyebabkan cedera serius. Jika Anda tidak familiar dengan tegangan AC, mintalah bantuan seseorang yang berpengalaman. Saat memprogram ESP atau merangkai sirkuit, pastikan semuanya terputus dari sumber tegangan AC. Sebagai alternatif, Anda dapat menggunakan sumber daya 12V untuk mengontrol perangkat bertegangan 12V.

Diagram Skematik ESP32

Hubungkan modul relay ke ESP32 seperti yang ditunjukkan pada diagram berikut. Diagram menunjukkan rangkaian untuk modul relay 2-channel, namun prinsipnya serupa untuk jumlah channel yang berbeda.



Dalam contoh ini, kita mengontrol sebuah lampu. Karena kita hanya ingin menyalakan lampu sesekali, konfigurasi normally open (terbuka saat tidak aktif) lebih cocok.

 

Kami menghubungkan pin IN1 ke GPIO 26, namun Anda dapat menggunakan GPIO lain yang sesuai.

Diagram Skematik ESP8266 NodeMCU

Ikuti diagram skematik berikut jika Anda menggunakan ESP8266 NodeMCU.



Kami menghubungkan pin IN1 ke GPIO 5, tetapi Anda dapat menggunakan GPIO lain yang sesuai. 

 

GPIO ESP8266 terbaik untuk digunakan dengan relay adalah: GPIO 5, GPIO 4, GPIO 14, GPIO 12, dan GPIO 13.

Kode Web Server Relay MicroPython (Skrip)

Kode untuk mengontrol relay dengan ESP32 atau ESP8266 sesederhana mengontrol LED atau output lainnya. Dalam contoh ini, karena kita menggunakan konfigurasi normally open, kita perlu mengirimkan sinyal LOW untuk mengalirkan arus (relay ON), dan sinyal HIGH untuk menghentikan aliran arus (relay OFF).



Salin kode berikut ke file `main.py` dan unggah ke papan Anda. Kode ini akan menyalakan lampu Anda selama 10 detik, lalu mematikannya selama 10 detik berikutnya.

 

from machine import Pin

from time import sleep


# ESP32 GPIO 26

relay = Pin(26, Pin.OUT)


# ESP8266 GPIO 5

#relay = Pin(5, Pin.OUT)


while True:

  # RELAY ON

  relay.value(0)

  sleep(10)

  # RELAY OFF

  relay.value(1)

  sleep(10)

 

Cara Kerja Kode

Impor kelas `Pin` dari modul `machine` untuk berinteraksi dengan GPIO. Kami juga mengimpor metode `sleep()` dari modul `time` untuk memberikan jeda waktu (delay).

 

from machine import Pin

from time import sleep

 

Kemudian, kami mendefinisikan objek `Pin` bernama `relay` pada pin 26 (jika Anda menggunakan ESP32) dan mengaturnya sebagai output.

 

# ESP32 GPIO 26

relay = Pin(26, Pin.OUT)

 

Jika Anda menggunakan ESP8266, gunakan GPIO 5. Komentari baris sebelumnya dan hapus komentar pada baris berikut.

 

# ESP8266 GPIO 5

#relay = Pin(5, Pin.OUT)

 

Di dalam perulangan `while`, kirimkan sinyal LOW untuk menyalakan lampu selama 10 detik.

 

# RELAY ON

relay.value(0)

sleep(10)

 

Jika Anda menggunakan konfigurasi normally closed (tertutup saat tidak aktif), kirimkan sinyal HIGH untuk menyalakan lampu.

 

Hentikan aliran arus dengan mengirimkan sinyal HIGH ke pin relay. Jika menggunakan konfigurasi normally closed, kirimkan sinyal LOW untuk menghentikan aliran arus.

 

# RELAY OFF

relay.value(1)

sleep(10)

 

Mengontrol Modul Relay dengan Web Server MicroPython


boot.py

Salin kode berikut ke file `boot.py` Anda.

 

try:

  import usocket as socket

except:

  import socket


from machine import Pin

import network


import esp

esp.osdebug(None)


import gc

gc.collect()


ssid = 'REPLACE_WITH_YOUR_SSID'

password = 'REPLACE_WITH_YOUR_PASSWORD'


station = network.WLAN(network.STA_IF)


station.active(True)

station.connect(ssid, password)


while station.isconnected() == False:

  pass


print('Connection successful')

print(station.ifconfig())


# ESP32 GPIO 26

relay = Pin(26, Pin.OUT)


# ESP8266 GPIO 5

#relay = Pin(5, Pin.OUT)

 

Masukkan kredensial jaringan Anda (SSID dan password Wi-Fi) ke dalam variabel berikut:

 

ssid = 'REPLACE_WITH_YOUR_SSID'

password = 'REPLACE_WITH_YOUR_PASSWORD'

 

Hapus komentar pada salah satu baris berikut sesuai dengan papan yang Anda gunakan. Secara default, kode diatur untuk menggunakan GPIO ESP32.

 

# ESP32 GPIO 26

relay = Pin(26, Pin.OUT)


# ESP8266 GPIO 5

#relay = Pin(5, Pin.OUT)

 

main.py

Salin kode berikut ke file `main.py` Anda.

 

def web_page():

  if relay.value() == 1:

    relay_state = ''

  else:

    relay_state = 'checked'

  html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"><style>

  body{font-family:Arial; text-align: center; margin: 0px auto; padding-top:30px;}

  .switch{position:relative;display:inline-block;width:120px;height:68px}.switch input{display:none}

  .slider{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#ccc;border-radius:34px}

  .slider:before{position:absolute;content:"";height:52px;width:52px;left:8px;bottom:8px;background-color:#fff;-webkit-transition:.4s;transition:.4s;border-radius:68px}

  input:checked+.slider{background-color:#2196F3}

  input:checked+.slider:before{-webkit-transform:translateX(52px);-ms-transform:translateX(52px);transform:translateX(52px)}

  </style><script>function toggleCheckbox(element) { var xhr = new XMLHttpRequest(); if(element.checked){ xhr.open("GET", "/?relay=on", true); }

  else { xhr.open("GET", "/?relay=off", true); } xhr.send(); }</script></head><body>

  <h1>ESP Relay Web Server</h1><label class="switch"><input type="checkbox" onchange="toggleCheckbox(this)" %s><span class="slider">

  </span></label></body></html>""" % (relay_state)

  return html


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('', 80))

s.listen(5)


while True:

  try:

    if gc.mem_free() < 102000:

      gc.collect()

    conn, addr = s.accept()

    conn.settimeout(3.0)

    print('Got a connection from %s' % str(addr))

    request = conn.recv(1024)

    conn.settimeout(None)

    request = str(request)

    print('Content = %s' % request)

    relay_on = request.find('/?relay=on')

    relay_off = request.find('/?relay=off')

    if relay_on == 6:

      print('RELAY ON')

      relay.value(0)

    if relay_off == 6:

      print('RELAY OFF')

      relay.value(1)

    response = web_page()

    conn.send('HTTP/1.1 200 OK\n')

    conn.send('Content-Type: text/html\n')

    conn.send('Connection: close\n\n')

    conn.sendall(response)

    conn.close()

  except OSError as e:

    conn.close()

    print('Connection closed')

 

Demonstrasi

Setelah melakukan perubahan yang diperlukan, unggah file `boot.py` dan `main.py` ke papan Anda. Tekan tombol EN/RST dan di Shell Anda akan mendapatkan alamat IP ESP.



Kemudian, buka browser di jaringan lokal Anda dan ketikkan alamat IP ESP untuk mengakses web server.

Anda akan mendapatkan halaman web dengan tombol toggle yang memungkinkan Anda mengontrol relay dari jarak jauh menggunakan smartphone atau komputer.



Enclosure untuk Keamanan

Untuk proyek akhir, pastikan Anda menempatkan modul relay dan ESP di dalam sebuah enclosure (kotak pelindung) untuk menghindari paparan langsung pin-pin tegangan AC.



 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: "Tutorial MicroPython ESP32/ESP8266 - Mengontrol Perangkat AC dengan Modul Relay via Web Server"