Modul 4



Sistem Monitoring dan Peringatan Dini Kerusakan Jembatan Limau Manis Akibat Banjir Bandang Berbasis STM32 Blue Pill




1. Tujuan Rancangan [kembali]

  • Merancang sistem monitoring dan peringatan dini kerusakan Jembatan Limau Manis akibat banjir bandang berbasis STM32 Blue Pill.
  • Memantau kondisi jembatan melalui ketinggian air, kemiringan struktur, dan getaran menggunakan sensor HC-SR04, SW-520D, dan SW-420.
  • Mengolah data sensor untuk menentukan kondisi jembatan dalam kategori aman, siaga, atau bahaya.
  • Memberikan peringatan dini kepada masyarakat melalui LCD 16x2 I2C, LED indikator, dan buzzer.
  • Mengaktifkan servo sebagai portal otomatis untuk mencegah kendaraan melewati jembatan saat kondisi berbahaya.

2. Alat dan Komponen [kembali]

2.1 STM32 Blue Pill

STM32 Blue Pill merupakan papan mikrokontroler berbasis STM32F103C8T6 yang digunakan sebagai pusat pengendali sistem. Mikrokontroler ini memiliki kemampuan pemrosesan yang cukup baik serta dilengkapi berbagai pin input dan output yang dapat digunakan untuk menghubungkan sensor maupun perangkat output lainnya.

                                      

Spesifikasi:

  • Microcontroller Core : ARM Cortex-M3
  • Operating Voltage : 3.3V
  • Input Voltage (recommended) : 5V
  • Input Voltage (limit) : 2.0V – 3.6V
  • Digital I/O Pins : 32 pin
  • PWM Digital I/O Pins : 15 channel
  • Analog Input Pins : 10 channel (ADC 12-bit)
  • DC Current per I/O Pin : 25 mA
  • DC Current for 3.3V Pin : 150 mA
  • Flash Memory : 64 KB
  • SRAM : 20 KB
  • Clock Speed : 72 MHz
  • Komunikasi : USART, SPI, I²C, USB, CAN
  • Pemrograman : SWD, JTAG, USART Bootloader

2.2 Sensor Ultrasonik HC-SR04

Sensor ultrasonik HC-SR04 merupakan sensor yang digunakan untuk mengukur jarak suatu objek dengan memanfaatkan gelombang ultrasonik. Sensor ini banyak digunakan pada berbagai aplikasi pengukuran jarak karena memiliki tingkat akurasi yang cukup baik serta mudah diintegrasikan dengan mikrokontroler.


Spesifikasi:

  • Tegangan Operasi : 5V DC
  • Arus Operasi : 15 mA
  • Frekuensi Ultrasonik : 40 kHz
  • Jarak Pengukuran : 2 cm – 400 cm
  • Akurasi : ±3 mm
  • Sudut Pengukuran : ±15°

2.3 Sensor Tilt SW-520D

Sensor tilt SW-520D merupakan sensor yang digunakan untuk mendeteksi perubahan posisi atau kemiringan suatu objek. Sensor ini menghasilkan sinyal digital berdasarkan perubahan orientasi yang terjadi pada sensor.


Spesifikasi:

  • Tegangan Operasi : 3.3V – 5V
  • Output : Digital (HIGH/LOW)
  • Sudut Deteksi : Bergantung posisi pemasangan
  • Konsumsi Arus : Sangat rendah
  • Respon Cepat terhadap perubahan posisi

2.4 Sensor Vibration SW-420

Sensor vibration SW-420 merupakan sensor yang digunakan untuk mendeteksi adanya getaran pada suatu objek. Sensor ini dilengkapi dengan modul komparator sehingga dapat menghasilkan keluaran digital yang mudah dibaca oleh mikrokontroler.


Spesifikasi:

  • Tegangan Operasi : 3.3V – 5V
  • Output : Digital
  • Menggunakan IC LM393 Comparator
  • Sensitivitas dapat diatur melalui potensiometer
  • Indikator LED onboard

2.5 LCD 16×2 

LCD 16×2 merupakan perangkat tampilan yang digunakan untuk menampilkan informasi dalam bentuk karakter. Penggunaan modul I2C memungkinkan komunikasi data dilakukan hanya menggunakan dua jalur komunikasi sehingga dapat menghemat penggunaan pin pada mikrokontroler.


Spesifikasi:

  • Tipe Display : LCD Karakter 16×2
  • Tegangan Operasi : 5V
  • Komunikasi : I²C
  • Pin : VCC, GND, SDA, SCL
  • Jumlah Karakter : 16 kolom × 2 baris

2.6 LED

Light Emitting Diode (LED) merupakan komponen elektronika yang dapat memancarkan cahaya ketika dialiri arus listrik. LED banyak digunakan sebagai indikator visual karena memiliki konsumsi daya yang rendah dan umur pakai yang relatif panjang.

Spesifikasi (LED 5mm Standar):

  • Warna : Merah / Hijau / Kuning (tergantung jenis)
  • Forward Voltage (Vf) : 1.8V – 2.2V (merah), 2.0V – 3.5V (hijau/biru)
  • Forward Current (If) : 10 mA – 30 mA (tipikal 20 mA)
  • Maximum Current : 30 mA
  • Luminous Intensity : 5 – 500 mcd
  • Viewing Angle : 20° – 60°
  • Reverse Voltage (max) : 5V
  • Operating Temperature : -25°C hingga +85°C
  • Resistor yang dibutuhkan (3.3V supply) : (3.3V – 2.0V) / 0.02A = 65 ohm (gunakan 100 ohm)

2.7 Buzzer

