Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Sabtu, 28 Juni 2025

Modifikasi Mobil - Mobilan RC 27Mhz Menjadi Berbasis WiFi

 



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?



Gambar diatas merupakan modul kontroler yang dapat dibeli di berbagai onlineshop (bahkan sepaket dengan motor DC nya) hanya 25 ribu saja (dapet untung dari mana coba produsennya ...ckckckckc). Dari berbagai tulisan dan video di internet rata-rata yang dilakukan adalah menambahkan antena dan jangkauannya gak jauh juga. Nah bagaimana dengan memanfaatkan wifi dirumah yang lumayan jauh jangkauannya ? Kita bisa gunakan bantuan mikrokontrolelr ber wifi macam ESP8266/ESP32.

Prinsipnya sebagai berikut:

1. Gunakan relay 5V atau transistor sebagai penyambung tombol yang ada pada modul remote, kemudian di kontrol oleh pin dari ESP32. Saya lebih memilih transistor kebetulan ada banyak transistor PNP 2N3906 di gudang sehingga hanya butuh tambahan resistor 1K ke basis dan kontrol logika aktif LOW untuk menyambungkan tombol switch. Ilustrasinya seperti berikut : 




2. ESP32 terhubung dengan wifi rumah dan menggunakan komunikasi UDP / TCP sebagai protokol pengiriman data. Perintah yg dikirim berupa teks "1" untuk maju, "2" untuk mundur, "3" belok kiri, "4" belok kanan dan "0" untuk stop.
3. Untuk kontrol jarak jauh (kanan kiri maju mundur) bisa menggunakan aplikasi smartphone android UDP terminal, seperti pada gambar paling atas. Saya ada juga koding APK sendiri namun saya bahas lain waktu. 
4. Remote dapat di bongkar menyisakan PCB nya saja dan taruh  bersama ESP32 diatas / didalam back truk. Jangan lupa menambahkan Power suply berupa powerbank agar dapat mensuply ESP32 dan juga modul remote. 
5. Saya menyambungkan pin 3.3 Volt dari ESP32 ke pin baterai + dari modul remote. 










Koding di ESP32 :


#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");
    }

    
  }
  
}





SELAMAT MENCOBA !

Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+6281331339072

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (29) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (27) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (37) proyek (1) python (11) radio (31) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) SDR (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (96) tutorial (108) tv digital (6) tvri (2) unesa (8) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika