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]

Sistem ini dirancang untuk:
  1. Mendeteksi kedatangan kereta pada area perlintasan tanpa palang menggunakan IR obstacle sensor, ultrasonic sensor, dan vibration sensor.
  2. Memberikan peringatan dini secara otomatis kepada pengguna jalan melalui LCD display, buzzer, dan stepper motor.
  3. 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]

Komponen
1. STM32F103C8T6


2. Magnetic red switch Sensor KY-025

3. Vibration Sensor SW-420

4. Sensor ir proximity

5. LCD I2C 16x2

6. Buzzer


7. LED Merah dan Hijau

 


8. Resistor

9. Adaptor 5V

Alat
1. ST-Link

2. Breadboard

3. Jumper


Bahan
1. Kabel Tunggal

2. Stik Sebagai Perlintasan kerata api

3. Karton sebagai landasan 

4. Replikas Kereta api

 3. Landasan Teori [kembali]

1. General Input Output 
      Input adalah semua data dan perintah yang dimasukkan ke dalam memori untuk diproses lebih lanjut oleh mikroprosesor. Sebuah perangkat input adalah komponen piranti keras yang memungkinkan user atau pengguna memasukkan data ke dalam mikroprosesor. Output adalah data hasil yang telah diproses. Perangkat output adalah semua komponen piranti keras yang menyampaikan informasi kepada orang-orang yang menggunakannya. 
      Pada STM32 pin input/output terdiri dari digital dan analog yang jumlah pin-nya tergantung jenis mikrokontroller yang digunakan. Input digital digunakan untuk mendeteksi perubahan logika biner pada pin tertentu. Adanya input digital memungkinkan mikrokontroler untuk dapat menerjemahkan 0V menjadi logika LOW dan 5V menjadi logika HIGH. Membaca sinyal digital pada mikrokontroller dapat menggunakan sintaks digitalRead(pin):
    Output digital terdiri dari dua buah logika, yaitu kondisi logika HIGH dan kondisi logika LOW. Untuk menghasilkan output kita dapat menggunakan sintaks digitalWrite(pin,nilai); yang sebelumnya pin sudah diset ke mode OUTPUT, lalu parameter kedua adalah set nilai HIGH atau LOW. Apabila pin diset dengan nilai HIGH, maka voltase pin tersebut akan diset ke 5V atau 3.3V dan bila pin diset ke LOW, maka voltase pin tersebut akan diset ke 0V.


2. PWM 
    PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. 
    Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%). 



Duty Cycle = tON / ttotal
Ton            =  Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1) 
Toff           = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0) 
Ttotal      = Waktu satu siklus atau penjumlahan antara Ton dengan Toff atau disebut juga dengan “periode satu gelombang” 

3. ADC 
     Sistem mikrokontroler hanya dapat mengolah data dalam bentuk bine. Oleh sebab itu setiap data analog yang akan diproses oleh mikrokontroler harus diubah kedalam bentuk kode biner dimana Pengubahan data analog kedalam bentuk biner ditangani oleh piranti ADC. Tegangan masukan ADC didapatkan dari tranducer. Tranducer adalah pengubah besaran kontinu, dalam hal ini adalah tegangan DC 12 Volt. Tegangan listrik yang dihasilkan oleh tranducer yang berubah secara kontinu pada suatu kisaran tertentu disebut tegangan analog, dan tegangan analog ini diubah oleh ADC menjadi bentuk digital yang sebanding dengan tegangan analognya.

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.

    Resolusi ADC selalu dinyatakan sebagai jumlah bit-bit dalam kode keluaran digitalnya. Misalnya, ADC dengan resolusi n-bit memiliki 2n kode digital yang mungkin dan berarti juga memiliki 2n tingkat undak (step level). Meskipun demikian, karena undak pertama dan undak terakhir hanya setengah dari lebar penuh, maka rentang skala-penuh (FSR, full-scale range) dibagi dalam (2n -1) lebar undak. 