Buzzer merupakan komponen elektronika yang digunakan untuk menghasilkan suara atau bunyi. Komponen ini sering digunakan sebagai indikator audio pada berbagai sistem elektronik dan sistem peringatan.

Spesifikasi:

  • Tipe : Active Buzzer (osilator internal)
  • Tegangan Operasi : 3.5V – 5.5V DC
  • Tegangan Rated : 5V DC
  • Konsumsi Arus : < 30 mA
  • Frekuensi Suara : 2300 ± 300 Hz
  • Sound Pressure Level (SPL) : ≥ 85 dB (pada 10 cm)
  • Operating Temperature : -20°C hingga +70°C
  • Dimensi : 12mm × 9.5mm
  • Sambungan : 2 pin (+ dan -)

2.8 Servo Motor

Servo motor merupakan aktuator yang mampu bergerak pada sudut tertentu dengan tingkat presisi yang cukup tinggi. Servo banyak digunakan pada sistem kendali otomatis karena posisi putarannya dapat diatur melalui sinyal kendali dari mikrokontroler.


                 

2.9 Resistor 220 Ω

Resistor merupakan komponen pasif yang berfungsi untuk menghambat atau membatasi arus listrik dalam suatu rangkaian. Pada perancangan ini digunakan resistor 220 Ω yang umumnya digunakan sebagai pembatas arus pada LED.


Spesifikasi:

  • Nilai Resistansi : 220 Ω
  • Toleransi : ±5%
  • Daya Maksimum : ¼ Watt
  • Jenis : Carbon Film

2.10 Jumper

Jumper merupakan kabel penghubung yang digunakan untuk menghubungkan antar komponen pada rangkaian elektronika. Kabel ini memudahkan proses perakitan dan pengujian rangkaian tanpa memerlukan proses penyolderan.

Spesifikasi:

  • Tipe : Male-Male, Male-Female, Female-Female
  • Bahan Konduktor : Tembaga
  • Mudah digunakan pada breadboard dan modul elektronik

2.11 ST-Link

ST-Link merupakan perangkat programmer dan debugger yang digunakan untuk mengunggah program ke mikrokontroler STM32. Selain itu, perangkat ini juga dapat digunakan untuk melakukan proses debugging selama pengembangan sistem.


Spesifikasi:

  • Interface : SWD dan JTAG
  • Tegangan Target : 3.3V
  • Mendukung proses debugging
  • Kompatibel dengan STM32CubeIDE dan Keil

2.12 Adaptor

Adaptor merupakan perangkat yang digunakan untuk mengubah tegangan listrik AC menjadi tegangan DC yang dapat digunakan oleh rangkaian elektronika. Adaptor berfungsi sebagai sumber catu daya utama pada sistem.

Spesifikasi:

  • Tegangan Output : 5V DC
  • Arus Output : Menyesuaikan kebutuhan sistem
  • Tipe : Switching Adapter

2.13 Breadboard

Breadboard merupakan papan percobaan yang digunakan untuk merangkai komponen elektronika tanpa proses penyolderan. Penggunaan breadboard memudahkan proses perancangan, pengujian, dan modifikasi rangkaian sebelum dibuat dalam bentuk permanen.

Spesifikasi:

  • Tipe : Solderless Breadboard
  • Jumlah Titik Koneksi : ±400–830 titik
  • Tegangan Kerja : Hingga 5V–12V
  • Dapat digunakan berulang kali

3. Landasan Teori [kembali]

3.1 Sistem Monitoring dan Peringatan Dini Jembatan

Sistem monitoring dan peringatan dini merupakan suatu sistem yang dirancang untuk memantau kondisi tertentu secara terus-menerus, kemudian memberikan informasi atau peringatan apabila terdeteksi kondisi yang berpotensi membahayakan. Pada rancangan ini, sistem monitoring digunakan untuk memantau kondisi Jembatan Limau Manis yang berisiko mengalami kerusakan akibat banjir bandang.

Banjir bandang dapat menyebabkan peningkatan tinggi permukaan air, tekanan arus yang kuat, getaran pada struktur, serta perubahan posisi atau kemiringan jembatan. Oleh karena itu, sistem ini dirancang untuk membaca beberapa parameter penting, yaitu ketinggian air, kemiringan jembatan, dan getaran struktur. Data dari parameter tersebut kemudian diproses oleh mikrokontroler STM32 Blue Pill untuk menentukan kondisi jembatan dalam tiga kategori, yaitu aman, siaga, dan bahaya.

Apabila sistem mendeteksi kondisi bahaya, maka perangkat output seperti LED, buzzer, LCD, dan servo akan bekerja sebagai media peringatan dan pengamanan. Dengan adanya sistem ini, masyarakat dan pengguna jalan dapat memperoleh informasi lebih cepat mengenai kondisi jembatan sehingga dapat mengurangi risiko kecelakaan saat terjadi banjir bandang.

3.2 Mikrokontroler STM32 Blue Pill

STM32 Blue Pill merupakan papan mikrokontroler yang menggunakan chip STM32F103C8T6. Mikrokontroler ini berbasis ARM Cortex-M3 dan memiliki kemampuan pemrosesan yang cukup baik untuk digunakan pada sistem embedded. Pada rancangan ini, STM32 Blue Pill berperan sebagai pusat pengendali yang membaca input dari sensor dan mengatur output sesuai dengan kondisi yang terdeteksi.

STM32 Blue Pill menerima data dari sensor ultrasonik HC-SR04, sensor tilt SW-520D, dan sensor vibration SW-420. Data tersebut kemudian diproses untuk menentukan apakah kondisi jembatan berada pada keadaan aman, siaga, atau bahaya. Setelah kondisi ditentukan, STM32 akan mengendalikan LCD 16x2 I2C, LED indikator, buzzer, dan servo motor sebagai bentuk peringatan serta tindakan pengamanan.

