Tuesday, June 2, 2026

Panduan Kalibrasi Sistem Roda Gigi Magnet (Trigger Wheel) Universal untuk ECU OSO Standalone Berbasis Mikrokontroler

Dalam membangun ECU standalone kustom (seperti berbasis ESP32, ESP32-S3, atau Speeduino), penentuan parameter fisik magnet (trigger wheel) adalah hal paling krusial agar mikrokontroler dapat mendeteksi posisi piston secara presisi [CDI:213].
Berikut adalah rangkuman data seting parameter input untuk berbagai jenis magnet motor populer di Indonesia yang bisa dikonfigurasi secara universal lewat Web Dashboard ECU:
A. Kelompok Motor Injeksi Modern (Sistem Banyak Tonjolan)
Sistem ini menggunakan pola gerigi roda dengan area kosong (missing teeth) sebagai penanda titik acuan utama (TMA) [CDI:213].
Nama Sepeda MotorTotal Titik GigiGigi Hilang (-)Sudut Acuan (° STMA)Keterangan Fisik / Jenis Magnet
Honda Beat FI12340Pola 12-3 (9 Tonjolan fisik, 3 Celah kosong berurutan).
Yamaha Vixion / R15 / MX King12160Pola 12-1 (11 Tonjolan fisik, 1 Celah kosong) [CDI:213].
Honda CB150R / CBR150R / Sonic12260Pola 12-2 (10 Tonjolan fisik, 2 Celah kosong berurutan).
Kawasaki Ninja 250 FI (2 Silinder)24250Pola 24-2 (Akurasi tinggi kelipatan 15 derajat per gigi).
Catatan Otomotif: Rumus dasar kalkulasi resolusi sudut derajat per gigi pada sistem di atas adalah:
Sudut Per Gigi = 360 / Total Titik Gigi [CDI:213]

B. Kelompok Motor Karburator Lama (Sistem Satu Tonjolan Tunggal)
Sistem ini menggunakan satu tonjolan besi luar magnet (Single Pickup / Single Tooth) konvensional [CDI:211, 213]. Kunci utama mengaktifkan mode ini pada program ECU universal adalah mengatur nilai Gigi Hilang ke angka 0.
Nama Sepeda MotorTotal Titik GigiGigi Hilang (-)Sudut Acuan (° STMA)Panjang Fisik Tonjolan Asli
Yamaha Mio (Karburator)1057.5Tonjolan panjang standar pabrik 57.5 mm.
Honda Tiger / MegaPro / GL-Pro1053Tonjolan panjang standar pabrik 52 mm.
Yamaha Jupiter Z / Vega R (5TP)1038Tonjolan sedang standar pabrik 30 mm.
Suzuki Shogun 110 / Shogun 1251035Tonjolan pendek standar pabrik 14 mm.
Yamaha RX-King1031Motor 2-Tak, tonjolan pendek standar pabrik 14 mm.
Honda Supra X 100 / Grand / Win1030Tonjolan sangat pendek standar pabrik 11.5 mm.

Prosedur Penting Pemasangan & Kalibrasi ECU:
  1. Siklus Reboot Memori: Setiap kali selesai mengubah konfigurasi angka di atas melalui Web Dashboard, pengguna wajib mematikan kunci kontak motor (Power OFF) selama 3 detik, lalu menghidupkannya kembali (Power ON). Langkah ini wajib agar mikrokontroler melakukan penyegaran fungsi data (fresh boot) dan memuat ulang data parameter baru dari memori flash internal (Preferences/EEPROM).
  2. Celah Sensor (Sensor Gap): Pastikan jarak mekanis antara ujung sensor pulser dengan permukaan besi tonjolan magnet berada di rentang 0.5 mm hingga 0.8 mm. Jika jaraknya terlalu renggang (di atas 1 mm), sensor akan mengalami loss signal (gagal hitung gigi) saat mesin dipaksa berputar pada RPM tinggi di atas 7.000 RPM.
  3. Pemberantas Noise (EMI Filter): Penggunaan busi bertipe Resistor (Kode R) dan cop/cangklong busi yang memiliki resistor internal 5k Ohm adalah syarat mutlak, agar gelombang elektromagnetik percikan api busi tidak mengacaukan ritme penghitungan gigi digital pada pin interupsi ECU.

TAGS/LABEL BLOGGER (Rekomendasi):
#ECU_Custom #Automotive_Electronics #Arduino_Otomotif #Trigger_Wheel #ESP32_ECU #Bengkel_Injeksi

Thursday, May 7, 2026

OSO ESP32 LoRa Gateway

# ESP32 LoRa Gateway

## Pendahuluan

Proyek ini adalah sebuah Gateway LoRa serbaguna yang dibangun menggunakan ESP32. Perangkat ini dirancang untuk menjembatani komunikasi antara jaringan LoRa dengan jaringan lain seperti Ethernet (LAN) atau WiFi (WLAN), serta dengan perangkat Modbus (RTU dan TCP).

