Hardware Docs
Spesifikasi teknis Robot RNV4 — dimensi, kinematika lengan, gearbox, driver motor, pinout ESP32-S3, dan referensi perintah G/M/R-code
Terakhir diperbarui: 24 Agustus 2026
RNV4 adalah lengan robot (robot arm) yang dikendalikan lewat antarmuka desktop RNV4 Studio via koneksi serial USB, dirancang agar mudah dikembangkan sesuai kebutuhan penggunanya. Robot bergerak dalam sistem koordinat Kartesian (X, Y, Z) — pengguna cukup memasukkan titik tujuan lewat antarmuka atau command G-code tanpa perlu menghitung sudut tiap sendi secara manual, dan gripper bawaannya dapat berotasi hingga 180°.
Selain lewat RNV4 Studio, robot ini juga bisa dikendalikan lewat skrip Python (via port serial) untuk kebutuhan kontrol yang lebih kompleks, otomatis, atau terintegrasi dengan sistem lain — lihat Pengembangan & Ekstensi Kustom di bawah. Protokol komunikasi G/M/R-code yang dipakai bersifat terbuka & terdokumentasi lengkap di halaman ini, sehingga integrasi dari luar tetap fleksibel meski firmware bawaan robot sendiri bersifat tertutup (lihat Syarat Layanan).
Dengan kombinasi presisi mekanik, kemudahan kontrol, dan fleksibilitas pengembangan ini, RNV4 cocok dipakai untuk berbagai aplikasi seperti pick and place, inspeksi, riset, maupun pembelajaran robotika — baik oleh pengguna pemula maupun profesional, di lingkungan industri, laboratorium, pendidikan, dan bidang lainnya.
RNV4 adalah lengan robot SCARA 2-link dengan rotasi base dan rel linear (E0), dikendalikan mikrokontroler ESP32-S3 lewat protokol G-code (mirip Marlin) ditambah perintah kustom R-code.
Unit ini sudah dilengkapi pump vacuum bawaan yang terpasang langsung di dalam bodi — siap digunakan begitu keluar dari kemasan tanpa perlu instalasi atau perakitan komponen tambahan. Setiap sendi dilengkapi bearing dan rangka ABS + resin yang diperkuat, sehingga gerakannya tetap presisi dan kokoh untuk pemakaian jangka panjang.
Mencari dokumentasi REST API & Webhook untuk integrasi software (AI Doodle dkk)? Lihat Developer Docs.
⚠ Perhatian Keselamatan
- Jauhkan tangan/jari dari area sendi (bahu, siku) dan rel linear (E0) saat robot sedang bergerak — berpotensi terjepit (pinch point).
- Jangan letakkan benda atau kabel di jalur gerak lengan maupun rel.
- Tempatkan robot di permukaan yang stabil dan rata sebelum dioperasikan.
- Cabut adaptor 12V (matikan catu daya) sebelum membongkar bodi atau mengganti komponen.
- Bukan mainan anak-anak — pengoperasian oleh anak-anak wajib didampingi orang dewasa.
Apa yang berbeda di RNV4H2
- Driver motor TMC2209 (lewat UART) menggantikan driver lama pada sendi bahu, siku, dan rotasi base.
- Arus motor disetel dari perangkat lunak dan tersimpan per unit, bukan lewat trimpot.
- Homing tanpa limit switch di X/Y/Z: memakai encoder (tanpa menyentuh stopper) atau deteksi beban motor.
- Encoder AS5600 di tiga sendi, sehingga robot bisa memeriksa sendiri apakah posisinya sesuai perintah.
- Kipas dikendalikan termostat di papan, tidak lagi lewat firmware.
- Sensor dan relay datang dari modul eksternal (RS-485), bukan pin di papan robot.
- Lengan, gearbox, ukuran, dan payload sama persis dengan RNV4.
Tinggi (Posisi Awal)
369,89 mm
Tinggi (Maksimum)
446,57 mm
Lebar
445,60 mm
Beban Maksimal
500 gram
Catu Daya
12V DC, 10A (maks)
Konektivitas
USB / UART / Bluetooth / WiFi
Mekanik & Elektrik
Dimensi & Desain
Kiri: posisi awal (home). Kanan: lengan terentang ke posisi tertinggi.
Kapasitas Beban (Payload)
500gram
Beban Maksimal (Payload)
Beban maksimal yang dapat diangkat ujung lengan (end-effector) robot. Melebihi batas ini berisiko mengganggu presisi gerakan atau membebani motor & gearbox secara berlebihan.
Rekomendasi: pelankan gerakan untuk beban mendekati batas maksimal
G0 (rapid move) selalu bergerak di kecepatan maksimum otomatis dan
mengabaikan parameter F — cocok untuk beban ringan/tanpa beban, tapi berisiko
membuat beban berat berayun/oleng atau motor kehilangan langkah (step) saat mendekati 500 gram.
Untuk beban berat, gunakan G1 dengan parameter F
(feedrate, mm/menit) yang jauh lebih rendah dari biasanya, mis.:
G1 X100 Y200 F300 ; ≈5 mm/detik — pelan
G1 X100 Y200 F600 ; ≈10 mm/detik — sedang
Nilai F yang aman tergantung berat & bentuk beban Anda — mulai dari nilai rendah lalu naikkan bertahap sambil diamati, bukan langsung dipakai di kecepatan tinggi.
Gripper & End-Effector
Setiap RNV4 sudah dilengkapi 3 jenis gripper (gripper servo/mencapit, gripper pen, gripper vacuum) — semuanya plug and play: baut, mounting, dan kelengkapan pemasangan lain sudah disediakan di dalam paket. Tidak perlu beli terpisah atau merakit dari komponen mentah, tinggal pasang di ujung lengan sesuai kebutuhan pekerjaan.
Gripper servo — mencapit benda.
Gripper pen — menulis/menggambar.
Gripper vacuum — pompa sudah terpasang di bodi.
Gripper Servo — Mencapit & Rotasi 0°–180°
Capitan digerakkan servo, bisa dibuka-tutup untuk menjepit benda, dan seluruh unit gripper bisa berotasi 0°–180° (titik tengah 90°) untuk mengatur sudut jepitan sesuai orientasi benda.
Terbuka maksimal — jarak capit ±32,55 mm.
Tertutup — posisi mencapit.
Rotasi 0°–180°, titik tengah 90°.
Bukaan capit bisa dikustom
Jarak bukaan bawaan (±32,55 mm) cukup untuk kebanyakan benda kecil-sedang. Kalau kebutuhan Anda mencapit benda yang lebih besar dari bukaan standar, bentuk capit bisa dikustom sesuai kebutuhan — silakan hubungi/diskusikan dengan admin untuk kebutuhan spesifik ini.
Gripper Vacuum — Pompa Sudah Terpasang di Bodi
Berbeda dari gripper servo/pen, gripper vacuum butuh sumber hisapan (pompa). Pada RNV4, pompa vakum sudah terpasang di dalam bodi robot dari pabrik — Anda tidak perlu memasang atau mengkabel pompa terpisah, tinggal pasang ujung gripper vacuum ke lengan dan langsung bisa dipakai.
Perkiraan ukuran & jarak gripper vacuum dari sambungan lengan (satuan mm).
Dimensi Dudukan — untuk Gripper/Mount Custom
Pola lubang baut di ujung lengan (dudukan bawaan untuk gripper pen) — dipakai kalau Anda ingin merancang gripper atau mount custom sendiri (bukan dari 3 pilihan bawaan) yang menempel langsung ke ujung lengan robot.
Tampak depan (kiri) & 3D (kanan) dudukan gripper di ujung lengan — satuan mm.
17,80 mm
23,60 mm
21,40 mm
Perhatikan pola 4 lubang baut ini bukan persegi panjang sempurna (jarak atas dan bawah beda, 17,80mm vs 23,60mm) — pastikan mount custom Anda mengikuti pola trapesium ini, bukan diasumsikan simetris.
Kemasan & Styrofoam Pelindung
Robot dikemas dalam styrofoam custom yang dibentuk mengikuti kontur bodi & lengan, dipasang rapat di dalam kardus 50 × 50 × 20 cm.
Styrofoam dibuka sebagian — robot terlihat terkunci rapat di dalamnya.
Bentuk styrofoam custom, dicetak mengikuti kontur tiap komponen robot.
Foto Kemasan Asli
Contoh kemasan sungguhan yang dikirim ke pembeli — foto langsung dari unit yang sudah dikemas, bukan render.
Kardus pengiriman — dilapisi lakban FRAGILE di semua sisi.
Sisi lain kardus, lengkap simbol penanganan (fragile, lindungi dari air).
Dibungkus plastik wrap tambahan sebagai lapisan pelindung ekstra saat pengiriman.
Bagian dalam setelah dibuka — slot styrofoam terpisah untuk tiap komponen.
Robot terkunci rapat di styrofoam, lengkap kabel & aksesori dalam kantong terpisah.
Sudut lain — gripper cadangan & kelengkapan lain yang ikut dikemas.
Isi Paket
Isi paket dapat berubah sewaktu-waktu — rujukan resmi & terbaru selalu di halaman produk /belanja.
Garansi
3 bulan untuk kerusakan pabrik/produksi — biaya servis gratis.
Di luar cakupan (kelalaian pengguna, mis. salah tegangan atau salah pemakaian): tetap dilayani, cukup bayar komponen yang rusak tanpa biaya jasa servis.
Syarat klaim: hubungi lewat WhatsApp/email dengan bukti pembelian, unit dikirim ke alamat yang diarahkan admin, biaya pengiriman klaim ditanggung pembeli. Detail lengkap di Syarat Layanan.
Kinematika & Geometri Lengan
Metode: Geometric closed-form IK (bukan Jacobian/iteratif) — semua sudut dihitung langsung dari trigonometri (law of cosines), deterministik dan cepat.
Dimensi Mekanis (config.h)
LOW_SHANK_LENGTH
175,0 mm
Panjang lengan bawah (bahu → siku)
HIGH_SHANK_LENGTH
175,0 mm
Panjang lengan atas (siku → ujung)
END_EFFECTOR_OFFSET
48,59 mm
Offset dari ujung lengan atas ke pusat end-effector
INITIAL_X
0,0 mm
Posisi X saat home
INITIAL_Y
223,59 mm
HIGH_SHANK + EE_OFFSET (175 + 48,59)
INITIAL_Z
175,0 mm
LOW_SHANK_LENGTH (lengan bawah vertikal saat home)
Sistem Koordinat
X
Kiri / Kanan
Lateral dari posisi home
Y
Depan (jarak horizontal dari base)
Y > 0 = di depan robot
Z
Vertikal
Z naik = joint shoulder naik
Batasan Workspace
Rumus IK (robotGeometry.cpp :: calculateGrad())
r_ee = √(x² + y²)
r_rot = r_ee − EE_OFFSET
r_side = √(r_rot² + z²)
θ_rot = asin(x / r_ee) → motor stepperRotate (Z)
θ_elbow = acos((L_low² + L_high² − r_side²) / (2·L_low·L_high))
θ_high = π − θ_elbow
θ_low = acos(z / r_side) − acos((L_low² − L_high² + r_side²) / (2·L_low·r_side)) → motor stepperLower (Y)
stepperHigher (X) = θ_high + θ_low (sudut absolut, karena siku "menunggangi" bahu)
Gearbox & Transmisi
Compound timing belt drive 2-stage (bukan gear mesh langsung), rasio total 15:1. Berlaku untuk axis X, Y, Z — tidak berlaku untuk E0 (rel), yang punya jalur konversi mm sendiri.
Motor (12T) --Belt A (150mm, 75T)--> Jackshaft (60T/30T) --Belt B (230mm, 115T)--> Sendi (90T)
5 : 1 3 : 1
Total = 5 × 3 = 15 : 1
Spesifikasi
Konstanta Firmware (config.h)
#define MOTOR_GEAR_TEETH 12.0
#define MAIN_GEAR_TEETH 180.0 // BUKAN 90 — ini rasio efektif (12 × 15), bukan gigi fisik pulley sendi
RampsStepper (RampsStepper.cpp) hanya mengenal satu rasio tunggal
MAIN_GEAR_TEETH / MOTOR_GEAR_TEETH — tidak tahu ada jackshaft. Kalau rasio
berubah lagi, hitung ulang MAIN_GEAR_TEETH = MOTOR_GEAR_TEETH × rasio_total_baru.
radToStepFactor = (MAIN_GEAR_TEETH / MOTOR_GEAR_TEETH) × (MICROSTEPS × STEPS_PER_REV) / (2π)
= 15 × (16 × 200) / (2π)
≈ 7639,4 step/radian
Torsi Desain (sendi Y, lengan bawah — beban terberat)
Motor & Driver Listrik
Board kontroler RNV4 (v4.2) — memuat ESP32-S3, 4 driver stepper DRV8825, dan rangkaian pendukung equipment/sensor.
Board kontroler RNV4 v4.2
Kondisi Aktif Sekarang
Pin & Wiring
Kondisi aktif — pinout.h, MCU ESP32-S3 N16R8.
Panel Konektor Fisik — Bodi Robot
Label yang tertera langsung di panel bodi robot (belakang/bawah) — untuk pemetaan ke pin mikrokontroler (GPIO), lihat tabel-tabel di bawah.
Panel Konektor Fisik — Sisi Atas Bodi
Panel di sisi atas bodi, dekat pangkal lengan.
Stepper (STEP / DIR / ENABLE / MIN)
GPIO10
GPIO11
GPIO12
GPIO18
GPIO15
GPIO16
GPIO17
GPIO5
GPIO8
GPIO9
GPIO3
GPIO6
GPIO38
GPIO39
GPIO40
GPIO7
Equipment / Output
GPIO14 (LG1)
M10/M11
GPIO13 (LG2)
M10/M11
GPIO46 (LG3)
M3/M5
GPIO45 (LG4)
Auto (suhu) / manual (R10-R13) — strapping pin VDD_SPI, paling sensitif saat boot ⚠️
GPIO36
konflik fisik dengan PSRAM octal ⚠️
GPIO37
konflik fisik dengan PSRAM octal ⚠️
Spesifikasi Servo & Driver Relay
Sensor
GPIO21
GPIO47
GPIO35 ⚠️ (konflik fisik PSRAM)
GPIO4
SD Card (SPI)
GPIO1
GPIO2
GPIO42
GPIO41
Lain-lain
GPIO48
GPIO0
Peringatan GPIO ESP32-S3 N16R8
- GPIO33-37: fisik terhubung ke chip PSRAM octal di dalam modul — normalnya TIDAK BOLEH dipakai GPIO biasa apa pun. Pinout aktif memakai GPIO35/36/37 untuk IN3/Servo1/Servo2 — ini aman selama board dikonfigurasi mode PSRAM
qio_qspi(bukanqio_opi, lihatplatformio.ini), yang memang sengaja dipilih firmware untuk menghindari bug watchdog reset di mode OPI. Kalau konfigurasi PSRAM ini pernah diubah ke OPI di masa depan, GPIO35/36/37 akan berhenti berfungsi sebagai GPIO biasa. - GPIO45: strapping VDD_SPI, paling berbahaya — kalau tertarik rangkaian eksternal saat reset bisa gagal boot/rusak hardware. Saat ini dipakai untuk FAN_PIN.
- GPIO19, GPIO20: USB D-/D+ native, jangan dipakai GPIO biasa.
- GPIO43, GPIO44: UART0 (Serial0), dipakai komunikasi utama robot.
Skematik Elektronik
Skematik lengkap board kontroler RNV4 (4 halaman: rangkaian utama ESP32-S3, driver motor DRV8825, rangkaian LED, dan jumper/konektor tambahan).
Diambil langsung dari file desain EasyEDA — versi RN4.2.2, diperbarui 2026-04-20.
Klik gambar untuk memperbesar & baca detail komponen.
Halaman 1 — Rangkaian Utama (ESP32-S3, sensor, input)
Halaman 2 — Driver Motor (DRV8825) & Equipment (Pump/Valve)
Halaman 3 — Rangkaian LED
Halaman 4 — Jumper & Konektor Tambahan
robot-rnv4-schematic.pdf
PDF asli (vektor, bisa di-zoom tanpa pecah) · 4 halaman · 639 KB
Command Reference
Protokol Komunikasi
Cara host (PC/app Android/AI board) berkomunikasi dengan robot lewat perintah G/M/R-code — kompatibel dengan subset Marlin G-code. Tabel perintah lengkapnya ada di 4 section di bawah.
Koneksi Fisik
Prioritas & Perilaku Multi-Channel
Firmware cek 1 command per iterasi loop, urutan prioritas (kalau beberapa channel ada data bersamaan, yang lebih prioritas diproses duluan; sisanya nunggu iterasi berikutnya):
- UART0
- USB
- Bluetooth (setelah autentikasi)
Balasan (ok/error/dll) di-broadcast ke USB + UART0 + Bluetooth sekaligus — bukan cuma ke channel asal command.
⚠ Bluetooth masih dalam proses pengembangan
Konektivitas BLE ada di firmware, tapi provisioning password per-unit di sisi hardware belum sepenuhnya siap untuk pemakaian produksi — perlakukan info di bawah sebagai referensi teknis, bukan jaminan siap pakai langsung di semua unit saat ini. Tutorial koneksi step-by-step akan menyusul setelah proses ini rampung.
Detail Teknis BLE — untuk Bikin Klien/App Sendiri
Robot memancarkan nama RNV4_Robot dan mengimplementasikan profil
Nordic UART Service (NUS) — profil BLE standar yang
sudah didukung banyak library/app generik (mis. nRF Connect, Serial Bluetooth Terminal), jadi tidak perlu app
khusus buatan Ruskomponen untuk mulai coba-coba:
RNV4_Robot
6E400001-B5A3-F393-E0A9-E50E24DCCA9E
6E400002-B5A3-F393-E0A9-E50E24DCCA9E
6E400003-B5A3-F393-E0A9-E50E24DCCA9E
Autentikasi Bluetooth
Terpisah dari pairing Bluetooth level OS — setelah koneksi BLE tersambung, robot minta password lewat teks biasa di channel yang sama (bukan mekanisme bonding BLE standar):
- Klien kirim password sebagai baris teks pertama setelah connect
- Batas waktu 30 detik sejak baris pertama dikirim
- Maksimum 3 percobaan salah, lalu terkunci 60 detik sebelum bisa coba lagi
- Perintah G/M/R baru diterima setelah autentikasi berhasil
- Password default diset di firmware (
config.h) — sama untuk semua unit selama belum diganti (bukan per-robot seperti token API Studio), hanya bisa diubah lewat compile ulang firmware — perlakukan sebagai bukan rahasia, ganti sebelum unit dipakai di lingkungan yang butuh keamanan BLE lebih ketat
Format Perintah (Host → Robot)
<ID><NUM> [PARAM...]\n
<ID>— huruf kode:G,M, atauR<NUM>— nomor perintah integer[PARAM...]— parameter opsional, huruf + nilai float, tidak perlu spasi- Terminator:
\n(newline) atau\r(carriage return) - Case-insensitive:
g0 x100=G0 X100 - Spasi opsional:
G0X100Y200=G0 X100 Y200
G0 X100 Y200 Z50
G1X50Y-30.5F300
R280 P1 S90
R22 P1
R515
Parameter yang Dikenali
X
float
Koordinat X (mm)
Y
float
Koordinat Y (mm)
Z
float
Koordinat Z (mm)
E
float
Koordinat E/rail (mm)
F
float
Feedrate (mm/min)
I
float
Arc center offset X (mm)
J
float
Arc center offset Y (mm)
R
float
Arc radius (mm), alternatif IJ
S
float
Speed / value general
P
float
Index servo / sub-command / program number
NAN/0 di awal setiap perintah. Parameter yang tidak disebut tidak mewarisi nilai dari perintah sebelumnya.
Format Respons (Robot → Host)
Flow Control (G-code Queue)
Robot memakai FIFO queue khusus untuk perintah gerakan (G0/G1/G2/G3). Perintah M dan R dieksekusi langsung (bypass queue) — ok segera.
Host kirim G1 X100
→ Robot: tidak reply ok dulu (command masuk queue)
→ Saat pop dari queue untuk dieksekusi: sendResponse("ok")
→ Host baru kirim G1 berikutnya
Host kirim M400 (tunggu queue kosong)
→ Robot spin-wait sampai queue kosong + interpolator selesai
→ sendResponse("ok")
- Tunggu
oksebelum kirim perintahGberikutnya - Jika
ERROR: Queue is FULL!→ queue dibersihkan otomatis, kirim ulang
Pesan Proaktif (Backdoor)
Selain balasan atas perintah, firmware juga mengirim pesan diagnostik tanpa diminta
berformat // @TAG:{json} — dipakai RNV4 Studio untuk halaman monitoring, klaim robot, dll.
Prefix // adalah konvensi komentar G-code standar, jadi parser G-code yang benar akan
otomatis mengabaikannya.
@DIAG tiap 3 detik, @RT
tiap 200ms). Lihat bagian Pengembangan & Ekstensi Kustom untuk cara menghindarinya.
@FW
Saat boot, dan setiap kali host kirim @STUDIO_HELLO
Versi firmware, versi protokol, ID robot, claim_secret
@STUDIO_ACK
Balasan atas @STUDIO_HELLO dari host — event-driven, bukan otomatis
Versi firmware, ID robot, versi protokol
@RESET
Sekali setiap boot
Alasan reset terakhir (normal/brownout/watchdog/panic, dst)
@DIAG
Otomatis tiap 3 detik, terus-menerus selama menyala
Uptime, heap/PSRAM, sisa stack task, status robot/queue/SD, suhu, WiFi
@RT
Otomatis tiap 200ms (5x/detik), terus-menerus selama menyala
Posisi X/Y/Z/E realtime, baris SD aktif, servo, vacuum, sensor IN1-3
@LINE
Setiap kali baris program SD aktif berubah (event-driven)
Nomor baris yang sedang dieksekusi
@WIFI
Balasan perintah WiFi (R22) — event-driven
Status scan/connect WiFi
@HWCFG_JSON
Balasan perintah R93 — on-demand
Seluruh nilai kalibrasi hwConfig dalam satu JSON
Error Reference
ERROR: COMMAND NOT RECOGNIZED
Kode bukan G/M/R, atau format salah
Periksa format perintah
ERROR: Robot not calibrated. Send G28 first.
G0/G1/G2/G3 tanpa homing
Kirim G28 dulu
ERROR: Queue is FULL!
Host kirim terlalu cepat tanpa tunggu ok
Tunggu ok, queue di-clear otomatis
Resend:<n>
Checksum salah atau nomor baris tidak urut
Kirim ulang baris ke-n
WIFI:ERROR Tidak ada jaringan ditemukan
Scan WiFi gagal
Coba R22 lagi
Pengembangan & Ekstensi Kustom
Firmware bawaan RNV4 bersifat tertutup (kode sumbernya tidak dipublikasikan) dan diperbarui lewat RNV4 Studio (menu Flash Firmware, lewat kabel USB) — lihat Syarat Layanan. Tapi banyak pembeli robot ini justru untuk keperluan riset, tugas kuliah, atau proyek pengembangan yang butuh menambah kemampuan robot lebih jauh dari fitur bawaan. Kabar baiknya: protokol komunikasi G/M/R-code di atas terbuka dan stabil — cukup lewat itu, robot ini sangat bisa dikembangkan lebih jauh tanpa perlu menyentuh firmware sama sekali.
Rekomendasi: kembangkan dari luar, bukan ubah firmware bawaan
Kode firmware robot ini sudah cukup kompleks (kontrol stepper real-time, kinematika lengan, kalibrasi per-unit, dst) — mengubahnya tanpa pemahaman detail berisiko memicu bug atau gerakan yang tidak stabil, dan karena kode sumbernya tertutup, Anda juga tidak mulai dari referensi yang bisa dipelajari dulu. Jauh lebih aman dan fleksibel: bangun kontroler/logic tambahan di luar robot, lalu kirim perintah G/M/R-code standar ke robot lewat USB atau UART0 seperti biasa. Kalau ada bug, bug-nya ada di kode Anda sendiri yang bisa dilihat & diperbaiki bebas — bukan terkubur di firmware tertutup.
Jalur 1 — Kontrol dari Komputer Lewat USB
Tulis program sendiri di komputer (mis. Python dengan library pyserial, atau
bahasa apa pun yang bisa akses serial port) yang mengirim command G/M/R-code ke robot lewat USB — persis
seperti RNV4 Studio, cuma logic-nya Anda yang tulis sendiri. Cocok untuk menambah kamera eksternal
(computer vision, deteksi objek), logic kontrol kompleks yang lebih mudah dikembangkan di komputer
daripada di firmware ESP32 langsung, atau integrasi ke sistem/aplikasi lain. Semua logic tambahan itu
jalan di komputer Anda — robot cuma menerima & menjalankan command G/M/R-code standar seperti biasa,
tidak ada yang perlu diubah di firmware.
// @DIAG tiap 3 detik, // @RT
tiap 200ms, dll — lihat tabel Pesan Proaktif (Backdoor) di
bagian Protokol Komunikasi) yang khusus muncul di jalur USB ini saja. Kalau Anda pantau
lewat serial monitor mentah (bukan parser G-code), baris-baris ini akan ikut terlihat. Saat ini firmware
belum punya perintah untuk mematikannya saat robot menyala — cuma bisa lewat pengaturan
di source firmware sebelum di-compile, yang berarti bertentangan dengan rekomendasi di atas untuk tidak
menyentuh firmware. Cara paling praktis: abaikan saja baris yang diawali //
di parser Anda (konvensi komentar G-code standar) — atau pakai Jalur 2 (UART0) di bawah, yang memang
sudah bersih dari pesan ini sejak awal.
Jalur 2 — Kontrol Jarak Jauh Kustom Lewat UART0
Kalau Anda butuh robot bisa dikendalikan dari jarak jauh dengan cara sendiri (mis. lewat WiFi/jaringan custom, bukan lewat RNV4 Studio), sambungkan mikrokontroler eksternal milik Anda sendiri (mis. board ESP32 terpisah) ke pin UART0 (GPIO43/44) — lihat tabel Koneksi Fisik di atas. Board eksternal itu yang menjalankan kode dan logic koneksi jarak jauh Anda sendiri sepenuhnya (WiFi, cloud, apa pun), lalu cukup kirim command G/M/R-code standar ke robot lewat UART0. Pendekatan ini sepenuhnya independen dari firmware bawaan robot — bisa dikembangkan bebas tanpa risiko mengubah atau mengganggu kode yang sudah ada.
Jalur 3 — Kontrol Wireless Jarak Dekat Lewat Bluetooth (BLE)
⚠ Masih dalam proses pengembangan — lihat catatan di section Protokol Komunikasi.
Kalau kebutuhan Anda cuma kontrol nirkabel jarak dekat (mis. bikin app mobile sendiri, tanpa mau repot pasang board eksternal seperti Jalur 2), robot sudah punya BLE bawaan dengan profil Nordic UART Service (NUS) yang standar — tinggal konek dari app/library BLE apa pun yang mendukung NUS, otentikasi pakai password (lihat Autentikasi Bluetooth di atas), lalu kirim command G/M/R-code sama seperti channel lain. Tidak perlu hardware tambahan sama sekali — tapi jangkauannya khas BLE (jarak dekat, beberapa meter tanpa penghalang), beda dari Jalur 2 yang bisa dipadukan WiFi/internet untuk jangkauan jauh.
G-code (Gerakan & Mode)
Kirim lewat Serial Monitor (115200 baud), Bluetooth, atau UART0.
G0 / G1
Gerak rapid / linear ke koordinat X Y Z (E untuk rel)
G2 / G3
Gerak arc searah jarum jam (CW) / berlawanan (CCW), format IJ atau R
G4
Dwell (jeda), parameter P (ms) atau S (detik)
G28
Homing seluruh axis
G90
Mode koordinat absolut
G91
Mode koordinat relatif
G92
Set posisi offset (tanpa gerak fisik)
G20
Set unit ke inch — tidak didukung, robot selalu mm
G21
Set unit ke mm (default)
G33
Probe move — gerak sampai sensor IN1 kontak (kalibrasi Z), wajib parameter F. Eksperimental, belum diuji di robot fisik — lihat section Sensor Digital
M-code (Kontrol Equipment & Status)
M3
Spindle/Laser ON
M5
Spindle/Laser STOP
M10
Vacuum grip ON (pump ON, valve tutup)
M11
Vacuum release (pump OFF, valve buka sesaat lalu tutup)
M17
Enable stepper motor
M18
Disable stepper motor
M105
Report suhu (untuk Repetier-Host/OctoPrint polling)
M110 Nxx
Set nomor baris saat ini (Marlin line numbering)
M114
Get posisi saat ini
M115
Info sistem/firmware
M119
Status endstop
M205
Set speed profile
M220
Set/get feedrate override (%)
M400
Tunggu semua gerakan selesai
R-code (Khusus Robot RNV4)
R1 / R2 / R3
Cek sensor IN1 / IN2 / IN3
R4
Baca suhu DS18B20
R5
Cek semua sensor + suhu sekaligus
R6
Diagnostic test sensor suhu
R10 / R11
Mode fan: manual / auto
R12 / R13
Fan ON / OFF (manual)
R20
Safe landing sequence (parkir aman)
R21
Set speed profile (runtime)
R22
WiFi manager interaktif
R23
WiFi auto-connect sekali (non-interaktif)
R30 / R31
Pen DOWN / Pen UP
R50
Query status lengkap (sinkronisasi dengan aplikasi eksternal)
R90
Tampilkan konfigurasi hardware
R91
Edit satu field konfigurasi hardware
R92
Reset konfigurasi hardware ke default (wajib R92 CONFIRM)
R93
Ambil seluruh hwConfig sebagai JSON
R94
Timpa hwConfig dari JSON (bulk set)
R99
Baca/set nomor seri robot
R280 P<n> S<deg> F<f>
Set posisi servo n (P1=rotasi, P2=gripper). Tanpa F = gerak instan, dengan F = kecepatan custom (°/s)
R281 P<n>
Get posisi servo n
R515
Get posisi robot (X/Y/Z) saat ini
R516
Get posisi servo 1 & 2 saat ini
R520
Get hasil probe G33 terakhir (trigger/tidak + posisi berhenti) — dikonsumsi sekali
R600 / R601
Toggle mode balasan stepper / servo (instant vs tunggu selesai)
Profil Kecepatan Gerak (R21)
Menentukan bentuk kurva kecepatan tiap gerakan (percepatan → konstan → perlambatan), bisa diganti kapan saja tanpa reboot lewat R21.
R-code (Manajemen Program SD Card)
Program yang tersimpan lewat command di bawah ada langsung di SD
card robot, bukan di RNV4 Studio — begitu tersimpan, robot bisa memutar ulang programnya sendiri lewat
R508 tanpa Studio perlu terhubung sama sekali. RNV4 Studio cuma alat bantu untuk
mengajarkan gerakan lewat jog manual (mis. urutan pick-and-place: ambil benda di titik A, taruh di titik
B) — bukan syarat robot bisa berjalan setelah program itu jadi. Catatan: ini khusus gerakan yang diajarkan manual —
fitur plotter AI Doodle tetap butuh RNV4 Studio terhubung karena prosesnya real-time, bukan program tersimpan.
R500 <nama>
Buat program baru, jadi aktif
R501
Tambahkan command terakhir ke akhir program aktif
R502 / R502 P<n>
Tampilkan program aktif / preview program tersimpan #n
R503 P<pos>
Sisipkan command terakhir di posisi tertentu
R504 P<line> [UP/DOWN]
Hapus atau pindah baris tertentu
R505 CONFIRM
Kosongkan program aktif
R506
Tutup program aktif (tanpa hapus)
R507
Daftar semua program tersimpan
R508 P<num> X<loop>
Play program nomor tertentu, opsional jumlah loop
R509 P<num>
Hapus program tersimpan
R510 P<num>
Buka program tersimpan untuk diedit
R511 / R511 S<1/0>
Toggle mode loop playback
R512
Stop playback
R513
Masuk mode paste (input multi-baris langsung ke program aktif)
R514
Tampilkan command terakhir yang dieksekusi
R517
Tempel satu baris teks apa adanya ke program aktif
R518
Teach point — simpan posisi robot saat ini (+ servo1 opsional)
R519
Gripper point — simpan posisi servo2 (gripper) saat ini
Sensor Digital (IN1–IN3)
Robot punya 3 input digital (IN1, IN2, IN3) untuk membaca status manual, menunggu kondisi di tengah program SD, dan membuat percabangan/loop bersyarat. IN1 secara default dialokasikan untuk probe sentuh G33 (kalibrasi Z) — lihat catatan status fitur ini di bawah sebelum dipakai untuk produksi.
Istilah & Singkatan
Dipakai berulang di seluruh section ini — cek di sini kalau lupa artinya:
IN1
Sensor 1 — input digital pertama (GPIO21)
IN2
Sensor 2 — input digital kedua (GPIO47)
IN3
Sensor 3 — input digital ketiga (GPIO35)
H
HIGH — logika 1 / tegangan tinggi (sensor ter-trigger, tergantung polaritas wiring)
L
LOW — logika 0 / tegangan rendah (sensor tidak ter-trigger, tergantung polaritas wiring)
>N
Label nomor N di program SD — titik tujuan lompatan (mis. >1, >2)
AND / OR
Operator logika untuk menggabungkan 2 kondisi sensor atau lebih dalam satu baris
G33
Perintah probe sentuh — gerak sampai IN1 kontak (kalibrasi Z)
R1 / R2 / R3
Baca status IN1 / IN2 / IN3 sekali (balasan HIGH/LOW)
R5
Baca IN1, IN2, IN3, dan suhu sekaligus (balasan format 1/0)
R520
Ambil hasil probe G33 terakhir (sekali pakai)
Hardware & Pemasangan
GPIO21 — default dialokasikan untuk probe G33 (kalibrasi Z)
GPIO47
GPIO35 — lihat catatan PSRAM di bawah
Board RNV4 sudah lewat optoisolator PC817 — tinggal trigger
Jalur IN1–IN3 di board RNV4 masing-masing sudah lewat optoisolator PC817 (galvanically isolated dari domain 3.3V ESP32), dengan LED indikator + resistor 1kΩ di sisi katoda PC817 sudah terpasang di board — bukan sesuatu yang perlu Anda tambahkan sendiri. Sisi keluaran (fototransistor) sudah di-pull-up ke logika 3V3L dan langsung dibaca firmware sebagai IN1/IN2/IN3.
Untuk trigger: cukup beri tegangan di sisi input terminal (anoda +, katoda ke GND) — lewat saklar mekanis polos maupun output sensor aktif (proximity NPN/PNP, photoelectric, dll), tanpa perlu resistor/level-shifter tambahan dari Anda.
Rangkaian lengkap (nilai komponen persis, penomoran U93-U95/R91-R97/LED15-17) ada di Skematik Elektronik halaman 1 (Rangkaian Utama), kotak "INPUT 1/2/3".
Catatan GPIO35 (IN3): GPIO35 berbagi jalur dengan PSRAM mode OPI, tapi board ini dikonfigurasi qio_qspi (bukan qio_opi) — sengaja dipilih untuk menghindari bug watchdog reset di IDF 4.4.x saat mode OPI aktif, jadi GPIO35 aman dipakai IN3 selama konfigurasi ini dipertahankan.
Membaca Sensor Manual
R1 / R2 / R3
Baca IN1 / IN2 / IN3
IN1: HIGH
R5
Baca ketiganya + suhu
IN1:1 IN2:0 IN3:1
R1/R2/R3 membalas HIGH/LOW; R5 membalas 1/0 — beda format, jangan tertukar saat menulis parser.
Status live tanpa polling: ketiga sensor juga disiarkan otomatis di payload backdoor @RT (tiap 200ms) sebagai field in1/in2/in3 — RNV4 Studio memakai ini untuk indikator warna, tidak perlu kirim R1 berulang-ulang.
Sensor di Program SD — Dua Bentuk yang Berbeda
Bagian paling sering disalahpahami — ada dua sintaks dengan arti sangat berbeda:
IN1 H (tanpa >N)
TUNGGU — program berhenti di baris ini sampai kondisi terpenuhi
IN1 H >1 (pakai >N)
CEK SEKALI — kalau benar lompat ke label >1, kalau salah lanjut baris berikutnya
Bentuk TUNGGU — menahan program tanpa batas waktu sampai kondisi terpenuhi, cocok untuk "tunggu benda datang"/"tunggu operator tekan tombol". Robot tetap melayani suhu/kipas/servo/telemetri selama menunggu, dan bisa dibatalkan dengan R512/M18/M84:
IN1 H
G0 X0.000 Y223.590 Z25.000
G0 X0.000 Y223.590 Z175.000
Bentuk LOMPAT (percabangan/loop) — pengecekannya sesaat, cocok untuk sensor yang levelnya bertahan (bukan tombol momentary):
>1
G0 X0.000 Y223.590 Z175.000
G0 X0.000 Y223.590 Z25.000
IN1 H >1
Label & Kondisi Majemuk
Label adalah penanda tujuan lompatan (maksimal 20 per program). Sintaks RNV4 Studio otomatis diterjemahkan:
@LABEL 1
→ >1
@JUMP IN1 H 2
→ IN1 H >2
@JUMP IN1 H AND IN2 L 3
→ IN1 H AND IN2 L >3
Kondisi majemuk pakai AND/OR — AND lebih kuat dari OR (sama seperti bahasa pemrograman umum), dan tanda kurung tidak didukung:
IN1 H AND IN2 L
IN1 L OR IN2 H AND IN3 L ; dibaca: IN1 L OR (IN2 H AND IN3 L)
Probe Sentuh (G33 / R520)
⚠ Belum diuji di robot fisik
Fitur G33/R520 ada di firmware dan IN1 secara default dialokasikan untuknya (kalibrasi Z), tapi pemakaiannya sepenuhnya belum diuji di hardware nyata. Perlakukan sebagai eksperimental — jangan diandalkan untuk kalibrasi produksi sebelum diverifikasi sendiri, dan selalu cek polaritas trigger (lihat poin di bawah) sebelum mencoba.
IN1 punya fungsi kedua: probe kontak untuk kalibrasi kinematik.
G33 Z-20 F100 ; turun pelan sampai IN1 kontak, lalu berhenti seketika
M400 ; tunggu gerakan benar-benar selesai
R520 ; ambil hasilnya
Fwajib diisi, diclamp ke batas aman probe (default 5 mm/detik) — probe harus pelan supaya titik kontak akurat.- Polaritas wajib dicek dulu: kirim
R1saat probe belum tersentuh untuk konfirmasi level trigger yang benar sebelum dipakai — kalau terbalik,G33akan "trigger" seketika begitu dikirim. - Hasil
R520dikonsumsi sekali — panggilan kedua tanpaG33baru akan membalasPROBE:NONE. - Konflik pemakaian: kalau
IN1sudah dipakai sebagai sensor benda di program produksi, jangan sekaligus dipakai sebagai probe — pindahkan sensor benda keIN2/IN3.
Batasan & Jebakan
- Tidak ada debounce pada kondisi program — kondisi sensor di program SD membaca pin langsung tanpa debounce. Saklar mekanis yang memantul bisa memicu kondisi secara palsu; tambahkan kapasitor 100nF paralel dengan saklar, atau pakai sensor elektronik.
- Pulsa lebih pendek dari 50ms bisa terlewat — bentuk TUNGGU memeriksa sensor tiap 50ms.
- Bentuk lompat membaca sesaat — untuk "tunggu sampai ditekan", pakai bentuk TUNGGU, bukan bentuk lompat.
- Kondisi salah ketik diterima diam-diam — mis.
IN1HELLOdiperlakukan sebagaiIN1 H, sisanya diabaikan tanpa peringatan. - Sensor dibaca setelah gerakan selesai (disengaja) — robot berhenti sejenak di tiap baris sensor supaya kondisi dinilai berdasarkan posisi fisik robot, bukan posisi file.
- Menunggu tanpa batas waktu — bentuk TUNGGU tidak punya timeout, hentikan dengan
R512kalau perlu.
Contoh — Pick & Place dengan Sensor
>1
IN1 H ; tunggu benda terdeteksi
G0 X0.000 Y223.590 Z25.000 ; turun ke benda
M10 ; vacuum ON
G0 X0.000 Y223.590 Z175.000 ; angkat
G0 X150.000 Y200.000 Z175.000 ; pindah ke tujuan
G0 X150.000 Y200.000 Z25.000 ; turun
M11 ; vacuum OFF (lepas)
G0 X150.000 Y200.000 Z175.000 ; naik
IN2 L >1 ; selama tombol stop belum ditekan, ulangi
Diagnosa Cepat
Contoh Penggunaan (Alur Kerja Umum)
Rangkaian command G/M/R-code untuk beberapa alur kerja yang umum dipakai. Semua contoh mengasumsikan robot sudah selesai G28 (homing) setelah boot — wajib sebelum G0/G1/G2/G3 pertama kali.
Gerak Dasar & Homing
G28 ; wajib pertama kali setelah boot
G0 X100 Y150 Z50 ; rapid move, kecepatan otomatis maksimum
G1 X200 Y100 F600 ; gerak terkontrol, ≈10 mm/detik
M114 ; cek posisi saat ini
Pick & Place dengan Gripper Vacuum
G0 X100 Y150 Z50 ; pindah ke atas benda
G1 Z10 F300 ; turun pelan mendekati benda
M10 ; vacuum ON — benda terangkat
G1 Z50 F600 ; angkat
G0 X250 Y100 ; pindah ke titik taruh
G1 Z10 F300
M11 ; vacuum release — benda lepas
G1 Z50 F600
Jeda tunggu bawaan M10/M11 diatur field vacuum_on_dwell/vacuum_off_dwell (lihat Kalibrasi Hardware) — sesuaikan lewat R91 kalau benda berat/berpori.
Menggambar/Menulis dengan Gripper Pen
G0 X100 Y100 Z50 ; ke titik awal, pen masih di atas kertas
R30 ; pen DOWN — turun ke kertas
G1 X150 Y100 F300 ; gambar garis
G1 X150 Y150 F300
G1 X100 Y150 F300
R31 ; pen UP — angkat dari kertas
Gripper Servo Manual
R280 P2 S0 ; buka gripper (servo2 ke 0°)
R280 P2 S90 F60 ; tutup pelan — kecepatan custom 60°/s
R281 P2 ; cek posisi & status
R280 P1 S45 ; servo1 (rotasi gripper) ke 45°, kecepatan MAX
R281 P1
Untuk gerak XYZ + rotasi gripper bersamaan (bukan berurutan), pakai parameter S langsung di G0/G1 — lihat G-code.
Ajar & Mainkan Program dari SD Card
Alur "ajarkan titik satu-satu" lalu mainkan berulang — cocok untuk gerakan berulang (mis. pick & place di titik-titik tetap):
R500 pindah_kotak ; buat program baru, jadi program aktif
G0 X100 Y150 Z50 ; gerak manual ke titik 1 ...
R501 ; ... simpan command terakhir ke program
G1 Z10 F300
R501
M10
R501
G1 Z50 F600
R501
R502 ; tampilkan isi program aktif untuk dicek
R506 ; selesai — lepas program aktif (file tetap tersimpan)
R507 ; lihat daftar semua program tersimpan
R508 P1 ; mainkan program #1 sekali
R508 P1 X5 ; mainkan program #1 persis 5 kali
R512 ; hentikan playback yang sedang berjalan
R500/R501/R506 tidak membalas konfirmasi eksplisit kecuali error — gunakan R502/R507 untuk verifikasi isi.
Cek Posisi Saat Robot Sedang Bergerak
Query murni, aman dikirim kapan saja termasuk saat robot masih bergerak, tidak butuh homing:
R515 RL SR ; posisi X/Y/Z + rel (E) + servo1
R516 ; posisi servo1 & servo2 saat ini
Hubungkan WiFi
R22 untuk dipakai manual lewat serial monitor (percakapan bertahap, pilih SSID lalu ketik password):
R22
→ 1 (pilih nomor SSID dari hasil scan)
→ passwordwifi123 (ketik password jaringan)
R23 untuk dipanggil programatik dari app/UI (satu kali kirim JSON, non-blocking):
R23
→ {"ssid":"RumahWifi","pass":"passwordwifi123"}
Kalibrasi Hardware (hwConfig)
Perintah R90–R94, R99 membaca, mengedit, mereset, dan mengekspor/impor nilai kalibrasi per-unit yang tersimpan di flash internal (/hwconfig.json) — tidak perlu flash ulang firmware untuk mengubahnya.
Konsep Dasar
Nilai di hwConfigDefaults.h hanya aktif jika /hwconfig.json belum ada. Setelah R90 pertama kali dijalankan, nilai default disalin ke flash — selanjutnya yang terbaca saat boot adalah nilai dari flash.
Perintah
R90
Tampilkan semua nilai konfigurasi aktif (inisialisasi flash kalau belum ada)
R91
Edit satu field — alur interaktif: pilih nomor field → ketik nilai baru (timeout 30 detik/langkah)
R92
Reset semua ke factory default — wajib konfirmasi ketik YES
R93
Ekspor seluruh hwConfig sebagai JSON compact (untuk RNV4 Studio/GUI eksternal)
R94
Impor hwConfig dari JSON (bulk set) — partial update didukung, field yang tidak disebut tetap nilai lama
R99
Baca/set nomor seri robot — BUKAN bagian hwConfig, disimpan terpisah, butuh password produksi untuk diubah
Daftar Field (R91)
44 field aktif (bernomor 1–45 — nomor 32 sengaja kosong, bekas blynk_auth_token yang dihapus bersama modul Blynk dari firmware, nomor lain sengaja tidak digeser), dikelompokkan per kategori. Field bertanda reboot baru aktif setelah robot restart — sisanya efek langsung.
cal_x_scale, cal_y_scale
Koreksi skala sumbu X/Y (1.0 = tanpa koreksi)
cal_xy_skew_pos/neg
mm Y per mm X, saat bergerak ke arah X+/X−
cal_zy_coupling_pos/neg
mm Z per mm Y, saat bergerak ke arah Y+/Y−
cal_yz_coupling_pos/neg
mm Y per mm Z, saat bergerak ke arah Z+/Z−
cal_zx_coupling_pos/neg
mm Z per mm X, saat bergerak ke arah X+/X− — kompensasi kemiringan sumbu putar base
x/y/z/e0_home_steps
Step dari endstop tiap axis ke posisi INITIAL
landing_x_steps
Step dari endstop X ke posisi landing HIGH_SHANK (M20/R20)
temp_fan_low/high
°C — histeresis fan AUTO mati/nyala (field 15 harus > field 14)
temp_check_interval_ms
ms — interval baca suhu
pen_down_z, pen_up_z, pen_down_dwell, pen_down_speed
Posisi Z & waktu tunda/kecepatan turunkan pen (R30)
pen_up_dwell, pen_up_speed
Waktu tunda/kecepatan naikkan pen (R31)
microsteps
Microstepping (1/2/4/8/16/32)reboot
steps_per_rev
Step per putaran motor (biasanya 200)reboot
inverse_x/y/z/e0_stepper
Balik arah motor per axis (0=normal, 1=balik)reboot
steps_per_mm_rail
Step per mm pergerakan relreboot
rail_length
Panjang maksimal rel (mm)reboot
rail_enabled
0=tanpa rel, 1=pakai relreboot
servo1_default_pos, servo1_speed, servo1_min/max_pos
Default 90,0° / 60,0°/s / 0–180° — servo1 (rotasi end-effector)
servo2_default_pos, servo2_min/max_pos
Default 90,0° / 30–120° — servo2 (gripper)
servo1_max_speed, servo2_max_speed
Default 330,0°/s / 300,0°/s — sesuaikan ke spek servo fisik
vacuum_on_dwell, vacuum_off_dwell
ms — jeda tunggu bawaan M10 (hisap) / M11 (lepas) sebelum command berikutnya dieksekusi
Contoh — Kalibrasi Ulang Skala Sumbu X
Kirim G2 I50 J0, ukur diameter hasil di sumbu X (misal terukur 102mm, harusnya 100mm):
cal_x_scale_baru = 100 / 102 = 0.9804
R91
→ 1 (pilih field cal_x_scale)
→ 0.9804 (nilai baru, aktif langsung)
Catatan Penting
- Satu field per sesi
R91— untuk ubah banyak field sekaligus, pakaiR94(JSON bulk set). - Timeout 30 detik berlaku di tiap langkah input (R91/R92/R94/R99) — kalau timeout, tidak ada perubahan.
R99(nomor seri) terpisah dari hwConfig — tidak ikut ter-reset olehR92.
Tutorial
Setup Akun & Token API
Langkah pertama sebelum bisa mengontrol robot dari PC: unduh & instal RNV4 Studio, lalu hubungkan ke akun web Anda pakai Token API (bukan username/password) — token inilah yang mengizinkan Studio bicara ke server atas nama akun Anda.
Prasyarat
- 1
-
2
Buka folder hasil unduhan
Cari file RNV4Studio-Setup.exe, lalu jalankan.
-
3
Kalau muncul peringatan Windows
Windows SmartScreen menandai installer belum bersertifikat code-signing resmi — klik “More info”.
-
4
Klik “Run anyway”
Installer aman, cuma belum ditandatangani sertifikat berbayar Microsoft — lanjutkan instalasi.
-
5
Klik Install
-
6
Klik Next
-
7
Klik Next lagi
-
8
Klik Yes
Konfirmasi izin instalasi Windows (UAC).
-
9
Tunggu hingga selesai
-
10
Klik Finish
RNV4 Studio otomatis terbuka setelah instalasi selesai.
-
11
Wajib login pakai Token API
Sejak versi terbaru, RNV4 Studio mewajibkan akun aktif — dialog “Login diperlukan” muncul otomatis saat pertama kali dibuka.
-
12
Belum punya token? Klik link ke dashboard
Klik “Belum punya token? Daftar/Masuk di ruskomponen.uk” untuk membuka dashboard akun di browser.
-
13
Daftar atau masuk
Kalau belum punya akun, daftar dulu. Kalau sudah punya, langsung masuk.
-
14
Buka tab Developer
Di dashboard web, buka tab Developer lalu klik “Buat Token Pertama” (atau “Buat Token Baru” kalau sudah pernah punya token lain).
-
15
Beri nama token
Nama bebas sesuai keinginan (mis. “Laptop Kerja”) — cuma label pengingat, tidak mempengaruhi fungsi token.
-
16
Salin token
Token cuma ditampilkan SEKALI saat dibuat — salin sekarang sebelum menutup dialog.
-
17
Tempel token di RNV4 Studio
Kembali ke RNV4 Studio, tempel token di kolom yang tersedia, lalu klik Masuk.
Troubleshooting
Catatan Penting
- Token ini bersifat rahasia — jaga baik-baik seperti password, jangan bagikan ke siapa pun. Siapa saja yang memegang token ini bisa mengakses akun Anda lewat RNV4 Studio.
- Token bisa dicabut/dibuat ulang kapan saja dari tab Developer kalau dicurigai bocor, tanpa perlu update aplikasi.
- 1 token bisa dipakai di beberapa PC/Studio sekaligus — tidak wajib buat token baru tiap install ulang, cukup salin token yang sama.
Klaim Robot ke Akun
Setelah RNV4 Studio terhubung ke akun (lihat Setup Akun & Token API di atas), Anda bisa "mengklaim" robot fisik ke akun itu satu kali lewat kode klaim sekali-pakai. Langkah ini opsional — bukan syarat wajib untuk mengontrol robot lewat USB/RNV4 Studio seperti biasa — tapi diperlukan kalau ingin memakai fitur yang terhubung ke akun dan bisa diakses dari jarak jauh lewat internet (mis. AI Doodle).
-
1
Hubungkan robot lewat USB
Colokkan robot ke PC, pilih Port yang sesuai lalu klik Konek — lihat detail lengkap di tutorial Koneksi ke RNV4 Studio di bawah.
-
2
Klik tombol Klaim Robot
Tombol ada di bagian atas jendela Studio, di samping tombol Konek.
-
3
Klik Minta Kode Klaim
Robot ID akan terisi otomatis sesuai robot yang sedang tersambung.
-
4
Salin kode klaim
Kode berlaku 10 menit sejak diminta — pastikan PC terhubung internet supaya kode berhasil diminta ke server.
-
5
Buka tab Robot Saya, klik Tambah Robot
Di dashboard web (app.ruskomponen.uk), buka tab Robot Saya.
-
6
Tempel kode klaim
Bukan Robot ID — tempel kode klaim 8 karakter yang disalin dari Studio tadi, lalu klik Tambahkan.
-
7
Selesai — robot terdaftar
Robot muncul di daftar Robot Saya, siap dipakai (AI Doodle, dll).
Troubleshooting
Catatan Penting
- Kode klaim cuma bisa dipakai sekali — kalau kadaluarsa (lewat 10 menit) atau salah tempel, kembali ke Studio dan klik "Minta Kode Baru".
- Robot yang sudah diklaim akun lain tidak bisa diklaim ulang oleh akun Anda — hubungi pemilik sebelumnya atau tim support kalau ini terjadi pada robot yang seharusnya milik Anda.
- Satu robot cuma bisa terhubung ke satu akun pada satu waktu — lepas dulu dari tab Robot Saya kalau mau pindah kepemilikan.
Menghubungkan Robot ke RNV4 Studio
Robot terhubung ke RNV4 Studio lewat kabel USB (native USB CDC ESP32-S3) — bukan WiFi. Berikut langkah lengkapnya beserta cara mengatasi masalah umum.
Prasyarat
Area yang ditandai kotak hijau (pojok kiri atas) — dropdown Port, Baud, ikon muat ulang (di antara Baud dan tombol Konek — tekan ini kalau port belum muncul), dan tombol Konek — dipakai di langkah 3–5 di bawah. Port di contoh ini terdeteksi otomatis sebagai COM4 🤖 ESP32 (RNV4?) — nomor COM di perangkat Anda bisa berbeda.
-
1
Pasang kabel USB dari robot ke PC/laptop
Tunggu Windows selesai mengenali device (biasanya muncul sebagai COMx).
-
2
Buka RNV4 Studio
-
3
Pilih Port robot
Robot ESP32-S3 otomatis terdeteksi di dropdown Port dengan tanda 🤖 ESP32 (RNV4?) — tanda tanya berarti baru tebakan dari jenis chip USB-nya, belum dipastikan itu benar-benar robot RNV4 sampai berhasil konek. Kalau port belum muncul, tekan ikon muat ulang (di sebelah dropdown Port) atau lepas-pasang ulang kabel USB.
-
4
Pastikan Baud = 115200
Ini nilai default dan wajib sama dengan konfigurasi firmware — jangan diubah kecuali firmware juga diubah.
-
5
Klik tombol Konek
Tombol biru di sebelah kanan field Baud.
-
6
Tunggu ±2 detik
Tombol menampilkan animasi spinner — ini bukan hang, tapi jeda sengaja supaya ESP32-S3 selesai boot dulu sebelum mulai menerima perintah.
-
7
Koneksi berhasil
Tombol berubah jadi Putus (merah), status menunjukkan device + baud rate yang terhubung, dan label Port otomatis berganti dari tanda tanya (RNV4?) jadi ID robot sungguhan (mis. 🤖 RNV4-00004-F6D64450) — dikonfirmasi langsung dari robotnya, bukan tebakan lagi.
Troubleshooting
Catatan Penting
- Fitur auto-connect WiFi (kalau ada) adalah jalur terpisah dari koneksi USB ini — dipakai untuk fitur lain (mis. pemantauan jarak jauh), bukan jalur kontrol utama G-code.
- Untuk memasang firmware lewat USB dari Studio (menu Flash Firmware): proses akan disconnect serial dulu, flash firmware, baru reconnect otomatis — jangan cabut USB selama proses ini berlangsung.
Membuat Program di SD Card
Alur kerja "teach & playback" — gerakkan robot manual (jog), simpan posisi sebagai titik program, lalu putar ulang otomatis. Setelah tersimpan di SD card, robot tidak lagi bergantung pada RNV4 Studio untuk menjalankannya — cocok untuk pemakaian mandiri di lapangan (mis. line produksi pick-and-place yang jalan terus-menerus) tanpa perlu laptop/PC tersambung sepanjang waktu. Catatan: alur ini khusus gerakan yang diajarkan manual — fitur plotter AI Doodle tetap memerlukan RNV4 Studio terhubung.
-
1
Buat program baru
R500 PickAndPlace1Program baru langsung jadi "program aktif". Program lain yang sudah ada di SD tidak terpengaruh.
-
2
Gerakkan robot & simpan titik
Untuk tiap posisi yang ingin direkam: gerakkan robot ke posisi yang diinginkan (manual jog, atau kirim
G0 X.. Y.. Z..), lalu simpan:R518 ← simpan posisi saat ini (+ servo1 kalau perlu)atau kalau mau menyimpan command G/M terakhir apa adanya:
R501 ← tambahkan command terakhir ke program aktifKalau perlu vacuum/gripper di titik itu, kirim
M10/M11(atauR519untuk gripper) sebelum atau sesudah titik disimpan. -
3
Cek isi program
R502Menampilkan semua baris yang sudah tersimpan di program aktif, sebelum dijalankan.
-
4
Edit kalau perlu
Sisipkan command di posisi tertentuR503 P<posisi>Hapus baris tertentuR504 P<line>Pindah baris naik/turunR504 P<line> UP / DOWNKosongkan semua & mulai ulangR505 CONFIRMTempel banyak baris sekaligusR513 (mode paste) -
5
Tutup program
R506Melepas status "aktif" tanpa menghapus isi — program tetap tersimpan di SD.
-
6
Jalankan program
R507 ← lihat daftar semua program tersimpan (dapatkan nomornya) R508 P1 ← jalankan program nomor 1, sekali R508 P1 X5 ← jalankan program nomor 1, 5 kali loop R511 S1 ← aktifkan mode loop terus-menerus (sampai R512) R512 ← stop playback kapan saja -
7
Edit program yang sudah tersimpan
R510 P1 ← buka program #1 untuk diedit (jadi program aktif lagi)Lanjutkan dengan R501/R503/R504/R518 seperti biasa, lalu
R506untuk menutup lagi.
FAQ & Troubleshooting Umum
Kumpulan masalah paling sering ditanyakan, dirangkum dari tabel troubleshooting yang tersebar di tiap section — kalau masalah Anda tidak ada di sini, cek tabel lengkap di section yang ditautkan.
Masalah Umum
Pertanyaan Umum
Harus bisa coding untuk pakai robot ini?
Tidak. Kontrol dasar — jog, teach program, ganti gripper — sepenuhnya lewat GUI RNV4 Studio. G/M/R-code hanya diperlukan kalau ingin pengembangan custom, lihat Pengembangan & Ekstensi Kustom.
Robot bisa dipakai tanpa internet sama sekali?
Bisa, untuk kontrol manual dan menjalankan program yang sudah tersimpan di SD card — lihat R-code Program SD. Fitur AI Doodle Photo butuh internet karena prosesnya real-time lewat server, bukan program tersimpan.
Kalau PC/laptop mati saat robot sedang menjalankan program dari SD, robot ikut berhenti?
Tidak, untuk program manual yang sudah tersimpan di SD card robot tetap jalan sendiri tanpa Studio terhubung. Beda dengan AI Doodle yang memang butuh Studio terhubung terus selama prosesnya.
Update firmware berisiko bikin robot rusak (brick)?
Firmware dipasang lewat RNV4 Studio dengan kabel USB (menu Flash Firmware). Tidak ada pembaruan nirkabel, jadi prosesnya tidak terganggu oleh sinyal yang terputus.
G33/R520, sensor IN1–IN3 yang langsung di papan, serta pengaturan suhu dan kipas lewat firmware. Lihat tab RNV4: Sensor Digital (RNV4) · Kalibrasi (RNV4)
Spesifikasi Satu Layar
Intinya: RNV4H2 adalah lengan robot SCARA berpenggerak TMC2209 dengan encoder di tiga sendi; semua angka pentingnya ada di satu layar ini.
Otak dan penyimpanan
- Pengendali
- ESP32-S3-WROOM-1 N16R8 (16 MB flash, 8 MB PSRAM)
- Penyimpanan program
- SD card (teach & playback)
Gerak
- Driver motor
- TMC2209 (X/Y/Z, lewat UART) · DRV8825 (rel)
- Motor
- NEMA17, 200 langkah/putaran, microstep 16
- Reduksi
- 15:1 (bahu, siku, rotasi base)
- Encoder
- AS5600 di 3 sendi (lewat multiplexer I2C)
Ukuran dan berat
- Tinggi (posisi awal)
- 369,89 mm
- Tinggi (maksimum)
- 446,57 mm
- Lebar (termasuk rel)
- 445,60 mm
- Berat
- 5 kg (termasuk rel)
Kemampuan kerja
- Beban maksimal (payload)
- 500 gram
- Jangkauan radial
- 113,03 – 329,72 mm
- Jangkauan tinggi (Z)
- −140 sampai 245 mm
- Catu daya
- 12 V DC, 10 A (maks)
Komunikasi
- Ke komputer
- USB (RNV4 Studio)
- Nirkabel
- Bluetooth BLE (profil NUS)
- Ke modul eksternal
- RS-485 lewat UART0
Firmware dan kontrol
- Pasang firmware
- Lewat USB dari RNV4 Studio (Flash Firmware)
- Bahasa perintah
- G-code (mirip Marlin) + R-code
Peta sistem
Komputer atau HP berbicara ke robot lewat USB atau Bluetooth. Robot memakai satu jalur RS-485 (UART0) untuk modul IO, yang punya sensor dan relay sendiri.
Mulai dari Nol
Intinya: Urutannya: rakit, cek kabel, sambung daya, colok USB, buka Studio, pasang firmware, cek driver (R530 harus 3/3), G28, lalu coba gerak.
⚠ Sebelum mulai
Pasang atau cabut modul TMC2209 hanya saat daya mati, dan pastikan ruang di sekitar lengan bebas sebelum G28.
-
1
Rakit robot dari kemasannya
Keluarkan lengan, rel, dan gripper dari styrofoam lalu pasang sesuai isi kemasan (lihat Kemasan & Styrofoam). Pasang tiga modul TMC2209 dalam keadaan daya mati dan cek alamatnya (X = 0, Y = 1, Z = 2).
✓ Tanda berhasil: Semua bagian terpasang kokoh dan ketiga modul TMC2209 terpasang rapat dengan alamat yang berbeda.
✗ Kalau gagal: Lihat Motor & Driver Listrik untuk alamat dan cara memasang modul.
-
2
Cek semua kabel
Cocokkan kabel dengan label di panel belakang dan lengan atas: motor rel ke
MOTOR RAIL, gripper keGRIPPER SERVOatau selang keGRIPPER VACUM. Kalau memakai modul IO, ikuti bagian Modul Eksternal.✓ Tanda berhasil: Tidak ada kabel yang tertukar atau menggantung; semua cocok dengan label pada konektor.
✗ Kalau gagal: Lihat gambar dan tabel di Pin & Wiring.
-
3
Sambungkan daya 12 V
Colok adaptor 12 V ke jack
IN 12 VOLTdi panel belakang, lalu tekan tombolON/OFF.✓ Tanda berhasil: Robot menyala dan, di langkah berikutnya, komputer mengenali robot.
✗ Kalau gagal: Periksa adaptor (catu maksimum 12 V DC, 10 A) dan sambungan jack; lihat Spesifikasi Satu Layar.
-
4
Colok kabel USB
Sambungkan kabel USB tipe B dari konektor
USBdi panel belakang ke komputer.✓ Tanda berhasil: RNV4 Studio menampilkan port robot di kotak Port (contoh:
COM19, ESP32).✗ Kalau gagal: Coba kabel USB lain (pakai kabel data); lihat tabel pemecahan masalah di Koneksi ke RNV4 Studio.
-
5
Buka RNV4 Studio dan klik Konek
Pilih port robot, atur baud
115200, lalu klik Konek.✓ Tanda berhasil: Status di Studio berubah dari “Tidak terhubung” menjadi terhubung.
✗ Kalau gagal: Ikuti langkah di Koneksi ke RNV4 Studio.
-
6
Pasang firmware (Flash Firmware)
Di Studio pilih Flash Firmware. Firmware dipasang lewat kabel USB (tidak ada pembaruan nirkabel): Studio memutus serial, memasang firmware, lalu tersambung kembali otomatis. Jangan cabut USB selama proses.
✓ Tanda berhasil: Studio tersambung lagi sendiri dan perintah
M115membalas info firmware.✗ Kalau gagal: Ulangi dengan kabel USB lain; lihat Koneksi ke RNV4 Studio dan FAQ.
-
7
Cek driver motor: R530
Kirim
R530dari kolom G-code di Studio.✓ Tanda berhasil: Balasan menyebut 3/3 driver menjawab.
✗ Kalau gagal: Kalau kurang dari 3/3, motor dikunci dan LED ungu berkedip. Periksa modul TMC2209 terpasang, tegangan logika (VIO), dan alamatnya; lihat Gejala & Solusi.
-
8
Home robot: G28 ⚠
Pastikan ruang di sekitar lengan bebas, lalu kirim
G28. ⚠ Lengan akan bergerak.✓ Tanda berhasil: Homing selesai tanpa pesan error dan
R50melaporkan robot siap.✗ Kalau gagal: Pesan “Robot not calibrated. Send G28 first.” berarti robot belum di-Home; homing yang gagal ditandai LED ungu berkedip. Lihat Motor & Driver Listrik dan Kalibrasi (hwConfig).
-
9
Coba gerak
Pakai tombol jog di Studio, atau kirim
G0 X0 Y250.05 Z175(posisi awal). Lalu kirimR515untuk membaca posisi.✓ Tanda berhasil:
R515menampilkan posisi yang sesuai dengan perintah gerak.✗ Kalau gagal: Kalau gerakan ditolak atau robot diam, lihat Gejala & Solusi.
Mekanik & Elektrik
Dimensi & Desain
Intinya: Tinggi 369,89 mm saat posisi awal (446,57 mm maksimum) dan lebar 445,60 mm termasuk rel.
Kiri: posisi awal (home). Kanan: lengan terentang ke posisi tertinggi.
Kapasitas Beban (Payload)
Intinya: Beban maksimal robot adalah 500 gram.
500gram
Beban Maksimal (Payload)
Beban maksimal yang dapat diangkat ujung lengan (end-effector) robot. Melebihi batas ini berisiko mengganggu presisi gerakan atau membebani motor & gearbox secara berlebihan.
Rekomendasi: pelankan gerakan untuk beban mendekati batas maksimal
G0 (rapid move) selalu bergerak di kecepatan maksimum otomatis dan
mengabaikan parameter F — cocok untuk beban ringan/tanpa beban, tapi berisiko
membuat beban berat berayun/oleng atau motor kehilangan langkah (step) saat mendekati 500 gram.
Untuk beban berat, gunakan G1 dengan parameter F
(feedrate, mm/menit) yang jauh lebih rendah dari biasanya, mis.:
G1 X100 Y200 F300 ; ≈5 mm/detik — pelan
G1 X100 Y200 F600 ; ≈10 mm/detik — sedang
Nilai F yang aman tergantung berat & bentuk beban Anda — mulai dari nilai rendah lalu naikkan bertahap sambil diamati, bukan langsung dipakai di kecepatan tinggi.
Gripper & End-Effector
Intinya: Ada tiga jenis gripper: servo untuk menjepit, pena untuk menulis atau menggambar, dan vakum untuk mengangkat dengan hisapan.
Setiap RNV4 sudah dilengkapi 3 jenis gripper (gripper servo/mencapit, gripper pen, gripper vacuum) — semuanya plug and play: baut, mounting, dan kelengkapan pemasangan lain sudah disediakan di dalam paket. Tidak perlu beli terpisah atau merakit dari komponen mentah, tinggal pasang di ujung lengan sesuai kebutuhan pekerjaan.
Gripper servo — mencapit benda.
Gripper pen — menulis/menggambar.
Gripper vacuum — pompa sudah terpasang di bodi.
Gripper Servo — Mencapit & Rotasi 0°–180°
Capitan digerakkan servo, bisa dibuka-tutup untuk menjepit benda, dan seluruh unit gripper bisa berotasi 0°–180° (titik tengah 90°) untuk mengatur sudut jepitan sesuai orientasi benda.
Terbuka maksimal — jarak capit ±32,55 mm.
Tertutup — posisi mencapit.
Rotasi 0°–180°, titik tengah 90°.
Bukaan capit bisa dikustom
Jarak bukaan bawaan (±32,55 mm) cukup untuk kebanyakan benda kecil-sedang. Kalau kebutuhan Anda mencapit benda yang lebih besar dari bukaan standar, bentuk capit bisa dikustom sesuai kebutuhan — silakan hubungi/diskusikan dengan admin untuk kebutuhan spesifik ini.
Gripper Vacuum — Pompa Sudah Terpasang di Bodi
Berbeda dari gripper servo/pen, gripper vacuum butuh sumber hisapan (pompa). Pada RNV4, pompa vakum sudah terpasang di dalam bodi robot dari pabrik — Anda tidak perlu memasang atau mengkabel pompa terpisah, tinggal pasang ujung gripper vacuum ke lengan dan langsung bisa dipakai.
Perkiraan ukuran & jarak gripper vacuum dari sambungan lengan (satuan mm).
Dimensi Dudukan — untuk Gripper/Mount Custom
Pola lubang baut di ujung lengan (dudukan bawaan untuk gripper pen) — dipakai kalau Anda ingin merancang gripper atau mount custom sendiri (bukan dari 3 pilihan bawaan) yang menempel langsung ke ujung lengan robot.
Tampak depan (kiri) & 3D (kanan) dudukan gripper di ujung lengan — satuan mm.
17,80 mm
23,60 mm
21,40 mm
Perhatikan pola 4 lubang baut ini bukan persegi panjang sempurna (jarak atas dan bawah beda, 17,80mm vs 23,60mm) — pastikan mount custom Anda mengikuti pola trapesium ini, bukan diasumsikan simetris.
Kemasan & Styrofoam Pelindung
Intinya: Robot dikirim dalam kardus 50 × 50 × 20 cm dengan styrofoam yang dibentuk mengikuti bagian-bagian robot.
Robot dikemas dalam styrofoam custom yang dibentuk mengikuti kontur bodi & lengan, dipasang rapat di dalam kardus 50 × 50 × 20 cm.
Styrofoam dibuka sebagian — robot terlihat terkunci rapat di dalamnya.
Bentuk styrofoam custom, dicetak mengikuti kontur tiap komponen robot.
Foto Kemasan Asli
Contoh kemasan sungguhan yang dikirim ke pembeli — foto langsung dari unit yang sudah dikemas, bukan render.
Kardus pengiriman — dilapisi lakban FRAGILE di semua sisi.
Sisi lain kardus, lengkap simbol penanganan (fragile, lindungi dari air).
Dibungkus plastik wrap tambahan sebagai lapisan pelindung ekstra saat pengiriman.
Bagian dalam setelah dibuka — slot styrofoam terpisah untuk tiap komponen.
Robot terkunci rapat di styrofoam, lengkap kabel & aksesori dalam kantong terpisah.
Sudut lain — gripper cadangan & kelengkapan lain yang ikut dikemas.
Lapisan atas — komponen pendamping tertata dalam slot styrofoam masing-masing.
Lapisan bawah — rangka robot terkunci di styrofoam, lengkap dengan kabel, gripper, dan silica gel.
Isi Paket
Isi paket dapat berubah sewaktu-waktu — rujukan resmi & terbaru selalu di halaman produk /belanja.
Garansi
3 bulan untuk kerusakan pabrik/produksi — biaya servis gratis.
Di luar cakupan (kelalaian pengguna, mis. salah tegangan atau salah pemakaian): tetap dilayani, cukup bayar komponen yang rusak tanpa biaya jasa servis.
Syarat klaim: hubungi lewat WhatsApp/email dengan bukti pembelian, unit dikirim ke alamat yang diarahkan admin, biaya pengiriman klaim ditanggung pembeli. Detail lengkap di Syarat Layanan.
Kinematika & Geometri Lengan
Intinya: Ujung lengan menjangkau radius 113,03–329,72 mm dengan tinggi Z −140 sampai 245 mm.
Metode: Geometric closed-form IK (bukan Jacobian/iteratif) — semua sudut dihitung langsung dari trigonometri (law of cosines), deterministik dan cepat.
Dimensi Mekanis (config.h)
LOW_SHANK_LENGTH
175,0 mm
Panjang lengan bawah (bahu → siku)
HIGH_SHANK_LENGTH
175,0 mm
Panjang lengan atas (siku → ujung)
END_EFFECTOR_OFFSET
48,59 mm
Offset dari ujung lengan atas ke pusat end-effector
INITIAL_X
0,0 mm
Posisi X saat home
INITIAL_Y
223,59 mm
HIGH_SHANK + EE_OFFSET (175 + 48,59)
INITIAL_Z
175,0 mm
LOW_SHANK_LENGTH (lengan bawah vertikal saat home)
Sistem Koordinat
X
Kiri / Kanan
Lateral dari posisi home
Y
Depan (jarak horizontal dari base)
Y > 0 = di depan robot
Z
Vertikal
Z naik = joint shoulder naik
Batasan Workspace
Rumus IK (robotGeometry.cpp :: calculateGrad())
r_ee = √(x² + y²)
r_rot = r_ee − EE_OFFSET
r_side = √(r_rot² + z²)
θ_rot = asin(x / r_ee) → motor stepperRotate (Z)
θ_elbow = acos((L_low² + L_high² − r_side²) / (2·L_low·L_high))
θ_high = π − θ_elbow
θ_low = acos(z / r_side) − acos((L_low² − L_high² + r_side²) / (2·L_low·r_side)) → motor stepperLower (Y)
stepperHigher (X) = θ_high + θ_low (sudut absolut, karena siku "menunggangi" bahu)
Gearbox & Transmisi
Intinya: Reduksi 15:1 untuk bahu, siku, dan rotasi base (tahap 60:12 lalu 90:30), sama dengan RNV4.
Compound timing belt drive 2-stage (bukan gear mesh langsung), rasio total 15:1. Berlaku untuk axis X, Y, Z — tidak berlaku untuk E0 (rel), yang punya jalur konversi mm sendiri.
Motor (12T) --Belt A (150mm, 75T)--> Jackshaft (60T/30T) --Belt B (230mm, 115T)--> Sendi (90T)
5 : 1 3 : 1
Total = 5 × 3 = 15 : 1
Spesifikasi
Konstanta Firmware (config.h)
#define MOTOR_GEAR_TEETH 12.0
#define MAIN_GEAR_TEETH 180.0 // BUKAN 90 — ini rasio efektif (12 × 15), bukan gigi fisik pulley sendi
RampsStepper (RampsStepper.cpp) hanya mengenal satu rasio tunggal
MAIN_GEAR_TEETH / MOTOR_GEAR_TEETH — tidak tahu ada jackshaft. Kalau rasio
berubah lagi, hitung ulang MAIN_GEAR_TEETH = MOTOR_GEAR_TEETH × rasio_total_baru.
radToStepFactor = (MAIN_GEAR_TEETH / MOTOR_GEAR_TEETH) × (MICROSTEPS × STEPS_PER_REV) / (2π)
= 15 × (16 × 200) / (2π)
≈ 7639,4 step/radian
Torsi Desain (sendi Y, lengan bawah — beban terberat)
Motor & Driver Listrik
Intinya: Sendi X/Y/Z memakai TMC2209 yang arusnya disetel dari software; rel memakai DRV8825 yang arusnya diatur trimpot.
⚠ Pasang atau cabut TMC2209 hanya saat daya mati
Mencabut atau memasang modul TMC2209 saat daya motor hidup dapat merusak driver. Matikan robot dulu.
Ringkasan
- Sendi lengan (X/Y/Z) memakai TMC2209 yang diajak bicara lewat satu bus UART. Arus motor, arus tahan, dan deteksi tabrakan semua diatur dari software, tanpa memutar trimpot.
- Rel (E0) TIDAK berubah dari RNV4 lama: tetap DRV8825 terpisah, tanpa UART, arus lewat trimpot. Jangan mencari pengaturan arus rel di software — tidak ada.
- Nomor pin tiap driver ada di bagian Tabel Pin GPIO.
Motor dan mekanik
Catatan: motor rotasi base di rangka ini lebih pendek daripada motor bahu dan siku, sehingga torsinya lebih kecil pada arus yang sama. Karena itu arus bawaannya sengaja berbeda (lihat Arus motor).
Catu daya dan bus UART TMC2209
- Tiga TMC2209 berbagi satu bus UART (TX lewat resistor 1 kΩ, RX terpisah). Setiap driver dibedakan oleh alamat yang di-strap di modulnya: X = 0, Y = 1, Z = 2. Alamat 3 dikosongkan.
- Jika dua modul beralamat sama, keduanya menjawab bersamaan dan bus kacau. Periksa strap alamat (MS1/MS2) sebelum menyalakan.
- Kalau tidak satu pun driver menjawab di bus, robot menolak menyalakan motor dan LED berkedip ungu. Ini pengaman, bukan kerusakan — penyebab tersering: modul TMC2209 belum terpasang, tegangan logika (VIO) tidak ada, atau alamat salah.
- Pasang modul TMC2209 dalam keadaan daya mati. Mencabut/memasang modul saat daya motor hidup dapat merusak driver.
Arus motor (TMC2209)
Arus diatur per sendi, dalam mA RMS:
- Nilai di luar rentang dijepit otomatis, tidak ditolak diam-diam.
- Resistor sense modul diasumsikan 0,11 Ω (umum pada modul TMC2209 model SilentStepStick). Periksa modul yang Anda pakai — kalau resistornya lain, arus sebenarnya akan berbeda dari angka yang diatur.
- Batas atas 1200 mA bukan batas chip, melainkan batas termal yang wajar untuk driver tanpa kipas paksa. Arus terlalu tinggi tidak gagal seketika: driver memanas sampai proteksi suhu menurunkan arus di tengah gerakan, dan langkah yang hilang di situ terlihat seperti masalah mekanik.
- Cara tuning: mulai dari bawaan, naikkan bertahap hanya bila motor kehilangan langkah menahan beban. Jangan langsung ke arus nominal motor.
Arus tahan (saat diam)
Setelah robot diam beberapa saat, arus turun otomatis agar motor dan driver tidak panas terus.
Sendi yang menahan beban (terutama bahu) sebaiknya jangan diturunkan terlalu rendah.
Mode gerak dan kehalusan
- Mode bawaan saat bergerak: SpreadCycle (torsi lebih besar, sedikit lebih berisik). Mode lain bisa dicoba lewat perintah
R553(lihat bagian R-code). - Bila ada bunyi "duk" berulang tiap beberapa ratus langkah pada motor X/Y, itu getaran kasar saat berputar, bukan langkah yang hilang. Periksa dahulu arus, kekencangan bracket/kopling motor, dan coba matikan Bluetooth (
R24 S0) untuk membedakan penyebabnya.
Deteksi tabrakan (StallGuard) dan homing
- X/Y/Z tidak memiliki limit switch. Pin DIAG tiap TMC2209 dipakai sebagai sinyal "motor tertahan" (StallGuard).
G28memakai encoder bila acuan home sudah terisi, atau menabrak stopper mekanik dan mendeteksinya lewat StallGuard bila belum.- Ambang deteksi bawaan per sendi (angka lebih besar = lebih mudah terpicu = tabrakan lebih ringan): bahu 90, siku 80, base 50. Sapuan kalibrasi memakai ambang sendiri: 100 / 80 / 50.
- StallGuard hanya valid saat motor berputar dan nilainya bergantung pada kecepatan dan arus. Mengubah arus atau kecepatan homing berarti ambang perlu diukur ulang (
R531). - Rel memakai limit switch mekanis, bukan StallGuard.
Rel (E0) — DRV8825
- Driver terpisah, tanpa UART. Tidak ada deteksi tabrakan; homing lewat limit switch (aktif-LOW).
- Arus diatur trimpot (Vref) di modul DRV8825, bukan software. Rumus praktis: arus batas ≈ Vref × 2 (A). Setel dengan multimeter, daya motor menyala, tanpa beban mekanis.
- Microstep rel ditentukan oleh pin MS1/MS2/MS3 pada modul (hardware), bukan lewat perintah.
- Jangan menyalakan rel lebih panas dari yang dibutuhkan: DRV8825 tanpa pendingin kecil cepat panas pada arus tinggi.
Mengaktifkan dan mematikan motor
M17mengaktifkan motor,M18mematikan.- Pin ENABLE Y/Z/E0 digabung menjadi satu jalur. Karena itu setiap TMC2209 juga diaktifkan/dimatikan lewat UART — motor baru menyala bila kedua syarat terpenuhi. Rel (E0) hanya punya syarat pin ENABLE karena tanpa UART.
- Saat motor mati, lengan bisa digerakkan tangan; encoder tetap membaca sudut.
Diagnosa
R530
Cek bus UART: berapa dari 3 driver yang menjawab (target 3/3)
R558
Lihat arus yang dipakai driver saat ini dan pengaturan arus tahan
R531 P1
Tuning StallGuard satu sendi
R553
Pilih mode gerak (StealthChop/SpreadCycle/hibrida)
R90 / R91
Baca / ubah pengaturan arus, microstep, ambang
Urutan bring-up yang disarankan untuk board baru:
- Pasang ketiga modul TMC2209 (daya mati), cek alamat strap.
- Nyalakan;
R530harus melapor 3/3. - Baru
G28.
Gejala umum:
R530 < 3/3: driver belum terpasang, VIO tidak ada, atau alamat sama
Pin & Wiring
Intinya: Pasang kabel sesuai label di panel dan pakai tabel pin RNV4H2 ini, bukan tabel RNV4 lama.
Panel Belakang
ON/OFF
Tombol daya (tombol bulat dengan cincin merah)
USB
Konektor USB tipe B: sambungan ke komputer / RNV4 Studio
UART0
Konektor 4 pin berlabel GND, RX, TX, 3.3V — jalur serial kedua (GPIO44 dan GPIO43). Untuk modul resmi, pakai konverter RS-485 (lihat Modul Eksternal)
MOTOR RAIL
Konektor 4 pin berlabel 2B, 2A, 1A, 1B — kabel motor rel, keluaran DRV8825 (lihat Wiring Motor Rel di bawah)
OUT 12V · GND
Konektor 2 pin berlabel 12V dan GND
OUT 3.3V · 5V
Konektor 2 pin berlabel 3.3V dan 5V
IN 12 VOLT
Jack catu daya 12 V
RESET
Tombol reset
AJ PUMP
Penyetel kecil (trimpot) berlabel AJ PUMP
Konektor di Lengan Atas
GRIPPER VACUM
Konektor biru untuk gripper vakum
KALIBRASI/TEACH
Tombol merah berlabel Kalibrasi/Teach
UART0
Konektor 4 pin berlabel 3.3V, TX, RX, GND
GRIPPER SERVO
Konektor 3 pin berlabel D, 5V, GND
3.3V TX RX GND, sedangkan di panel belakang GND RX TX 3.3V; jangan menyambung berdasarkan urutan dari gambar lain.Wiring Motor Rel
Hubungkan kabel motor rel dari konektor MOTOR RAIL (2B, 2A, 1A, 1B) di panel belakang ke motor pada ujung rel, mengikuti arah panah pada gambar.
Tabel Pin GPIO
Tabel pin lengkap papan kontroler RNV4H2 (ESP32-S3-WROOM-1 N16R8): stepper, bus komunikasi driver, encoder, equipment, SD card, dan sisanya. Berlaku untuk firmware v2.13.0 ke atas.
⚠ Perhatian Keselamatan
Jangan menyolder atau mengubah wiring berdasarkan tabel RNV4 lama. Lebih dari sepuluh GPIO berpindah fungsi. Contoh yang paling berbahaya: GPIO40 dulu pin ENABLE rel, sekarang pin ENABLE sendi X, dan GPIO36/37 dulu servo, sekarang tidak boleh dipakai apa pun. Menyambung beban lama ke pin yang sama bisa merusak papan atau peralatan.
Firmware RNV4H2 tidak berjalan di board RNV4 lama, dan sebaliknya. Kalau tidak ada satu driver motor pun yang menjawab saat boot, robot menolak menyalakan motor dan LED ungu berkedip.
Ringkasan penggunaan pin
Stepper motor
Sendi X, Y, dan Z memakai driver TMC2209 (diatur lewat UART, dengan deteksi beban StallGuard untuk homing tanpa limit switch). Rel (E0) memakai driver DRV8825 terpisah dan tetap memakai limit switch.
Catatan:
- ENABLE driver aktif-LOW, baik TMC2209 maupun DRV8825. GPIO12 disambung paralel ke pin ENABLE driver Y, Z, dan rel (satu keluaran ke tiga titik). GPIO40 hanya ke ENABLE driver X.
- DIAG pada X/Y/Z adalah keluaran StallGuard dari driver. Tidak ada limit switch mekanis di sendi X, Y, dan Z. Pin-nya adalah pin yang dulu dipakai limit switch, tetapi fungsinya berbeda: ia keluaran driver, bukan masukan saklar.
- Rel memakai limit switch atau sensor magnet di GPIO7 (aktif-LOW). Rel tidak punya StallGuard.
- Arus motor rel diatur dengan trimmer VREF di modul DRV8825 (obeng dan multimeter), bukan lewat perangkat lunak seperti X/Y/Z. Microstepping rel diatur lewat pin MS1/MS2/MS3 di modulnya.
Bus komunikasi driver TMC2209 (UART)
Satu bus UART setengah dupleks untuk tiga driver (X, Y, Z). Rel tidak ada di bus ini.
Bus bersama menyambung ke pin PDN_UART ketiga driver. Alamat tiap driver diatur lewat strap MS1/MS2 di PCB (bukan lewat GPIO):
Dua driver dengan alamat yang sama akan menjawab bersamaan dan membuat bus kacau. Periksa strapnya kalau R530 melaporkan hasil yang aneh.
Encoder sudut (I2C)
Sensor AS5600 di sendi X, Y, dan Z, lewat multiplexer I2C TCA9548A. Alamat AS5600 tetap (0x36) dan tidak bisa diubah, jadi tiap sensor wajib punya channel multiplexer sendiri.
- Pull-up SDA dan SCL ke 3,3 V (2,2–10 kΩ) wajib ada di papan.
- Jangan memberi pull-up atau beban ke GPIO45 (lihat Pin yang tidak boleh dipakai).
- Nomor channel adalah wiring: harus sama dengan pasangan SDn/SCn tempat sensor itu disolder.
Servo
Dulu servo memakai GPIO36 dan GPIO37. Keduanya terhubung fisik ke PSRAM di dalam modul dan tidak boleh dipakai, jadi servo dipindah.
Equipment (vakum dan katup)
M10 hidup / M11 mati
M10 / M11
- Kipas tidak lagi memakai GPIO. Kipas disaklar langsung oleh termostat bimetal (KSD9700) di hardware; firmware tidak membaca suhu dan tidak mengendalikan kipas. Pastikan memakai varian NO (Normally Open), bukan NC: varian NC mematikan kipas justru saat panas.
- Sensor suhu DS18B20 dihapus. Pin GPIO4-nya dipakai ulang sebagai SDA encoder.
SD card (SPI)
Lain-lain
Pin yang tidak boleh dipakai
Pin strapping lain yang dipakai tetapi aman: GPIO0 (tombol BOOT, fungsi resminya), GPIO3 (TX bus driver; tidak memengaruhi boot karena memakai USB native), dan GPIO46 (RX bus driver).
Yang berubah dari RNV4 lama
Pin yang tidak berubah: STEP/DIR semua sendi dan rel (10, 11, 15, 16, 8, 9, 38, 39), limit switch rel (GPIO7), pompa (GPIO14), katup (GPIO13), SD card (1, 2, 41, 42), LED (GPIO48), dan tombol BOOT (GPIO0).
Daftar pemeriksaan sebelum menyolder
- Pastikan Anda memakai tabel ini, bukan tabel RNV4 lama.
- Tidak ada beban lama yang masih tersambung ke GPIO36, GPIO37, GPIO35, atau GPIO45.
- ENABLE rel tidak lagi di GPIO40: GPIO40 hanya untuk driver X.
- Resistor 1 kΩ terpasang di jalur TX bus driver (GPIO3).
- Alamat ketiga driver TMC2209 berbeda (lihat Bus komunikasi driver TMC2209).
- Pull-up SDA/SCL (GPIO4/GPIO17) terpasang, dan tidak ada pull-up ke GPIO45.
- Kipas memakai termostat varian NO.
- Setelah dinyalakan, jalankan
R530: hasil yang benar3/3 driver menjawab. LaluR540untuk encoder.
Modul Eksternal
Intinya: Modul IO tersambung ke robot lewat RS-485 pada UART0; robot yang bertanya, modul yang menjawab.
Robot RNV4H2 bisa diperluas dengan modul eksternal: papan kecil yang menambah sensor, relay, servo, dan nanti kamera atau sensor warna, tanpa mengubah firmware robot. Modul tersambung ke robot lewat kabel RS-485 pada konektor UART0 di panel belakang.
Gambaran umum
robot RNV4H2 modul IO
┌──────────────┐ TTL ┌────────┐ A+ / B− / GND ┌────────┐ TTL ┌───────────────┐
│ UART0 ├─────────┤ RS-485 ├─────────────────┤ RS-485 ├─────────┤ GND RX TX VCC │
│ GND RX TX 3V3│ │ papan │ (3 kawat) │ papan │ │ 3 sensor │
│ │ │ │ │ │ │ 3 relay │
└──────────────┘ └────────┘ └────────┘ └───────────────┘
- Robot yang bertanya, modul yang menjawab. Modul tidak pernah bicara sendiri. Ini membuat jalur dua-kawat tidak pernah bertabrakan.
- Modul memperkenalkan dirinya sendiri: ia menyebut kanal apa saja yang dimilikinya (masukan, relay, servo). Robot tidak perlu tahu jenis modulnya lebih dulu.
- Sumber masukan IN1–IN4 robot kini berasal dari modul. Kondisi sensor di program SD (mis.
IN1 H) dan perintahR1–R4membaca dari modul, bukan dari pin di papan robot.
Kenapa RS-485, bukan kabel TTL biasa
Yang dibutuhkan
DCIN1 di papan modul
Skematik dan tampilan 3D PCB modul IO: lihat bagian Skematik Elektronik — Modul IO.
Wiring
⚠ Konverter RS-485 harus 3,3 V
Pakai konverter yang bisa dicatu 3,3 V (cip MAX3485 atau SP3485). Papan 5 V saja (MAX485) mengirim sekitar 5 V ke pin robot yang hanya tahan 3,3 V dan bisa merusaknya seketika.
1. Robot → papan RS-485 (sisi robot)
Konektor UART0 di panel belakang robot, empat pin berurutan: GND, RX, TX, 3.3V.
GND
GND
3.3V
VCC
TX
TXD
RX
RXD
TXD ke TX dan RXD ke RX, tidak disilang: label pada papan konverter mengikuti sudut pandang mikrokontrolernya. Kalau sesudah semuanya tersambung tidak ada komunikasi sama sekali, tukar dulu pasangan TX/RX sebelum mencurigai yang lain.
2. Papan RS-485 ↔ papan RS-485
Tiga kawat, tersambung lurus:
A+
A+
B−
B−
GND
GND
Kawat GND wajib ada. RS-485 membutuhkan acuan ground bersama; dua kawat A dan B saja tidak cukup.
3. Papan RS-485 (sisi modul) → modul IO
Konektor komunikasi di papan modul, empat pin: GND, RX, TX, VCC.
GND
GND
VCC
VCC
TXD
TX
RXD
RX
4. Daya modul
Terminal DCIN1 di papan modul menerima 12 V. Daya ini menghidupkan relay dan papan modul. Perhatikan polaritasnya (+ dan − tertera di papan).
5. Sensor
Tiga konektor sensor di sisi bawah papan, masing-masing VCC, GND, OUT:
SENSOR1
IN1
SENSOR2
IN2
SENSOR3
IN3
Tiap konektor punya tombol uji di sebelahnya (SW-SENSOR1–3): menekannya meniru sensor terpicu, jadi sambungan ke robot bisa diuji tanpa sensor terpasang.
6. Relay
Tiga relay (OUT1–OUT3), masing-masing punya terminal NC, COM, NO. Satu LED kuning di dekat tiap relay menyala saat relay aktif. Relay diperintah dari robot dengan R701.
Cara menyambung beban, batas arus, dan keselamatannya: lihat bagian Relay Modul IO.
⚠ Perhatian Keselamatan — baca sebelum menyambung
- Tegangan papan konverter. Pakai konverter yang bisa dicatu 3,3 V (cip MAX3485, SP3485, atau sejenisnya; periksa tulisan di cipnya). Papan 5 V saja (MAX485) mengirim ~5 V ke pin robot yang hanya tahan 3,3 V, dan bisa merusaknya seketika.
- VCC tiap papan konverter diambil dari rail 3,3 V papan yang ditempelinya, tidak pernah dari 5 V dan tidak dari catu papan seberangnya.
- Ground disambung lebih dulu, bersama konektor datanya.
- Robot dinyalakan lebih dulu, modul kemudian, kalau tidak berbagi satu catu.
- Pasang resistor seri 330 Ω–1 kΩ di jalur data antara papan konverter dan pin mikrokontroler kalau papannya belum membawanya.
- Terminasi 120 Ω: banyak papan sudah memasangnya tetap. Untuk dua node itu benar. Kalau kelak ada lebih dari dua node, hanya ujung terjauh yang boleh ber-terminasi.
Memeriksa bahwa modul terbaca
Sambungkan robot ke Studio (atau serial monitor) dan jalankan:
R700
Modul muncul di daftar, lengkap dengan kanalnya. Tanda [BASI] berarti sudah lebih dari 1,5 detik tanpa kabar
R5
IN1–IN3 terbaca beserta kesegaran sumbernya
R1
IN1: HIGH atau IN1: LOW
R701 P1 S1 lalu R701 P1 S0
Relay 1 menyala lalu mati (LED kuning ikut)
Kalau sumbernya diam, R1 menjawab TIDAK DIKETAHUI, bukan LOW. Itu disengaja: kabel yang lepas tidak boleh terbaca seperti sensor sehat yang sedang tidak terpicu.
Tombol uji di papan modul (SW-SENSOR1–3) mengubah nilai R1–R3 saat ditekan.
Memakai di program
Sensor sebagai syarat
Di program SD, masukan modul dipakai persis seperti sensor biasa: IN1 H (tunggu sampai tinggi) dan IN1 L (tunggu sampai rendah), serta percabangan dengan label. Panduan lengkapnya ada di bagian Sensor Digital.
Modul melaporkan tingkat pin apa adanya, bukan "terdeteksi" atau "tidak". Sensor penghalang IR yang umum menarik OUT ke rendah saat ada objek, jadi untuk "tunggu objek datang" biasanya yang dipakai IN1 L. Cek dengan R1 saat objek ada dan tidak ada.
Relay dan servo di modul
R701 P<1-3> S<0|1>
Relay nomor P nyala (S1) atau mati (S0). Jumlah relay mengikuti modulnya
R702 [P<n>] S<0-180>
Servo nomor P di modul ke sudut S (hanya pada modul yang punya servo)
Perintah ini boleh menjadi baris di program SD. Robot menunggu konfirmasi dari modul. Kalau modul tidak menjawab setelah beberapa kali kirim ulang, kanalnya dianggap gagal, tercatat sebagai error, dan program yang sedang berjalan dihentikan. Ini disengaja, karena baris berikutnya biasanya gerakan yang mengandalkan keluaran itu sudah aktif.
Keselamatan di sisi data
Batas yang ada saat ini: robot punya empat masukan logis (IN1–IN4) yang bisa dipakai di program SD. Modul boleh punya lebih banyak masukan (modul acuan versi ESP32 punya delapan); selebihnya tetap terbaca di R700 tetapi belum bisa dipakai sebagai syarat di program.
Modul yang tersedia dan yang direncanakan
Susunan setelah ada hub
┌────────────────┐ ┌──────────────┐
robot ── RS-485 ───┤ HUB ├────────┤ modul IO │
│ (ESP kecil) ├────────┤ modul warna │
│ ├────────┤ modul kamera│
└────────────────┘ └──────────────┘
Yang perlu diketahui sejak awal tentang kamera dan modul "pintar"
- Modul yang butuh waktu lama untuk mengolah data (kamera) tidak menahan jawabannya: ia mengolah di latar, lalu menjawab dengan hasil terakhir yang sudah ada, bersama umur hasilnya.
- Kamera yang ingin menghentikan atau mencabangkan program harus menyediakan satu keluaran ya/tidak ("objek terdeteksi"). Robot mencabang dari sinyal itu. Koordinat atau nilai angka lainnya bisa dibaca lewat
R700, tetapi belum bisa dipakai sebagai syarat di program.
Pemecahan masalah
R700 kosong, tidak ada modul
Modul tidak mendapat daya, TX/RX tertukar, atau GND antar papan RS-485 tidak tersambung
Cek 12 V di DCIN1, cek kawat GND, tukar TX/RX
R700 menampilkan [BASI]
Modul sempat hidup lalu diam
Cek kabel dan daya modul; jalankan R700 S1 untuk meminta modul memperkenalkan diri lagi
R1 menjawab TIDAK DIKETAHUI
Sumber masukan tidak melapor
Sama seperti di atas
R701
Modul tidak menjawab, atau relay tidak ada di modul itu
Lihat R700: nomor relay harus ada di daftar kanal
R700 lagi; kalau segar, tidak ada masalah
Relay Modul IO
Intinya: Relay hanya hidup atau mati: pakai COM + NO, catu beban terpisah, dioda flyback, dan sekering.
Modul IO punya relay yang bisa diperintah dari robot untuk menyalakan dan mematikan perangkat lain: motor, pompa, conveyor, katup, lampu, atau mesin di sebelah robot. Bagian ini menjelaskan cara menyambung bebannya, cara memerintahnya dari program, dan batas keselamatannya. Ia melengkapi bagian Modul Eksternal (yang menjelaskan wiring modul ke robot).
⚠ Perhatian Keselamatan
Relay bisa mengalirkan arus yang berbahaya. Beban listrik jala-jala (AC 110/220 V) hanya boleh disambung oleh orang yang memahami instalasi listrik, dengan kotak pelindung dan sekering. Mulailah dengan beban tegangan rendah (12 V atau 24 V DC) sampai Anda terbiasa.
Apa yang bisa dan tidak bisa dilakukan relay
Relay adalah saklar yang dikendalikan robot. Ia hanya punya dua keadaan: hubung dan putus.
Pengaturan kecepatan, arah, atau sinyal analog tidak bisa lewat relay. Untuk itu diperlukan modul keluaran khusus (lihat daftar modul di bagian Modul Eksternal).
Relay ini bukan motor penggerak lengan robot. Motor lengan (bahu, siku, rotasi base) dan rel digerakkan oleh driver di papan robot. Pompa vakum dan katup bawaan robot tetap dikendalikan dengan M10 / M11. Relay modul IO untuk perangkat tambahan di luar robot.
Terminal relay: NC, COM, NO
Tiap relay punya tiga terminal di papan modul:
Bayangkan COM sebagai poros saklar yang berpindah antara NC dan NO. Yang mana yang dipakai menentukan perilaku beban saat relay padam:
Pilih COM + NO untuk motor dan beban yang berbahaya kalau menyala sendiri. Saat daya modul hilang, kabel komunikasi lepas, atau robot berhenti menjawab, relay padam. Dengan COM + NO, beban ikut mati. Itu perilaku yang aman.
⚠ Relay: tiga kebiasaan wajib
- Dioda flyback di setiap beban induktif (motor, pompa, solenoid), pita dioda ke kutub +.
- Sekering di kawat catu beban, sesuai arus beban.
- Catu beban terpisah dari catu modul; jangan mengambil arus beban dari catu modul atau dari robot.
Keadaan awal dan keadaan aman
R701 P1 S1
Nyala
R701 P1 S0
Padam
R512) atau mode lain berjalan
Relay tetap pada keadaan terakhir
Baris terakhir sering terlewat: menghentikan program tidak memadamkan relay. Selama robot masih hidup dan terhubung ke modul, relay yang sedang nyala tetap nyala. Karena itu:
- Letakkan
R701 P<n> S0di akhir program dan di setiap titik keluar yang mungkin. - Pasang pemutus darurat di sisi beban (tombol stop fisik atau saklar utama) untuk beban yang berbahaya. Jangan menjadikan program robot satu-satunya cara mematikan motor.
- Setelah
R512atau penghentian karena error, periksa dan padamkan relay denganR701 P<n> S0.
Menyambung beban
Sebelum menyambung: periksa kemampuan relay
Kemampuan kontak (tegangan dan arus maksimum) tertulis di badan relay. Contoh yang umum untuk relay biru berkaki lima: tertera 10A 250VAC dan 10A 30VDC. Baca tulisan pada relay di papan Anda; jangan mengandalkan contoh ini. Kalau tulisan tidak terbaca, perlakukan relay sebagai beban kecil saja.
Aturan praktis:
Kalau ragu, pakai relay hanya sampai separuh dari arus tertera, dan jangan melebihi tegangan tertera.
Sambungan relay terpisah secara listrik dari papan modul: beban memakai catunya sendiri, bukan catu 12 V modul. Satu-satunya yang terhubung ke kontak relay adalah beban dan catunya.
Motor DC, pompa, kipas (12–24 V DC)
catu beban (+) ───────────────► COM (relay)
NO ───────────► beban (+)
catu beban (−) ──────────────────────────────── beban (−)
dioda di PARALEL dengan beban
(pita dioda ke sisi +)
- Gunakan catu terpisah yang sesuai kebutuhan beban. Jangan mengambil arus beban dari catu modul atau dari robot.
- Pasang dioda pemulih (flyback) secara paralel dengan beban induktif (motor, pompa, solenoid): sisi pita dioda ke kutub +. Tanpa dioda, saat relay memutus, motor menghasilkan lonjakan tegangan tinggi yang merusak kontak relay dan menimbulkan derau yang bisa mengganggu komunikasi RS-485 dan robot. Dioda pada papan modul hanya melindungi kumparan relay, bukan beban Anda.
- Pasang sekering di kawat catu beban, sesuai arus beban.
- Beban yang menimbulkan derau besar sebaiknya dijauhkan dan kabelnya dipisah dari kabel RS-485.
Katup, solenoid, lampu, buzzer
Sama seperti bagian di atas. Solenoid dan katup bersifat induktif, jadi dioda flyback tetap diperlukan. Lampu dan buzzer elektronik tidak memerlukannya.
Beban besar atau jala-jala: pakai kontaktor
Untuk motor besar atau beban AC, jangan menyambungnya langsung ke relay modul. Pakai kontaktor (atau SSR yang sesuai):
relay modul (COM + NO) ──► menyalakan KUMPARAN kontaktor ──► kontak kontaktor membawa beban besar
Relay modul hanya menyalakan kumparan kontaktor yang arusnya kecil; kontak kontaktor yang menanggung arus besar. Kumparan AC pada kontaktor juga perlu peredam (snubber RC) di kumparannya. Pekerjaan ini harus dikerjakan oleh orang yang paham instalasi listrik.
Membalik arah motor
Relay tunggal tidak bisa membalik arah. Membalik arah memakai dua relay dan harus dirancang agar kedua relay tidak pernah nyala bersamaan (hubung singkat catu). Rancangan seperti itu butuh pengunci (interlock) di rangkaian, bukan hanya di program. Tidak disarankan tanpa pengalaman; modul keluaran khusus (H-bridge) lebih aman untuk kebutuhan ini.
Memberi kontak kering ke mesin lain
Relay bisa meniru tombol yang ditekan pada mesin lain (mis. "start" conveyor atau pemicu mesin pengemas). Sambungkan COM dan NO ke dua kontak tombol mesin itu, bukan ke kutub catunya. Cek dulu tegangan kontak tombolnya.
Memerintah relay
R701 P<n> S1
Relay nomor n nyala
R701 P<n> S0
Relay nomor n padam
n boleh 1–4 pada perintah; jumlah relay yang benar-benar ada ditentukan modulnya: modul 3 relay menerima P1–P3, modul versi ESP32 punya P1–P4. Nomor di luar yang ada ditolak modul, dan robot melaporkannya.
Contoh balasan yang benar:
>> R701 P1 S1
<< R701: relay 1 -> NYALA (dikonfirmasi modul)
Robot menunggu konfirmasi dari modul. Kalau konfirmasi tidak datang, robot mengirim ulang sampai 5 kali. Kalau tetap gagal, ia melaporkan penyebabnya dan, bila sedang memutar program, menghentikan programnya. Alasannya: baris berikutnya biasanya gerakan yang mengandalkan keluaran itu sudah aktif (mis. pompa menyala sebelum lengan turun). Lebih aman berhenti daripada meneruskan dengan keluaran yang tidak jadi hidup.
(dikonfirmasi modul)
Berhasil
perlu N kali kirim
Berhasil sesudah mengulang; jalur sempat terganggu
Cek kabel RS-485
kanal rlN tidak ada atau modulnya sedang hilang
Modul tidak melapor, atau nomornya tidak ada
R700
TIDAK DIJAWAB modul
Komunikasi putus
Cek kabel dan daya modul
MODUL MENOLAK: pinnya tidak mengikuti perintah
Pin keluaran modul tidak berpindah
Periksa wiring pin dan papan relay
DITOLAK modul
Frame rusak di jalur
Cek kabel RS-485, ulangi
Memakai di program
R701 adalah baris program biasa. Contoh:
Nyalakan pompa selama pekerjaan
G0 X0.000 Y250.050 Z175.000
R701 P1 S1 ; pompa nyala
G0 X0.000 Y250.050 Z25.000 ; turun, kerjakan
G0 X0.000 Y250.050 Z175.000 ; naik
R701 P1 S0 ; pompa padam
Hidupkan selama waktu tertentu
R701 P2 S1 ; mulai
G4 P3000 ; tunggu 3000 ms
R701 P2 S0 ; selesai
G4 P<ms> menunggu dalam milidetik (G4 S<detik> dalam detik).
Conveyor yang berhenti ketika sensor mendeteksi benda
>1
R701 P1 S1 ; conveyor jalan
IN1 L ; tunggu sensor mendeteksi benda (IR: LOW saat ada objek)
R701 P1 S0 ; conveyor berhenti
G0 X0.000 Y250.050 Z25.000 ; ambil benda
M10
G0 X0.000 Y250.050 Z175.000
G0 X150.000 Y200.000 Z175.000
M11
IN2 L >1 ; ulangi sampai tombol stop ditekan
R701 P1 S0 ; pastikan padam di akhir
Beberapa relay bergantian
R701 P1 S1 ; katup A buka
G4 P500
R701 P1 S0
R701 P2 S1 ; katup B buka
G4 P500
R701 P2 S0
Catatan untuk semua contoh: relay tidak otomatis padam saat program dihentikan. Selalu akhiri dengan S0 dan jangan menggantungkan keselamatan pada program saja (lihat Keadaan awal dan keadaan aman).
Daftar pemeriksaan sebelum dipakai
- Daya 12 V di
DCIN1papan modul tersambung dan polaritasnya benar. R700menampilkan modul dan kanal relay (rl1,rl2, …).R701 P1 S1: LED kuning relay 1 menyala dan terdengar bunyi klik.R701 P1 S0: padam.- Ukur dengan multimeter di terminal: COM–NO terhubung saat nyala, COM–NC saat padam.
- Tegangan dan arus beban di bawah kemampuan yang tertulis pada relay.
- Beban induktif punya dioda flyback; ada sekering; ada pemutus darurat di sisi beban.
- Catu beban terpisah dari catu modul, dan kabel beban dijauhkan dari kabel RS-485.
- Uji tanpa beban dulu, lalu dengan beban, lalu di dalam program.
Pemecahan masalah
R701 "dikonfirmasi" tetapi relay tidak klik dan LED padam
Papan relay tidak dapat 12 V
Periksa catu di DCIN1
R701 P<n> S0
Skematik Elektronik
Intinya: Skematik papan kontroler dan modul IO tersedia sebagai gambar dan PDF.
Papan Kontroler RNV4H2
Skematik lengkap board kontroler RNV4H2 dalam 1 lembar A3: rangkaian utama ESP32-S3, driver motor X/Y/Z dan E, encoder AS5600 (lewat multiplexer I2C), power, valve & pump, SD card, kipas, LED indikator, serta pinout konektor atas dan bawah.
Diambil langsung dari file desain EasyEDA — versi RNV4H2, diperbarui 2026-10-06.
Klik gambar untuk memperbesar & baca detail komponen.
Lembar 1 — Rangkaian lengkap RNV4H2 (A3)
robot-rnv4h2-schematic.pdf
PDF asli (vektor, bisa di-zoom tanpa pecah) · 1 halaman · 513 KB
Tampilan 3D PCB Papan Kontroler
Yang terbaca pada gambar:
- Modul ESP32-S3 (tertulis
ESP32S3N16R8) dengan antena di tepi papan. - Terminal catu 12 V (
DCIN) denganFUSEdi dekatnya. - Soket driver motor (satu di antaranya terpasang dengan driver berheatsink ungu), konektor encoder
AS5600dan konektor motorMTR. - Konektor kipas (
FAN1-5V,FAN2-12V,FAN3-12V),PUMP,VALVE,SD, tombolRST, dan LEDWS2812B.
Modul IO RNV4H2
Skematik dan PCB modul IO (papan masukan/keluaran untuk 3 sensor dan 3 relay; cara memasangnya ada di bagian Modul Eksternal). Skematik dibuat di EasyEDA, board IO_RNV4H2, versi V1.0, diperbarui 2026-10-15.
Klik gambar untuk memperbesar & baca detail komponen.
robot-rnv4h2-modul-io-schematic.pdf
PDF asli (vektor, bisa di-zoom tanpa pecah) · 1 halaman · 176 KB
Isi skematik:
- Catu: 12 V masuk lewat
DCIN1ke modul penurun teganganMP1584ENyang menghasilkan 5 V. - Tiga kanal relay (
RLY1–RLY3): tiap kanal dari pin papan Wemos (D5,D8,D3) lewat optocouplerPC817dan transistor2N2222Ake kumparan relay, dengan dioda di kumparan dan satu LED indikator (LED1–LED3) berhambatan 1 kΩ. Kontaknya keluar di terminalOUT1–OUT3. - Tiga masukan sensor (
SENSOR1–SENSOR3) ke pinD2,D6,D0, dengan tombol ujiSW-SENSOR1–3dan resistor 10 kΩ (R145–R147) ke 3,3 V. - Konektor
MODUL-IO4 pin (3.3V,TX,RX,GND) ke pinTX/RXpapan Wemos, tempat papan konverter RS-485 disambungkan. - Papan Wemos D1 mini Pro (
U105) sebagai pengendali modul, dan empat lubang baut M3.
Tampilan 3D PCB Modul IO
OUT1–OUT3, konektor SENSOR1–3 dengan tombol ujinya, dan LED kuning indikator relay.Command Reference
Protokol Komunikasi
Intinya: Robot menerima G/M/R-code lewat USB dan Bluetooth; balasan ok berarti perintah selesai.
Cara host (PC/app Android/AI board) berkomunikasi dengan robot lewat perintah G/M/R-code — kompatibel dengan subset Marlin G-code. Tabel perintah lengkapnya ada di 4 section di bawah.
Koneksi Fisik
Prioritas & Perilaku Multi-Channel
Firmware cek 1 command per iterasi loop, urutan prioritas (kalau beberapa channel ada data bersamaan, yang lebih prioritas diproses duluan; sisanya nunggu iterasi berikutnya):
- USB
- Bluetooth (setelah autentikasi)
Balasan (ok/error/dll) di-broadcast ke USB + Bluetooth sekaligus — bukan cuma ke channel asal command.
R24. Detail lengkap (UUID, autentikasi, perintah, pemecahan masalah) ada di bagian Bluetooth (BLE).
Format Perintah (Host → Robot)
<ID><NUM> [PARAM...]\n
<ID>— huruf kode:G,M, atauR<NUM>— nomor perintah integer[PARAM...]— parameter opsional, huruf + nilai float, tidak perlu spasi- Terminator:
\n(newline) atau\r(carriage return) - Case-insensitive:
g0 x100=G0 X100 - Spasi opsional:
G0X100Y200=G0 X100 Y200
G0 X100 Y200 Z50
G1X50Y-30.5F300
R280 P1 S90
R22 P1
R515
Parameter yang Dikenali
X
float
Koordinat X (mm)
Y
float
Koordinat Y (mm)
Z
float
Koordinat Z (mm)
E
float
Koordinat E/rail (mm)
F
float
Feedrate (mm/min)
I
float
Arc center offset X (mm)
J
float
Arc center offset Y (mm)
R
float
Arc radius (mm), alternatif IJ
S
float
Speed / value general
P
float
Index servo / sub-command / program number
NAN/0 di awal setiap perintah. Parameter yang tidak disebut tidak mewarisi nilai dari perintah sebelumnya.
Format Respons (Robot → Host)
Flow Control (G-code Queue)
Robot memakai FIFO queue khusus untuk perintah gerakan (G0/G1/G2/G3). Perintah M dan R dieksekusi langsung (bypass queue) — ok segera.
Host kirim G1 X100
→ Robot: tidak reply ok dulu (command masuk queue)
→ Saat pop dari queue untuk dieksekusi: sendResponse("ok")
→ Host baru kirim G1 berikutnya
Host kirim M400 (tunggu queue kosong)
→ Robot spin-wait sampai queue kosong + interpolator selesai
→ sendResponse("ok")
- Tunggu
oksebelum kirim perintahGberikutnya - Jika
ERROR: Queue is FULL!→ queue dibersihkan otomatis, kirim ulang
Pesan Proaktif (Backdoor)
Selain balasan atas perintah, firmware juga mengirim pesan diagnostik tanpa diminta
berformat // @TAG:{json} — dipakai RNV4 Studio untuk halaman monitoring, klaim robot, dll.
Prefix // adalah konvensi komentar G-code standar, jadi parser G-code yang benar akan
otomatis mengabaikannya.
@DIAG tiap 3 detik, @RT
tiap 200ms). Lihat bagian Pengembangan & Ekstensi Kustom untuk cara menghindarinya.
@FW
Saat boot, dan setiap kali host kirim @STUDIO_HELLO
Versi firmware, versi protokol, ID robot, claim_secret
@STUDIO_ACK
Balasan atas @STUDIO_HELLO dari host — event-driven, bukan otomatis
Versi firmware, ID robot, versi protokol
@RESET
Sekali setiap boot
Alasan reset terakhir (normal/brownout/watchdog/panic, dst)
@DIAG
Otomatis tiap 3 detik, terus-menerus selama menyala
Uptime, heap/PSRAM, sisa stack task, status robot/queue/SD, suhu, WiFi
@RT
Otomatis tiap 200ms (5x/detik), terus-menerus selama menyala
Posisi X/Y/Z/E realtime, baris SD aktif, servo, vacuum, sensor IN1-3
@LINE
Setiap kali baris program SD aktif berubah (event-driven)
Nomor baris yang sedang dieksekusi
@WIFI
Balasan perintah WiFi (R22) — event-driven
Status scan/connect WiFi
@HWCFG_JSON
Balasan perintah R93 — on-demand
Seluruh nilai kalibrasi hwConfig dalam satu JSON
Error Reference
ERROR: COMMAND NOT RECOGNIZED
Kode bukan G/M/R, atau format salah
Periksa format perintah
ERROR: Robot not calibrated. Send G28 first.
G0/G1/G2/G3 tanpa homing
Kirim G28 dulu
ERROR: Queue is FULL!
Host kirim terlalu cepat tanpa tunggu ok
Tunggu ok, queue di-clear otomatis
Resend:<n>
Checksum salah atau nomor baris tidak urut
Kirim ulang baris ke-n
WIFI:ERROR Tidak ada jaringan ditemukan
Scan WiFi gagal
Coba R22 lagi
Bluetooth (BLE)
Intinya: Bluetooth BLE (profil NUS) sudah berfungsi penuh: nama unik per robot, password bawaan 1234, satu klien pada satu waktu.
Bluetooth di RNV4H2 sudah berfungsi penuh: robot bisa dikendalikan dan dipantau dari HP atau komputer lewat BLE, dengan password, dan bisa dinyalakan/dimatikan tanpa flash ulang. Berlaku untuk firmware v2.14.0 ke atas, board RNV4H2.
Ringkasan
RNV4-<nomor seri>-<8 hex MAC>, mis. RNV4-00010-8D617974 (unik per robot; sama dengan ID robot)
1234
bt_enabled=1)
UUID memakai standar NUS, jadi aplikasi “BLE UART” umum bisa dipakai:
6E400001-B5A3-F393-E0A9-E50E24DCCA9E
6E400002-B5A3-F393-E0A9-E50E24DCCA9E
6E400003-B5A3-F393-E0A9-E50E24DCCA9E
Menyambung dari HP / komputer
- Pastikan Bluetooth robot menyala (
R24, lihat bagian di bawah). Robot yang baru dinyalakan sudah menyala. - Buka aplikasi BLE UART (mis. nRF Connect, Serial Bluetooth Terminal mode BLE). Cari perangkat bernama
RNV4-.... - Sambungkan, lalu aktifkan notifikasi pada karakteristik TX.
- Kirim satu baris apa saja (mis.
hi). Robot membalas dengan permintaan password. - Kirim password (bawaan
1234). Jawaban✓ Authentication successful!berarti sudah masuk. - Kirim perintah G/M/R seperti di serial, satu perintah per baris (diakhiri baris baru).
Baris pertama sesudah tersambung tidak diproses sebagai perintah: ia hanya memicu robot mengirim permintaan password (supaya klien dipastikan sudah siap menerima).
Autentikasi
- Sesudah tersambung, robot meminta password. Salah 3 kali → terkunci 60 detik, lalu hitungan salah direset.
logout(atauexit,disconnect) mengeluarkan sesi dan meminta password lagi.- Putus koneksi selalu membatalkan login; sesi baru harus memasukkan password lagi.
- Mengganti password (lihat bagian di bawah) memaksa sesi yang sedang login login ulang. Menyimpan field config lain dari Studio tidak menendang sesi yang sedang berjalan.
Apa yang bisa dikirim dan diterima
Masuk (HP → robot): hanya baris yang diawali G, M, atau R yang diteruskan ke pemroses perintah (sama dengan USB dan UART0; semuanya masuk satu antrean). Baris lain dibuang diam-diam (mis. byte protokol dari aplikasi BLE). Tambahan khusus BLE: help menampilkan ringkasan perintah, logout keluar.
Keluar (robot → HP): balasan perintah yang dikirim lewat BLE (ok, hasil M114, dst.) dan log tingkat ERROR + INFO. Log DEBUG tidak pernah dikirim ke BLE, berapa pun nilai log_level (field 88 di hwConfig).
Batas yang perlu diketahui:
- Hanya satu klien dan satu perintah per baris; tidak ada antrean di sisi HP.
- Jalur BLE memakai notifikasi pendek dengan jeda kecil antar-kiriman. Balasan yang sangat panjang (mis.
R90) bisa lambat tampil; ini belum diukur. Untuk diagnostik panjang, pakai USB. - BLE berbagi CPU dengan pembangkit pulsa motor. Kalau Anda sedang memburu bunyi atau step hilang, matikan BLE dulu.
Menyalakan, mematikan, status: R24
R24
Status saja
R24 S1
Nyalakan BLE sekarang
R24 S0
Matikan BLE sekarang (perangkat yang tersambung langsung terputus)
Contoh balasan:
BT:ON nama=RNV4-00010-8D617974 terhubung=0 login=0 heap=118096
terhubung= ada klien tersambung;login= klien itu sudah memasukkan password yang benar.- Robot juga mengirim versi terstruktur
@BT:{...}untuk RNV4 Studio. - Yang disimpan adalah hasilnya, bukan permintaannya. Menyalakan BLE butuh memori yang bersambung; kalau gagal (
BT:ERROR Gagal menyalakan BLE) pilihannya tidak ikut tersimpan sebagai “nyala”. Pilihan tersimpan di config (field 79) dan bertahan sesudah robot dimatikan. - Mematikan BLE tidak mengembalikan semua memorinya ke heap (
heapsesudahR24 S0±180 KB, sesudahR24 S1±118 KB pada contoh di atas). Untuk heap maksimum, matikan BLE lalu reboot. - Bisa dinyalakan dan dimatikan berulang kali tanpa reboot (diperbaiki di v2.14.0; versi sebelumnya macet pada
R24 S1sesudahR24 S0).
Mengganti password dan pilihan awal
Dari RNV4 Studio: menu Robot → Bluetooth.
- Tombol Nyalakan / Matikan / Status.
- Kolom password baru (maks 16 karakter). Kosong = tidak ada yang diubah. Berlaku langsung, tanpa restart.
- Dialog menampilkan password bawaan (1234) sebagai pengingat, bukan password yang sedang berlaku; password yang sedang berlaku tidak pernah dikirim ke Studio (hanya panjangnya).
Dari config robot (R91, field 79 dan 80; lihat bagian hwConfig):
bt_enabled
1 = BLE menyala saat robot dinyalakan, 0 = mati
bt_password
Password BLE, maks 16 karakter. Tidak ikut cadangan ke server
Lupa password? Sambungkan lewat USB lalu setel ulang dengan R91 field 80, atau kembalikan config ke pabrik dengan R92 (password kembali 1234).
Cara kerja singkat di firmware
- Boot: BLE dinyalakan dengan password bawaan, lalu password tersimpan (field 80) diterapkan segera setelah config terbaca. Kalau
bt_enabled=0, BLE dimatikan sesudah itu. R24 S1memakai password tersimpan (bukan password bawaan). Versi sebelum v2.14.0 salah mengembalikan password ke1234sesudahR24 S0laluR24 S1; sudah diperbaiki.- Namanya dibentuk dari nomor seri dan MAC, jadi robot yang berdampingan tidak bentrok.
Pemecahan masalah
R24 lewat USB; kalau OFF, R24 S1. Putuskan klien lain
LOCKED
3x salah password
Tunggu 60 detik
BT:ERROR Gagal menyalakan BLE
Heap tidak bersambung cukup
Reboot robot, lalu R24 S1
R24 S0 lalu S1 macet / reset
Firmware lama (< v2.14.0)
Update ke v2.14.0
R24 S0 untuk menguji; bandingkan
Pengembangan & Ekstensi Kustom
Intinya: Kembangkan dari luar robot lewat USB atau Bluetooth; UART0 dipakai jalur modul eksternal.
Firmware bawaan RNV4 bersifat tertutup (kode sumbernya tidak dipublikasikan) dan diperbarui lewat RNV4 Studio (menu Flash Firmware, lewat kabel USB) — lihat Syarat Layanan. Tapi banyak pembeli robot ini justru untuk keperluan riset, tugas kuliah, atau proyek pengembangan yang butuh menambah kemampuan robot lebih jauh dari fitur bawaan. Kabar baiknya: protokol komunikasi G/M/R-code di atas terbuka dan stabil — cukup lewat itu, robot ini sangat bisa dikembangkan lebih jauh tanpa perlu menyentuh firmware sama sekali.
Rekomendasi: kembangkan dari luar, bukan ubah firmware bawaan
Kode firmware robot ini sudah cukup kompleks (kontrol stepper real-time, kinematika lengan, kalibrasi per-unit, dst) — mengubahnya tanpa pemahaman detail berisiko memicu bug atau gerakan yang tidak stabil, dan karena kode sumbernya tertutup, Anda juga tidak mulai dari referensi yang bisa dipelajari dulu. Jauh lebih aman dan fleksibel: bangun kontroler/logic tambahan di luar robot, lalu kirim perintah G/M/R-code standar ke robot lewat USB atau Bluetooth seperti biasa. Kalau ada bug, bug-nya ada di kode Anda sendiri yang bisa dilihat & diperbaiki bebas — bukan terkubur di firmware tertutup.
Jalur 1 — Kontrol dari Komputer Lewat USB
Tulis program sendiri di komputer (mis. Python dengan library pyserial, atau
bahasa apa pun yang bisa akses serial port) yang mengirim command G/M/R-code ke robot lewat USB — persis
seperti RNV4 Studio, cuma logic-nya Anda yang tulis sendiri. Cocok untuk menambah kamera eksternal
(computer vision, deteksi objek), logic kontrol kompleks yang lebih mudah dikembangkan di komputer
daripada di firmware ESP32 langsung, atau integrasi ke sistem/aplikasi lain. Semua logic tambahan itu
jalan di komputer Anda — robot cuma menerima & menjalankan command G/M/R-code standar seperti biasa,
tidak ada yang perlu diubah di firmware.
// @DIAG tiap 3 detik, // @RT
tiap 200ms, dll — lihat tabel Pesan Proaktif (Backdoor) di
bagian Protokol Komunikasi) yang khusus muncul di jalur USB ini saja. Kalau Anda pantau
lewat serial monitor mentah (bukan parser G-code), baris-baris ini akan ikut terlihat. Saat ini firmware
belum punya perintah untuk mematikannya saat robot menyala — cuma bisa lewat pengaturan
di source firmware sebelum di-compile, yang berarti bertentangan dengan rekomendasi di atas untuk tidak
menyentuh firmware. Cara paling praktis: abaikan saja baris yang diawali //
di parser Anda (konvensi komentar G-code standar).
Jalur 2 — Perangkat Buatan Sendiri Lewat UART0 (RS-485)
Di RNV4H2, UART0 (GPIO43/44) sudah dipakai jalur modul eksternal lewat konverter RS-485 (lihat bagian Modul Eksternal). Perangkat buatan sendiri yang ingin disambung ke jalur ini harus memakai protokol modul yang sama: tiap perangkat punya alamat dan kanal (masukan, relay, servo) yang ia umumkan sendiri, robot yang bertanya dan perangkat yang menjawab. Jalur ini bukan jalur perintah G-code mentah, jadi jangan mengirim G0, M10, dan sejenisnya lewat UART0. Untuk mengendalikan robot dengan G/M/R-code dari komputer atau HP, pakai USB (Jalur 1) atau Bluetooth (Jalur 3).
Jalur 3 — Kontrol Wireless Jarak Dekat Lewat Bluetooth (BLE)
Kalau kebutuhan Anda cuma kontrol nirkabel jarak dekat (mis. bikin app mobile sendiri, tanpa mau repot pasang board eksternal seperti Jalur 2), robot sudah punya BLE bawaan dengan profil Nordic UART Service (NUS) yang standar — tinggal konek dari app/library BLE apa pun yang mendukung NUS, masukkan password (lihat Bluetooth (BLE)), lalu kirim command G/M/R-code sama seperti channel lain. Tidak perlu hardware tambahan sama sekali — tapi jangkauannya khas BLE (jarak dekat, beberapa meter tanpa penghalang), beda dari Jalur 2 yang bisa dipadukan WiFi/internet untuk jangkauan jauh.
G-code (Gerakan & Mode)
Intinya: G-code mengatur gerak: G0/G1 untuk bergerak dan G28 untuk home; G33 sudah tidak ada.
Kirim lewat USB (Serial Monitor, 115200 baud) atau Bluetooth.
G0 / G1
Gerak rapid / linear ke koordinat X Y Z (E untuk rel)
G2 / G3
Gerak arc searah jarum jam (CW) / berlawanan (CCW), format IJ atau R
G4
Dwell (jeda), parameter P (ms) atau S (detik)
G28
Homing seluruh axis
G90
Mode koordinat absolut
G91
Mode koordinat relatif
G92
Set posisi offset (tanpa gerak fisik)
G20
Set unit ke inch — tidak didukung, robot selalu mm
G21
Set unit ke mm (default)
M-code (Kontrol Equipment & Status)
Intinya: M-code mengatur vakum (M10/M11), motor (M17/M18), dan membaca posisi (M114).
M3
Spindle/Laser ON
M5
Spindle/Laser STOP
M10
Vacuum grip ON (pump ON, valve tutup)
M11
Vacuum release (pump OFF, valve buka sesaat lalu tutup)
M17
Enable stepper motor
M18
Disable stepper motor
M105
Report suhu (untuk Repetier-Host/OctoPrint polling)
M110 Nxx
Set nomor baris saat ini (Marlin line numbering)
M114
Get posisi saat ini
M115
Info sistem/firmware
M119
Status endstop
M205
Set speed profile
M220
Set/get feedrate override (%)
M400
Tunggu semua gerakan selesai
R-code (Khusus Robot RNV4H2)
Intinya: R-code adalah perintah khusus robot; mulai dari 10 perintah paling berguna di bagian pertama.
10 perintah paling berguna
Mulai dari sepuluh perintah ini; sisanya ada di tabel lengkap di bawah. Tanda: ⚠ lengan bergerak, 🔒 butuh G28 dulu, 🧪 alat diagnostik.
M115
Lihat info sistem/firmware (cara cepat memeriksa robot menjawab)
M115
G28 ⚠
Home: bawa semua sendi ke titik awal
G28
G0 ⚠ 🔒
Gerak cepat ke koordinat X/Y/Z
G0 X0 Y250.05 Z175
M10 / M11
Vakum nyala (pompa hidup, katup tutup) / lepas (pompa mati, katup terbuka sesaat)
M10 lalu M11
R90
Tampilkan seluruh config hardware (kalibrasi unit)
R90
R530 🧪
Cek bus driver motor; target 3/3 menjawab
R530
R515
Posisi robot sekarang (aman dikirim kapan saja)
R515
R24
Status Bluetooth; S1 menyalakan, S0 mematikan
R24 S1
R521
Status program yang diputar tombol fisik robot; dengan nama = mendaftarkan program
R521
R512
Hentikan program yang sedang berjalan
R512
Daftar perintah R-code robot RNV4H2 (firmware v2.14.0 ke atas). R-code adalah perintah khusus robot untuk hal-hal di luar G-code gerak dan M-code standar: sensor, WiFi, Bluetooth, program di SD card, kalibrasi, dan diagnostik.
Cara mengirim
- Lewat USB (115200 baud) dari RNV4 Studio atau serial monitor, atau lewat Bluetooth. Keduanya diproses bersama. Jalur serial kedua (UART0) dipakai modul eksternal, bukan untuk G-code.
- Satu perintah per baris. Parameter dipisah spasi: huruf lalu nilai, mis.
R280 P2 S90 F120. - Hampir semua perintah membalas
okkalau selesai. Perintah yang menunggu jawaban lanjutan (mis.R91,R22) menyebutnya di balasannya.
Tanda yang dipakai di tabel
⚠ Gerak
Perintah ini menggerakkan lengan. Pastikan ruang di sekitar lengan bebas
🔒
Butuh robot sudah di-Home (G28) dulu
🧪
Alat diagnostik/pengembangan. Aman dibaca, tapi biasanya tidak perlu dipakai sehari-hari
Masukan dan sensor
R1 … R4
Baca satu masukan digital (IN1–IN4): membalas IN1: HIGH atau LOW. Kalau sumbernya tidak ada atau diam, balasannya TIDAK DIKETAHUI, bukan LOW — supaya kabel modul yang lepas tidak terbaca seperti sensor sehat
R5
Baca semua masukan sekaligus, beserta kesegaran tiap sumbernya
Sumber masukan (IN1–IN4) adalah modul eksternal di jalur serial kedua, bukan pin langsung di papan robot. Lihat bagian Modul eksternal di bawah.
Pen dan profil kecepatan
R21 P<0-3>
Pilih profil kecepatan: 0 trapezoid, 1 smootherstep, 2 S-curve (bawaan), 3 segitiga (uji coba; gerak lebih lama, untuk diagnosa bunyi). Berlaku sampai robot dimatikan
R30 ⚠
Pen turun ke tinggi pen_down_z (config) dengan jeda dan kecepatan khusus
R31 ⚠
Pen naik ke tinggi pen_up_z (config) dengan jeda dan kecepatan khusus
WiFi dan Bluetooth
WiFi
R22
Setup WiFi interaktif: pindai jaringan, pilih, ketik password, simpan dan sambung. Selama menunggu jawaban, semua baris yang masuk dianggap jawaban
R22 P0
Status WiFi (jaringan, IP, kekuatan sinyal, jumlah jaringan tersimpan)
R22 P1
Daftar jaringan tersimpan
R22 P2
Putuskan WiFi
R22 P3
Hapus semua jaringan tersimpan
R22 P9
Batalkan sesi setup WiFi yang sedang menunggu jawaban
R23
Sambung WiFi satu kali tanpa interaktif: kirim R23, lalu satu baris JSON {"ssid":"...","pass":"..."}. Dipakai aplikasi/Studio, bukan untuk diketik manual
Bluetooth (BLE)
R24
Status Bluetooth: nyala atau mati, nama, apakah ada perangkat tersambung dan sudah login
R24 S1
Nyalakan Bluetooth
R24 S0
Matikan Bluetooth
Pilihan nyala/mati tersimpan dan bertahan sesudah robot dimatikan. Matikan Bluetooth saat memburu bunyi motor atau step hilang: radio berbagi waktu CPU dengan pembangkit pulsa. Password dan nama: lihat bagian Bluetooth (BLE).
Servo dan gripper
R280 P1 S<derajat> [F<°/s>]
Servo rotasi (P1) ke sudut tertentu. F mengatur kecepatan. Tanpa F = kecepatan maksimum servo (config servo1_max_speed); F0 = loncat seketika tanpa ramp
R280 P2 S<derajat> [F<°/s>]
Gripper (P2) ke sudut tertentu
R280 P2 D<mm>
Gripper ke bukaan dalam milimeter (butuh kalibrasi R282)
R281 P<1|2>
Baca posisi servo: sudut sekarang, target, sedang bergerak atau diam. P2 ikut menampilkan bukaan mm kalau sudah dikalibrasi
R282
Kalibrasi bukaan gripper (sudut ↔ mm). Bawa gripper ke sudut yang enak diukur, ukur jarak rahang, kirim R282 D<mm>: sudutnya ikut tercatat. 2 titik = garis lurus, titik ketiga = dua ruas, sampai 5 titik. Tanpa parameter = status. S<derajat> D<mm> mengisi titik tanpa menggerakkan servo. S0 menghapus semua titik
R516
Baca posisi servo rotasi dan gripper sekaligus
Posisi dan status
R515
Posisi robot sekarang (X/Y/Z). RL menambah posisi rel, SR menambah servo rotasi. Ditambah kata LIMIT kalau posisi di luar ruang kerja. Aman dikirim kapan saja, termasuk saat bergerak
R50
Status lengkap robot: siap atau belum, posisi, jumlah program di SD, keadaan SD card
R99
Tampilkan nomor seri dan ID robot
R99 S<nomor>
Set nomor seri (butuh password produksi; untuk pabrik)
Konfigurasi hardware (config robot)
R90
Tampilkan seluruh config hardware
R91
Ubah satu field: robot meminta nomor field lalu nilai baru. Sebagian besar langsung berlaku. Hanya microsteps dan steps per rev yang butuh restart. Arah motor berlaku langsung tetapi robot jadi belum terkalibrasi dan perlu Home
R92
Reset semua config ke bawaan pabrik (minta mengetik YES)
R93
Ambil seluruh config sebagai satu JSON (untuk Studio)
R94
Timpa config dari satu JSON; pembaruan sebagian didukung (untuk Studio)
Daftar field: lihat bagian hwConfig. Contoh field yang bisa dipilih lewat Studio: tingkat log konsol USB (log_level: 0 error saja, 1 + info, 2 + debug).
Driver motor, homing, dan encoder
Driver motor TMC2209
R530 🧪
Periksa bus ketiga driver motor: lapor tiap driver (X bahu, Y siku, Z rotasi base) menjawab atau tidak. Jalankan ini lebih dulu saat memasang atau memperbaiki robot. Kalau tidak ada driver yang menjawab, motor dikunci dan LED ungu kedip
R531 P<1|2|3> ⚠ 🧪
Gerakkan satu sendi sambil menyiarkan nilai beban motor (untuk menyetel deteksi mentok). Hanya valid saat motor berputar
R553 🧪
Mode kerja driver saat bergerak: S0 senyap, S1 bertenaga (bawaan), S2 F<step/detik> campuran
R558 🧪
Lihat arus motor yang sedang mengalir dan setelan arus tahan. S1 memantau perubahan terus-menerus, S0 berhenti
Homing
G28 ⚠
Homing. Kalau acuan home encoder sudah tersimpan, tiap sendi dibawa ke titik home tanpa menyentuh stopper. Kalau belum, memakai deteksi beban motor
R548 ⚠
Paksa homing deteksi beban penuh (menabrak stopper pelan), mengabaikan acuan encoder. Sama dengan G28 F
R547
Terima acuan home encoder dari homing deteksi beban terakhir bila berbeda dari yang tersimpan. R547 S0 menghapus acuan
Encoder sendi (AS5600)
Alat bantu untuk pemasangan, kalibrasi, dan pembuktian bahwa tidak ada langkah motor yang hilang. Untuk kalibrasi penuh cukup satu perintah, R546.
R540 🧪
Periksa bus encoder dan tiap sensor, termasuk kualitas jarak magnet. S0 mengosongkan penghitung
R541 🧪
Tampilkan sudut tiap encoder terus-menerus; putar sendi dengan tangan untuk memastikan angkanya berubah
R542 🔒 🧪
Bandingkan posisi yang diperintahkan dengan yang dibaca encoder. R542 S1 ⚠ memutar tiap motor satu per satu untuk menentukan arah encoder, lalu menyimpannya
R543 ⚠ 🔒 🧪
Gerakkan satu sendi saja (mengunci robot sampai G28 berikutnya) untuk memisahkan kopling dan skala
R544 P<1|2|3> ⚠ 🔒 🧪
Sapuan otomatis satu sendi ujung ke ujung, mengukur simpangan encoder tanpa mengubah tabel. Alat verifikasi sesudah kalibrasi
R545 P<n> 🧪
Bangun tabel koreksi encoder dari sapuan terakhir. R545 S0 mengosongkan
R546 ⚠ 🔒
Kalibrasi encoder penuh, satu perintah. Lengan bergerak banyak, sekitar 3–5 menit; kirim apa pun untuk membatalkan. S<derajat> mengubah ukuran segmen. Hasil: tidak perlu tabel, tabel disimpan, atau ditolak
R549 P<1|2|3> ⚠ 🔒
Ukur kelonggaran gigi satu sendi lewat encoder, simpan ke config, lalu jalankan G28
R550 ⚠ 🔒
Petakan lenturan lengan pada berbagai pose (grid pose bahu × siku), dipakai mengoreksi gerak otomatis. S1 tampilkan peta, S0 hapus
R551 S1|S0 🧪
Pantau encoder selama bergerak: tiap gerak dicatat, dan selisih per sendi saat tiba. Bukti kalau ada langkah yang hilang
G28 berikutnya (R543, R549, R550): posisi tidak lagi bisa dipercaya sesudah pengukuran, jadi robot menolak gerak sampai Home ulang.
Modul eksternal (sensor, relay, servo tambahan)
Modul tambahan tersambung ke jalur serial kedua robot dan melapor sendiri kanal yang dimilikinya (mis. delapan masukan, empat relay, empat servo).
Wiring, daya, dan cara memeriksa modul: lihat bagian Modul Eksternal. Menyambung beban ke relay: lihat bagian Relay Modul IO.
R700
Daftar modul yang melapor, kanalnya, dan nilainya. Tanda [BASI] = sudah lebih dari 1,5 detik tanpa kabar. S1 meminta modul memperkenalkan diri lagi
R701 P<1-4> S<0|1>
Nyalakan atau matikan relay nomor P di modul
R702 [P<1-9>] S<0-180>
Gerakkan servo nomor P (bawaan 1) di modul ke sudut S. Jumlah servo yang ada ditentukan modulnya
Mode balasan
R600
Bolak-balik mode balasan motor: tunggu gerakan selesai atau balas langsung (bawaan, disarankan untuk aplikasi pengirim)
R601
Bolak-balik mode balasan servo: tunggu servo selesai atau langsung
Diagnostik pengembangan
Hanya untuk teknisi yang memburu masalah mekanis atau bunyi. Tidak perlu dipakai biasa.
R552 🧪
Irama pulsa motor: jeda antar-iterasi saat bergerak, lonjakan target. S0 reset
R555 S1|S0 🧪
Uji: blokir semua keluaran serial (masukan tetap jalan). Jangan lupa S0
R557 [S<persen>] [J<putaran>] ⚠ 🧪
Gerak polos langsung dari firmware untuk membedakan "jalur gerak" dari "lingkungan" saat bunyi motor
Perintah yang berubah di RNV4H2
G33
Dihapus (probe sentuh)
R520
Dulu probe sentuh. Sekarang mode tuntun tangan
G28
Memakai encoder kalau acuan home ada; deteksi beban kalau tidak
R1–R4
Membaca masukan dari modul eksternal, bukan pin di papan
R515 / R516
Tetap perintah baca posisi murni. Titik teach dan titik gripper ada di R518 / R519
Kalau perintah tidak dikenal
Robot membalas ERROR untuk perintah yang tidak ada atau nomor yang di luar jangkauan. Perintah yang butuh Home tetapi robot belum di-Home membalas pesan yang menyebut G28.
R-code (Program SD Card dan Mode Teach)
Intinya: Program gerak disimpan di SD card dan bisa diputar lagi tanpa Studio; mode teach memandu lengan dengan tangan.
Satu "program aktif" pada satu waktu. Setiap titik yang diajarkan langsung tersimpan di kartu.
Mode tuntun tangan (teach)
R520 S1 🔒
Masuk mode teach: motor dimatikan dan lengan digerakkan dengan tangan; encoder mengikuti posisinya. Selama aktif, R515 melaporkan posisi lengan sebenarnya dan R518 menyimpannya. Gerakan G-code ditolak. Posisi di luar ruang kerja ditandai. Hati-hati: tanpa motor, lengan bisa turun sendiri di jangkauan maksimum
R520 S0
Keluar mode teach: motor menahan lagi, posisi lengan dibukukan dari encoder. Ditolak kalau lengan di luar ruang kerja (P1 memaksa)
R520
Status mode teach
Program di SD card
R500 [nama]
Buat program baru dan jadikan aktif (tanpa nama = nama otomatis)
R501
Tambahkan perintah gerak terakhir ke akhir program aktif
R502 [P<n>]
Tampilkan program aktif, atau pratinjau program tersimpan nomor n
R503 P<baris>
Sisipkan perintah terakhir di baris tertentu
R504 P<baris> [UP|DOWN]
Hapus satu baris, atau geser ke atas/bawah
R505 CONFIRM
Kosongkan program aktif (wajib mengetik CONFIRM)
R506
Tutup program aktif (tidak menghapus apa pun)
R507
Daftar semua program tersimpan
R508 P<n> [X<kali>] ⚠
Putar program nomor n. X<kali> = putar tepat sekian kali. Tanpa X mengikuti mode loop (R511)
R509 P<n>
Hapus program nomor n dari SD
R510 P<n>
Buka program tersimpan untuk diedit
R511 [S<0|1>]
Mode loop: tanpa parameter = bolak-balik, S1 nyala, S0 mati. Boleh dikirim saat program berjalan
R512
Hentikan program yang sedang berjalan
R513
Mode tempel: baris berikutnya ditempel ke program aktif tanpa dijalankan, sampai END atau DONE
R514
Tampilkan perintah terakhir yang dijalankan
R517 [P<baris>] <teks>
Tempel baris apa adanya (label, kondisi sensor) ke program aktif
R518 [S] [F<f>] [P1]
Teach point: simpan posisi robot sekarang sebagai titik. S sertakan servo rotasi, F pakai gerak lurus dengan kecepatan itu, P1 sertakan rel
R519
Titik gripper: simpan posisi gripper sekarang sebagai baris di program
R521
Status program yang diputar tombol fisik robot
R521 <nama tampilan>
Daftarkan program yang diputar tombol BOOT. Yang disimpan namanya, bukan nomor urut
R521 S0
Hapus pendaftaran
R521 P1 ⚠
Jalankan program terdaftar sekarang (uji tanpa ke robotnya)
Tombol BOOT punya tiga arti tekan-pendek sesuai keadaan robot: belum dikalibrasi = Home (G28), sudah dikalibrasi dan diam = putar program terdaftar, sedang memutar = hentikan.
Sensor Digital (IN1–IN3)
Intinya: Sensor masuk lewat modul IO: TUNGGU menahan program sampai sensor terpenuhi, LOMPAT mengecek sekali lalu bercabang.
Cara memakai sensor di program SD: menunggu sensor, bercabang (jika sensor begini lompat ke sana), mengulang (loop), memakai label, dan menggabung beberapa sensor dengan AND / OR. Lengkap dengan contoh penulisan.
Sebelum memakai sensor, pastikan modul IO sudah terpasang dan terbaca (lihat bagian Modul Eksternal). Sensor di robot RNV4H2 datang dari modul itu. Modul IO standar punya 3 masukan (IN1–IN3), sama seperti di dialog RNV4 Studio; firmware juga mengenal satu masukan tambahan (IN4) untuk modul lain.
Yang perlu dipahami dulu
Robot punya empat masukan logis: IN1, IN2, IN3, IN4. Masing-masing bernilai HIGH (tinggi) atau LOW (rendah). Nilai itu datang dari sensor yang tersambung ke modul IO.
OUT ke LOW saat ada objek, sedangkan banyak saklar menjadi HIGH saat ditekan. Jangan menebak: ukur dengan R1 saat objek ada dan saat tidak ada, lalu pilih H atau L di program sesuai hasilnya.
Masukan robot dan konektor modul
IN1
Konektor SENSOR1 di modul IO
IN2
Konektor SENSOR2 di modul IO
IN3
Konektor SENSOR3 di modul IO
Di dalam program ada tiga jenis baris yang berhubungan dengan sensor:
IN1 H
Program berhenti di baris ini sampai IN1 HIGH
IN1 H >2
Cek sekali: kalau IN1 HIGH, lompat ke label >2; kalau tidak, lanjut ke baris berikutnya
>2
Penanda tujuan lompatan. Tidak dikerjakan, hanya penanda
Perbedaan TUNGGU dan LOMPAT hanya satu hal: ada atau tidaknya >N di ujung baris. Bagian ini yang paling sering tertukar.
Membaca sensor dengan tangan
Sebelum menulis program, lihat dulu nilai sensornya:
R1
IN1: HIGH atau IN1: LOW
R2, R3, R4
sama, untuk IN2, IN3, IN4
R5
IN1:1 IN2:0 IN3:1 IN4:0 (1 = HIGH, 0 = LOW), plus keterangan segar atau tidak
Kalau modul tidak melapor, balasannya TIDAK DIKETAHUI, bukan LOW. Itu disengaja supaya kabel yang lepas tidak terbaca seperti sensor sehat yang sedang tidak terpicu.
RNV4 Studio juga menampilkan keadaan IN1–IN3 langsung sebagai indikator warna.
TUNGGU: berhenti sampai sensor terpenuhi
Tulis nama sensor lalu keadaan yang ditunggu, tanpa >N:
IN1 H ; tunggu sampai IN1 HIGH
G0 X0.000 Y250.050 Z25.000 ; baru turun
- Program menahan diri tanpa batas waktu sampai kondisi terpenuhi.
- Selama menunggu, robot tetap melayani servo, Studio, dan perintah berhenti. Setiap 2 detik ia mengirim
Still waiting for: IN1 Hsupaya jelas ia tidak hang. - Hentikan program yang sedang menunggu dengan
R512(atau tombol Stop di Studio). - Sebelum menilai sensor, robot menunggu semua gerakan yang sudah diantre selesai secara fisik. Jadi sensor dinilai berdasarkan posisi robot sungguhan, bukan posisi baris di file. Akibatnya robot berhenti sejenak di tiap baris sensor.
Cocok untuk: "tunggu benda datang", "tunggu operator menekan tombol", "tunggu mesin sebelah selesai".
LOMPAT: percabangan "jika … maka lompat ke …"
Tambahkan >N di ujung baris, dengan N nomor label tujuan:
IN1 H >3 ; jika IN1 HIGH, lompat ke label 3. Kalau tidak, lanjut baris berikutnya
- Robot mengecek sekali, pada saat baris itu dijalankan, lalu langsung memutuskan.
- Kalau sensornya hanya sesaat (mis. saklar yang ditekan sebentar), cabang bisa tidak terambil karena sensornya belum aktif pada saat itu. Untuk "tunggu sampai ditekan" pakai TUNGGU, bukan LOMPAT.
- Kalau kondisi tidak terpenuhi, log menulis
Jump condition FALSE - continuing. Itu bukan error: kondisinya memang belum benar pada saat dicek.
Label
Label adalah penanda tujuan lompatan. Satu baris, diawali > dan nomor:
>1 ; label nomor 1
>2 # kembali home ; boleh diberi komentar sesudah tanda #
>1, >2, >10
JUMP ERROR: Label >N not found! dan program lanjut ke baris berikutnya
Baris kosong dan komentar yang diawali ; tidak dihitung sebagai baris program.
Menulis dari RNV4 Studio
Di Editor Gerakan, tombol di Panel Robot menyisipkan baris-barisnya:
@LABEL 1
>1
@JUMP IN1 H 2
IN1 H >2
@JUMP IN1 H AND IN2 L 3
IN1 H AND IN2 L >3
Dialog "Kondisi Sensor + Jump" menawarkan IN1–IN3, satu syarat, atau dua syarat dengan AND / OR. Bentuk TUNGGU (IN1 H) dan kondisi dengan lebih dari dua sensor ditulis lewat + Teks Bebas. Penulisan @LABEL dan @JUMP dari Studio dan penulisan >N langsung sama-sama diterima robot.
Menggabung sensor: AND dan OR
Satu baris boleh memuat beberapa syarat:
IN1 H AND IN2 L ; IN1 HIGH dan IN2 LOW sekaligus
IN1 H OR IN3 H ; salah satu saja
IN1 L OR IN2 H AND IN3 L ; campuran
Berlaku untuk bentuk TUNGGU dan bentuk LOMPAT:
IN1 H AND IN2 H ; TUNGGU sampai keduanya HIGH
IN1 H AND IN2 L >4 ; LOMPAT ke >4 kalau IN1 HIGH dan IN2 LOW
Cara menulis satu syarat
IN1 H, IN1 1, IN1=H
IN1 harus HIGH
IN1 L, IN1 0, IN1=L
IN1 harus LOW
Spasi bebas dan huruf besar/kecil bebas: in1 h sama dengan IN1 H.
Urutan: AND lebih kuat dari OR
IN1 L OR IN2 H AND IN3 L
dibaca:
IN1 L OR (IN2 H AND IN3 L)
Tanda kurung TIDAK didukung
Menulis IN1 H AND (IN2 H OR IN3 L) ditolak dan program berhenti dengan pesan yang menyebut kondisinya. Kalau Anda butuh (A OR B) AND C, pecah jadi beberapa baris lompatan (lihat pola "Dua sensor sekaligus" di bawah).
Kondisi yang tidak bisa dinilai membuat program berhenti
Kondisi yang salah tulis tidak dinilai "tidak terpenuhi". Program dihentikan dengan pesan yang menyebut kondisi aslinya. Yang ditolak: tanda kurung, sensor selain IN1–IN4, bentuk selain IN<nomor> H/L, dan keadaan selain H, 1, L, 0. Ini disengaja: kondisi yang dianggap false diam-diam akan membuat robot menunggu selamanya atau mengambil cabang yang salah tanpa ada yang tahu sebabnya.
Pola yang sering dipakai
Tunggu lalu kerjakan
IN1 H ; tunggu benda
G0 X0.000 Y250.050 Z25.000
M10 ; vakum ON
Ulang terus selama sensor aktif (loop)
>1 ; awal loop
G0 X0.000 Y250.050 Z175.000
G0 X0.000 Y250.050 Z25.000
IN1 H >1 ; selama IN1 HIGH, kembali ke >1
G0 X0.000 Y250.050 Z175.000 ; IN1 LOW: keluar dari loop dan lanjut
Ulang sampai ada sensor yang menghentikan
>1
G0 X100.000 Y200.000 Z175.000
G0 X-100.000 Y200.000 Z175.000
IN2 L >1 ; selama tombol stop (IN2) belum HIGH, ulangi
Jika / selain itu (if / else)
Tujuan: kalau IN3 HIGH kerjakan cabang B, kalau tidak kerjakan cabang A, lalu keduanya bertemu lagi.
IN3 H >2 ; JIKA IN3 HIGH, lompat ke cabang B
; --- cabang A (IN3 LOW) ---
G0 X100.000 Y200.000 Z175.000
IN1 H OR IN1 L >3 ; lompat ke akhir (lihat catatan)
>2
; --- cabang B (IN3 HIGH) ---
G0 X-100.000 Y200.000 Z175.000
>3
; --- bertemu lagi ---
M11
IN1 H OR IN1 L >3 adalah akal-akalan yang selalu benar (IN1 pasti HIGH atau LOW). Kalau IN1 sedang tidak melapor, program berhenti dengan pesan sumber tidak tersedia, jadi ini aman, tetapi uji dulu di robot sebelum dipakai untuk pekerjaan penting.
Dua sensor sekaligus: (A OR B) AND C tanpa kurung
Tujuan: lanjut kalau (IN1 HIGH atau IN2 HIGH) dan IN3 LOW.
IN3 H >9 ; C gagal: lompat ke akhir/penanganan lain
IN1 H OR IN2 H ; C lolos: tunggu salah satu dari A atau B
G0 X0.000 Y250.050 Z25.000
>9
Sortir dua jalur
>1
IN1 H ; tunggu benda
G0 X0.000 Y250.050 Z25.000
M10 ; ambil
G0 X0.000 Y250.050 Z175.000
IN3 H >2 ; benda jenis B? lompat ke >2
G0 X100.000 Y200.000 Z175.000 ; jenis A: jalur kiri
M11
IN2 L >1 ; selama stop belum ditekan, ulangi
>2
G0 X-100.000 Y200.000 Z175.000 ; jenis B: jalur kanan
M11
IN2 L >1
Sensor dan relay bersama
IN1 H ; tunggu benda masuk
R701 P1 S1 ; relay 1 nyala (mis. penjepit atau conveyor)
G0 X0.000 Y250.050 Z25.000
R701 P1 S0 ; relay 1 mati
Perintah relay boleh jadi baris program; robot menunggu konfirmasi dari modul sebelum lanjut.
Menjalankan dan menghentikan
R507 ; daftar program, catat nomornya
R508 P3 ; jalankan program nomor 3 sekali
R508 P3 X10 ; jalankan tepat 10 kali
R511 S1 ; nyalakan mode loop (ulang terus)
R512 ; BERHENTI
R508 P3 X0 bukan "tak terbatas": X hanya dipakai kalau lebih besar dari 0. Untuk berulang, pakai X<jumlah> atau mode loop R511 S1.
Batas lompatan: satu putaran program boleh melompat paling banyak 1000 kali. Lebih dari itu program berhenti dengan pesan JUMP LIMIT EXCEEDED (pengaman dari loop tak berujung yang tidak disengaja). Hitungannya mulai dari nol di setiap putaran. Loop yang memang harus jalan terus sebaiknya memakai mode loop R511 S1, bukan lompatan tanpa akhir.
Batasan yang perlu diketahui
R512
(A OR B) AND C ditolak
Pecah jadi beberapa baris (lihat pola "Dua sensor sekaligus")
R700 tetapi belum bisa dipakai di program
Pakai empat pertama
sensor source unavailable
Periksa sambungan modul (R700)
IN1 L yang membaca nilai basi akan langsung terpenuhi dan menggerakkan robot seolah sensor sudah mengonfirmasi sesuatu. Berhenti dengan pesan jelas lebih aman daripada meneruskan dengan nilai tebakan.
Pemecahan masalah
R1 menjawab TIDAK DIKETAHUI
Modul tidak melapor
Cek daya dan kabel modul, lalu R700
sensor source unavailable
Modul diam saat program menunggu sensor
Perbaiki sambungan, jalankan lagi
>N ikut tertulis, jadi baris ini LOMPAT, bukan TUNGGU
Hapus >N
Jump condition FALSE terus
LOMPAT mengecek sesaat dan sensor belum aktif saat itu
Pakai TUNGGU, atau ulangi pengecekan dalam loop
H seharusnya L)
Cek nilai dengan R1, hentikan dengan R512
JUMP ERROR: Label >N not found!
Label tujuan tidak ada, atau melebihi batas 20
Tambahkan label atau kurangi jumlahnya
JUMP LIMIT EXCEEDED
Loop lompatan melewati 1000 kali dalam satu putaran
Pakai mode loop, atau periksa kondisi keluar loop
Failed to parse command: @LABEL 1
Firmware lama
Perbarui firmware ke versi RNV4H2
Rujukan cepat
Membaca:
R1 .. R4 baca satu masukan -> IN1: HIGH / LOW / TIDAK DIKETAHUI
R5 baca semuanya -> IN1:1 IN2:0 IN3:1 IN4:0
Di dalam program:
>N label nomor N (maks 20 per program)
>N # komentar label dengan komentar
IN1 H TUNGGU sampai IN1 HIGH (tanpa >N)
IN1 L TUNGGU sampai IN1 LOW
IN1 H >N LOMPAT ke >N kalau IN1 HIGH (cek sekali)
IN1 H AND IN2 L syarat majemuk (AND lebih kuat dari OR, tanpa kurung)
IN1 H OR IN3 H >N LOMPAT kalau salah satu terpenuhi
Dari Studio:
@LABEL N = >N
@JUMP IN1 H N = IN1 H >N
@JUMP IN1 H AND IN2 L N = IN1 H AND IN2 L >N
Menjalankan:
R507 / R508 P<n> [X<kali>] / R511 S1 / R512
Contoh Penggunaan (Alur Kerja Umum)
Intinya: Contoh perintah siap salin untuk home, gerak, vakum, dan program.
Rangkaian command G/M/R-code untuk beberapa alur kerja yang umum dipakai. Semua contoh mengasumsikan robot sudah selesai G28 (homing) setelah boot — wajib sebelum G0/G1/G2/G3 pertama kali.
Gerak Dasar & Homing
G28 ; wajib pertama kali setelah boot
G0 X100 Y150 Z50 ; rapid move, kecepatan otomatis maksimum
G1 X200 Y100 F600 ; gerak terkontrol, ≈10 mm/detik
M114 ; cek posisi saat ini
Pick & Place dengan Gripper Vacuum
G0 X100 Y150 Z50 ; pindah ke atas benda
G1 Z10 F300 ; turun pelan mendekati benda
M10 ; vacuum ON — benda terangkat
G1 Z50 F600 ; angkat
G0 X250 Y100 ; pindah ke titik taruh
G1 Z10 F300
M11 ; vacuum release — benda lepas
G1 Z50 F600
Jeda tunggu bawaan M10/M11 diatur field vacuum_on_dwell/vacuum_off_dwell (lihat Kalibrasi Hardware) — sesuaikan lewat R91 kalau benda berat/berpori.
Menggambar/Menulis dengan Gripper Pen
G0 X100 Y100 Z50 ; ke titik awal, pen masih di atas kertas
R30 ; pen DOWN — turun ke kertas
G1 X150 Y100 F300 ; gambar garis
G1 X150 Y150 F300
G1 X100 Y150 F300
R31 ; pen UP — angkat dari kertas
Gripper Servo Manual
R280 P2 S0 ; buka gripper (servo2 ke 0°)
R280 P2 S90 F60 ; tutup pelan — kecepatan custom 60°/s
R281 P2 ; cek posisi & status
R280 P1 S45 ; servo1 (rotasi gripper) ke 45°, kecepatan MAX
R281 P1
Untuk gerak XYZ + rotasi gripper bersamaan (bukan berurutan), pakai parameter S langsung di G0/G1 — lihat G-code.
Ajar & Mainkan Program dari SD Card
Alur "ajarkan titik satu-satu" lalu mainkan berulang — cocok untuk gerakan berulang (mis. pick & place di titik-titik tetap):
R500 pindah_kotak ; buat program baru, jadi program aktif
G0 X100 Y150 Z50 ; gerak manual ke titik 1 ...
R501 ; ... simpan command terakhir ke program
G1 Z10 F300
R501
M10
R501
G1 Z50 F600
R501
R502 ; tampilkan isi program aktif untuk dicek
R506 ; selesai — lepas program aktif (file tetap tersimpan)
R507 ; lihat daftar semua program tersimpan
R508 P1 ; mainkan program #1 sekali
R508 P1 X5 ; mainkan program #1 persis 5 kali
R512 ; hentikan playback yang sedang berjalan
R500/R501/R506 tidak membalas konfirmasi eksplisit kecuali error — gunakan R502/R507 untuk verifikasi isi.
Cek Posisi Saat Robot Sedang Bergerak
Query murni, aman dikirim kapan saja termasuk saat robot masih bergerak, tidak butuh homing:
R515 RL SR ; posisi X/Y/Z + rel (E) + servo1
R516 ; posisi servo1 & servo2 saat ini
Hubungkan WiFi
R22 untuk dipakai manual lewat serial monitor (percakapan bertahap, pilih SSID lalu ketik password):
R22
→ 1 (pilih nomor SSID dari hasil scan)
→ passwordwifi123 (ketik password jaringan)
R23 untuk dipanggil programatik dari app/UI (satu kali kirim JSON, non-blocking):
R23
→ {"ssid":"RumahWifi","pass":"passwordwifi123"}
Kalibrasi (hwConfig)
Intinya: Setiap robot menyimpan kalibrasinya sendiri; lihat dengan R90, ubah satu field lewat R91 atau Config Robot di Studio.
Setiap unit robot menyimpan kalibrasi pribadinya di memori internal. Isinya faktor skala, kopling antar sendi, arus motor, acuan home encoder, batas sudut sendi, dan lain-lain. Robot membacanya saat menyala; Anda tidak perlu mem-flash ulang untuk mengubahnya.
Cara mengubah
R90
Menampilkan semua field beserta nomornya.
R91 <nomor> <nilai>
Mengubah satu field. Tanpa nilai, menampilkan nilai sekarang.
R92
Mengembalikan semua field ke nilai pabrik. Kalibrasi unit hilang — jangan dipakai tanpa cadangan.
R93 / R94
Ekspor / pulihkan seluruh kalibrasi (cadangan).
Catatan:
- Field bertanda
*rebootbaru berlaku setelah robot dinyalakan ulang. Yang lain berlaku langsung. - Studio meneruskan perubahan ke server sebagai cadangan; unit baru/ganti papan bisa dipulihkan dari situ.
- Catat nilai lama sebelum mengubah. Banyak field hasil ukur per unit dan tidak bisa ditebak ulang.
Yang berbeda dari RNV4 lama
- Tidak dipakai lagi: field suhu dan kipas (nomor 13–16 dan 32 sengaja kosong). Kipas kini disaklar termostat di hardware, bukan firmware.
- Ditambahkan: ambang deteksi beban (StallGuard), arah dan acuan home encoder, arus motor per sendi dan arus tahan, kompensasi backlash, batas sudut sendi, titik kalibrasi gripper, jenis gripper, Bluetooth, tingkat log, dan program pemutaran offline.
- Nilai pabrik pada tabel di bawah adalah bawaan (bukan nilai wajib). Unit Anda mungkin sudah berbeda karena kalibrasi.
Daftar field
Skala dan kopling Kartesius (koreksi posisi ujung lengan)
Dipakai setelah geometri lengan dihitung, untuk meluruskan selisih kecil antara posisi yang diperintahkan dan posisi terukur dengan penggaris. Ubah hanya setelah mengukur.
cal_x_scale
0,8888
Skala sumbu X (1,0 = tanpa koreksi)
cal_y_scale
1,0389
Skala sumbu Y
cal_xy_skew_pos
−0,040
mm Y per mm X, saat X bertambah
cal_xy_skew_neg
0,040
mm Y per mm X, saat X berkurang
cal_zy_coupling_pos
−0,010
mm Z per mm Y, saat Y bertambah
cal_zy_coupling_neg
−0,038
mm Z per mm Y, saat Y berkurang
cal_yz_coupling_pos
−0,038
mm Y per mm Z, saat Z bertambah
cal_yz_coupling_neg
0,038
mm Y per mm Z, saat Z berkurang
cal_zx_coupling_pos
0,000
mm Z per mm X, saat X bertambah
cal_zx_coupling_neg
0,000
mm Z per mm X, saat X berkurang
Homing (acuan awal)
x_home_steps
3900
Langkah dari stopper bahu ke posisi awal
y_home_steps
4590
Langkah dari stopper siku ke posisi awal
z_home_steps
12550
Langkah dari stopper rotasi ke posisi awal
e0_home_steps
0
Langkah dari stopper rel ke posisi awal
e0_home_invert
0
Sisi limit switch rel: 0 = sisi bawaan, 1 = sebaliknya
Deteksi beban / tabrakan (StallGuard)
Angka lebih besar = lebih mudah terpicu = tabrakan lebih ringan. Nilai ini bergantung kecepatan dan arus motor; mengubah arus atau kecepatan homing berarti perlu diukur ulang.
sgthrs_x
90
Ambang homing bahu (0 = hitung otomatis)
sgthrs_y
80
Ambang homing siku
sgthrs_z
50
Ambang homing rotasi base
sgthrs_sweep_x
100
Ambang sapuan kalibrasi bahu (0 = ikut homing)
sgthrs_sweep_y
80
Ambang sapuan kalibrasi siku
sgthrs_sweep_z
50
Ambang sapuan kalibrasi rotasi base
Encoder AS5600
enc_dir_x
+1
Arah hitung encoder bahu (+1 / −1)
enc_dir_y
−1
Arah hitung encoder siku
enc_dir_z
+1
Arah hitung encoder rotasi base
enc_home_x
−1
Acuan home encoder bahu (hitungan; −1 = belum ada)
enc_home_y
−1
Acuan home encoder siku
enc_home_z
−1
Acuan home encoder rotasi base
enc_home_dwell_us
450
Jeda antar langkah saat G28 via encoder (µs; lebih kecil = lebih cepat, rentang 150–5000)
- Arah encoder adalah fakta pemasangan, bukan pilihan: tergantung sisi magnet yang menghadap sensor. Jangan ditebak —
G28, gerakkan sendi sedikit, laluR542;R542 S1menuliskan arah yang benar otomatis. - Acuan home diisi otomatis oleh homing; −1 berarti
G28memakai StallGuard. BilaG28melapor acuan berbeda dari yang tersimpan, terima denganR547. - Tabel koreksi encoder tidak ada di hwConfig (terlalu besar); ia disimpan terpisah dan tidak ikut
R92.
Arus motor dan backlash (TMC2209)
tmc_current_x
600
Arus kerja bahu (mA RMS, 200–1200)
tmc_current_y
600
Arus kerja siku
tmc_current_z
700
Arus kerja rotasi base
tmc_hold_pct
50
Arus tahan (% dari arus kerja, 10–100; 100 = tanpa penurunan)
tmc_powerdown_s
3,0
Detik diam sebelum arus turun ke arus tahan
tmc_hold_delay
8
Kehalusan penurunan arus (0–15; 0 = seketika)
backlash_x
0
Kelonggaran gigi bahu (langkah motor; 0 = mati)
backlash_y
0
Kelonggaran gigi siku
backlash_z
10
Kelonggaran gigi rotasi base
Penjelasan lengkap arus: lihat bagian Motor & Driver Listrik. Backlash diukur dengan R549 P1/P2/P3 (hasilnya langsung tersimpan), lalu G28. Batas atas 2000.
Stepper (*reboot)
microsteps
16
Microstep (1/2/4/8/16/32)
steps_per_rev
200
Langkah per putaran motor
inverse_x_stepper
false
Balik arah motor bahu
inverse_y_stepper
true
Balik arah motor siku
inverse_z_stepper
false
Balik arah motor rotasi base
inverse_e0_stepper
false
Balik arah motor rel
Rel (opsional)
steps_per_mm_rail
80,0
Langkah per mm (*reboot)
rail_length
193,0
Panjang rel (mm) (*reboot)
rail_enabled
false
Unit ini memakai rel
Batas sudut sendi
Batas ini mencegah lengan menabrak badan. Hasil ukur fisik unit pertama — unit lain bisa sedikit berbeda.
joint_low_min_deg
−32,0
Lengan bawah paling rebah ke belakang (derajat)
joint_low_max_deg
82,3
Lengan bawah paling rebah ke depan
joint_high_min_deg
54,4
Lengan atas paling mendongak
joint_high_max_deg
184,0
Lengan atas paling menunduk
Servo dan gripper
servo1_default_pos
90
Posisi awal servo rotasi (derajat)
servo1_speed
330
Kecepatan servo rotasi (°/detik)
servo1_min_pos
0
Batas bawah servo rotasi
servo1_max_pos
180
Batas atas servo rotasi
servo1_max_speed
330
Kecepatan maksimum servo rotasi (°/detik)
servo1_invert
0
Balik arah servo rotasi (langsung aktif)
servo2_default_pos
120
Posisi awal gripper (derajat)
servo2_min_pos
70
Gripper menutup penuh
servo2_max_pos
120
Gripper membuka penuh
servo2_max_speed
300
Kecepatan maksimum servo gripper
gripper_type
0
Jenis terpasang: 0 tidak ada, 1 servo, 2 vakum, 3 pena
Titik kalibrasi bukaan gripper (sudut ↔ jarak rahang), dipakai agar bukaan dapat diperintah dalam milimeter:
grip_deg_a / grip_mm_a
Titik A (derajat / mm); 0 = kosong
grip_deg_b / grip_mm_b
Titik B
grip_deg_c / grip_mm_c
Titik C (opsional)
grip_deg_d / grip_mm_d
Titik D (opsional)
grip_deg_e / grip_mm_e
Titik E (opsional)
Isi dengan R282: bawa gripper ke sudut yang mudah diukur, ukur jarak rahang, kirim R282 D<mm> (sudutnya ikut tercatat). Dua titik = garis lurus; titik lebih banyak = lebih teliti. R282 S0 menghapus.
Pena, vakum
pen_down_z
0,0
Z pena menyentuh kertas (mm)
pen_up_z
10,0
Z pena di udara (mm)
pen_down_dwell
100
Jeda sebelum turun (ms)
pen_down_speed
500
Kecepatan turun (mm/menit)
pen_up_dwell
100
Jeda sebelum naik (ms)
pen_up_speed
500
Kecepatan naik (mm/menit)
vacuum_on_dwell
500
Jeda setelah pompa dinyalakan (ms)
vacuum_off_dwell
1000
Waktu katup terbuka setelah pompa dimatikan (ms)
Bluetooth, log, pemutaran offline
bt_enabled
1
Bluetooth menyala saat boot (R24 S1/S0 mengubahnya)
bt_password
1234
Password Bluetooth; diubah dari Studio, tidak ditampilkan
offline_program
kosong
Nama program yang diputar tombol fisik; diisi lewat R521, bukan R91
log_level
2
Tingkat log USB: 0 ERROR, 1 INFO, 2 DEBUG (langsung aktif)
Aturan praktis
R90dulu, catat, baru ubah. Simpan hasilR90(atau eksporR93).- Ubah satu field, uji, baru lanjut.
- Field Kartesius (lihat Skala dan kopling Kartesius) dan batas sendi (lihat Batas sudut sendi) hasil pengukuran — jangan dikarang.
- Arus (lihat Arus motor dan backlash) naikkan bertahap dan hanya bila ada langkah yang hilang; arus tinggi memanaskan driver.
- Setelah mengubah arus, ambang StallGuard, atau acuan home: jalankan
G28ulang. R92menghapus kalibrasi unit. Jangan dipakai sembarangan.
Tutorial
Setup Akun & Token API
Intinya: Buat akun Ruskomponen lalu token API untuk dipakai Studio dan fitur AI.
Langkah pertama sebelum bisa mengontrol robot dari PC: unduh & instal RNV4 Studio, lalu hubungkan ke akun web Anda pakai Token API (bukan username/password) — token inilah yang mengizinkan Studio bicara ke server atas nama akun Anda.
Prasyarat
- 1
-
2
Buka folder hasil unduhan
Cari file RNV4Studio-Setup.exe, lalu jalankan.
-
3
Kalau muncul peringatan Windows
Windows SmartScreen menandai installer belum bersertifikat code-signing resmi — klik “More info”.
-
4
Klik “Run anyway”
Installer aman, cuma belum ditandatangani sertifikat berbayar Microsoft — lanjutkan instalasi.
-
5
Klik Install
-
6
Klik Next
-
7
Klik Next lagi
-
8
Klik Yes
Konfirmasi izin instalasi Windows (UAC).
-
9
Tunggu hingga selesai
-
10
Klik Finish
RNV4 Studio otomatis terbuka setelah instalasi selesai.
-
11
Wajib login pakai Token API
Sejak versi terbaru, RNV4 Studio mewajibkan akun aktif — dialog “Login diperlukan” muncul otomatis saat pertama kali dibuka.
-
12
Belum punya token? Klik link ke dashboard
Klik “Belum punya token? Daftar/Masuk di ruskomponen.uk” untuk membuka dashboard akun di browser.
-
13
Daftar atau masuk
Kalau belum punya akun, daftar dulu. Kalau sudah punya, langsung masuk.
-
14
Buka tab Developer
Di dashboard web, buka tab Developer lalu klik “Buat Token Pertama” (atau “Buat Token Baru” kalau sudah pernah punya token lain).
-
15
Beri nama token
Nama bebas sesuai keinginan (mis. “Laptop Kerja”) — cuma label pengingat, tidak mempengaruhi fungsi token.
-
16
Salin token
Token cuma ditampilkan SEKALI saat dibuat — salin sekarang sebelum menutup dialog.
-
17
Tempel token di RNV4 Studio
Kembali ke RNV4 Studio, tempel token di kolom yang tersedia, lalu klik Masuk.
Troubleshooting
Catatan Penting
- Token ini bersifat rahasia — jaga baik-baik seperti password, jangan bagikan ke siapa pun. Siapa saja yang memegang token ini bisa mengakses akun Anda lewat RNV4 Studio.
- Token bisa dicabut/dibuat ulang kapan saja dari tab Developer kalau dicurigai bocor, tanpa perlu update aplikasi.
- 1 token bisa dipakai di beberapa PC/Studio sekaligus — tidak wajib buat token baru tiap install ulang, cukup salin token yang sama.
Klaim Robot ke Akun
Intinya: Klaim robot ke akun dengan kode klaim sekali pakai yang ditampilkan Studio.
Setelah RNV4 Studio terhubung ke akun (lihat Setup Akun & Token API di atas), Anda bisa "mengklaim" robot fisik ke akun itu satu kali lewat kode klaim sekali-pakai. Langkah ini opsional — bukan syarat wajib untuk mengontrol robot lewat USB/RNV4 Studio seperti biasa — tapi diperlukan kalau ingin memakai fitur yang terhubung ke akun dan bisa diakses dari jarak jauh lewat internet (mis. AI Doodle).
-
1
Hubungkan robot lewat USB
Colokkan robot ke PC, pilih Port yang sesuai lalu klik Konek — lihat detail lengkap di tutorial Koneksi ke RNV4 Studio di bawah.
-
2
Klik tombol Klaim Robot
Tombol ada di bagian atas jendela Studio, di samping tombol Konek.
-
3
Klik Minta Kode Klaim
Robot ID akan terisi otomatis sesuai robot yang sedang tersambung.
-
4
Salin kode klaim
Kode berlaku 10 menit sejak diminta — pastikan PC terhubung internet supaya kode berhasil diminta ke server.
-
5
Buka tab Robot Saya, klik Tambah Robot
Di dashboard web (app.ruskomponen.uk), buka tab Robot Saya.
-
6
Tempel kode klaim
Bukan Robot ID — tempel kode klaim 8 karakter yang disalin dari Studio tadi, lalu klik Tambahkan.
-
7
Selesai — robot terdaftar
Robot muncul di daftar Robot Saya, siap dipakai (AI Doodle, dll).
Troubleshooting
Catatan Penting
- Kode klaim cuma bisa dipakai sekali — kalau kadaluarsa (lewat 10 menit) atau salah tempel, kembali ke Studio dan klik "Minta Kode Baru".
- Robot yang sudah diklaim akun lain tidak bisa diklaim ulang oleh akun Anda — hubungi pemilik sebelumnya atau tim support kalau ini terjadi pada robot yang seharusnya milik Anda.
- Satu robot cuma bisa terhubung ke satu akun pada satu waktu — lepas dulu dari tab Robot Saya kalau mau pindah kepemilikan.
Menghubungkan Robot ke RNV4 Studio
Intinya: Sambungkan Studio lewat USB, lalu pakai tab Robot 3D dan Panel Robot.
Robot terhubung ke RNV4 Studio lewat kabel USB (native USB CDC ESP32-S3) — bukan WiFi. Berikut langkah lengkapnya beserta cara mengatasi masalah umum.
Prasyarat
Area yang ditandai kotak hijau (pojok kiri atas) — dropdown Port, Baud, ikon muat ulang (di antara Baud dan tombol Konek — tekan ini kalau port belum muncul), dan tombol Konek — dipakai di langkah 3–5 di bawah. Port di contoh ini terdeteksi otomatis sebagai COM4 🤖 ESP32 (RNV4?) — nomor COM di perangkat Anda bisa berbeda.
-
1
Pasang kabel USB dari robot ke PC/laptop
Tunggu Windows selesai mengenali device (biasanya muncul sebagai COMx).
-
2
Buka RNV4 Studio
-
3
Pilih Port robot
Robot ESP32-S3 otomatis terdeteksi di dropdown Port dengan tanda 🤖 ESP32 (RNV4?) — tanda tanya berarti baru tebakan dari jenis chip USB-nya, belum dipastikan itu benar-benar robot RNV4 sampai berhasil konek. Kalau port belum muncul, tekan ikon muat ulang (di sebelah dropdown Port) atau lepas-pasang ulang kabel USB.
-
4
Pastikan Baud = 115200
Ini nilai default dan wajib sama dengan konfigurasi firmware — jangan diubah kecuali firmware juga diubah.
-
5
Klik tombol Konek
Tombol biru di sebelah kanan field Baud.
-
6
Tunggu ±2 detik
Tombol menampilkan animasi spinner — ini bukan hang, tapi jeda sengaja supaya ESP32-S3 selesai boot dulu sebelum mulai menerima perintah.
-
7
Koneksi berhasil
Tombol berubah jadi Putus (merah), status menunjukkan device + baud rate yang terhubung, dan label Port otomatis berganti dari tanda tanya (RNV4?) jadi ID robot sungguhan (mis. 🤖 RNV4-00004-F6D64450) — dikonfirmasi langsung dari robotnya, bukan tebakan lagi.
Tab Robot 3D
Tab Robot 3D di RNV4 Studio menampilkan model 3D robot yang mengikuti gerakan robot secara langsung. Panel Robot di sisi kanan berisi alat untuk menulis program gerakan.
- Pilihan tampilan di atas model:
3D,Depan,Belakang,Atas,Samping,Lintasan, danBersihkan. - Pilihan gripper di pojok kanan atas model:
Gripper Servo,Gripper Vacum, danGripper Pen. - Slider X, Y, Z, E di bawah model, dan petunjuk mouse (ikon
i):Gizmo,Putar,Geser, ditambah tombolReset Posisi. - Kontrol Cepat di kiri:
Home G28,Set Origin G92,Feed Rate,Profile,Pen Down R30/Pen Up R31, tombol jog, tombolZdanE, serta tombol STOP darurat. - Panel Robot di kanan: isi baris untuk Editor Gerakan,
Teach Point,Servo R280,Vacuum M10/M11,Teach Tunggu G4, danPosisi Live.
Troubleshooting
Catatan Penting
- Fitur auto-connect WiFi (kalau ada) adalah jalur terpisah dari koneksi USB ini — dipakai untuk fitur lain (mis. pemantauan jarak jauh), bukan jalur kontrol utama G-code.
- Untuk memasang firmware lewat USB dari Studio (menu Flash Firmware): proses akan disconnect serial dulu, flash firmware, baru reconnect otomatis — jangan cabut USB selama proses ini berlangsung.
Membuat Program di SD Card
Intinya: Buat program dengan R500, ajari titiknya dengan R518, lalu putar dengan R508.
Alur kerja "teach & playback" — gerakkan robot manual (jog), simpan posisi sebagai titik program, lalu putar ulang otomatis. Setelah tersimpan di SD card, robot tidak lagi bergantung pada RNV4 Studio untuk menjalankannya — cocok untuk pemakaian mandiri di lapangan (mis. line produksi pick-and-place yang jalan terus-menerus) tanpa perlu laptop/PC tersambung sepanjang waktu. Catatan: alur ini khusus gerakan yang diajarkan manual — fitur plotter AI Doodle tetap memerlukan RNV4 Studio terhubung.
-
1
Buat program baru
R500 PickAndPlace1Program baru langsung jadi "program aktif". Program lain yang sudah ada di SD tidak terpengaruh.
-
2
Gerakkan robot & simpan titik
Untuk tiap posisi yang ingin direkam: gerakkan robot ke posisi yang diinginkan (manual jog, atau kirim
G0 X.. Y.. Z..), lalu simpan:R518 ← simpan posisi saat ini (+ servo1 kalau perlu)atau kalau mau menyimpan command G/M terakhir apa adanya:
R501 ← tambahkan command terakhir ke program aktifKalau perlu vacuum/gripper di titik itu, kirim
M10/M11(atauR519untuk gripper) sebelum atau sesudah titik disimpan. -
3
Cek isi program
R502Menampilkan semua baris yang sudah tersimpan di program aktif, sebelum dijalankan.
-
4
Edit kalau perlu
Sisipkan command di posisi tertentuR503 P<posisi>Hapus baris tertentuR504 P<line>Pindah baris naik/turunR504 P<line> UP / DOWNKosongkan semua & mulai ulangR505 CONFIRMTempel banyak baris sekaligusR513 (mode paste) -
5
Tutup program
R506Melepas status "aktif" tanpa menghapus isi — program tetap tersimpan di SD.
-
6
Jalankan program
R507 ← lihat daftar semua program tersimpan (dapatkan nomornya) R508 P1 ← jalankan program nomor 1, sekali R508 P1 X5 ← jalankan program nomor 1, 5 kali loop R511 S1 ← aktifkan mode loop terus-menerus (sampai R512) R512 ← stop playback kapan saja -
7
Edit program yang sudah tersimpan
R510 P1 ← buka program #1 untuk diedit (jadi program aktif lagi)Lanjutkan dengan R501/R503/R504/R518 seperti biasa, lalu
R506untuk menutup lagi.
Arti Warna LED
Intinya: LED status berkedip ungu berarti error hardware; jalankan R530 dulu.
Robot punya satu LED status (WS2812) di papan kontroler (GPIO48). Tabel ini memuat arti tanda yang sudah dipastikan.
R530 (target 3/3 driver menjawab), cek modul TMC2209 (terpasang, VIO, alamat), cek SD card, lalu ulangi G28
Gejala & Solusi
Intinya: Cari gejalanya di tabel ini, lihat kemungkinan penyebab, lalu ikuti tautan ke bagian yang membahasnya.
R530 kurang dari 3/3), mode teach aktif (R520 S1), atau motor dimatikan (M18)
Kirim G28; cek R530; keluar dari teach dengan R520 S0; nyalakan motor dengan M17. Lihat Motor & Driver Listrik
R530; periksa modul TMC2209 (terpasang, VIO, alamat). Lihat Arti LED
R551 S1 (selisih encoder). Lihat Arus motor
R24 S0) untuk membedakan penyebabnya
R24 lewat USB, kalau mati R24 S1; putuskan klien lain; aktifkan notifikasi lalu kirim satu baris; tunggu 60 detik bila terkunci. Lihat Bluetooth (BLE)
DCIN1, jalankan R700, lalu coba R701 P1 S1. Lihat Relay Modul IO
R1 menjawab TIDAK DIKETAHUI (modul tidak melapor) atau polaritas sensor terbalik
Cek daya dan kabel modul lalu R700; ukur dengan R1 saat objek ada dan tidak ada, pilih H atau L sesuai hasil. Lihat Sensor Digital
R531. Lihat Kalibrasi (hwConfig)
Glosarium
Intinya: Istilah teknis yang muncul di dokumentasi ini, dijelaskan dengan bahasa sehari-hari.
G28). Di RNV4H2 lewat encoder tanpa menyentuh stopper, atau lewat deteksi beban bila acuan belum tersimpan.
IN1 H berarti TUNGGU (berhenti sampai sensor terpenuhi); IN1 H >2 berarti LOMPAT (cek sekali, lalu lompat ke label >2 atau lanjut).
FAQ & Troubleshooting Umum
Intinya: Jawaban cepat untuk pertanyaan yang paling sering muncul.
Kumpulan masalah paling sering ditanyakan, dirangkum dari tabel troubleshooting yang tersebar di tiap section — kalau masalah Anda tidak ada di sini, cek tabel lengkap di section yang ditautkan.
Masalah Umum
Pertanyaan Umum
Harus bisa coding untuk pakai robot ini?
Tidak. Kontrol dasar — jog, teach program, ganti gripper — sepenuhnya lewat GUI RNV4 Studio. G/M/R-code hanya diperlukan kalau ingin pengembangan custom, lihat Pengembangan & Ekstensi Kustom.
Robot bisa dipakai tanpa internet sama sekali?
Bisa, untuk kontrol manual dan menjalankan program yang sudah tersimpan di SD card — lihat R-code Program SD. Fitur AI Doodle Photo butuh internet karena prosesnya real-time lewat server, bukan program tersimpan.
Kalau PC/laptop mati saat robot sedang menjalankan program dari SD, robot ikut berhenti?
Tidak, untuk program manual yang sudah tersimpan di SD card robot tetap jalan sendiri tanpa Studio terhubung. Beda dengan AI Doodle yang memang butuh Studio terhubung terus selama prosesnya.
Update firmware berisiko bikin robot rusak (brick)?
Firmware dipasang lewat RNV4 Studio dengan kabel USB (menu Flash Firmware). Tidak ada pembaruan nirkabel, jadi prosesnya tidak terganggu oleh sinyal yang terputus.
Kenapa robot saya tidak menyentuh stopper saat homing?
Itu memang benar. RNV4H2 membaca posisi sendi dari encoder dan langsung membawa lengan ke titik home tanpa perlu menabrak stopper. Cara lama (mendekat perlahan sampai mentok) masih ada sebagai cadangan dan dipakai otomatis kalau acuan posisinya belum tersimpan.
Motor terasa jauh lebih senyap dari robot saya yang lama. Normal?
Normal. Driver motor RNV4H2 (TMC2209) memang dirancang untuk itu. Mode gerak bisa diubah lewat perintah R553 bila Anda ingin lebih senyap atau lebih bertenaga.
Kipas tidak berputar walau robot panas — rusak?
Belum tentu. Di RNV4H2 kipas dikendalikan saklar suhu (termostat) di papan, bukan oleh perangkat lunak robot, dan baru berputar setelah ambang suhunya tercapai. Pastikan termostat yang dipakai varian NO (Normally Open), bukan NC.