Penggunaan STM32 Blue Pill pada sistem ini dipilih karena memiliki banyak pin input/output, mendukung komunikasi I2C, serta mampu menghasilkan sinyal PWM yang dibutuhkan untuk mengendalikan servo motor.

3.3 General Input Output (GPIO)

General Input Output atau GPIO merupakan pin pada mikrokontroler yang dapat digunakan sebagai masukan maupun keluaran. Sebagai input, GPIO digunakan untuk membaca data atau sinyal dari komponen luar seperti sensor. Sebagai output, GPIO digunakan untuk mengendalikan komponen lain seperti LED, buzzer, atau perangkat elektronik lainnya.

Pada STM32 Blue Pill, pin GPIO dapat bekerja dalam bentuk sinyal digital, yaitu logika HIGH dan LOW. Logika HIGH menunjukkan kondisi aktif atau bernilai 1, sedangkan logika LOW menunjukkan kondisi tidak aktif atau bernilai 0. Input digital digunakan untuk membaca perubahan kondisi dari sensor digital, sedangkan output digital digunakan untuk mengaktifkan atau menonaktifkan komponen seperti LED dan buzzer.

Dalam sistem ini, GPIO digunakan untuk membaca sinyal dari sensor SW-520D dan SW-420, serta mengendalikan LED indikator dan buzzer. Dengan adanya GPIO, mikrokontroler dapat berinteraksi langsung dengan komponen input dan output pada rangkaian.

3.4 Pulse Width Modulation (PWM)

Pulse Width Modulation atau PWM merupakan teknik pengaturan sinyal digital dengan cara mengubah lebar pulsa atau duty cycle. Duty cycle adalah perbandingan antara waktu sinyal berada pada kondisi ON atau HIGH terhadap total waktu satu periode gelombang. Nilai duty cycle biasanya dinyatakan dalam bentuk persentase.

Rumus duty cycle adalah:

Duty Cycle = Ton / Ttotal × 100%

Keterangan:
Ton = waktu ketika sinyal berada pada kondisi HIGH
Toff = waktu ketika sinyal berada pada kondisi LOW
Ttotal = jumlah waktu Ton dan Toff dalam satu periode

Pada mikrokontroler STM32, sinyal PWM dihasilkan menggunakan timer internal. Timer tersebut dapat diatur untuk menghasilkan sinyal dengan frekuensi dan duty cycle tertentu. PWM banyak digunakan untuk mengatur kecepatan motor, kecerahan LED, serta mengendalikan sudut putar servo motor.

Pada rancangan ini, PWM digunakan untuk mengendalikan servo motor yang berfungsi sebagai portal otomatis. Ketika kondisi jembatan berada pada status aman atau siaga, servo berada pada posisi portal terbuka. Namun, ketika sistem mendeteksi kondisi bahaya, STM32 akan mengatur sinyal PWM agar servo bergerak ke posisi menutup portal.

3.5 Inter Integrated Circuit (I2C)

Inter Integrated Circuit atau I2C merupakan komunikasi serial dua arah yang menggunakan dua jalur utama, yaitu SDA dan SCL. SDA atau Serial Data berfungsi sebagai jalur pengiriman data, sedangkan SCL atau Serial Clock berfungsi sebagai jalur clock untuk mengatur sinkronisasi pengiriman data.

Komunikasi I2C banyak digunakan karena dapat menghubungkan mikrokontroler dengan beberapa perangkat hanya menggunakan dua pin. Hal ini membuat rangkaian menjadi lebih sederhana dan menghemat penggunaan pin pada mikrokontroler.

Pada sistem ini, komunikasi I2C digunakan untuk menghubungkan STM32 Blue Pill dengan LCD 16x2 I2C. LCD tersebut digunakan untuk menampilkan informasi berupa ketinggian air dan status kondisi jembatan. Dengan menggunakan modul I2C, koneksi LCD menjadi lebih praktis karena tidak membutuhkan banyak kabel seperti LCD paralel biasa.

 Cara Kerja Komunikasi I2C

3.6 Sensor Ultrasonik HC-SR04

                                      

Sensor ultrasonik HC-SR04 merupakan sensor yang digunakan untuk mengukur jarak suatu objek dengan memanfaatkan gelombang ultrasonik. Sensor ini memiliki dua bagian utama, yaitu transmitter dan receiver. Transmitter berfungsi memancarkan gelombang ultrasonik, sedangkan receiver berfungsi menerima pantulan gelombang dari objek yang terdeteksi.

Cara kerja sensor HC-SR04 dimulai ketika mikrokontroler memberikan sinyal trigger. Setelah itu, sensor akan memancarkan gelombang ultrasonik. Gelombang tersebut akan memantul ketika mengenai permukaan objek, lalu diterima kembali oleh receiver. Waktu pantulan gelombang kemudian digunakan untuk menghitung jarak antara sensor dan objek.

Rumus pengukuran jarak pada sensor ultrasonik adalah:

Jarak = (Waktu × Kecepatan Suara) / 2

Pembagian dua dilakukan karena gelombang ultrasonik melakukan perjalanan pergi dan kembali. Pada rancangan ini, sensor HC-SR04 digunakan untuk membaca tinggi permukaan air di bawah jembatan. Semakin kecil jarak antara sensor dengan permukaan air, maka semakin tinggi permukaan air yang terdeteksi.

Grafik Respon Sensor Ultrasonik HC-SR04