Gateway ini memiliki dua mode operasi utama, **Master** dan **Slave**, yang ditentukan saat kompilasi kode. Selain itu, terdapat **Mode Konfigurasi** yang memungkinkan pengguna untuk mengubah pengaturan perangkat melalui antarmuka web yang mudah digunakan.


## Fitur Utama

-   **Dua Mode Utama:** Dapat berfungsi sebagai **Master** atau **Slave** dalam jaringan LoRa.
-   **Konektivitas Fleksibel:**
    -   **Master Mode:** Mendukung koneksi ke jaringan via Ethernet (W5500) atau WiFi.
    -   **Slave Mode:** Mendukung mode **Modbus RTU** (melalui RS485/RS232) atau **Modbus TCP** (melalui WiFi).
-   **Antarmuka Konfigurasi Web:** Mode Access Point (AP) khusus untuk konfigurasi perangkat melalui browser. Tidak perlu mengubah kode untuk pengaturan dasar.
-   **Penyimpanan Konfigurasi:** Pengaturan disimpan secara permanen di memori non-volatile (NVS) ESP32.
-   **Modbus RTU Mapping (Master Mode):** Memungkinkan pemetaan register Modbus dari beberapa slave ke alamat lokal.
-   **Reboot Jarak Jauh:** Perangkat dapat di-reboot dari antarmuka web.
-   **Dibangun dengan PlatformIO:** Memudahkan manajemen library dan proses build.

## Alur Komunikasi Modbus yang Didukung

Gateway ini secara efektif menjembatani sistem SCADA berbasis Modbus TCP ke perangkat Modbus di lapangan melalui jaringan LoRa. Berikut adalah alur yang didukung:

1.  **Modbus TCP ke Modbus RTU (via LoRa)**
    -   **Alur:** `SCADA (TCP)` <-> `Master Gateway (LoRa)` <-> `Slave Gateway (LoRa)` <-> `Perangkat Modbus (RTU)`
    -   **Deskripsi:** Sistem SCADA mengirimkan perintah Modbus TCP ke Master Gateway. Master meneruskannya melalui LoRa ke Slave Gateway, yang kemudian mengubahnya menjadi sinyal Modbus RTU untuk perangkat akhir yang terhubung secara serial (RS485/RS232).

2.  **Modbus TCP ke Modbus TCP (via LoRa)**
    -   **Alur:** `SCADA (TCP)` <-> `Master Gateway (LoRa)` <-> `Slave Gateway (LoRa)` <-> `Perangkat Modbus (TCP)`
    -   **Deskripsi:** Sistem SCADA mengirimkan perintah Modbus TCP ke Master Gateway. Master meneruskannya melalui LoRa ke Slave Gateway. Slave Gateway kemudian mengirimkan perintah Modbus TCP melalui jaringan WiFi lokal ke alamat IP perangkat akhir.

## Mode Operasi

### 1. Mode Konfigurasi

Ini adalah mode utama untuk mengatur semua parameter perangkat.

-   **Cara Masuk:**
    1.  Tekan dan tahan tombol `MODE_BUTTON_PIN` saat perangkat dinyalakan.
    2.  Atau, tekan tombol tersebut saat perangkat sedang berjalan normal.
-   **Fungsionalitas:**
    -   ESP32 akan membuat Access Point (AP) WiFi dengan SSID `OSO-LoRa-Master-Config` atau `OSO-LoRa-Slave-Config`.
    -   Hubungkan perangkat Anda (laptop/HP) ke AP tersebut dengan password `12345678`.
    -   Buka browser dan navigasikan ke alamat `192.168.4.1`.
    -   Antarmuka web akan muncul, memungkinkan Anda untuk mengkonfigurasi:
        -   **Jaringan:** Pengaturan WiFi, Ethernet, dan mode Modbus (RTU/TCP).
        -   **LoRa:** Alamat, channel, baud rate, dan parameter LoRa lainnya.
        -   **Mapping:** (Hanya di mode Master) Aturan pemetaan Modbus.
        -   **Sistem:** Aksi seperti reboot perangkat.

### 2. Master Mode

Dalam mode ini, gateway berfungsi sebagai **server Modbus TCP** yang menjembatani sistem SCADA dengan perangkat LoRa di lapangan.

-   **Konektivitas ke SCADA:**
    -   Master Gateway dapat terhubung ke jaringan lokal (LAN) melalui **Ethernet (W5500)** atau **WiFi**.
    -   Setelah terhubung, ia akan mendapatkan alamat IP dan siap menerima koneksi Modbus TCP dari sistem SCADA pada alamat IP tersebut.

-   **Alur Kerja:**
    1.  SCADA (sebagai Modbus TCP Client) mengirim permintaan ke alamat IP Master Gateway.
    2.  Master Gateway menerima permintaan, memprosesnya, dan meneruskannya melalui jaringan LoRa ke slave yang dituju.
    3.  Slave LoRa merespons kembali ke Master Gateway.
    4.  Master Gateway meneruskan respons tersebut kembali ke SCADA.

