Tulisan kali ini sebenarnya masih ada hubungannya dengan kerjasama saya Bersama Fakultas Vokasi Unesa dalam hal penelitian dibidang Transportasi. Gaya nya sih pengen membuat robot AGV seperti di gudang nya amazon sana yang banyak bertebaran videonya di medsos, namun seperti biasa kita mainan yang kecil-kecilan dulu. Yuk kita utak-atik mobil-mobilan RC Truk seharga 100ribuan dulu. Sekalian mau melihat bagaimana sih kontrol yang didalamnya ?
Truk mainan Remote diatas sangat umum di toko mainan bahkan mungkin hampir dimiliki oleh semua anak kecil (cowok) karena hemat saya lebih mengajarkan kegiatan outdoor ke anak daripada berkutat dengan smartphone melulu. Namun setelah saya perhatikan jangkauan kendali remotenya cukup pendek sehingga otomatis ketika diatas 5 meter gak akan nyampai tuh kendalinya. Menjadi keheranan saya kenapa sependek itu? Apakah agar anak ikutan berlari dibelakang mobil-mobilan? Namun secara teknis ini terjadi karena ketika saya bongkar antena di dalam kontroler disisi mobil-mobilannya hanya berupa kabel saja. Harus dikasi tambahan apa ya agar jauh?
#include <WiFi.h> #include <WiFiUdp.h> // Konfigurasi WiFi sesuaikan const char* ssid = "nama wifi"; const char* password = "paswordnya"; // IP statis sesuaikan, agar tidak berubah ubah IPAddress ip(192, 168, 1, 177); IPAddress gateway(192, 168, 1, 1); // samakan IP router yg digunakan IPAddress subnet(255, 255, 255, 0); // Port UDP nya bebas unsigned int udpPort = 4210; WiFiUDP udp; // Sinyal ke Transistor sesuaikan dengan pin di ESP32 yg kamu pakai #define MAJU_PIN 15 #define MUNDUR_PIN 2 #define KANAN_PIN 4 #define KIRI_PIN 5 void setup() { // Inisialisasi pin sebagai output pinMode(MAJU_PIN, OUTPUT); pinMode(MUNDUR_PIN, OUTPUT); pinMode(KANAN_PIN, OUTPUT); pinMode(KIRI_PIN, OUTPUT); // Set awal semua pin HIGH (non-aktif karena aktif LOW) digitalWrite(MAJU_PIN, HIGH); digitalWrite(MUNDUR_PIN, HIGH); digitalWrite(KANAN_PIN, HIGH); digitalWrite(KIRI_PIN, HIGH); // Mulai koneksi WiFi dengan IP statis WiFi.config(ip, gateway, subnet); WiFi.begin(ssid, password); Serial.begin(115200); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nKoneksi WiFi berhasil"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); // Mulai UDP udp.begin(udpPort); Serial.printf("Listening on UDP port %d\n", udpPort); } void maju() { digitalWrite(MAJU_PIN, LOW ); digitalWrite(MUNDUR_PIN, HIGH); digitalWrite(KANAN_PIN, HIGH); digitalWrite(KIRI_PIN, HIGH); Serial.println("ini maju ..."); } void mundur() { digitalWrite(MAJU_PIN, HIGH ); digitalWrite(MUNDUR_PIN, LOW); digitalWrite(KANAN_PIN, HIGH); digitalWrite(KIRI_PIN, HIGH); Serial.println("ini mundur ..."); } void kiri() { digitalWrite(MAJU_PIN, LOW); digitalWrite(MUNDUR_PIN, HIGH); digitalWrite(KANAN_PIN, HIGH); digitalWrite(KIRI_PIN, LOW); Serial.println("ini ngiri ..."); } void kanan() { digitalWrite(MAJU_PIN, LOW ); digitalWrite(MUNDUR_PIN, HIGH); digitalWrite(KANAN_PIN, LOW); digitalWrite(KIRI_PIN, HIGH); Serial.println("ini nganan ..."); } void mandek() { digitalWrite(MAJU_PIN, HIGH); digitalWrite(MUNDUR_PIN, HIGH); digitalWrite(KANAN_PIN, HIGH); digitalWrite(KIRI_PIN, HIGH); Serial.println("ini mandek ..."); } void loop() { char packetBuffer[255]; // Buffer untuk menerima data UDP // Cek apakah ada paket UDP masuk int packetSize = udp.parsePacket(); if (packetSize) { int len = udp.read(packetBuffer, 255); if (len > 0) { packetBuffer[len] = '\0'; // Null-terminate string } Serial.printf("Pesan diterima: %s\n", packetBuffer); // Proses perintah 1=maju 2=mundur 3=kiri 4=kanan 0=stop , silahkan berkreasi untuk model pergerakan sesuai yg anda mau if (strcmp(packetBuffer, "1") == 0) { maju(); delay(600); mundur(); delay(200); mandek(); } else if (strcmp(packetBuffer, "2") == 0) { mundur(); delay(600); maju(); delay(200); mandek(); } else if (strcmp(packetBuffer, "3") == 0) { kiri(); delay(700); mundur(); delay(150); mandek(); } else if (strcmp(packetBuffer, "4") == 0) { kanan(); delay(700); mundur(); delay(150); mandek(); } else if (strcmp(packetBuffer, "0") == 0) { // Semua tetap HIGH → berhenti total mandek(); Serial.println("Perintah BERHENTI diterima"); } } }
0 komentar:
Posting Komentar