Grafik di atas menggambarkan karakteristik respon sensor ultrasonik yang memiliki tingkat linearitas sangat tinggi pada rentang deteksi efektif 2 cm hingga 400 cm. Sumbu X menunjukkan jarak fisik objek dalam satuan centimeter (cm), sedangkan sumbu Y merepresentasikan durasi waktu pulsa pantulan (echo) dalam satuan mikrodetik (us). Hubungan kedua parameter ini berbanding lurus secara konstan sesuai dengan prinsip kecepatan rambat bunyi di udara, di mana setiap pertambahan jarak objek akan diikuti oleh peningkatan waktu tempuh gelombang secara linear dengan persamaan konversi Waktu (us) = Jarak (cm) x 58.2.
Grafik di atas memvisualisasikan area batasan spasial atau pola pancaran gelombang (beam pattern) berbentuk kerucut (konik) yang dihasilkan oleh sensor ultrasonik. Zona berwarna oranye menunjukkan ruang deteksi efektif sensor yang memiliki sudut sebaran sebesar +_15 derajat dari garis tegak lurus pusat transmiter (total sudut pancaran 30 derajat). Objek target yang berada di dalam area kerucut ini akan terdeteksi dengan akurat karena mampu memantulkan gelombang kembali menuju komponen receiver, sementara objek yang berada di luar batas sudut tersebut tidak akan terdeteksi akibat gelombang suara yang memantul menjauh atau tidak kembali ke sensor.

Grafik respon sensor HC-SR04 menunjukkan hubungan antara tinggi air dan kondisi sistem. Ketika tinggi air masih rendah, sistem berada pada kondisi aman. Ketika tinggi air mulai meningkat, sistem masuk kondisi siaga. Apabila tinggi air semakin tinggi, maka sistem masuk kondisi bahaya.



3.7 Sensor Tilt SW-520D

                                   

Sensor tilt SW-520D merupakan sensor yang digunakan untuk mendeteksi perubahan kemiringan atau posisi suatu objek. Sensor ini bekerja berdasarkan perubahan posisi internal yang menyebabkan kondisi keluaran berubah menjadi HIGH atau LOW. Sensor ini termasuk sensor digital karena keluarannya berupa dua kondisi logika.

Pada rancangan ini, sensor tilt SW-520D digunakan untuk mendeteksi kemiringan pada struktur jembatan. Jika jembatan berada pada posisi normal, maka sensor menunjukkan kondisi normal. Namun, apabila terjadi perubahan kemiringan akibat tekanan arus banjir atau pergeseran struktur, sensor akan memberikan sinyal perubahan kepada STM32 Blue Pill.

Sensor tilt penting digunakan karena perubahan kemiringan dapat menjadi tanda awal adanya gangguan pada kestabilan struktur jembatan. Dengan membaca kondisi kemiringan, sistem dapat membantu mendeteksi potensi kerusakan sebelum kondisi menjadi lebih berbahaya.

Grafik Respon Sensor Tilt SW-520D

Grafik di atas menunjukkan karakteristik respon sensor tilt SW-520D yang bekerja berdasarkan perubahan status logika digital (biner) terhadap sudut kemiringan objek. Sumbu X merepresentasikan sudut pergeseran posisi sensor dalam satuan derajat (°), sementara sumbu Y menunjukkan kondisi keluaran digital berupa logika 0 (LOW/ON) atau 1 (HIGH/OFF). Berdasarkan mekanika internal bola logam di dalam tabung hampa sensor, output akan tetap stabil berada pada logika 0 saat posisi sensor tegak lurus (rentang sudut kritis sekitar ± 15°), namun segera mengalami transisi diskrit menjadi logika 1 ketika sensor dimiringkan melewati ambang batas sudut tersebut karena bola logam bergeser memutus sirkuit pin.

Grafik respon sensor tilt SW-520D menunjukkan hubungan antara besar kemiringan dan status kondisi jembatan. Semakin besar perubahan kemiringan yang terjadi, maka semakin tinggi tingkat bahaya yang terdeteksi oleh sistem.


3.8 Sensor Vibration SW-420

Sensor vibration SW-420 merupakan sensor yang digunakan untuk mendeteksi getaran pada suatu objek atau struktur. Sensor ini bekerja dengan mendeteksi adanya getaran mekanik, kemudian menghasilkan sinyal digital yang dapat dibaca oleh mikrokontroler.

Pada rancangan ini, sensor SW-420 digunakan untuk mendeteksi getaran pada struktur jembatan. Getaran dapat terjadi akibat tekanan arus banjir, kendaraan yang melintas, atau adanya ketidakstabilan pada struktur jembatan. Apabila getaran yang terdeteksi semakin besar, maka sistem dapat menganggap kondisi jembatan semakin berisiko.

Sensor getar berperan penting karena getaran berlebih dapat menjadi tanda adanya keretakan, pergeseran, atau kerusakan pada struktur jembatan. Data dari sensor ini digunakan bersama dengan sensor lainnya untuk menentukan kondisi sistem secara lebih akurat.

Grafik Respon Sensor Vibration SW-420


Grafik di atas memvisualisasikan karakteristik respon digital dari sensor getaran SW-420 yang diukur berdasarkan fungsi waktu (detik). Sumbu X menunjukkan lini waktu pengujian, sedangkan sumbu Y merepresentasikan status logika keluaran digital pada pin Digital Output (DO). Berdasarkan prinsip kerjanya, saat kondisi lingkungan tenang (tidak ada getaran), pegas internal sensor saling bersentuhan rapat sehingga modul mengeluarkan sinyal konstan berada pada logika 1 (HIGH). Sebaliknya, begitu sensor menerima kejutan atau getaran mekanis yang melewati ambang batas sensitivitas (potensiometer), pegas akan bergetar dan menyebabkan kontak sirkuit terputus-putus secara cepat (flickering), yang ditunjukkan oleh grafik berupa transisi pulsa acak menuju logika 0 (LOW).

