Jumat, 12 Juni 2026

Laporan Akhir M4 Mikro


[KEMBALI KE MENU SEBELUMNYA]

DAFTAR ISI
1. Pendahuluan Project
2. Tujuan Rancangan Project
3. Alat & Komponen
4. Landasan Teori & Grafik Respon
5. Flowchart & Listing Program
6. Rangkaian Simulasi & Prototype
7. Video Penjelasan Prinsip Kerja Rangkaian
8. Kesimpulan & Saran
9. Download File

    Structure Health Monitoring Bangunan Hunian Sementara (Huntara) sebagai Early Warning System Keruntuhan Bangunan Berbasis STM32 Menggunakan Sensor ADXL345, SW-420D, dan Capacitive Moisture Sensor

1. Pendahuluan Project [Kembali]

    Indonesia merupakan negara yang memiliki tingkat risiko bencana alam yang tinggi, seperti gempa bumi, tanah longsor, banjir, letusan gunung api, dan angin kencang. Setelah terjadi bencana, pemerintah dan berbagai lembaga kemanusiaan umumnya membangun hunian sementara (huntara) sebagai tempat tinggal sementara bagi masyarakat terdampak sebelum memperoleh hunian tetap.

    Bangunan huntara umumnya dibangun dengan mempertimbangkan kecepatan pembangunan, biaya yang rendah, serta kemudahan pemasangan. Oleh karena itu, material yang digunakan biasanya berupa kayu, bambu, seng, tripleks, terpal, atau material ringan lainnya. Meskipun cukup untuk memenuhi kebutuhan tempat tinggal sementara, struktur bangunan huntara memiliki keterbatasan dalam menahan pengaruh lingkungan dan beban yang terjadi selama masa penggunaan.

    Dalam praktiknya, bangunan huntara sering mengalami penurunan kualitas struktur akibat berbagai faktor, seperti getaran lingkungan, pergeseran tanah, kelembaban tanah yang tinggi, cuaca ekstrem, serta usia penggunaan yang melebihi masa rancangannya. Kondisi tersebut dapat menyebabkan kemiringan bangunan, pelapukan material penyangga, hingga keruntuhan struktur yang berpotensi membahayakan keselamatan penghuni.

    Saat ini, pemantauan kondisi bangunan huntara masih banyak dilakukan secara manual melalui inspeksi visual. Metode ini memiliki beberapa kelemahan, antara lain ketergantungan pada kemampuan pengamatan manusia, keterlambatan dalam mendeteksi kerusakan awal, serta tidak adanya sistem peringatan yang mampu memberikan informasi secara cepat kepada penghuni. Akibatnya, potensi keruntuhan bangunan sering kali baru diketahui ketika kerusakan telah berada pada kondisi yang cukup parah.

    Berdasarkan permasalahan tersebut, diperlukan suatu Structure Health Monitoring (SHM) yang mampu memantau kondisi struktur bangunan secara real-time dan memberikan peringatan dini apabila terdeteksi indikasi kerusakan atau potensi keruntuhan. Sistem SHM dapat membantu meningkatkan keselamatan penghuni dengan memberikan informasi kondisi bangunan secara cepat dan akurat.

    Pada proyek ini dirancang sebuah sistem monitoring kesehatan struktur bangunan huntara berbasis mikrokontroler STM32 yang memanfaatkan kombinasi tiga sensor, yaitu:

  1. Sensor ADXL345 sebagai pendeteksi percepatan dan kemiringan bangunan.
  2. Sensor SW-420D sebagai pendeteksi getaran yang terjadi pada struktur bangunan.
  3. Sensor kelembaban  (Soil Moisture Sensor) sebagai pendeteksi perubahan mencek kelembapan kayu bangunan.

Data yang diperoleh dari ketiga sensor akan diproses oleh mikrokontroler STM32 untuk menentukan tingkat kondisi bangunan berdasarkan parameter getaran, kemiringan, dan kelembaban tanah. Hasil analisis kemudian ditampilkan melalui LCD 16×2 serta indikator visual dan audio berupa LED hijau, LED kuning, LED merah, dan buzzer.

Berdasarkan flowchart sistem yang telah dirancang, kondisi bangunan diklasifikasikan menjadi beberapa status, yaitu:

  • Kondisi Aman (Normal) ditandai dengan LED hijau menyala.
  • Kondisi Waspada ditandai dengan LED kuning menyala.
  • Kondisi Bahaya ditandai dengan LED merah dan buzzer aktif sebagai peringatan evakuasi.

Dengan adanya sistem ini, penghuni huntara dapat memperoleh informasi kondisi bangunan secara dini sehingga dapat melakukan tindakan pencegahan sebelum terjadi keruntuhan yang membahayakan keselamatan.

2. Tujuan Rancangan Project [Kembali]

    Tujuan dari perancangan Structure Health Monitoring Bangunan Huntara sebagai Early Warning System Keruntuhan Bangunan ini adalah:

  1. Merancang sistem pemantauan kesehatan struktur bangunan huntara berbasis mikrokontroler STM32.
  2. Mengintegrasikan sensor ADXL345, sensor getaran SW-420D, dan sensor kelembaban tanah untuk mendeteksi parameter yang memengaruhi kestabilan bangunan.
  3. Mengukur tingkat kemiringan struktur bangunan menggunakan sensor ADXL345 sebagai indikator awal deformasi atau pergeseran bangunan.
  4. Mendeteksi adanya getaran berlebih pada bangunan menggunakan sensor SW-420D sebagai indikasi gangguan struktur.
  5. Memantau tingkat kelembaban tanah di sekitar pondasi bangunan untuk mengidentifikasi potensi penurunan daya dukung tanah.
  6. Mengolah data dari ketiga sensor untuk menentukan status kondisi bangunan menjadi kategori aman, waspada, atau bahaya.
  7. Menampilkan informasi kondisi bangunan secara real-time melalui LCD 16×2.
  8. Memberikan peringatan visual menggunakan LED hijau, LED kuning, dan LED merah sesuai tingkat risiko yang terdeteksi.
  9. Memberikan peringatan audio menggunakan buzzer apabila kondisi bangunan berada pada status bahaya.
  10. Menghasilkan sebuah prototipe Early Warning System yang dapat membantu meningkatkan keselamatan penghuni huntara melalui deteksi dini potensi keruntuhan bangunan.

