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
| Komponen | Qty | Harga |
|---|---|---|
| ESP32 DOIT DevKit V1 30 pin | 1 | Rp75.000 |
| L9110 L9110S Motor Driver 2 Motor Modul | 1 | Rp8.000 |
| Motor DC TT Kuning L Shape Siku 1:48 Gearbox 3V- | 1 | Rp14.000 |
| Holder baterai 3×AA + kabelbaterai AA dibeli terpisah | 1 | Rp6.000 |
| Kabel jumper female-female 10 cm (isi 10)isi 10, terpakai 3 | 1 | Rp3.500 |
| Kabel micro USB data 30 cmopsional, kalau belum punya kabel micro USB data | 1 | Rp11.700 |
| Total (tanpa opsional) | Rp106.500 |
Langkah 1: Rangkai komponen
Sambungkan kabel sesuai gambar di atas. Kalau gambar dan tabel terlihat berbeda, ikuti tabel.
| Dari | Ke | Kabel | |
|---|---|---|---|
| Driver motor L9110S A-IA | → | D26 GPIO26 | biru |
| Driver motor L9110S A-IB | → | D27 GPIO27 | hijau |
| Driver motor L9110S GND | → | GND | hitam |
| Baterai 3×AA (4,5V) + | → | Driver motor L9110S VCC | merah |
| Baterai 3×AA (4,5V) − | → | Driver motor L9110S GND | hitam |
| Driver motor L9110S A1 | → | Motor DC TT gearbox + | merah |
| Driver motor L9110S A2 | → | Motor DC TT gearbox − | hitam |
Langkah 2: Siapkan dashboard Klenik
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.
| Widget | Topic | Setting |
|---|---|---|
| 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).
// 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
- Tiga keadaan H-bridge: maju, mundur, berhenti. Jangan pernah memberi keduanya HIGH sekaligus, karena motor akan direm keras.
- Kedua pin kendali diberi PWM 1 kHz, 8 bit. Frekuensi ini membuat motor TT sedikit berdengung pelan, dan itu normal.
- Arah diambil dari tanda +/−, besar PWM dari nilai mutlaknya (
abs).