Grafik respon sensor vibration SW-420 menunjukkan hubungan antara tingkat getaran dan kondisi sistem. Semakin besar getaran yang terdeteksi, maka sistem akan memberikan respon yang lebih tinggi.


3.9 LCD 16x2 

LCD 16x2 merupakan perangkat tampilan yang mampu menampilkan karakter sebanyak 16 kolom dan 2 baris. LCD ini digunakan untuk memberikan informasi kepada pengguna mengenai kondisi sistem secara langsung.

Pada rancangan ini, LCD menampilkan data seperti ketinggian air dan status kondisi jembatan. Status yang ditampilkan dapat berupa aman, siaga, atau bahaya. Dengan adanya LCD, pengguna dapat mengetahui kondisi sistem secara lebih jelas tanpa harus hanya mengandalkan LED atau buzzer.

Penggunaan modul I2C pada LCD membuat pemasangan kabel menjadi lebih sederhana. LCD I2C hanya membutuhkan empat pin utama, yaitu VCC, GND, SDA, dan SCL.

3.10 LED Indikator

LED atau Light Emitting Diode merupakan komponen elektronika yang dapat memancarkan cahaya ketika dialiri arus listrik. LED sering digunakan sebagai indikator visual pada sistem elektronika karena mudah digunakan dan memiliki konsumsi daya yang rendah.

Pada sistem ini, LED digunakan untuk menunjukkan status kondisi jembatan. LED hijau menunjukkan kondisi aman, LED kuning menunjukkan kondisi siaga, dan LED merah menunjukkan kondisi bahaya. Dengan adanya LED indikator, pengguna dapat mengetahui kondisi sistem secara cepat melalui warna cahaya yang menyala.

3.11 Buzzer

Buzzer merupakan komponen elektronika yang dapat menghasilkan bunyi ketika diberikan tegangan listrik. Buzzer sering digunakan sebagai alarm atau penanda suara pada sistem peringatan.

Pada rancangan ini, buzzer digunakan sebagai indikator audio ketika sistem mendeteksi kondisi siaga atau bahaya. Pada kondisi siaga, buzzer dapat berbunyi pendek sebagai tanda peringatan awal. Pada kondisi bahaya, buzzer berbunyi lebih aktif sebagai tanda bahwa jembatan berada dalam kondisi berisiko dan perlu dihindari.

3.12 Servo Motor

Servo motor merupakan aktuator yang dapat bergerak pada sudut tertentu berdasarkan sinyal kendali yang diberikan oleh mikrokontroler. Servo motor umumnya dikendalikan menggunakan sinyal PWM. Perubahan duty cycle pada PWM akan menentukan posisi sudut putaran servo.

Pada rancangan ini, servo motor digunakan sebagai penggerak portal otomatis. Ketika kondisi sistem aman atau siaga, portal berada dalam keadaan terbuka. Namun, apabila sistem mendeteksi kondisi bahaya, servo akan menggerakkan portal ke posisi tertutup untuk mencegah kendaraan melewati jembatan.

Penggunaan servo pada sistem ini bertujuan untuk memberikan tindakan pengamanan otomatis, bukan hanya memberikan peringatan melalui suara atau tampilan. Dengan demikian, sistem tidak hanya memantau kondisi jembatan, tetapi juga dapat membantu membatasi akses saat kondisi berbahaya.



4. Flowchart dan Listing Program [kembali]

Flowchart Sistem



Listing Program

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Main program body

* * SISTEM MONITORING DAN PERINGATAN DINI KERUSAKAN JEMBATAN

* JEMBATAN LIMAU MANIS AKIBAT BANJIR BANDANG

******************************************************************************

* @attention

*

* Copyright (c) 2026 STMicroelectronics.

* All rights reserved.

*

* This software is licensed under terms that can be found in the LICENSE file

* in the root directory of this software component.

* If no LICENSE file comes with this software, it is provided AS-IS.

*

******************************************************************************

*/

/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/

#include "main.h"


/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include <stdio.h>

#include <string.h>

/* USER CODE END Includes */


/* Private typedef -----------------------------------------------------------*/

/* USER CODE BEGIN PTD */


/* USER CODE END PTD */


/* Private define ------------------------------------------------------------*/

/* USER CODE BEGIN PD */

/* ====================== ALAMAT I2C LCD ====================== */

#define LCD_ADDR 0x4E // Alamat I2C 0x27 << 1. Jika gagal, coba 0x7E (0x3F << 1)


/* ====================== BATAS KONDISI AIR ====================== */

#define BATAS_BAHAYA 20

#define BATAS_SIAGA 40


/* ====================== NILAI PWM SERVO ====================== */

#define SERVO_OPEN 2000

#define SERVO_CLOSE 1000

/* USER CODE END PD */


/* Private macro -------------------------------------------------------------*/

/* USER CODE BEGIN PM */


/* USER CODE END PM */


/* Private variables ---------------------------------------------------------*/

I2C_HandleTypeDef hi2c1;


TIM_HandleTypeDef htim1;


/* USER CODE BEGIN PV */

char text[20];

uint32_t Difference;

float Distance;

/* USER CODE END PV */


/* Private function prototypes -----------------------------------------------*/

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_TIM1_Init(void);

static void MX_I2C1_Init(void);

/* USER CODE BEGIN PFP */

float Read_Distance(void);

void lcd_send_cmd(char cmd);

void lcd_send_data(char data);