3. Alat & Komponen [Kembali]

STM32F103C8


sensor adxl 345

sensor getaran
sensor kelembapan
ic pcf8574

LED

Buzzer

Resistor

    

4. Landasan Teori & Grafik Respon [Kembali]

1. Structure Health Monitoring (SHM)

    Structure Health Monitoring (SHM) adalah sistem pemantauan kondisi struktur secara berkelanjutan menggunakan sensor, perangkat akuisisi data, dan pemrosesan data untuk mendeteksi perubahan perilaku struktur yang dapat mengindikasikan kerusakan atau potensi kegagalan konstruksi. Pada bangunan Hunian Sementara (Huntara), SHM digunakan untuk memantau kondisi struktur secara real-time sehingga potensi keruntuhan dapat dideteksi lebih dini sebelum mencapai kondisi kritis.

    Prinsip dasar SHM adalah bahwa kerusakan struktur akan menyebabkan perubahan karakteristik fisik bangunan. Perubahan tersebut dapat diamati melalui parameter seperti getaran, kemiringan, perpindahan struktur, kondisi tanah pendukung, serta retakan atau deformasi. Data yang diperoleh kemudian dianalisis untuk menentukan tingkat keamanan bangunan dan mendukung pengambilan keputusan mitigasi risiko. Tujuan utama SHM adalah:

  1. Mendeteksi kerusakan struktur secara dini.
  2. Mengurangi risiko keruntuhan bangunan.
  3. Meningkatkan keselamatan penghuni.
  4. Menyediakan data kondisi bangunan secara real-time.
  5. Mendukung sistem Early Warning System (EWS).
2. Early Warning System (EWS)
     
    Early Warning System (EWS) adalah sistem yang dirancang untuk mendeteksi potensi bahaya dan memberikan peringatan dini sebelum suatu kejadian berisiko terjadi, sehingga tindakan mitigasi dapat dilakukan untuk mengurangi dampak yang ditimbulkan. Dalam bidang struktur bangunan, EWS memanfaatkan data dari berbagai sensor untuk memantau kondisi bangunan secara real-time dan memberikan informasi tingkat risiko kepada pengguna. Pada proyek ini, EWS digunakan untuk mendeteksi indikasi kerusakan atau potensi keruntuhan bangunan Huntara berdasarkan parameter getaran, kemiringan struktur, dan kondisi tanah di sekitar pondasi.
    Prinsip dari Early Warning System (EWS) bekerja melalui tahapan pengumpulan data, pengolahan data, analisis risiko, dan penyampaian informasi kepada pengguna. Data kondisi struktur dan lingkungan diperoleh dari sensor yang terpasang pada bangunan, kemudian diproses oleh mikrokontroler untuk menentukan tingkat risiko berdasarkan parameter yang telah ditetapkan. Hasil analisis selanjutnya ditampilkan melalui media informasi seperti LCD dan indikator LED. Apabila nilai parameter melebihi batas aman, sistem akan memberikan peringatan dini sehingga tindakan mitigasi dapat segera dilakukan untuk mengurangi risiko kerusakan atau keruntuhan bangunan.

3. Mikrokontroler STM32F103C8T6

    STM32F103C8T6 merupakan mikrokontroler 32-bit berbasis arsitektur ARM Cortex-M3 yang diproduksi oleh STMicroelectronics. Mikrokontroler ini dirancang untuk aplikasi embedded system yang membutuhkan kinerja tinggi, konsumsi daya rendah, dan kemampuan pemrosesan data yang cepat. Dengan frekuensi kerja hingga 72 MHz, STM32F103C8T6 mampu menjalankan berbagai tugas pengendalian dan monitoring secara efisien sehingga banyak digunakan pada bidang otomasi, robotika, sistem monitoring, dan Internet of Things (IoT).

    STM32F103C8T6 dilengkapi dengan berbagai fitur pendukung seperti 64 KB Flash Memory, 20 KB SRAM, ADC 12-bit, serta antarmuka komunikasi I2C, SPI, UART, CAN, dan USB. Fitur-fitur tersebut memungkinkan mikrokontroler untuk berkomunikasi dengan berbagai sensor dan perangkat eksternal, sekaligus mengolah data yang diterima secara real-time. Selain itu, jumlah pin input-output (GPIO) yang cukup banyak memberikan fleksibilitas dalam perancangan sistem elektronika. Adapun untuk spesifikasinya seperti:



   STM32F103C8T6 adalah mikrokontroler 32-bit yang dibangun di sekitar inti ARM Cortex-M3 dari STMicroelectronics. Mikrokontroler ini beroperasi pada frekuensi 72 MHz dan dirancang untuk aplikasi tertanam yang membutuhkan keseimbangan antara kinerja dan efektivitas biaya. STM32F103C8T6 menggunakan CPU ARM Cortex-M3, yang dikenal karena efisiensinya dalam menangani algoritma kompleks9. Prosesor ini mendukung berbagai mode operasi, termasuk mode operasi, mode tidur, mode berhenti, dan mode siaga, untuk mengoptimalkan konsumsi daya berdasarkan kebutuhan aplikasi:

