MODUL 4
Early Warning System Perlintasan Kereta Tanpa Palang
Menggunakan STM32 Blue Pill
1. Pendahuluan [kembali]
Perlintasan kereta api tanpa palang masih menjadi salah satu titik rawan kecelakaan yang dapat membahayakan keselamatan masyarakat. Pada Februari 2026 kemarin, 1 mobil Keluarga mengalami tabrakan dengan kereta api hingga mobil terseret hingga jarak 100 meter dari perlintasan kereta api pada jalur kereta api Alai Bandar Kali Kota Padang, setelah diselidiki ditemukan bahwa Rel perlintasan kereta api tidak memiliki palang dan tidak terdapatnya alarm yang menandakan bahwa kereta api akan mendekat dan melitas.
Kurangnya sistem peringatan dini pada area perlintasan membuat pengguna jalan sering terlambat menyadari adanya kereta yang akan melintas. Kondisi ini juga masih ditemukan pada beberapa area perlintasan kereta di Kota Padang, salah satunya pada jalur kereta api Alai–Bandar Kali Padang.
Seiring berkembangnya teknologi, sistem Early Warning System (EWS) dapat diterapkan untuk membantu meningkatkan keselamatan pada perlintasan kereta tanpa palang. Sistem ini bekerja dengan memanfaatkan sensor dan mikrokontroler untuk mendeteksi keberadaan kereta serta memberikan peringatan otomatis kepada pengguna jalan sebelum kereta melintas.
Pada project ini digunakan mikrokontroler STM32 Blue Pill sebagai pusat kendali sistem dengan tiga sensor utama, yaitu IR Proximity sensor untuk mengukur jarak kereta yang mendekati area perlintasan, magnetic red switch sensor untuk mengukur jarak kereta terhadap area perlintasan, dan vibration sensor untuk mendeteksi getaran rel saat kereta melintas. Sistem juga dilengkapi dengan LCD berbasis I2c display, buzzer, dan LED merah sebagai aktuator warning otomatis.
Ketika kereta terdeteksi mendekati area perlintasan, sistem akan menampilkan status peringatan pada LCD, mengaktifkan buzzer, serta menghidupkan led berwarna merah sebagai tanda bahaya bagi pengguna jalan. Setelah kereta melewati area perlintasan, sistem akan kembali ke kondisi normal secara otomatis.
Berdasarkan kondisi tersebut, dibuatlah “Rancang Bangun Early Warning System pada Perlintasan Kereta Tanpa Palang Berbasis STM32 Blue Pill” sebagai prototype sistem peringatan dini untuk membantu meningkatkan keselamatan masyarakat pada area perlintasan kereta api Alai, Bandar Kali Kota Padang.
2. Tujuan [kembali]
- Mendeteksi kedatangan kereta pada area perlintasan tanpa palang menggunakan IR obstacle sensor, ultrasonic sensor, dan vibration sensor.
- Memberikan peringatan dini secara otomatis kepada pengguna jalan melalui LCD display, buzzer, dan stepper motor.
- Membantu meningkatkan keselamatan masyarakat pada perlintasan kereta tanpa palang di area Alai–Bandar Kali Padang melalui penerapan Early Warning System berbasis STM32 Blue Pill.
2. Alat dan Komponen [kembali]
3. Landasan Teori [kembali]
Ada 4 karakteristik yang perlu diperhatikan dalam pemilihan komponen ADC, antara lain :
1) Resolusi
Merupakan spesifikasi terpenting untuk ADC, yaitu jumlah langkah dari sinyal skala penuh yang dapat dibagi dan juga ukuran dari langkah_langkah, dinyatakan dalam jumlah bit yang ada dalam satu kata (digital words), ukuran langkah terkecil sebagai persen dari skala penuh atau dapat juga langkah terkecil dalam miliVolt (untuk skala penuh yang dihasilkan).
2) Akurasi
Adalah jumlah dari semua kesalahan, misalnya kesalahan non linieritas, skala penuh, skala nol, dan lain-lain. Dapat juga menyatakan perbedaan antara tegangan masukan analog secara teoritis yang dibutuhkan untuk menghasilkan suatu kode biner tertentu terhadap tegangan masukan nyata yang menghasilkan tegangan kode biner tersebut.
3) Waktu Konversi
Adalah waktu yang dibutuhkan untuk mengubah setiap sampel ke bentuk digital, atau yang diperlukan untuk menyelesaikan suatu konversi.
4) Fungsi Transfer Ideal ADC
Fungsi transfer ideal untuk konverter analog-ke-digital (ADC, analog-to-digital converter) berbentuk garis lurus. Bentuk ideal garis lurus hanya dapat dicapai dengan konverter data beresolusi tak-hingga. Karena tidak mungkin mendapatkan resolusi tak hingga, maka secara praktis fungsi tranfer ideal tersebut berbentuk gelombang tangga seragam seperti terlihat pada Gambar 1.5 Semakin tinggi resolusi ADC, semakin halus gelombang tangga tersebut. ADC ideal secara unik dapat merepresentasikan seluruh rentang masukan analog tertentu dengan sejumlah kode keluaran digital. Pada gambar 1 ditunjukkan bahwa setiap kode digital merepresentasikan sebagian dari rentang masukan analog total. Oleh karena skala analog bersifat kontinyu sedangkan kode digital bersifat diskrit, maka ada proses kuantisasi yang menimbulkan kekeliruan (galat). Apabila jumlah kode diskritnya (yang mewakili rentang masukan analog) ditambah, maka lebar undak (step width) akan semakin kecil dan fungsi transfer akan mendekati garis lurus ideal. Lebar satu undak (step) didefinisikan sebagai 1 LSB (least significant bit) dan unit ini digunakan sebagai unit rujukan untuk besaran-besaran lain dalam spesifikasi peranti konversi data. Unit 1 LSB itu juga digunakan untuk mengukur resolusi konverter karena ia juga menggambarkan jumlah bagian atau unit dalam rentang analog penuh.
Jika dikonfigurasi sebagai master, maka pin MOSI berfungsi sebagai output. Sebaliknya, jika dikonfigurasi sebagai slave, maka pin MOSI berfungsi sebagai input.
• MISO (Master Input Slave Output)
Jalur ini digunakan oleh master untuk memilih slave yang akan dikomunikasikan. Pin SS/CS harus dalam keadaan aktif (umumnya logika rendah) agar komunikasi dengan slave dapat berlangsung.
STM32F103C8T6 adalah mikrokontroler 32-bit yang berbasis pada arsitektur ARM Cortex-M3 dan termasuk dalam keluarga STM32F1 series. Berikut adalah spesifikasi utamanya:
Fitur | Spesifikasi |
Arsitektur CPU | ARM Cortex-M3 (32-bit RISC) |
Frekuensi Clock Maksimum | 72 MHz |
Memori Flash | 64 KB |
SRAM (RAM) | 20 KB |
Jumlah GPIO (General I/O) | Hingga 37 pin I/O |
Jumlah ADC (Analog to Digital) | 2 ADC 12-bit, hingga 10 kanal input |
DAC | Tidak tersedia (perlu eksternal jika diperlukan) |
Timer | 3 timer 16-bit + 1 timer 16-bit advanced (PWM, dll) |
Komunikasi Serial | USART (x3), SPI (x2), I2C (x2) |
USB | Full Speed USB 2.0 (Device only) |
Watchdog Timer | Independent dan window watchdog |
Operating Voltage | 2.0 V – 3.6 V |
Tegangan I/O | 3.3 V (toleran hingga 5V input pada beberapa pin) |
Tegangan Referensi ADC (Vref) | 3.3 V |
Operating Temperature | -40°C hingga +85°C |
Packaging | LQFP-48 (48 pin) |
Bootloader Interface | UART, USB (melalui DFU), atau SWD |
Ukuran Fisik Board Blue Pill | Sekitar 5.3 cm x 2.2 cm |
Spesifikasinya meliputi
Spesifikasi Sensor Magnetic Hall Effect | |
Parameter | Spesifikasi |
Nama Modul | KY-024 Linear Magnetic Hall Sensor |
Sensor Utama | 49E Linear Hall Effect Sensor |
IC Komparator | LM393 |
Tegangan Operasi | 3,3 V – 5 V DC (beberapa modul mendukung 2,7–6,5 V) |
Output | Analog (A0) dan Digital (D0) |
Jumlah Pin | 4 Pin (VCC, GND, A0, D0) |
Pengaturan Sensitivitas | Potensiometer (Trimpot) |
Indikator LED | LED Power dan LED Output |
Sensitivitas Hall Sensor | 1,0–1,75 mV/Gauss |
Dimensi Modul | ± 35 × 15 mm |
Suhu Operasi | -40°C hingga +85°C |
Vibration sensor bekerja dengan mendeteksi getaran atau guncangan pada rel. Pada sistem ini, sensor digunakan untuk mendeteksi getaran saat kereta melintas. Ketika getaran terdeteksi, STM32 akan menyalakan LED merah sebagai indikator bahwa kereta sedang berada di area rel.
Spesifikasi Sensor Vibration SW-420 | |
Parameter | Spesifikasi |
Nama Sensor | SW-420 Vibration Sensor Module |
Jenis Sensor | Sensor Getaran (Vibration Sensor) |
Elemen Sensor | SW-420 Vibration Switch |
IC Komparator | LM393 |
Tegangan Operasi | 3,3 V – 5 V DC |
Arus Operasi | ≤ 15 mA |
Jenis Output | Digital (HIGH/LOW) |
Pin Modul | VCC, GND, DO |
Sensitivitas | Dapat diatur menggunakan potensiometer |
Indikator | LED Power dan LED Output |
Tipe Sensor | Normally Closed (NC) |
Dimensi Modul | ± 32 mm × 14 mm × 7 mm |
IR obstacle sensor bekerja dengan memancarkan sinar inframerah untuk mendeteksi keberadaan objek di depannya. Pada sistem ini, sensor digunakan untuk mendeteksi kereta yang mendekati area perlintasan. Ketika kereta terdeteksi, sensor akan mengirimkan sinyal ke STM32 sehingga LCD display menampilkan status “KERETA MENDEKAT”. Sedangkan saat tidak ada kereta, LCD akan menampilkan status “AMAN”.
Spesifikasi Sensor Infrared (IR) Proximity E18-D80NK
Parameter
Spesifikasi
Nama Sensor
E18-D80NK Infrared Proximity Sensor
Jenis Sensor
Infrared Diffuse Reflective Photoelectric Sensor
Tegangan Operasi
5 V DC
Arus Kerja
25–100 mA
Jenis Output
Digital (NPN Open Collector)
Logika Output
LOW saat objek terdeteksi, HIGH saat tidak ada objek
Jarak Deteksi
3 cm – 80 cm (dapat diatur)
Sudut Deteksi
≤ 15°
Waktu Respon
< 2 ms
Sumber Cahaya
Infrared LED
Pengaturan Jarak
Potensiometer internal
Suhu Operasi
-25°C hingga +55°C
Diameter Sensor
± 17 mm
Panjang Sensor
± 45 mm
Panjang Kabel
± 45 cm
Indikator
LED status deteksi
Tipe Kabel
Coklat (VCC), Biru (GND), Hitam (Output)
Spesifikasi Sensor Infrared (IR) Proximity E18-D80NK | |
Parameter | Spesifikasi |
Nama Sensor | E18-D80NK Infrared Proximity Sensor |
Jenis Sensor | Infrared Diffuse Reflective Photoelectric Sensor |
Tegangan Operasi | 5 V DC |
Arus Kerja | 25–100 mA |
Jenis Output | Digital (NPN Open Collector) |
Logika Output | LOW saat objek terdeteksi, HIGH saat tidak ada objek |
Jarak Deteksi | 3 cm – 80 cm (dapat diatur) |
Sudut Deteksi | ≤ 15° |
Waktu Respon | < 2 ms |
Sumber Cahaya | Infrared LED |
Pengaturan Jarak | Potensiometer internal |
Suhu Operasi | -25°C hingga +55°C |
Diameter Sensor | ± 17 mm |
Panjang Sensor | ± 45 mm |
Panjang Kabel | ± 45 cm |
Indikator | LED status deteksi |
Tipe Kabel | Coklat (VCC), Biru (GND), Hitam (Output) |
Pin name | Pin type | Pin description |
GND | Power | Ground |
VCC | Power | Voltage Input |
SDA | I2C Data | Serial Data |
SCL | I2C Clock | Serial Clock |
A0 | Jumper | I2C Address Selection 1 |
A1 | Jumper | I2C Address Selection 2 |
A2 | Jumper | I2C Address Selection 3 |
Backlight | Jumper | Control Backlight of panel |
Buzzer adalah sebuah komponen elektronika yang dapat menghasilkan getaran suara berupa gelombang bunyi. Buzzer akan menghasilkan getaran suara ketika diberikan sejumlah tegangan listrik dengan taraf tertentu sesuai dengan spesifikasi bentuk dan ukuran buzzer itu sendiri. Pada umumnya, buzzer ini sering digunakan sebagai alarm karena penggunaannya yang cukup mudah yaitu dengan memberikan tegangan input maka buzzer akan menghasilkan getaran suara berupa gelombang bunyi yang dapat didengar.
Spesifikasi :
• Nilai tegangan : 6V DC
• Tegangan pengoperasian : 4 hingga 8V DC
• Arus : ≤30mA
• Keluaran suara pada 10cm : ≥85dB
• Frekuensi resonansi : 2300 ±300Hz
• Nada : Berkelanjutan
• Suhu operasional : -25°C hingga +80°C
• Suhu penyimpanan : -30°C hingga +85°C
• Berat : 2g
LED (Light Emitting Diode) adalah perangkat semikonduktor yang menghasilkan cahaya ketika arus listrik melewatinya. LED terdiri dari bahan semikonduktor yang memiliki dua terminal, yaitu anoda (terminal positif) dan katoda (terminal negatif). Ketika arus listrik mengalir melalui LED, energi listrik tersebut merangsang elektron-elektron di dalam bahan semikonduktor, yang kemudian menghasilkan cahaya.
· Karakteristrik spesifikasi LED berdasarkan Datasheet :
- Tegangan Maju (Vf): Tegangan minimum yang diperlukan agar LED dapat menyala. Biasanya berkisar antara 1.8V hingga 3.3V, tergantung pada warna LED.
- Arus Maju (If): Arus maksimum yang dapat dialirkan melalui LED tanpa merusaknya. Biasanya berkisar antara 10mA hingga 30mA.
- Intensitas Cahaya (Luminous Intensity): Jumlah cahaya yang dipancarkan oleh LED, biasanya dinyatakan dalam millicandela (mcd).
- Panjang Gelombang (Wavelength): Menentukan warna cahaya yang dipancarkan oleh LED.
- Sudut Pandang (Viewing Angle): Sudut di mana cahaya LED dapat terlihat dengan jelas.
13. Resistor
Spesifikasi:
- Tegangan kerja: 5 V DC
- Tegangan target STM32: 3,0–3,6 V
- Antarmuka: USB 2.0, SWD/JTAG
- Suhu operasi: 0–50°C
4. Flowchart dan Listing Program [kembali]
#include "i2c.h"
#include "gpio.h"
#include "adc.h"
#include "lcd.h"
#include <stdio.h>
/* Private function prototypes */
void SystemClock_Config(void);
uint16_t Read_ADC(void);
/*=========================================================
Fungsi Membaca ADC
=========================================================*/
uint16_t Read_ADC(void)
{
uint16_t adcValue;
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
adcValue = HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1);
return adcValue;
}
uint8_t currentState = 0;
uint8_t lastState = 255;
#define STATE_AMAN 0
#define STATE_DEKAT 1
#define STATE_MELINTAS 2
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
MX_ADC1_Init();
LCD_Init();
HAL_Delay(2000);
while (1)
{
uint8_t reed;
uint8_t vibration;
uint16_t adcValue;
float distance_cm;
adcValue = Read_ADC();
if(adcValue > 20)
{
distance_cm = 4800.0f / (adcValue - 20);
}
else
{
distance_cm = 80.0f;
}
reed = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
vibration = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8);
/* Tentukan status */
if(reed || vibration)
{
currentState = STATE_MELINTAS;
}
else if(distance_cm <= 30)
{
currentState = STATE_DEKAT;
}
else
{
currentState = STATE_AMAN;
}
/* Update LCD hanya saat status berubah */
if(currentState != lastState)
{
LCD_Clear();
if(currentState == STATE_AMAN)
{
LCD_Set_Cursor(0,0);
LCD_Send_String("AMAN");
}
else if(currentState == STATE_DEKAT)
{
LCD_Set_Cursor(0,0);
LCD_Send_String("KERETA");
LCD_Set_Cursor(1,0);
LCD_Send_String("MENDEKAT");
}
else if(currentState == STATE_MELINTAS)
{
LCD_Set_Cursor(0,0);
LCD_Send_String("KERETA");
LCD_Set_Cursor(1,0);
LCD_Send_String("MELINTAS");
}
lastState = currentState;
}
/* LED + Buzzer */
if(currentState == STATE_AMAN)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
}
HAL_Delay(50);
}
}
/**
* @brief System Clock Configuration
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_OscInitStruct.OscillatorType =
RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState =
RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue =
RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState =
RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct)
!= HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType =
RCC_CLOCKTYPE_HCLK |
RCC_CLOCKTYPE_SYSCLK |
RCC_CLOCKTYPE_PCLK1 |
RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource =
RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider =
RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider =
RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider =
RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(
&RCC_ClkInitStruct,
FLASH_LATENCY_0)
!= HAL_OK)
{
Error_Handler();
}
}
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
5. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Rangkaian Simulasi
Sistem peringatan dini perlintasan kereta tanpa palang ini bekerja dengan memanfaatkan tiga sensor, yaitu sensor jarak GP2D12, sensor magnetik reed switch KY-025, dan sensor getaran SW-420 yang dikendalikan oleh mikrokontroler STM32. Sensor GP2D12 digunakan untuk mendeteksi keberadaan kereta yang mendekati area perlintasan dengan mengukur jarak objek di depannya. Apabila jarak yang terdeteksi lebih dari 30 cm, sistem menganggap kondisi lintasan masih aman sehingga LCD menampilkan pesan "AMAN" dan indikator peringatan tidak aktif. Namun, ketika jarak yang terdeteksi kurang dari atau sama dengan 30 cm, sistem mengidentifikasi bahwa kereta sedang mendekati perlintasan. Pada kondisi ini LCD akan menampilkan pesan "KERETA MENDEKAT", sedangkan LED dan buzzer akan aktif sebagai peringatan bagi pengguna jalan.
Selain deteksi jarak, sistem juga menggunakan sensor reed switch KY-025 dan sensor getaran SW-420 untuk memastikan keberadaan kereta yang sedang melintas tepat di area perlintasan. Sensor KY-025 akan aktif ketika mendeteksi medan magnet yang berasal dari magnet yang dipasang pada kereta, sedangkan sensor SW-420 akan aktif ketika mendeteksi getaran rel akibat pergerakan roda kereta. Jika salah satu dari kedua sensor tersebut mendeteksi keberadaan kereta, maka sistem akan mengubah status menjadi "KERETA MELINTAS" yang ditampilkan pada LCD. Pada kondisi ini LED dan buzzer tetap menyala sebagai tanda bahaya hingga kereta benar-benar meninggalkan area sensor. Dengan kombinasi ketiga sensor tersebut, sistem mampu memberikan informasi kondisi lintasan secara bertahap, mulai dari aman, kereta mendekat, hingga kereta melintas, sehingga dapat meningkatkan keselamatan pengguna perlintasan kereta api tanpa palang.
6. Video Simulasi [kembali]
7. Kesimpulan dan Saran [kembali]
Berdasarkan hasil perancangan dan implementasi sistem, dapat disimpulkan bahwa sistem Early Warning System Perlintasan Kereta Tanpa Palang berbasis mikrokontroler STM32 berhasil dirancang dan diimplementasikan dengan memanfaatkan sensor jarak GP2D12, sensor magnetik reed switch KY-025, dan sensor getaran SW-420. Sistem mampu mendeteksi kondisi lintasan secara bertahap, yaitu kondisi aman, kereta mendekat, dan kereta melintas. Informasi kondisi tersebut ditampilkan melalui LCD serta didukung oleh LED dan buzzer sebagai indikator peringatan sehingga dapat memberikan informasi yang lebih mudah dipahami oleh pengguna jalan. Penggunaan kombinasi tiga sensor memberikan tingkat keandalan yang lebih baik dibandingkan penggunaan satu sensor saja. Sensor GP2D12 berfungsi mendeteksi kereta yang mendekati area perlintasan, sedangkan sensor KY-025 dan SW-420 berfungsi mengonfirmasi keberadaan kereta yang sedang melintas melalui deteksi medan magnet dan getaran. Dengan demikian, sistem dapat menjadi solusi alternatif untuk meningkatkan keselamatan pada perlintasan kereta api tanpa palang, khususnya pada daerah yang belum memiliki sistem pengamanan otomatis.
8. Download File [kembali]
- Download File Rangkaian Proteus disini
- Download Listing Program disini
- Download Video Simulasi disini
- Library Sensor Magnetic Reed Switch KY-025 disini
- Library Sensor Vibration SW-420 disini
- Datasheet STM32F103C8 disini
- Datasheet Sensor GP2D12 disini
- Datasheet Sensor Magnetic Reed Switch KY-025 disini
- Datasheet Sensor Vibration SW-420 disini
- Datasheet Buzzer disini
- Datasheet LCD 12C disini
- Datasheet LED disini








Komentar
Posting Komentar