void lcd_clear(void);

void lcd_put_cur(int row, int col);

void lcd_init(void);

void lcd_send_string(char *str);

/* USER CODE END PFP */


/* Private user code ---------------------------------------------------------*/

/* USER CODE BEGIN 0 */

/* ====================== I2C LCD FUNCTIONS ====================== */

void lcd_send_cmd(char cmd)

{

char data_u, data_l;

uint8_t data_t[4];

data_u = (cmd & 0xf0);

data_l = ((cmd << 4) & 0xf0);


data_t[0] = data_u | 0x0C; // En=1, Rs=0

data_t[1] = data_u | 0x08; // En=0, Rs=0

data_t[2] = data_l | 0x0C; // En=1, Rs=0

data_t[3] = data_l | 0x08; // En=0, Rs=0


HAL_I2C_Master_Transmit(&hi2c1, LCD_ADDR, (uint8_t *)data_t, 4, 100);

}


void lcd_send_data(char data)

{

char data_u, data_l;

uint8_t data_t[4];

data_u = (data & 0xf0);

data_l = ((data << 4) & 0xf0);


data_t[0] = data_u | 0x0D; // En=1, Rs=1

data_t[1] = data_u | 0x09; // En=0, Rs=1

data_t[2] = data_l | 0x0D; // En=1, Rs=1

data_t[3] = data_l | 0x09; // En=0, Rs=1


HAL_I2C_Master_Transmit(&hi2c1, LCD_ADDR, (uint8_t *)data_t, 4, 100);

}


void lcd_clear(void)

{

lcd_send_cmd(0x01);

HAL_Delay(2);

}


void lcd_put_cur(int row, int col)

{

switch (row)

{

case 0: col |= 0x80; break;

case 1: col |= 0xC0; break;

}

lcd_send_cmd(col);

}


void lcd_init(void)

{

HAL_Delay(50);

lcd_send_cmd(0x30);

HAL_Delay(5);

lcd_send_cmd(0x30);

HAL_Delay(1);

lcd_send_cmd(0x30);

HAL_Delay(10);

lcd_send_cmd(0x20);

HAL_Delay(10);


lcd_send_cmd(0x28);

HAL_Delay(1);

lcd_send_cmd(0x0C);

HAL_Delay(1);

lcd_send_cmd(0x06);

HAL_Delay(1);

lcd_send_cmd(0x01);

HAL_Delay(2);

}


void lcd_send_string(char *str)

{

while (*str) lcd_send_data(*str++);

}


/* ====================== SENSOR ULTRASONIK ====================== */

float Read_Distance(void)

{

uint32_t pMillis;

uint32_t val1 = 0, val2 = 0;


HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);

__HAL_TIM_SET_COUNTER(&htim1, 0);

while (__HAL_TIM_GET_COUNTER(&htim1) < 10);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);


pMillis = HAL_GetTick();

while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)

{

if((HAL_GetTick() - pMillis) > 10) return 0;

}


val1 = __HAL_TIM_GET_COUNTER(&htim1);


pMillis = HAL_GetTick();

while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET)

{

if((HAL_GetTick() - pMillis) > 30) return 400;

}


val2 = __HAL_TIM_GET_COUNTER(&htim1);


if (val2 > val1)

{

Difference = val2 - val1;

}

else

{

Difference = (20000 - val1) + val2;

}


Distance = (float)Difference * 0.034 / 2;

return Distance;

}

/* USER CODE END 0 */


/**

* @brief The application entry point.

* @retval int

*/

int main(void)

{


/* USER CODE BEGIN 1 */


/* USER CODE END 1 */


/* MCU Configuration--------------------------------------------------------*/


/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();


/* USER CODE BEGIN Init */


/* USER CODE END Init */


/* Configure the system clock */

SystemClock_Config();


/* USER CODE BEGIN SysInit */


/* USER CODE END SysInit */


/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_TIM1_Init();

MX_I2C1_Init();

/* USER CODE BEGIN 2 */

HAL_TIM_Base_Start(&htim1);

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);


lcd_init();

lcd_clear();

/* USER CODE END 2 */


/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

{

float jarak = Read_Distance();

int tilt = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);

int vibration = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1);


/* ==================== 1. KONDISI DARURAT ==================== */

if(jarak <= BATAS_BAHAYA && tilt == 1)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); // Hijau

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); // Kuning

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET); // Merah

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET); // Buzzer ON


__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, SERVO_CLOSE);


lcd_put_cur(0, 0);

lcd_send_string("STATUS: DARURAT ");

lcd_put_cur(1, 0);

lcd_send_string("EVAKUASI SEGERA!");


HAL_Delay(500);

}


/* ==================== 2. KONDISI BAHAYA ==================== */

else if(jarak <= BATAS_BAHAYA || tilt == 1)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);


__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, SERVO_CLOSE);


lcd_put_cur(0, 0);

lcd_send_string("STATUS: BAHAYA ");


lcd_put_cur(1, 0);

if(tilt == 1) {

lcd_send_string("JEMBATAN MIRING!");

} else {

sprintf(text, "AIR TINGGI:%dCM ", (int)jarak);

lcd_send_string(text);

}

HAL_Delay(500);

}


/* ==================== 3. KONDISI SIAGA ==================== */

else if((jarak <= BATAS_SIAGA && jarak > BATAS_BAHAYA) || vibration == 1)

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);


HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);

HAL_Delay(100);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);


__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, SERVO_OPEN);


lcd_put_cur(0, 0);

lcd_send_string("STATUS: SIAGA ");


lcd_put_cur(1, 0);