Mode Operasi : Setelah direset saat dinyalakan, mikrokontroler secara otomatis menjalankan program.

Mode Tidur : Inti prosesor menghentikan jam internal dan eksekusi program saat menemui instruksi "tunggu interupsi" (WFI) atau "tunggu kejadian" (WFE), tetapi periferal terus beroperasi. Inti prosesor bangun ketika periferal menghasilkan interupsi atau kejadian.

Mode Berhenti : Mengatur bit SLEEPDEEP di Cortex_PCR dan menghapus bit PDDS di STM32 PCR akan mengkonfigurasi mode berhenti. Dalam mode ini, clock semua perangkat dinonaktifkan kecuali unit kontrol interupsi eksternal. Perangkat hanya dapat dibangunkan dengan memicu interupsi eksternal melalui tepi level pada pin GPIO atau oleh peristiwa alarm RTC.

Mode Siaga : Saat diatur ke mode mati, CPU berhenti bekerja saat menemui instruksi WFI atau WFE, dan clock internal berkecepatan tinggi (HSI) dan clock eksternal berkecepatan tinggi (HSE) juga memasuki keadaan mati, tetapi Flash dan SRAM tetap mendapatkan daya. Perangkat dapat dibangunkan oleh interupsi eksternal atau modul RTC.

    Hasil pengolahan data digunakan untuk mengendalikan LCD dan LED indikator sebagai media informasi kepada pengguna. STM32 melakukan proses pembacaan sensor, pengolahan data, dan pengiriman informasi secara terus-menerus sehingga kondisi bangunan dapat dipantau secara real-time. Dengan demikian, STM32F103C8T6 berfungsi sebagai pusat kendali yang mengintegrasikan seluruh proses pemantauan dan peringatan dini pada sistem Structure Health Monitoring (SHM).

4. Sensor Accelerometer ADXL345

    ADXL345 merupakan sensor accelerometer digital 3-axis yang diproduksi oleh Analog Devices dan dirancang untuk mengukur percepatan pada tiga sumbu, yaitu sumbu X, Y, dan Z. Sensor ini menggunakan teknologi Micro Electro Mechanical System (MEMS) yang memungkinkan pengukuran gerakan, getaran, serta perubahan orientasi dengan tingkat sensitivitas yang tinggi. ADXL345 dapat berkomunikasi dengan mikrokontroler melalui antarmuka I2C maupun SPI sehingga mudah diintegrasikan ke dalam berbagai sistem monitoring.

    Selain mampu mengukur percepatan, ADXL345 juga dapat digunakan untuk menentukan kemiringan suatu objek berdasarkan pengaruh gravitasi bumi pada masing-masing sumbu. Pada sistem Structure Health Monitoring (SHM), sensor ini berfungsi untuk memantau perubahan orientasi atau kemiringan struktur bangunan secara real-time. Perubahan sudut kemiringan yang melebihi batas tertentu dapat menjadi indikasi adanya deformasi, pergeseran, atau penurunan kestabilan struktur sehingga dapat digunakan sebagai parameter penting dalam sistem peringatan dini keruntuhan bangunan. Adapun spesifikasi nya sebagai berikut: 



    ADXL345 bekerja berdasarkan teknologi Micro Electro Mechanical System (MEMS) yang memanfaatkan struktur mekanik berukuran mikro untuk mendeteksi percepatan dan perubahan orientasi. Di dalam sensor terdapat massa mikro (proof mass) yang digantung menggunakan pegas silikon. Ketika sensor mengalami percepatan, getaran, atau perubahan posisi, massa mikro tersebut akan bergeser dari posisi awalnya sehingga menyebabkan perubahan kapasitansi pada elektroda yang terdapat di dalam sensor.

    Perubahan kapasitansi tersebut kemudian diubah menjadi sinyal listrik dan diproses oleh rangkaian internal ADXL345 menjadi data percepatan digital pada sumbu X, Y, dan Z. Data ini selanjutnya dikirim ke mikrokontroler melalui komunikasi I2C atau SPI untuk dianalisis. Pada sistem Structure Health Monitoring (SHM), perubahan nilai percepatan dan orientasi yang terukur digunakan untuk memantau kemiringan serta mendeteksi indikasi pergeseran atau deformasi struktur bangunan secara real-time. untuk kondisi normal, Ketika sensor diam dan sejajar permukaan bumi:

  • X ≈ 0g
  • Y ≈ 0g
  • Z ≈ 1g

Karena gravitasi bumi bekerja pada sumbu Z.

Untuk kondisi miring, Saat bangunan mengalami kemiringan:

  • Nilai X berubah
  • Nilai Y berubah
  • Nilai Z berubah

Perubahan tersebut digunakan untuk menghitung sudut kemiringan bangunan.

Sudut kemiringan dapat dihitung menggunakan fungsi trigonometri.

θx=tan1(XY2+Z2)\theta_x=\tan^{-1}\left(\frac{X}{\sqrt{Y^2+Z^2}}\right)

dan

θy=tan1(YX2+Z2)\theta_y=\tan^{-1}\left(\frac{Y}{\sqrt{X^2+Z^2}}\right)

Sudut yang semakin besar menunjukkan tingkat kemiringan struktur yang semakin tinggi.

5. Sensor Getaran SW-420

    SW-420 merupakan sensor getaran yang digunakan untuk mendeteksi adanya guncangan, benturan, atau getaran pada suatu objek. Sensor ini bekerja dengan menghasilkan perubahan sinyal ketika terjadi getaran yang melebihi tingkat sensitivitas tertentu. Karena memiliki rangkaian yang sederhana dan respons yang cepat, SW-420 banyak digunakan pada sistem keamanan, monitoring mesin, dan pendeteksian aktivitas getaran pada berbagai aplikasi elektronika.

    Pada sistem Structure Health Monitoring (SHM), sensor SW-420 berfungsi untuk memantau getaran yang terjadi pada struktur bangunan secara real-time. Getaran yang terdeteksi dapat berasal dari aktivitas manusia, kendaraan, angin kencang, maupun gangguan lainnya yang memengaruhi kestabilan struktur. Data getaran yang diperoleh kemudian dikirim ke mikrokontroler untuk dianalisis sebagai salah satu parameter dalam menentukan kondisi dan tingkat keamanan bangunan.

Sensor SW-420 terdiri dari:

  • Tabung logam
  • Pegas konduktif
  • Komparator LM393
  • Potensiometer sensitivitas

    SW-420 bekerja berdasarkan prinsip kontak mekanik untuk mendeteksi getaran atau guncangan. Di dalam sensor terdapat pegas konduktif yang akan berubah posisi ketika menerima getaran. Pada kondisi normal tanpa getaran, pegas berada pada posisi stabil sehingga tidak terjadi perubahan sinyal yang signifikan pada keluaran sensor.

    Ketika sensor mengalami getaran atau benturan, pegas akan bergerak dan menyentuh elektroda di dalam sensor sehingga menyebabkan perubahan sinyal listrik. Sinyal tersebut kemudian diproses oleh IC LM393 yang berfungsi sebagai komparator untuk membandingkan sinyal masukan dengan nilai referensi yang telah ditentukan. Hasil proses ini menghasilkan keluaran digital berupa logika HIGH atau LOW yang selanjutnya dibaca oleh mikrokontroler. Pada sistem Structure Health Monitoring (SHM), keluaran sensor digunakan untuk mendeteksi adanya getaran yang berpotensi memengaruhi kestabilan struktur bangunan.


    Grafik respon sensor SW-420 secara umum menunjukkan hubungan antara intensitas getaran pada lingkungan/benda uji terhadap keluaran sensor (HIGH/LOW atau sinyal digital). Pada kondisi tanpa getaran atau getaran sangat kecil, grafik berada pada kondisi stabil (LOW) karena pegas internal sensor tidak mengalami pergerakan sehingga kontak listrik tidak aktif. Ketika terjadi getaran ringan, sinyal mulai menunjukkan fluktuasi kecil akibat pegas logam mulai berosilasi, namun belum cukup untuk memicu trigger komparator secara konsisten. Saat intensitas getaran meningkat melewati ambang sensitivitas yang telah diatur menggunakan potensiometer, output sensor berubah menjadi HIGH secara berulang atau kontinu, sehingga pada grafik terlihat lonjakan atau pulsa-pulsa digital. Dengan demikian, respon SW-420 bersifat non-linear dan berbasis ambang (threshold-based), bukan analog kontinu, sehingga lebih tepat digambarkan sebagai perubahan status ON/OFF terhadap tingkat getaran.

6. Capacitive Soil Moisture Sensor V2

    Capacitive Soil Moisture Sensor V2 merupakan sensor yang digunakan untuk mengukur tingkat kelembapan tanah berdasarkan perubahan kapasitansi yang terjadi di sekitar probe sensor. Sensor ini memanfaatkan prinsip kapasitif untuk mendeteksi kandungan air dalam tanah, di mana nilai kapasitansi akan berubah seiring dengan perubahan kadar air. Semakin tinggi kandungan air dalam tanah, semakin besar nilai kapasitansi yang terukur oleh sensor.

    Berbeda dengan sensor kelembapan tanah tipe resistif yang bekerja dengan mengukur hambatan listrik antar elektroda, sensor kapasitif mengukur perubahan sifat dielektrik tanah tanpa mengalirkan arus listrik secara langsung melalui media tanah. Metode ini membuat pengukuran lebih stabil dan mengurangi risiko korosi pada probe sensor. Oleh karena itu, Capacitive Soil Moisture Sensor V2 memiliki umur pakai yang lebih panjang, tingkat keandalan yang lebih baik, dan banyak digunakan dalam sistem pertanian cerdas, monitoring lingkungan, serta sistem pemantauan kondisi tanah pada proyek Structure Health Monitoring (SHM).

    Capacitive Soil Moisture Sensor V2 adalah sensor kapasitif yang umumnya digunakan untuk mengukur kadar air pada tanah berdasarkan perubahan kapasitansi. Pada penelitian ini sensor dimanfaatkan untuk mendeteksi tingkat kelembapan kayu pada struktur bangunan huntara sebagai indikator potensi penurunan kualitas material bangunan. Pada bangunan huntara yang banyak menggunakan material kayu, kelembapan yang tinggi dapat menyebabkan:

  • Pelapukan kayu.
  • Pertumbuhan jamur.
  • Penurunan kekuatan mekanik.
  • Pembengkakan dimensi kayu.
  • Kerusakan sambungan struktur.
  • Meningkatnya risiko kegagalan struktur

    Capacitive Soil Moisture Sensor V2 bekerja berdasarkan prinsip perubahan kapasitansi yang dipengaruhi oleh kadar air pada material yang berada di sekitar probe sensor. Pada penelitian ini, sensor tidak digunakan untuk mengukur kelembapan tanah, melainkan untuk memantau kelembapan kayu yang digunakan sebagai struktur bangunan huntara. Kayu yang mengandung lebih banyak air memiliki konstanta dielektrik yang lebih tinggi dibandingkan kayu yang kering, sehingga nilai kapasitansi yang terukur oleh sensor juga akan berubah.

    Ketika kadar air pada kayu meningkat akibat paparan hujan, kelembapan lingkungan, atau rembesan air, sifat dielektrik kayu di sekitar sensor akan berubah dan menghasilkan perubahan tegangan keluaran sensor. Tegangan tersebut kemudian dibaca oleh pin ADC pada mikrokontroler STM32F103C8T6 dan diubah menjadi data digital untuk dianalisis. Informasi kelembapan kayu ini digunakan sebagai salah satu parameter dalam sistem Structure Health Monitoring (SHM) karena peningkatan kadar air yang berlebihan dapat menyebabkan penurunan kekuatan mekanis, pelapukan, serta mempercepat kerusakan struktur kayu. Dengan demikian, kondisi struktur dapat dipantau secara real-time dan potensi kerusakan dapat dideteksi lebih dini


    Grafik tersebut menunjukkan hubungan linier antara respon sensor kelembapan kapasitif terhadap kadar air tanah (volumetric water content, θv), di mana digunakan transformasi nilai invers tegangan (V⁻¹) untuk memperoleh hubungan yang lebih linear. Pada bagian atas terlihat hasil kalibrasi sensor dengan titik data (merah) yang mengikuti garis regresi, menunjukkan bahwa semakin tinggi kadar air tanah, nilai respons sensor juga meningkat secara konsisten. Sementara pada bagian bawah, dilakukan validasi terhadap metode gravimetrik (pengukuran referensi) yang ditunjukkan dengan titik hijau, dan hasilnya menunjukkan kedekatan dengan model sensor dengan nilai kesalahan kecil (RMSE rendah dan MAPE sekitar 6%), sehingga dapat disimpulkan bahwa sensor memiliki akurasi yang cukup baik dalam merepresentasikan kadar air tanah.

