Tutorial Belanja komponen

Tutorial › Relay & Perangkat Rumah

Kipas DC Atur Kecepatan (MOSFET)

ESP32-WROOM-32D23D22TX0RX0D21D19D18D5TX2RX2D4D2D15GND3V3ENVPVND34D35D32D33D25D26D27D14D12D13GNDVIND4184PWMGNDVIN+VIN−OUT+OUT−Modul MOSFET D4184+−Baterai 3×AA (4,5V)+−Kipas blower 5V

Relay hanya bisa nyala atau mati. Modul MOSFET bisa mengatur besar arus, jadi kecepatan kipas DC bisa diatur 0-100% dari slider di Klenik. Cara yang sama dipakai untuk meredupkan lampu LED strip 12V.

MOSFET adalah saklar elektronik tanpa bagian bergerak yang bisa menyala-mati ribuan kali per detik. ESP32 mengirim sinyal PWM (proyek 003) ke pin PWM modul. Kalau sinyal HIGH 60% dari waktu, kipas menerima daya rata-rata 60% dan berputar lebih pelan. Kipas tidak sempat berhenti di antara pulsa karena putarannya punya momentum.

Modul D4184 punya optocoupler di input. Sisi ESP32 dan sisi kipas terpisah secara listrik, dan sinyal 3,3V sudah cukup untuk menyalakan MOSFET. Kipas mendapat daya dari baterai lewat terminal VIN, lalu terminal OUT ke kipas.

Kipas kecil tidak bisa mulai berputar dengan daya rendah. Karena itu ada kecepatan minimum, dan setiap kali mulai dari diam kipas diberi daya penuh 0,3 detik dulu.

Komponen

KomponenQtyHarga
ESP32 DOIT DevKit V1 30 pin1Rp75.000
D4184 MOSFET MOS FET Module Isolated 4184 40V 501Rp9.603
Kipas blower 5V 50151Rp20.000
Holder baterai 3×AA + kabelbaterai AA dibeli terpisah1Rp6.000
Kabel jumper female-female 10 cm (isi 10)isi 10, terpakai 21Rp3.500
Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data1Rp11.700
Total (tanpa opsional)Rp114.103
Daftar komponen proyek ini otomatis masuk ke pesan. Hapus yang sudah kamu punya sebelum dikirim.

Langkah 1: Rangkai komponen

Sambungkan kabel sesuai gambar di atas. Kalau gambar dan tabel terlihat berbeda, ikuti tabel.

DariKeKabel
Modul MOSFET D4184 PWM→D25 GPIO25biru
Modul MOSFET D4184 GND→GNDhitam
Baterai 3×AA (4,5V) +→Modul MOSFET D4184 VIN+merah
Baterai 3×AA (4,5V) −→Modul MOSFET D4184 VIN−hitam
Modul MOSFET D4184 OUT+→Kipas blower 5V +merah
Modul MOSFET D4184 OUT−→Kipas blower 5V −hitam

Langkah 2: Siapkan dashboard Klenik

Kecepatan Kipasichibot/budi1234/p086/kecepatan
60%60 of 100%
0 detik lalu
Kecepatanichibot/budi1234/p086/status
010060%
0 detik lalu

Cara cepat: unduh p086.json, ganti budi1234 dengan KODE-mu, lalu import di Klenik (menu titik tiga → Export / Import → Import → Ganti total). Langkah lengkapnya ada di Panduan Klenik.

WidgetTopicSetting
Slider Output
Kecepatan Kipas
ichibot/KODE/p086/kecepatan0–100 %
Gauge
Kecepatan
ichibot/KODE/p086/status0–100 %

Langkah 3: Upload kode

Library: PubSubClient (Nick O'Leary). Board di Arduino IDE: ESP32 Dev Module. Isi dulu nama WiFi dan password di bagian ISI DULU, lalu ganti budi1234 di baris topic dengan KODE-mu, lalu upload dan buka Serial Monitor (115200).

p086.inoUnduh .ino
// Proyek 086 - Kipas DC Atur Kecepatan (MOSFET)
// Board: ESP32 DOIT DevKit V1 | Dashboard: klenik.ichibot.id
#include <WiFi.h>
#include <PubSubClient.h>

// ===== ISI DULU =====
const char* WIFI_NAMA = "nama-wifi-kamu";
const char* WIFI_PASS = "password-wifi-kamu";

// topic MQTT: ganti budi1234 dengan KODE-mu (sama dengan di dashboard Klenik)
const char* TOPIK_STATUS    = "ichibot/budi1234/p086/status";
const char* TOPIK_KECEPATAN = "ichibot/budi1234/p086/kecepatan";

const char* BROKER = "mqtt.ichibot.id";
WiFiClient wifi;
PubSubClient mqtt(wifi);
const int PIN_PWM = 25;
const int FREKUENSI = 1000;           // Hz, cukup lambat untuk optocoupler di modul D4184
const int MIN_JALAN = 35;             // di bawah % ini kipas tidak kuat berputar
int kecepatan = 0;

void aturKecepatan(int persen) {
  persen = constrain(persen, 0, 100);
  if (persen > 0 && persen < MIN_JALAN) persen = MIN_JALAN;
  if (kecepatan == 0 && persen > 0) {   // dari diam: dorong penuh sebentar supaya mulai berputar
    ledcWrite(PIN_PWM, 255);
    delay(300);
  }
  kecepatan = persen;
  ledcWrite(PIN_PWM, persen * 255 / 100);
  mqtt.publish(TOPIK_STATUS, String(persen).c_str(), true);
}

void pesanMasuk(char* t, byte* isi, unsigned int panjang) {
  String p;
  for (unsigned int i = 0; i < panjang; i++) p += (char)isi[i];
  aturKecepatan(p.toInt());
}

void langganan() {
  mqtt.subscribe(TOPIK_KECEPATAN);
}

sambungWiFi() dan sambungMQTT(): sama di semua proyek (klik untuk lihat)void sambungWiFi() { WiFi.begin(WIFI_NAMA, WIFI_PASS); Serial.print("WiFi"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" OK, IP " + WiFi.localIP().toString()); } void sambungMQTT() { while (!mqtt.connected()) { if (mqtt.connect(WiFi.macAddress().c_str())) { Serial.println("Terhubung ke Klenik"); langganan(); } else { Serial.println("Broker gagal, coba lagi 3 detik"); delay(3000); } } }
void setup() { Serial.begin(115200); ledcAttach(PIN_PWM, FREKUENSI, 8); // pin, frekuensi, resolusi 8 bit (0-255) ledcWrite(PIN_PWM, 0); sambungWiFi(); mqtt.setServer(BROKER, 1883); mqtt.setCallback(pesanMasuk); } void loop() { if (!mqtt.connected()) sambungMQTT(); mqtt.loop(); }

Langkah 4: Pahami kodenya

  1. Cara memasang PWM di ESP32 (core 3.x). Resolusi 8 bit berarti nilai 0-255.
  2. Optocoupler di modul lambat, jadi frekuensi tinggi (misalnya 25 kHz) tidak terbaca dengan baik. 1 kHz aman, tetapi kadang kipas berdengung pelan. Itu normal.
  3. Dorongan awal penuh supaya kipas mengatasi gaya gesek diam, baru diturunkan ke kecepatan yang diminta.