if(vibration == 1) {

lcd_send_string("JEMBATAN GETAR! ");

} else {

sprintf(text, "TINGGI AIR:%dCM ", (int)jarak);

lcd_send_string(text);

}

HAL_Delay(400);

}


/* ==================== 4. KONDISI AMAN ==================== */

else

{

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);


__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, SERVO_OPEN);


lcd_put_cur(0, 0);

lcd_send_string("STATUS: AMAN ");


lcd_put_cur(1, 0);

sprintf(text, "TINGGI AIR:%dCM ", (int)jarak);

lcd_send_string(text);


HAL_Delay(500);

}

/* USER CODE END WHILE */


/* USER CODE BEGIN 3 */

}

/* USER CODE END 3 */

}


/**

* @brief System Clock Configuration

* @retval None

*/

void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


// Mengaktifkan HSE Eksternal (8MHz) dan melipatgandakannya lewat PLL x9 menjadi 72MHz

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

RCC_OscInitStruct.HSEState = RCC_HSE_ON;

RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;

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_PLLCLK;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; // PCLK1 = 36MHz (Maksimum)

RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // PCLK2 = 72MHz


if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)

{

Error_Handler();

}

}


/**

* @brief I2C1 Initialization Function

* @param None

* @retval None

*/

static void MX_I2C1_Init(void)

{


/* USER CODE BEGIN I2C1_Init 0 */


/* USER CODE END I2C1_Init 0 */


/* USER CODE BEGIN I2C1_Init 1 */


/* USER CODE END I2C1_Init 1 */

hi2c1.Instance = I2C1;

hi2c1.Init.ClockSpeed = 100000;

hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;

hi2c1.Init.OwnAddress1 = 0;

hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;

hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;

hi2c1.Init.OwnAddress2 = 0;

hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;

hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;

if (HAL_I2C_Init(&hi2c1) != HAL_OK)

{

Error_Handler();

}

/* USER CODE BEGIN I2C1_Init 2 */


/* USER CODE END I2C1_Init 2 */


}


/**

* @brief TIM1 Initialization Function

* @param None

* @retval None

*/

static void MX_TIM1_Init(void)

{


/* USER CODE BEGIN TIM1_Init 0 */


/* USER CODE END TIM1_Init 0 */


TIM_MasterConfigTypeDef sMasterConfig = {0};

TIM_OC_InitTypeDef sConfigOC = {0};

TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};


/* USER CODE BEGIN TIM1_Init 1 */


/* USER CODE END TIM1_Init 1 */

htim1.Instance = TIM1;

htim1.Init.Prescaler = 71;

htim1.Init.CounterMode = TIM_COUNTERMODE_UP;

htim1.Init.Period = 19999;

htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

htim1.Init.RepetitionCounter = 0;

htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;

if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)

{

Error_Handler();

}

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;

sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;

if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)

{

Error_Handler();

}

sConfigOC.OCMode = TIM_OCMODE_PWM1;

sConfigOC.Pulse = 0;

sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;

sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;

sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;

sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;

sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;

if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)

{

Error_Handler();

}

sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;

sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;

sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;

sBreakDeadTimeConfig.DeadTime = 0;

sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;

sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;

sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;

if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)

{

Error_Handler();

}

/* USER CODE BEGIN TIM1_Init 2 */


/* USER CODE END TIM1_Init 2 */

HAL_TIM_MspPostInit(&htim1);


}


/**

* @brief GPIO Initialization Function

* @param None

* @retval None

*/

static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

/* USER CODE BEGIN MX_GPIO_Init_1 */


/* USER CODE END MX_GPIO_Init_1 */


/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOA_CLK_ENABLE();

__HAL_RCC_GPIOB_CLK_ENABLE();


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);


/*Configure GPIO pin : PA0 */

GPIO_InitStruct.Pin = GPIO_PIN_0;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


/*Configure GPIO pin : PA1 */

GPIO_InitStruct.Pin = GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


/*Configure GPIO pins : PB0 PB1 */

GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/*Configure GPIO pins : PB12 PB13 PB14 PB15 */

GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/* USER CODE BEGIN MX_GPIO_Init_2 */


/* USER CODE END MX_GPIO_Init_2 */

}


/* USER CODE BEGIN 4 */


/* USER CODE END 4 */


/**

* @brief This function is executed in case of error occurrence.

* @retval None

*/

void Error_Handler(void)

{

/* USER CODE BEGIN Error_Handler_Debug */

while (1)

{

}

/* USER CODE END Error_Handler_Debug */

}

#ifdef USE_FULL_ASSERT

/**

* @brief Reports the name of the source file and the source line number

* where the assert_param error has occurred.

* @param file: pointer to the source file name

* @param line: assert_param error line source number

* @retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User can add his own implementation to report the file name and line number,

ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */


5. Rangkaian Simulasi [kembali]



Prinsip Kerja: 

Sistem Monitoring dan Peringatan Dini Kerusakan Jembatan Limau Manis Akibat Banjir Bandang Berbasis STM32 Blue Pill bekerja dengan memanfaatkan tiga sensor utama, yaitu sensor ultrasonik HC-SR04, sensor tilt SW-520D, dan sensor vibration SW-420. Ketiga sensor tersebut berfungsi sebagai input yang akan dibaca dan diproses oleh mikrokontroler STM32 Blue Pill untuk menentukan kondisi jembatan.

Sensor ultrasonik HC-SR04 dipasang pada bagian bawah jembatan dan digunakan untuk mengukur ketinggian permukaan air. Pada simulasi Proteus, perubahan tinggi air direpresentasikan menggunakan potensiometer yang terhubung dengan model sensor ultrasonik. Semakin tinggi permukaan air yang terdeteksi, maka sistem akan menganggap potensi banjir semakin besar.