7. Analog to Digital Converter (ADC)

    ADC (Analog to Digital Converter) adalah fitur atau perangkat yang berfungsi mengubah sinyal analog berupa tegangan kontinu menjadi data digital yang dapat diproses oleh mikrokontroler. Proses konversi ini memungkinkan mikrokontroler membaca keluaran sensor yang menghasilkan sinyal analog, seperti sensor kelembapan, suhu, atau tekanan. Pada sistem Structure Health Monitoring (SHM), ADC pada STM32F103C8T6 digunakan untuk mengubah tegangan keluaran sensor kelembapan menjadi nilai digital sehingga dapat dianalisis untuk menentukan kondisi struktur bangunan secara real-time.

STM32F103 memiliki ADC 12-bit.

Rentang data:

0 – 4095

Persamaan ADC:

ADC=VinVref×(2121)ADC=\frac{V_{in}}{V_{ref}}\times(2^{12}-1)

Semakin besar tegangan input maka semakin besar nilai ADC yang diperoleh.



8. Komunikasi I2C (Inter Integrated Circuit)

    I2C (Inter-Integrated Circuit) merupakan protokol komunikasi serial sinkron yang digunakan untuk pertukaran data antara mikrokontroler dan perangkat lain dalam suatu sistem elektronik. Protokol ini hanya menggunakan dua jalur komunikasi, yaitu SDA (Serial Data) sebagai jalur pengiriman data dan SCL (Serial Clock) sebagai jalur sinkronisasi clock. Penggunaan dua jalur ini membuat I2C menjadi metode komunikasi yang sederhana, efisien, dan banyak digunakan pada sistem embedded.

    Pada komunikasi I2C, terdapat perangkat yang berperan sebagai master dan slave. Master bertugas mengendalikan jalannya komunikasi dengan menghasilkan sinyal clock dan memulai proses pertukaran data, sedangkan slave akan merespons ketika alamatnya dipanggil oleh master. Setiap perangkat slave memiliki alamat unik sehingga beberapa perangkat dapat terhubung pada jalur SDA dan SCL yang sama tanpa menyebabkan konflik komunikasi.

    Proses komunikasi I2C diawali dengan pengiriman sinyal START oleh master, kemudian master mengirimkan alamat perangkat tujuan. Setelah perangkat slave memberikan respons (acknowledgement), data dapat dikirim atau diterima sesuai kebutuhan. Setelah proses pertukaran data selesai, master mengakhiri komunikasi dengan mengirimkan sinyal STOP. Pada sistem Structure Health Monitoring (SHM), protokol I2C digunakan oleh STM32F103C8T6 untuk berkomunikasi dengan sensor ADXL345 dan modul LCD I2C sehingga data dapat dipertukarkan secara efisien menggunakan hanya dua jalur komunikasi.



Master:

  • STM32F103C8T6

Slave:

  • ADXL345
  • PCF8574

Semua perangkat berbagi jalur SDA dan SCL yang sama.

9. IC PCF8574

    PCF8574 merupakan IC I/O Expander berbasis I2C yang digunakan untuk menambah jumlah pin digital. PCF8574 menerima data melalui I2C kemudian mengubah data tersebut menjadi logika digital pada pin P0–P7. Pada sistem ini PCF8574 digunakan untuk mengendalikan LCD 16x2 menggunakan hanya dua jalur komunikasi.

10. LCD 16x2

    LCD (Liquid Crystal Display) merupakan perangkat output yang digunakan untuk menampilkan karakter, angka, dan simbol. LCD bekerja dengan mengatur orientasi molekul kristal cair menggunakan medan listrik.

Ketika medan listrik diberikan:

  • Orientasi molekul berubah.
  • Cahaya yang melewati filter berubah.
  • Karakter dapat ditampilkan.

