Tutorial Belanja komponen

Tutorial › Servo & Motor

Motor DC Maju/Mundur L9110

ESP32-WROOM-32D23D22TX0RX0D21D19D18D5TX2RX2D4D2D15GND3V3ENVPVND34D35D32D33D25D26D27D14D12D13GNDVINL9110SB-IAB-IBGNDVCCA-IAA-IBA1A2B1B2Driver motor L9110S+−Baterai 3×AA (4,5V)TT+−Motor DC TT gearbox

Motor DC gearbox kuning (motor TT) dikendalikan lewat driver L9110S: arah dan kecepatannya diatur dengan satu slider di Klenik. Ini dasar semua robot beroda, konveyor mini, dan mainan bermotor.

Motor DC berputar ke satu arah kalau kutubnya disambung + dan −, dan ke arah sebaliknya kalau kutubnya dibalik. Driver L9110S berisi rangkaian H-bridge, yaitu empat saklar elektronik yang bisa membalik kutub motor tanpa memindahkan kabel. Pin A-IA dan A-IB mengatur motor A: IA mendapat PWM dan IB LOW berarti maju, kebalikannya mundur, dan keduanya LOW berarti berhenti.

Kecepatan diatur dengan PWM seperti proyek 086. Motor diberi daya dari baterai 3×AA lewat pin VCC driver, bukan dari ESP32, karena motor menarik arus besar saat mulai berputar. GND baterai, driver, dan ESP32 harus tersambung jadi satu supaya sinyal kendali punya patokan yang sama.

Komponen

KomponenQtyHarga
ESP32 DOIT DevKit V1 30 pin1Rp75.000
L9110 L9110S Motor Driver 2 Motor Modul1Rp8.000
Motor DC TT Kuning L Shape Siku 1:48 Gearbox 3V-1Rp14.000
Holder baterai 3×AA + kabelbaterai AA dibeli terpisah1Rp6.000
Kabel jumper female-female 10 cm (isi 10)isi 10, terpakai 31Rp3.500
Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data1Rp11.700
Total (tanpa opsional)Rp106.500
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
Driver motor L9110S A-IA→D26 GPIO26biru
Driver motor L9110S A-IB→D27 GPIO27hijau
Driver motor L9110S GND→GNDhitam
Baterai 3×AA (4,5V) +→Driver motor L9110S VCCmerah
Baterai 3×AA (4,5V) −→Driver motor L9110S GNDhitam
Driver motor L9110S A1→Motor DC TT gearbox +merah
Driver motor L9110S A2→Motor DC TT gearbox −hitam

Langkah 2: Siapkan dashboard Klenik

Motor (− mundur, + maju)ichibot/budi1234/p097/kecepatan
70%70 of 100%
0 detik lalu
Kecepatan Motorichibot/budi1234/p097/status
-10010070%
0 detik lalu

Cara cepat: unduh p097.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
Motor (− mundur, + maju)
ichibot/KODE/p097/kecepatan-100–100 %
Gauge
Kecepatan Motor
ichibot/KODE/p097/status-100–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).

p097.inoUnduh .ino
// Proyek 097 - Motor DC Maju/Mundur L9110
// 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/p097/status";
const char* TOPIK_KECEPATAN = "ichibot/budi1234/p097/kecepatan";

const char* BROKER = "mqtt.ichibot.id";
WiFiClient wifi;
PubSubClient mqtt(wifi);
const int MOTOR_IA = 26, MOTOR_IB = 27;   // A-IA, A-IB di L9110S

void gerak(int kecepatan) {           // -100 .. 100
  kecepatan = constrain(kecepatan, -100, 100);
  int pwm = abs(kecepatan) * 255 / 100;
  if (kecepatan > 0)      { ledcWrite(MOTOR_IA, pwm); ledcWrite(MOTOR_IB, 0); }   // maju
  else if (kecepatan < 0) { ledcWrite(MOTOR_IA, 0);   ledcWrite(MOTOR_IB, pwm); } // mundur
  else                    { ledcWrite(MOTOR_IA, 0);   ledcWrite(MOTOR_IB, 0); }   // berhenti
  mqtt.publish(TOPIK_STATUS, String(kecepatan).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];
  gerak(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(MOTOR_IA, 1000, 8); ledcAttach(MOTOR_IB, 1000, 8); ledcWrite(MOTOR_IA, 0); ledcWrite(MOTOR_IB, 0); sambungWiFi(); mqtt.setServer(BROKER, 1883); mqtt.setCallback(pesanMasuk); } void loop() { if (!mqtt.connected()) sambungMQTT(); mqtt.loop(); }

Langkah 4: Pahami kodenya

  1. Tiga keadaan H-bridge: maju, mundur, berhenti. Jangan pernah memberi keduanya HIGH sekaligus, karena motor akan direm keras.
  2. Kedua pin kendali diberi PWM 1 kHz, 8 bit. Frekuensi ini membuat motor TT sedikit berdengung pelan, dan itu normal.
  3. Arah diambil dari tanda +/−, besar PWM dari nilai mutlaknya (abs).