4. Interrupt
    Interrupt adalah mekanisme yang memungkinkan suatu instruksi atau perangkat I/O untuk menghentikan sementara eksekusi normal prosesor agar dapat diproses lebih dulu seperti memiliki prioritas tertinggi. Misalnya, saat prosesor menjalankan tugas utama, ia juga dapat terus memantau apakah ada kejadian atau sinyal dari sensor yang memicu interrupt. Ketika terjadi interrupt eksternal, prosesor akan menghentikan sementara tugas utamanya untuk menangani interrupt terlebih dahulu, kemudian melanjutkan eksekusi normal setelah selesai menangani interrupt tersebut. Fungsi yang menangani interrupt disebut Interrupt Service Routine (ISR), yang dieksekusi secara otomatis setiap kali interrupt terjadi.
            

5. COMMUNICATION
5.1 UART (Universal Asynchronous Receiver Transmitter)
     UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.

Gambar 12. Cara Kerja Komunikasi UART

        Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima.

5.2 I2C (Inter-Integrated Circuit) 
     Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.



        Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL. Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. 
        R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.

5.3 SPI (Series Peripheral Interface) 
         Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchronous berkecepatan tinggi yang dimiliki oleh STM32F407VGT6 dan Raspberry Pi Pico. Komunikasi SPI membutuhkan 3 jalur utama yaitu MOSI, MISO, dan SCK, serta jalur tambahan SS/CS. Melalui komunikasi ini, data dapat saling dikirimkan baik antara mikrokontroler maupun antara mikrokontroler dengan perangkat periferal lainnya. 

MOSI (Master Output Slave Input)
    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) 
    Jika dikonfigurasi sebagai master, maka pin MISO berfungsi sebagai input. Sebaliknya, jika dikonfigurasi sebagai slave, maka pin MISO berfungsi sebagai output. 
• SCLK (Serial Clock) 
    Jika dikonfigurasi sebagai master, maka pin SCLK bertindak sebagai output untuk memberikan sinyal clock ke slave. Sebaliknya, jika dikonfigurasi sebagai slave, maka pin SCLK berfungsi sebagai input untuk menerima sinyal clock dari master. 
• SS/CS (Slave Select/Chip Select) 
    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.




        Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO. 
 
6. STM32F103C8T6
STM32F103C8T6 adalah salah satu mikrokontroler dari keluarga STM32 yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini berbasis arsitektur ARM Cortex-M3 32-bit yang dirancang untuk memenuhi kebutuhan sistem tertanam dengan performa tinggi dan konsumsi daya rendah (STMicroelectronics, 2022). Chip ini termasuk dalam seri STM32F1 dan memiliki spesifikasi teknis yang cukup andal, seperti kecepatan clock hingga 72 MHz, memori flash sebesar 64 KB, dan RAM sebesar 20 KB. Selain itu, mikrokontroler ini dilengkapi dengan fitur ADC 12-bit sebanyak 10 kanal, serta antarmuka komunikasi digital seperti USART, SPI, dan I2C yang banyak digunakan dalam sistem monitoring dan kontrol otomatis (Mazidi, Naimi, & Naimi, 2018).



Keunggulan lainnya dari STM32F103C8T6 adalah fleksibilitas dalam pemrograman. Mikrokontroler ini dapat diprogram menggunakan berbagai platform pengembangan seperti STM32CubeIDE, Keil µVision, maupun Arduino IDE melalui STM32duino bootloader, sehingga mendukung kebutuhan pengguna pemula hingga profesional (Valvano, 2012). Board minimalis seperti “Blue Pill” yang menggunakan chip ini juga banyak dipilih karena harga yang terjangkau dan kemudahan dalam integrasi dengan sensor maupun aktuator. Mikrokontroler ini sangat cocok diterapkan dalam berbagai aplikasi, mulai dari otomasi rumah tangga, pengendali motor, sistem sensor lingkungan, hingga proyek berbasis Internet of Things (IoT) (Patterson, 2017).

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