LCD menggunakan IC HD44780 sebagai pengendali tampilan.

11. Light Emitting Diode (LED)

    LED merupakan komponen semikonduktor yang dapat memancarkan cahaya ketika dialiri arus listrik. LED bekerja berdasarkan fenomena elektroluminesensi. Ketika elektron dan hole bertemu pada sambungan PN:

  • Energi dilepaskan dalam bentuk foton.
  • Foton menghasilkan cahaya tampak.

LED Hijau:

  • Kondisi aman.

LED Kuning:

  • Kondisi waspada.

LED Merah:

  • Kondisi bahaya. 
12. Resistor

    Resistor merupakan komponen pasif yang berfungsi menghambat arus listrik. Resistor mengubah sebagian energi listrik menjadi energi panas sehingga arus yang mengalir dapat dibatasi. Adapun Fungsi resistor pada sistem sebagai berikut.

  • Membatasi arus LED.
  • Sebagai pull-up resistor pada input sensor.
  • Menjaga kestabilan logika digital.
13. X Buzzer

    Buzzer merupakan komponen elektronika yang berfungsi mengubah energi listrik menjadi energi bunyi. Komponen ini sering digunakan sebagai alarm atau perangkat peringatan pada berbagai sistem monitoring karena mampu memberikan notifikasi dalam bentuk suara yang mudah dikenali oleh pengguna. Pada proyek Structure Health Monitoring (SHM) Bangunan Huntara sebagai Early Warning System (EWS), buzzer digunakan sebagai media peringatan ketika sistem mendeteksi kondisi bangunan yang berada pada tingkat risiko tertentu berdasarkan data yang diperoleh dari sensor kemiringan, getaran, dan kelembapan tanah.

    Prinsip kerja buzzer adalah mengubah sinyal listrik yang diberikan oleh mikrokontroler menjadi getaran mekanis yang menghasilkan gelombang suara. Pada sistem ini, STM32F103C8T6 mengendalikan buzzer melalui pin output digital. Ketika hasil analisis menunjukkan bahwa salah satu parameter melebihi batas aman yang telah ditentukan, STM32 akan mengaktifkan buzzer sehingga menghasilkan suara alarm sebagai tanda peringatan dini kepada pengguna. Dengan demikian, buzzer berfungsi sebagai indikator auditori yang membantu meningkatkan kewaspadaan terhadap potensi kerusakan atau keruntuhan bangunan.

5. Flowchart & Listing Program [Kembali]

Untuk Flowchart dari  Structure Health Monitoring (SHM) Bangunan Huntara sebagai Early Warning System (EWS) dapat dilihat di bawah ini:


Adapun untuk lisning program yang digunakan terdiri dari main.c dan main.h sebagai berikut:
main.c :
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @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"
#include "liquidcrystal_i2c.h"
#include <stdio.h>
#include <string.h>
#include <math.h>

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef hadc1;

I2C_HandleTypeDef hi2c1;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
static void MX_ADC1_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#define ADXL345_ADDR     (0x53 << 1)
#define REG_POWER_CTL    0x2D
#define REG_DATA_FORMAT  0x31
#define REG_DATAX0       0x32

/* ── Pin LED ───────────────────────────────────── */
#define LED_GREEN_PIN   GPIO_PIN_1
#define LED_YELLOW_PIN  GPIO_PIN_2
#define LED_RED_PIN     GPIO_PIN_3
#define LED_PORT        GPIOA

/* ── Pin SW420 & Buzzer ────────────────────────── */
#define SW420_PIN       GPIO_PIN_4   // PA4 → Input getaran digital
#define BUZZER_PIN      GPIO_PIN_5   // PB5 → Output
#define BUZZER_PORT     GPIOB

/* ── Konfigurasi ───────────────────────────────── */
#define SAMPLE_DELAY_MS        20
#define THRESH_LEMBAB_AMAN     1200
#define THRESH_LEMBAB_WASPADA  1800

/* ── ADXL345: Init ─────────────────────────────── */
void ADXL345_Init(void) {
    uint8_t data_fmt = 0x08;
    uint8_t power    = 0x08;
    if (HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDR, REG_DATA_FORMAT,
                          1, &data_fmt, 1, HAL_MAX_DELAY) != HAL_OK)
        Error_Handler();
    HAL_Delay(10);
    if (HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDR, REG_POWER_CTL,
                          1, &power, 1, HAL_MAX_DELAY) != HAL_OK)
        Error_Handler();
    HAL_Delay(10);
}

/* ── ADXL345: Read ─────────────────────────────── */
void ADXL345_Read(float *ax, float *ay, float *az) {
    uint8_t data[6];
    if (HAL_I2C_Mem_Read(&hi2c1, ADXL345_ADDR, REG_DATAX0,
                         1, data, 6, HAL_MAX_DELAY) != HAL_OK)
        Error_Handler();
    *ax = (int16_t)(data[1] << 8 | data[0]) * 0.0039f;
    *ay = (int16_t)(data[3] << 8 | data[2]) * 0.0039f;
    *az = (int16_t)(data[5] << 8 | data[4]) * 0.0039f;
}