Sensor tilt SW-520D digunakan untuk mendeteksi perubahan kemiringan struktur jembatan. Sensor ini akan memberikan sinyal digital kepada STM32 ketika terjadi perubahan posisi atau kemiringan yang melebihi kondisi normal. Selain itu, sensor vibration SW-420 digunakan untuk mendeteksi adanya getaran pada struktur jembatan yang dapat mengindikasikan ketidakstabilan atau kerusakan konstruksi.

Seluruh data sensor kemudian diproses oleh STM32 Blue Pill untuk menentukan kondisi sistem menjadi tiga kategori, yaitu aman, siaga, dan bahaya. Hasil pengolahan data ditampilkan pada LCD 16×2 sebagai informasi kondisi jembatan dan ketinggian air yang terukur.

Pada simulasi Proteus, LCD yang digunakan masih berupa LCD 16×2 mode paralel sehingga komunikasi dilakukan melalui beberapa pin data dan pin kontrol yang terhubung langsung ke STM32. Namun pada implementasi prototype sebenarnya, LCD menggunakan modul I2C sehingga komunikasi hanya memerlukan dua jalur utama, yaitu SDA dan SCL. Meskipun metode komunikasi berbeda, fungsi dan informasi yang ditampilkan tetap sama.

Ketika sistem mendeteksi kondisi aman, LED hijau akan menyala, buzzer dalam keadaan mati, dan servo berada pada posisi portal terbuka. Pada kondisi siaga, LED kuning menyala dan buzzer berbunyi secara periodik sebagai peringatan awal. Sedangkan pada kondisi bahaya, LED merah menyala, buzzer berbunyi terus-menerus, dan servo bergerak untuk menutup portal sehingga kendaraan tidak dapat melewati jembatan yang berpotensi mengalami kerusakan akibat banjir bandang.

Dengan adanya sistem ini, kondisi jembatan dapat dipantau secara real-time sehingga masyarakat dan pengguna jalan dapat memperoleh informasi lebih cepat mengenai potensi bahaya yang terjadi pada jembatan.

6. Rangkaian Prototype [kembali]

7. Video Penjelasan Prinsip Kerja [kembali]

8. Kesimpulan dan Saran [kembali]

8.1 Kesimpulan

Berdasarkan hasil perancangan, simulasi, dan pembuatan prototype Sistem Monitoring dan Peringatan Dini Kerusakan Jembatan Limau Manis Akibat Banjir Bandang Berbasis STM32 Blue Pill, dapat disimpulkan bahwa:

  1. Sistem berhasil dirancang menggunakan mikrokontroler STM32 Blue Pill sebagai pusat pengendali yang mampu mengolah data dari sensor ultrasonik HC-SR04, sensor tilt SW-520D, dan sensor vibration SW-420.

  2. Sensor HC-SR04 mampu mendeteksi perubahan ketinggian permukaan air, sensor SW-520D mampu mendeteksi perubahan kemiringan jembatan, dan sensor SW-420 mampu mendeteksi getaran pada struktur jembatan sebagai indikator potensi kerusakan.

  3. Sistem mampu mengelompokkan kondisi jembatan ke dalam tiga kategori, yaitu aman, siaga, dan bahaya berdasarkan data yang diperoleh dari sensor.

  4. Informasi kondisi jembatan dapat ditampilkan melalui LCD 16×2, LED indikator, dan buzzer sehingga pengguna dapat mengetahui kondisi jembatan secara cepat dan mudah.

  5. Servo motor dapat berfungsi sebagai portal otomatis yang membantu membatasi akses kendaraan ketika sistem mendeteksi kondisi bahaya sehingga dapat meningkatkan aspek keselamatan pengguna jalan.

  6. Hasil simulasi dan pengujian prototype menunjukkan bahwa sistem dapat bekerja sesuai dengan logika yang telah dirancang dan berpotensi untuk dikembangkan menjadi sistem monitoring jembatan yang lebih kompleks pada kondisi sebenarnya.

8.2 Saran

Untuk pengembangan penelitian selanjutnya, terdapat beberapa saran yang dapat dilakukan, yaitu:

  1. Menambahkan sensor tambahan seperti sensor arus air, sensor tekanan, atau sensor accelerometer/gyroscope agar data kondisi jembatan yang diperoleh menjadi lebih akurat.

  2. Mengintegrasikan sistem dengan teknologi Internet of Things (IoT) sehingga data kondisi jembatan dapat dipantau secara real-time melalui smartphone atau website.

  3. Menggunakan sistem komunikasi nirkabel seperti WiFi, LoRa, atau GSM untuk mengirimkan informasi kondisi jembatan kepada petugas terkait secara otomatis.

  4. Mengembangkan prototype menjadi model jembatan yang lebih realistis sehingga proses pengujian dapat mendekati kondisi sebenarnya di lapangan.

  5. Menambahkan sistem penyimpanan data (data logging) untuk merekam histori kondisi jembatan yang dapat digunakan sebagai bahan analisis dan evaluasi di masa mendatang.

  6. Melakukan pengujian pada lingkungan nyata dengan memperhatikan faktor cuaca, kondisi sungai, serta ketahanan komponen terhadap lingkungan luar agar diperoleh hasil yang lebih akurat dan aplikatif.

9. Download File [kembali]























Tidak ada komentar:

Posting Komentar

 BAHAN PRESENTASI MATA KULIAH ELEKTRONIKA      Oleh : Husni Mubarok (2310952012) Dosen Pengampu : Dr. Darwison, M.T. DEPARTEMEN TEKNIK ELEKT...