7. Magnetic red switch Sensor 
             Ultrasonic sensor bekerja dengan memancarkan gelombang ultrasonik untuk mengukur jarak objek             terhadap sensor. Pada sistem ini, sensor digunakan untuk mengukur jarak kereta terhadap area                         perlintasan secara real-time. Jika kereta semakin dekat, STM32 akan mengaktifkan buzzer sebagai alarm         peringatan agar pengguna jalan lebih waspada.

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

 



8. Vibration Sensor

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: 

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




9.Sensor ir proximity

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)


 

10. LCD I2C 16x2

Pengertian LCD (Liquid Crystal Display), LCD (Liquid Crystal Display) adalah jenis tampilan layar yang menggunakan senyawa cair yang memiliki struktur molekul polar, ditempatkan di antara dua elektroda transparan. Ketika medan listrik diberikan, molekul-molekul tersebut akan menyesuaikan posisinya pada medan dan membentuk susunan kristalin yang mempolarisasi cahaya yang melaluinya. Citra dihasilkan dengan menggabungkan kondisi nyala dan mati dari piksel-piksel yang membentuk layar LCD. Umumnya, LCD yang dijual di pasaran telah dilengkapi dengan sirkuit terintegrasi sehingga pengguna dapat dengan mudah mengontrol tampilan LCD menggunakan mikrokontroler dan mengirimkan data melalui pin input yang telah tersedia. 


Gambar 25. Stuktur penyusun LCD 

Spesifikasi LCD I2C:
Format tampilan : 16 x 2 karakter
Pengontrol bawaan : ST 7066 (atau setara)
Siklus kerja : 1/16
5 x 8 titik termasuk kursor
Supply + 5 V (juga tersedia untuk + 3 V)
LED dapat digerakkan oleh pin 1, pin 2, pin 15, pin 16 atau A dan K
N.V. opsional untuk supply + 3 V
Kontrol pin : SDA dan SCL
Built-in potensio untuk adjust brightness
Built-in jumper untuk menon-aktifkan backlight
Dimensi : 40mm x 18mm
Berat : 20 gram


Pinout LCD I2C

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


11. Buzzer

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


12. LED

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

Resistor adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian Elektronika (V=I R). 
Jenis Resistor yang digunakan disini adalah Fixed Resistor, dimana merupakan resistor dengan nilai tetap terdiri dari film tipis karbon yang diendapkan subtrat isolator kemudian dipotong berbentuk spiral. Keuntungan jenis fixed resistor ini dapat menghasilkan resistor dengan toleransi yang lebih rendah.

Cara menghitung nilai resistor:
Tabel warna

Contoh :
Gelang ke 1 : Coklat = 1
Gelang ke 2 : Hitam = 0
Gelang ke 3 : Hijau   = 5 nol dibelakang angka gelang ke-2; atau kalikan 105
Gelang ke 4 : Perak  = Toleransi 10%
Maka nilai resistor tersebut adalah 10 * 10^5 = 1.000.000 Ohm atau 1 MOhm dengan toleransi 10%.


14. Adaptor 5V

Adaptor 5V merupakan perangkat catu daya yang berfungsi mengubah tegangan listrik AC dari jaringan PLN menjadi tegangan DC sebesar 5 volt yang dapat digunakan oleh perangkat elektronik. Pada proyek Sistem Pengendalian dan Distribusi Air Irigasi Otomatis Pascabencana Berbasis STM32 Blue Pill, adaptor 5V digunakan sebagai sumber daya utama untuk mikrokontroler STM32, sensor, LCD, buzzer, dan komponen elektronik lainnya. Adaptor bekerja dengan menurunkan tegangan AC, menyearahkan arus menggunakan rangkaian penyearah, kemudian menstabilkan tegangan sehingga diperoleh keluaran DC 5V yang aman dan stabil untuk sistem.