/* ── Hitung Sudut Kemiringan ───────────────────── */
void ADXL345_GetAngle(float ax, float ay, float az,
                      float *angle_x, float *angle_y) {
    // Roll  : kemiringan terhadap sumbu X
    *angle_x = atan2f(ay, az) * 180.0f / M_PI;
    // Pitch : kemiringan terhadap sumbu Y
    *angle_y = atan2f(-ax, sqrtf(ay*ay + az*az)) * 180.0f / M_PI;
}
/* 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_I2C1_Init();
  MX_ADC1_Init();

  /* USER CODE BEGIN 2 */
  HD44780_Init(2);
  HD44780_Clear();
  HD44780_SetCursor(0, 0);
  HD44780_PrintStr("Init ADXL...    ");
  HAL_Delay(1000);

  ADXL345_Init();

  HD44780_Clear();
  HD44780_SetCursor(0, 0);
  HD44780_PrintStr("ADXL OK!        ");
  HAL_Delay(1000);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    float rx, ry, rz, angle_x, angle_y;
    char buf[17];

    /* Baca ADXL + hitung sudut */
    ADXL345_Read(&rx, &ry, &rz);
    ADXL345_GetAngle(rx, ry, rz, &angle_x, &angle_y);

    /* Baca ADC kelembaban */
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
    uint32_t adc_val = HAL_ADC_GetValue(&hadc1);
    HAL_ADC_Stop(&hadc1);

    /* Hitung level kelembaban */
    uint8_t level_lembab;
    if      (adc_val < THRESH_LEMBAB_AMAN)    level_lembab = 0;
    else if (adc_val < THRESH_LEMBAB_WASPADA) level_lembab = 1;
    else                                       level_lembab = 2;

    /* Baca SW420 */
    uint8_t sw420 = HAL_GPIO_ReadPin(GPIOA, SW420_PIN);

    /* Hitung level kemiringan dari sudut */
    float kemiringan = fabsf(angle_x) > fabsf(angle_y) ? fabsf(angle_x) : fabsf(angle_y);
    uint8_t level_miring;
    if      (kemiringan < 3.0f) level_miring = 0;
    else if (kemiringan < 5.0f) level_miring = 1;
    else                        level_miring = 2;

    /* ── LCD Baris 0: judul ── */
    HD44780_SetCursor(0, 0);
    HD44780_PrintStr("Status:         ");

    /* ── LCD Baris 1: GTR, KLB, MRG ── */
    HD44780_SetCursor(0, 1);
    snprintf(buf, sizeof(buf), "G:%d K:%d M:%d      ", sw420, level_lembab, level_miring);
    HD44780_PrintStr(buf);

    /* ── LED & Buzzer ── */
    uint8_t level_getar = (sw420 == 1) ? 2 : 0;
    uint8_t level_final = level_getar;
    if (level_lembab > level_final) level_final = level_lembab;
    if (level_miring > level_final) level_final = level_miring;

    HAL_GPIO_WritePin(LED_PORT,
        LED_GREEN_PIN | LED_YELLOW_PIN | LED_RED_PIN, GPIO_PIN_RESET);

    if      (level_final == 0) HAL_GPIO_WritePin(LED_PORT, LED_GREEN_PIN,  GPIO_PIN_SET);
    else if (level_final == 1) HAL_GPIO_WritePin(LED_PORT, LED_YELLOW_PIN, GPIO_PIN_SET);
    else                       HAL_GPIO_WritePin(LED_PORT, LED_RED_PIN,    GPIO_PIN_SET);

    if (sw420 == 1 || level_final == 2) {
        HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_SET);
    } else {
        HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);
    }

    HAL_Delay(SAMPLE_DELAY_MS);
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
      /* 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};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  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();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  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;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
}

/**
  * @brief ADC1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_ADC1_Init(void)
{

  /* USER CODE BEGIN ADC1_Init 0 */

  /* USER CODE END ADC1_Init 0 */

  ADC_ChannelConfTypeDef sConfig = {0};

  /* USER CODE BEGIN ADC1_Init 1 */

  /* USER CODE END ADC1_Init 1 */

  /** Common config
  */
  hadc1.Instance = ADC1;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 1;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }

  /** Configure Regular Channel
  */
  sConfig.Channel = ADC_CHANNEL_0;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN ADC1_Init 2 */

  /* USER CODE END ADC1_Init 2 */

}

/**
  * @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 = 400000;
  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 GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  /* USER CODE BEGIN MX_GPIO_Init_1 */

  /* USER CODE END MX_GPIO_Init_1 */

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOC_CLK_ENABLE();

  /* USER CODE BEGIN MX_GPIO_Init_2 */
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  GPIO_InitStruct.Pin   = LED_GREEN_PIN | LED_YELLOW_PIN | LED_RED_PIN;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);

  GPIO_InitStruct.Pin   = GPIO_PIN_13;
  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull  = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  GPIO_InitStruct.Pin  = BUZZER_PIN;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  GPIO_InitStruct.Pin  = SW420_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /* Matikan semua output */
  HAL_GPIO_WritePin(GPIOA, LED_GREEN_PIN | LED_YELLOW_PIN | LED_RED_PIN, GPIO_PIN_RESET);
  HAL_GPIO_WritePin(GPIOB, BUZZER_PIN, GPIO_PIN_RESET);

  /* 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 */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  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 */

main.h :
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.h
  * @brief          : Header for main.c file.
  *                   This file contains the common defines of the application.
  ******************************************************************************
  * @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 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */

/* USER CODE END ET */

/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */

/* USER CODE END EC */

/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */

/* USER CODE END EM */

/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);

/* USER CODE BEGIN EFP */

/* USER CODE END EFP */