### 3. Slave Mode

Dalam mode ini, gateway menghubungkan satu perangkat Modbus ke jaringan LoRa.

-   **Sub-Mode:**
    -   **Modbus RTU:** Gateway terhubung ke perangkat Modbus (misalnya, sensor atau meteran) melalui antarmuka serial (RS485 atau RS232). Ia akan meneruskan permintaan LoRa dari Master ke perangkat Modbus RTU ini.
    -   **Modbus TCP:** Gateway terhubung ke jaringan WiFi lokal dan menjembatani komunikasi LoRa ke sebuah *end device* (perangkat target) melalui protokol Modbus TCP.



Monday, March 16, 2026

Berikut contoh dokumentasi lengkap MQTT Payload untuk Modbus Gateway ESP32 yang bisa langsung dipakai sebagai manual produk / dokumentasi user.


OSO Gateway




MQTT – Modbus Gateway Payload Documentation

OSO Gateway adalah perangkat Industrial IoT Gateway yang berfungsi menghubungkan perangkat Modbus RTU / Modbus TCP dengan MQTT Broker sehingga data PLC atau perangkat industri dapat dikirim ke cloud, dashboard, SCADA, atau Node-RED.


1. Arsitektur Sistem

Gateway bekerja sebagai bridge antara Modbus dan MQTT.

Modbus Device / PLC

│ Modbus RTU / TCP

OSO Gateway

│ MQTT

MQTT Broker


Dashboard / NodeRED / Cloud / SCADA

Fungsi gateway:

  1. Polling data Modbus

  2. Publish data ke MQTT

  3. Menerima command dari MQTT

  4. Mengirim write command ke Modbus device


2. Struktur Topic MQTT




Gateway menggunakan dua topic utama.

TopicFungsi
gateway/cmdMengirim perintah Modbus
gateway/dataData Modbus dari gateway

3. MQTT Command (Write Modbus)

Topic:

gateway/cmd

Payload:

{
"slave":1,
"fc":6,
"addr":0,
"value":1
}

Parameter:

FieldKeterangan
slaveModbus Slave ID
fcFunction Code
addrAddress register
valueNilai yang akan ditulis

4. Contoh Perintah Write Register

Payload:

{
"slave":1,
"fc":6,
"addr":0,
"value":1
}

Artinya gateway akan mengirim perintah Modbus:

Slave ID : 1
Function : 06 (Write Single Register)
Address : 0
Value : 1

Jika menggunakan addressing PLC standar:

40001 = 1

5. Contoh Write Coil

Payload:

{
"slave":1,
"fc":5,
"addr":0,
"value":1
}

Arti:

Slave 1
Write Coil
Address 0
Value ON

Value:

ValueStatus
0OFF
1ON

6. Function Code yang Didukung

FCNamaFungsi
1Read CoilMembaca coil
2Read Discrete InputMembaca input
3Read Holding RegisterMembaca register
4Read Input RegisterMembaca input register
5Write Single CoilMenulis coil
6Write Single RegisterMenulis register

7. Data yang Dikirim Gateway

Topic:

gateway/data

Contoh payload:

{
"gw": "esp32gw",
"data": {
"1:0": 1,
"1:1": 1111,
"2:0": 222,
"2:1": 2222
}
}

8. Penjelasan Field Payload

FieldKeterangan
gwNama gateway
dataData hasil polling Modbus

9. Format Mapping Data

Format key pada field data:

slave:address

Contoh:

1:0

Artinya:

Slave ID : 1
Register : 0

Contoh lain:

2:1

Artinya:

Slave ID : 2
Register : 1

10. Contoh Interpretasi Data

Payload:

{
"gw": "esp32gw",
"data": {
"1:0": 1,
"1:1": 1111,
"2:0": 222,
"2:1": 2222
}
}

Interpretasi:

SlaveAddressValue
101
111111
20222
212222

11. Contoh Integrasi Node-RED

Subscribe topic:

gateway/data

Untuk mengambil nilai:

msg.payload.data["1:0"]

Contoh penggunaan:

RegisterNodeRED
Slave1 Addr0msg.payload.data["1:0"]
Slave1 Addr1msg.payload.data["1:1"]
Slave2 Addr0msg.payload.data["2:0"]

12. Contoh Testing dengan MQTT Explorer

Publish command:

Topic:

gateway/cmd

Payload:

{
"slave":2,
"fc":6,
"addr":1,
"value":123
}

Gateway akan menulis:

Slave ID : 2
Register : 1
Value : 123

13. Keunggulan Format Payload Ini

Keuntungan format ini:

✔ Ringkas
✔ Mudah diparse di ESP32
✔ Mendukung multi slave
✔ Mendukung multi register
✔ Mudah dipakai di NodeRED / SCADA
✔ Payload ringan untuk IoT


14. Contoh Flow Sistem IoT

PLC

│ Modbus RTU

OSO Gateway

│ MQTT Publish

MQTT Broker

├── NodeRED
├── SCADA
├── Dashboard Web
└── Cloud Database