Spesifikasi: 

  • Tegangan input: 100–240 V AC
  • Frekuensi: 50–60 Hz
  • Tegangan output: 5 V DC
  • Arus output maksimum: 1,2 A
  • Daya maksimum: 6 W
  • Suhu operasi: 0–40°C. 


  • 15. ST-Link

    ST-Link merupakan perangkat pemrograman (programmer) dan debugging yang digunakan untuk mengunggah program dari komputer ke mikrokontroler STM32. Pada proyek ini, ST-Link berfungsi sebagai media komunikasi antara komputer dan STM32 Blue Pill saat proses pemrograman maupun pengujian sistem. Cara kerjanya yaitu dengan menghubungkan antarmuka SWD (Serial Wire Debug) pada STM32 ke ST-Link, sehingga kode program yang dibuat dapat ditransfer dan dijalankan pada mikrokontroler secara langsung.

    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

    16. Breadboard
    Breadboard terdiri dari lubang yang digunakan untuk menempatkan terminal komponen dan kemudian lubang ini dihubungkan satu sama lain menggunakan berbagai kabel/kawat.  Dua baris pertama (atas) dan dua baris terakhir (bawah) papan breadboard digunakan untuk positif (satu baris pertama dan terakhir dua) dan untuk negatif (baris lain dari dua pertama dan terakhir). Pada gambar breadboar di atas, dua baris pertama (atas) dan terakhir (bawah) papan breadboard terdiri dari 5 lubang di setiap kolom (total 10 kolom) saling terhubung secara horizontal satu sama lain secara internal. Jika terminal sumber daya terhubung dalam satu lubang satu kolom di baris atas atau bawah (salah satu dari dua baris), maka daya listrik yang sama dapat diambil dari lima lubang berturut-turut di kolom yang sama.

    17. Jumper

    Kabel jumper adalah kabel elektrik yang memiliki pin konektor di setiap ujungnya dan memungkinkan untuk menghubungkan dua komponen tanpa memerlukan solder. Biasanya kabel jamper digunakan pada breadboard atau alat prototyping lainnya agar lebih mudah untuk mengutak-atik rangkaian. Konektor yang ada pada ujung kabel terdiri atas dua jenis yaitu konektor jantan (male connector) dan konektor betina (female connector).
    Jenis-jenis kabel jumper meliputi:

    a. Kabel Jumper Male-to-Male (M-M): Kabel ini memiliki konektor male di kedua ujungnya. Digunakan untuk menghubungkan dua titik pada breadboard atau menghubungkan titik pada breadboard dengan pin header pada mikrokontroler atau modul.
    b. Kabel Jumper Male-to-Female (M-F): Kabel ini memiliki konektor male di satu ujung dan konektor female di ujung lainnya. Biasanya digunakan untuk menghubungkan pin header pada mikrokontroler atau modul dengan perangkat yang memiliki konektor male.
    c. Kabel Jumper Female-to-Female (F-F): Kabel ini memiliki konektor female di kedua ujungnya. Umumnya digunakan untuk menghubungkan dua perangkat yang memiliki konektor male, seperti menghubungkan modul sensor dengan mikrokontroler

     4. Flowchart dan Listing Program [kembali]

    Flowchart


    Listing Program
    #include "main.h"
    #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

    Rangkaian Prototype 


    Prinsip Kerja

    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]

    Kesimpulan

    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.

    Saran

    Untuk pengembangan selanjutnya, sistem dapat ditingkatkan dengan menambahkan mekanisme palang pintu otomatis yang bekerja berdasarkan hasil deteksi sensor sehingga tidak hanya memberikan peringatan, tetapi juga mampu mengendalikan akses kendaraan secara otomatis. Selain itu, penggunaan sensor dengan jangkauan yang lebih jauh dan tingkat akurasi yang lebih tinggi dapat dipertimbangkan untuk meningkatkan kemampuan deteksi kereta yang mendekat. Sistem juga dapat dikembangkan dengan menambahkan fitur komunikasi nirkabel seperti GSM, LoRa, atau Internet of Things (IoT) sehingga informasi kondisi perlintasan dapat dipantau secara real-time oleh petugas maupun masyarakat melalui aplikasi atau pusat monitoring. Selain itu, pengujian pada kondisi lingkungan nyata dengan berbagai kecepatan kereta, cuaca, dan tingkat getaran yang berbeda perlu dilakukan untuk memastikan keandalan dan kestabilan sistem dalam penggunaan jangka panjang.

     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

    Postingan populer dari blog ini