/* Private defines -----------------------------------------------------------*/

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */

     Rangkain simulasi dari Structure Health Monitoring Bangunan Hunian Sementara (Huntara) sebagai Early Warning System Keruntuhan Bangunan Berbasis STM32 Menggunakan Sensor ADXL345, SW-420D, dan Capacitive Moisture Sensor: 

    Rangkain project berupa foto rangkaian dari Structure Health Monitoring Bangunan Hunian Sementara (Huntara) sebagai Early Warning System Keruntuhan Bangunan Berbasis STM32 Menggunakan Sensor ADXL345, SW-420D, dan Capacitive Moisture Sensor: 

    Adapun untuk penjelasan rangkaian dimana Sistem diawali dengan proses inisialisasi, kemudian membaca data sensor ADXL345 untuk menghitung sudut kemiringan dan mendeteksi getaran, serta membaca nilai kelembapan tanah melalui sensor. Jika terdeteksi getaran, sistem menampilkan status getaran pada LCD serta mengaktifkan LED merah dan buzzer sebagai peringatan. Jika tidak ada getaran, sistem memeriksa tingkat kelembapan tanah dan kemiringan untuk menentukan kondisi aman, waspada, atau bahaya. Hasil pemantauan ditampilkan pada LCD dan diindikasikan melalui LED hijau, kuning, atau merah, kemudian proses diulangi secara terus-menerus untuk pemantauan kondisi tanah secara real-time.

7. Video Penjelasan Prinsip Kerja Rangkaian [Kembali]

8. Kesimpulan & Saran [Kembali]

Kesimpulan:

    Berdasarkan perancangan dan implementasi sistem Structure Health Monitoring (SHM) bangunan hunian sementara (huntara) berbasis mikrokontroler STM32 yang telah dilakukan, dapat disimpulkan bahwa sistem yang dirancang berhasil mengintegrasikan tiga sensor utama, yaitu sensor ADXL345, sensor getaran SW-420D, dan sensor kelembaban tanah, untuk memantau kondisi kesehatan struktur bangunan secara real-time.

    Sensor ADXL345 terbukti mampu mengukur nilai percepatan gravitasi pada ketiga sumbu (X, Y, Z) serta menghitung sudut kemiringan bangunan secara akurat melalui konversi nilai akselerasi menggunakan fungsi trigonometri. Pembacaan data dilakukan melalui komunikasi I2C dengan metode burst read enam byte mulai dari register 0x32, sehingga data ketiga sumbu diperoleh dari satu snapshot yang konsisten. Sensor SW-420D berhasil mendeteksi adanya getaran pada struktur bangunan secara digital, sementara sensor kelembaban tanah memberikan informasi kondisi tanah di sekitar pondasi melalui pembacaan nilai ADC.

    Data dari ketiga sensor berhasil diolah oleh mikrokontroler STM32F103 untuk menentukan tingkat kondisi bangunan ke dalam tiga kategori, yaitu aman, waspada, dan bahaya. Hasil klasifikasi tersebut ditampilkan secara real-time pada LCD 16x2 dalam format yang ringkas, mencakup status getaran (GTR), kelembaban tanah (KLB), dan kemiringan (MRG). Sistem indikator visual berupa LED hijau, kuning, dan merah berfungsi dengan baik sesuai tingkat risiko yang terdeteksi, serta buzzer aktif secara otomatis apabila kondisi bangunan berada pada status bahaya.

    Secara keseluruhan, sistem ini berhasil memenuhi tujuan perancangan sebagai prototipe Early Warning System yang mampu mendeteksi potensi keruntuhan bangunan huntara secara dini, sehingga dapat membantu meningkatkan keselamatan penghuni melalui pemantauan kondisi struktur yang berkelanjutan dan otomatis.

Saran:

1.     Kalibrasi threshold sensor kelembaban tanah dan sudut kemiringan perlu dilakukan berdasarkan karakteristik material bangunan dan kondisi tanah setempat agar klasifikasi kondisi bangunan lebih akurat dan relevan.

2.     Penambahan fitur logging data berbasis RTC (Real-Time Clock) dan penyimpanan pada SD card atau memori eksternal disarankan agar riwayat kondisi bangunan dapat direkam dan dianalisis lebih lanjut oleh petugas lapangan.

3.     Sistem dapat dikembangkan dengan menambahkan modul komunikasi nirkabel seperti ESP8266 atau LoRa untuk memungkinkan pemantauan jarak jauh dan pengiriman notifikasi peringatan kepada penghuni maupun petugas secara otomatis.

4.     Penggunaan sensor ADXL345 untuk deteksi getaran dinamis dapat ditingkatkan dengan menerapkan algoritma rolling average magnitude agar sistem lebih tahan terhadap noise dan mampu membedakan getaran sesaat dengan getaran struktural yang signifikan.

5.     Perlu dilakukan pengujian lapangan pada bangunan huntara yang sesungguhnya dalam berbagai kondisi lingkungan untuk memvalidasi performa sistem dan menyempurnakan parameter threshold sebelum digunakan secara luas.

6.     Desain mekanis pemasangan sensor pada struktur bangunan perlu diperhatikan agar sensor terpasang dengan kuat dan tidak mudah bergeser, sehingga hasil pembacaan tetap konsisten selama masa operasional sistem.

7.     Sumber daya listrik sistem dapat dipertimbangkan untuk menggunakan panel surya atau baterai cadangan mengingat lokasi huntara yang sering kali memiliki keterbatasan akses listrik.

9. Download File [Kembali]

Download Datasheet buzzer klik disini

Download Datasheet stm32 klik disini

Download Datasheet resistor klik disini

Download Datasheet led klik disini

Download Datasheet sensor ADXL345 klik disini 

Download Datasheet sensor SW-420D klik disini

Download Datasheet sensor soil klik disini 

Download Datasheet LCD klik disini

























 

 

Laporan Akhir M4 Mikro

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan Project 2. Tujuan Rancangan Project 3. Alat & Komponen 4. Landasan Teori & Gr...