Laporan Akhir Demo Project - Modul 4



Sistem Deteksi Dini Tsunami Di Daerah Pantai


1. Pendahuluan[Kembali]

Indonesia merupakan negara yang terletak pada pertemuan tiga lempeng tektonik aktif, yaitu Lempeng IndoAustralia, Lempeng Eurasia, dan Lempeng Pasifik. Kondisi geografis ini menyebabkan Indonesia rawan terhadap berbagai bencana geologi, seperti gempa bumi dan tsunami. Salah satu wilayah yang memiliki risiko tinggi terhadap ancaman tsunami adalah kota Padang, Sumatera Barat, yang berada di pesisir barat Pulau Sumatera dan berhadapan langsung dengan zona subduksi aktif di Samudera Hindia.

Sejarah mencatat bahwa wilayah Padang dan sekitarnya telah beberapa kali mengalami gempa bumi kuat yang berpotensi tsunami, seperti gempa besar pada tahun 2009. Hal ini menimbulkan kekhawatiran terhadap kemungkinan terjadinya bencana serupa di masa depan. Dengan kepadatan penduduk yang tinggi di wilayah pesisir serta keterbatasan waktu evakuasi, diperlukan upaya mitigasi yang serius untuk meminimalisir dampak yang ditimbulkan.

Salah satu solusi yang efektif adalah pengembangan dan penerapan sistem deteksi dini tsunami (early warning system). Sistem ini bertujuan untuk memberikan peringatan sedini mungkin kepada masyarakat ketika terdeteksi adanya potensi tsunami, sehingga dapat dilakukan evakuasi secara cepat dan tepat waktu. Sistem deteksi dini tsunami umumnya melibatkan berbagai sensor  serta komunikasi realtime dengan pusat data dan masyarakat.

Dengan mengingat pentingnya keselamatan masyarakat pesisir, pengembangan sistem deteksi dini tsunami khususnya di daerah Pantai Padang menjadi hal yang mendesak. Teknologi yang andal, komunikasi yang cepat, serta keterlibatan masyarakat dalam sistem peringatan akan menjadi kunci dalam membangun kesiapsiagaan terhadap bencana tsunami.


2. Tujuan[Kembali]

  1. Membuat prototype Sistem deteksi dini tsunami yang dapat memberikan peringatan dini kepada masyarakat ketika terdeteksi adanya potensi tsunami
  2. Mengaplikasikan konsep – konsep PWM, ADC, dan teori komunikasi mikrokontroller yang telah dipelajari saat praktikum.

3. Alat dan Komponen[Kembali]

  • Komponen

1. Raspberry Pi Pico




2. Sensor Vibration




3. Sensor Ultrasonik (HCSR04)




4. Sensor Piezoelektrik




5. Motor Servo


6. LCD 16x2 




7. Buzzer





8. Resistor





  • Alat

1. Breadboard




2. Kabel Jumper 






       


4. Landasan Teori[Kembali]

4.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 dan Raspberry Pi Pico 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.


4.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 (%). 
Gambar 1. Duty Cycle

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” 

        Pada Raspberry Pi Pico, terdapat blok PWM yang terdiri dari 8 unit (slice), dan masing-masing slice dapat mengendalikan dua sinyal PWM atau mengukur frekuensi serta duty cycle dari sinyal input. Dengan total 16 output PWM yang dapat dikontrol, semua 30 pin GPIO bisa digunakan untuk PWM. Setiap slice memiliki fitur utama seperti penghitung 16-bit, pembagi clock presisi, dua output independen dengan duty cycle 0–100%, serta mode pengukuran frekuensi dan duty cycle. PWM pada Raspberry Pi Pico juga mendukung pengaturan fase secara presisi serta dapat diaktifkan atau dinonaktifkan secara bersamaan melalui satu register kontrol global, sehingga memungkinkan sinkronisasi beberapa output untuk aplikasi yang lebih kompleks.


4.3 ADC 
     ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital.
    Raspberry Pi Pico memiliki empat ADC (Analog-to-Digital Converter) 12-bit dengan metode SAR, tetapi hanya tiga kanal yang dapat digunakan secara eksternal, yaitu ADC0, ADC1, dan ADC2, yang terhubung ke pin GP26, GP27, dan GP28. Kanal keempat (ADC4) digunakan secara internal untuk membaca suhu dari sensor suhu bawaan. Konversi ADC dapat dilakukan dalam tiga mode: polling, interrupt, dan FIFO dengan DMA. Kecepatan konversi ADC adalah 2μs per sampel atau 500 ribu sampel per detik (500kS/s). Mikrocontroller RP2040 berjalan pada frekuensi 48MHz yang berasal dari USB PLL, dan setiap konversi ADC membutuhkan 96 siklus CPU, sehingga waktu samplingnya adalah 2μs per sampel.


4.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.
        Pada RP2040, setiap inti prosesor dilengkapi dengan ARM Nested Vectored Interrupt Controller (NVIC) yang memiliki 32 jalur interrupt. Namun, hanya 26 jalur pertama yang digunakan, sedangkan jalur IRQ 26 hingga 31 tidak aktif. Setiap NVIC menerima interrupt yang sama, kecuali untuk GPIO, di mana setiap bank GPIO memiliki satu interrupt per inti. Ini berarti, misalnya, core 0 dapat menerima interrupt dari GPIO 0 di bank 0, sementara core 1 menerima interrupt dari GPIO 1 di bank yang sama secara independen. Jika diperlukan, inti prosesor masih bisa dipaksa masuk ke interrupt handler dengan menulis bit 26 hingga 31 pada register NVIC ISPR.      


4.5 MILLIS
    Berbeda dengan delay(), yang menghentikan eksekusi program selama waktu tertentu, millis() memungkinkan sistem untuk menjalankan beberapa tugas secara bersamaan tanpa menghentikan proses lainnya. Hal ini berguna dalam aplikasi yang memerlukan multitasking berbasis waktu, seperti pengendalian sensor, komunikasi serial, atau implementasi sistem real-time. 
    Pada platform seperti Raspberry Pi Pico yang sering diprogram menggunakan MicroPython, fungsi utime.ticks_ms() menyediakan fungsionalitas yang sepadan. Fungsi ini mengembalikan nilai penghitung milidetik yang bersifat monotonik (terus bertambah) sejak sistem dimulai atau modul utime dimuat. Sama seperti millis() dan HAL_GetTick(), nilai ticks_ms() juga akan mengalami wrap-around (kembali ke nol) setelah mencapai batasnya, sehingga penggunaan fungsi utime.ticks_diff() menjadi penting untuk perhitungan selisih waktu yang akurat dan aman terhadap overflow. Dengan demikian, utime.ticks_ms() memungkinkan implementasi pola penjadwalan dan delay non-blocking yang serupa untuk menciptakan aplikasi yang responsif di lingkungan MicroPython.


4.6 COMMUNICATION
4.6.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 2. 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.

4.6.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.
Gambar 3. Cara Kerja Komunikasi I2C

        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.

4.6.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.

Gambar 4. Cara Kerja Komunikasi SPI

        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. 


4.7 Raspberry Pi Pico
      Raspberry Pi Pico adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama chip mikrokontroler RP2040, yang dirancang dan diproduksi oleh Raspberry Pi Foundatio. Tidak seperti komputer mini raspberry Pi lainnya yang menjalankan sistem operasi seperti Linux, Pico dirancang untuk tugas-tugas yang lebih sederhana dan langsung (embedded system), seperti membaca sensor, mengontrol perangkat, atau melakukan pengolahan data pada tingkat hardware.
Adapun spesifikasi dari Raspberry Pi Pico adalah sebagai berikut:

Gambar 5. Raspberry pi pico

Parameter

Spesifikasi

Microcontroller

RP2040

Operating Voltage

3.3 V

Input Voltage (recommended)

5 V via USB

Input Voltage (limit)

1.8–5.5 V

Digital I/O Pins

26 GPIO pins

PWM Digital I/O Pins

16

Analog Input Pins

3

DC Current per I/O Pin

16 mA

DC Current for 3.3V Pin

300 mA

Flash Memory

2 MB on-board QSPI Flash

SRAM

264 KB

Clock Speed

Hingga 133 MHz


Gambar 6. Konfigurasi pin Raspberry pi pico



Bagian-bagian pendukunng

1    RAM (Random Access Memory) 

Raspberry Pi Pico dilengkapi dengan 264KB SRAM on-chip. Kapasitas RAM yang lebih besar ini memungkinkan Pico menjalankan aplikasi yang lebih kompleks dan menyimpan data lebih banyak. 

2.   Memori Flash Eksternal

Raspberry Pi Pico tidak memiliki ROM tradisional. Sebagai gantinya, ia menggunakan memori flash eksternal. Kapasitas memori flash ini dapat bervariasi, umumnya antara 2MB hingga 16MB, tergantung pada konfigurasi. Memori flash ini digunakan untuk menyimpan firmware dan program pengguna. Penggunaan memori flash eksternal pada Pico memberikan fleksibilitas lebih besar dalam hal kapasitas penyimpanan program.

3    Crystal Oscillator

Raspberry Pi Pico menggunakan crystal oscillator untuk menghasilkan sinyal clock yang stabil. Sinyal clock ini penting untuk mengatur kecepatan operasi mikrokontroler dan komponen lainnya.

4.     Regulator Tegangan

Untuk memastikan pasokan tegangan yang stabil ke mikrokontroler.

5.      Pin GPIO (General Purpose Input/Output):

Untuk menghubungkan Pico ke berbagai perangkat eksternal seperti sensor, motor, dan LED.


4.8 Sensor Vibration

Gambar 7. Sensor vibration

        Sensor getaran adalah perangkat yang digunakan untuk mendeteksi dan mengukur getaran atau gerakan mekanis. Sensor ini bekerja berdasarkan prinsip bahwa getaran atau perubahan gerakan akan menghasilkan perubahan dalam parameter fisik tertentu, seperti tegangan atau arus listrik. Salah satu jenis sensor getaran yang umum adalah sensor piezoelektrik, yang menghasilkan tegangan listrik ketika mengalami deformasi mekanis akibat getaran. Sensor getaran digunakan dalam berbagai aplikasi, mulai dari pemantauan kondisi mesin di industri, deteksi gempa bumi, hingga aplikasi keamanan seperti alarm anti-pencurian. Penggunaan sensor getaran memungkinkan identifikasi dini masalah mekanis, sehingga pemeliharaan preventif dapat dilakukan untuk menghindari kerusakan yang lebih parah. Sensor ini memiliki beragam spesifikasi teknis yang dapat disesuaikan dengan kebutuhan aplikasi, termasuk rentang frekuensi, sensitivitas, dan lingkungan operasi. 


Gambar 8. Vibration sensor module pinout

Pin Configuration of Vibration Sensor Module

Pin Name

Description

VCC

           

The Vcc pin powers the module, typically with +5V

GND

Power Supply Ground

DO

Digital Out Pin for Digital Output.

Vibration Sensor Module Features & Specifications
  • Operating Voltage: 3.3V to 5V DC
  • Operating Current: 15mA
  • Using SW-420 normally closed type vibration sensor
  • LEDs indicating output and power
  • LM393 based design
  • Easy to use with Microcontrollers or even with normal Digital/Analog IC
  • With bolt holes for easy installation
  • Small, cheap and easily available
Gambar 9. Grafik Respon Sensor Vibration



4.9 Sensor Ultrasonik (HCSR04)

Gambar 10. Sensor Ultrasonik

        Sensor ultrasonik merupakan sensor yang menggunakan gelombang ultrasonik. Gelombang ultrasonik yaitu gelombang yang umum digunakan untuk mendeteksi keberadaan suatu benda dengan memperkirakan jarak antara sensor dan benda tersebut. Sensor ini berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik begitu pula sebaliknya. Gelombang ultrasonik memiliki frekuensi sebesar 20.000 Hz. Bunyi tersebut tidak dapat didengar oleh telinga manusia. Bunyi tersebut dapat didengar oleh hewan tertentu seperti anjing, kelelawar dan kucing. Bunyi gelombang ultrasonik dapat merambat melalui zat cair, padat dan gas. Sensor ini bekerja dengan memancarkan pulsa ultrasonik dari pemancar dan kemudian menerima gema yang dipantulkan kembali oleh objek di depannya melalui penerima.

Ultrasonic Sensor Pinout Configuration

Pin Number

Pin Name

Description

1

Vcc

The Vcc pin powers the sensor, typically with +5V

2

Trigger

Trigger pin is an Input pin. This pin has to be kept high for 10us to initialize measurement by sending US wave.

3

Echo

Echo pin is an Output pin. This pin goes high for a period of time which will be equal to the time taken for the US wave to return back to the sensor.

4

Ground

This pin is connected to the Ground of the system.

HC-SR04 Sensor Features

  • Operating voltage: +5V
  • Theoretical  Measuring Distance: 2cm to 450cm
  • Practical Measuring Distance: 2cm to 80cm
  • Accuracy: 3mm
  • Measuring angle covered: <15°
  • Operating Current: <15mA
  • Operating Frequency: 40Hz




Gambar 11. Grafik jarak banding waktu sensor ultrasonic


        Berdasarkan grafik di atas dapat disimpulkan bahwa bahwa sensor ultrasonik memiliki kinerja rendah dalam pengukuran pada jarak yang rendah. Kinerja sensor memiliki hasil yang akurat untuk pengukuran jarak jauh. Secara detail, cara kerja sensor ultrasonik adalah Sinyal dipancarkan oleh pemancar ultrasonik dengan frekuensi tertentu dan dengan durasi waktu tertentu. Sinyal tersebut berfrekuensi diatas 20kHz. Untuk mengukur jarak benda (sensor jarak), frekuensi yang umum digunakan adalah 40kHz. Sinyal yang dipancarkan akan merambat sebagai gelombang bunyi dengan kecepatan sekitar 340 m/s. Ketika menumbuk suatu benda, maka sinyal tersebut akan dipantulkan oleh benda tersebut. Setelah gelombang pantulan sampai di alat penerima, maka sinyal tersebut akan diproses untuk menghitung jarak benda tersebut. Jarak benda dihitung berdasarkan rumus: 
S = 340.t/2 
Keterangan: 
• S = jarak antara sensor ultrasonik dengan benda (bidang pantul) 
• t = selisih antara waktu pemancaran gelombang oleh transmitter dan waktu ketika gelombang pantul diterima receiver



Gambar 12. Visualisasi sinyal dari sensor ultrasonic



4.10 Sensor Piezoelektrik
Gambar 13. Piezzoelektrik

    Sensor piezoelektrik adalah sebuah komponen elektronika yang menggunakan efek piezoelektrik untuk mengubah energi mekanik berupa tekanan menjadi energi listrik. Piezoelektrik merupakan sistem yang terdiri dari bahan tertentu, seperti Barium titanat dan berbagai jenis keramik yang dapat menghasilkan tegangan listrik saat ditambah tekanan atau kekuatan mekanik di kedua bidangnya.

Grafik Respon :


Piezoelectric Sensor Pin Configuration

Pin Name

Description

Outer Circle

This gives Negative output voltage

Inner Circle

This gives positive output voltage


Features and Specifications

  • Impedance:≤500Ω;
  • Voltage:≤30Vp-p;
  • Operating temperature:-20°C~+60°C
  • Storage temperature:-30°C~+70°C
  • Low Soldering temperature
  • Strain sensitivity: 5V/µƐ
  • Material: Quartz (mostly used)


4.11 Motor Servo

Gambar 14. Motor servo
        
        Motor servo adalah bagian dari salah satu motor listrik yang paling sering digunakan. Motor servo merupakan sebuah perangkat berbentuk motor atau penggerak yang menggunakan sistem kontrol umpan balik loop tertutup atau servo. Gerakan dan posisi akhir poros motor servo dikontrol dengan sistem kontrol loop tertutup. Maksudnya adalah motor servo dapat diatur sesuai kebutuhan dengan memastikan letak sudut dari poros output motor. Sensor yang ada di dalam motor servo akan mendeteksi posisi poros output yang tepat sehingga sinyal kendali yang dikirim oleh kontrol input akan menjaga poros tetap pada posisi yang diinginkan. 
    Motor servo akan bekerja dengan baik bila pin kontrolnya diberikan sinyal PWM dengan frekuensi 50 Hz. Frekuensi tersebut dapat diperoleh ketika kondisi Ton duty cycle berada di angka 1,5 ms. Dalam posisi tersebut rotor dari motor berhenti tepat di tengah-tengah alias sudut nol derajat atau netral. Pada saat kondisi Ton duty cycle kurang dari angka 1,5 ms, maka rotor akan berputar berlawanan arah jarum jam. Sebaliknya pada saat kondisi Ton duty cycle lebih dari angka 1,5 ms, maka rotor akan berputar searah jarum jam. 

Spesifikasi Motor Servo:
Model motor : SG90
Sudut Rotasi : 180°
Arus         : 250 mA
Tegangan         : 5 Volt
Panjang Kabel : 25cm
Perumahan Motor P x L x T : 23x12x26 mm
Tinggi Motor (dengan poros) : 32 mm
Kecepatan                         : 0.12 detik / 60 derajat (bervariasi berdasarkan VDC)

Untuk dapat mengontrol motor servo kita perlu memberikan pulsa high dan pulsa low dengan lebar tertentu. Frekuensi yang diperlukan adalah 50 Hz. Pulsa ini dapat dihasilkan dengan port I/O biasa pada mikrokontroler. Namun terkadang dengan cara ini pergerakan servo menjadi kurang akurat. Oleh karena itu digunakan metode Pulse Width Modulation (PWM). Dengan metode PWM dapat dihasilkan gerakan servo yang cukup akurat dengan resolusi yang kita sesuaikan dengan keinginan kita

Berikut ini adalah salah satu contoh pulsa yang dihasilkan untuk menggerakan servo dengan sudut 0o,90o, dan 180o



    Pulsa ini dapat dihasilkan dari pin OCR pada mikrokontroler. Perlu pengaturan register timer pada mikrokontroler agar dapat dihasilkan pulsa dengan lebar yang sesuai kita inginkan. Hal yang sangat penting adalah pengaturan frekuensi dan lebar pulsa on dan pulsa off. Oleh karena itu perlu dihitung berapa konstanta-konstanta timer yang di atur pada mikrokontroler.


4.12 LCD 16x2 
Gambar 15. LCD 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 16. 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



4.13 Buzzer




Gambar 17. Buzzer


        Buzzer merupakan komponen elektronik yang mampu menghasilkan getaran suara dalam bentuk gelombang bunyi. Getaran suara diproduksi saat buzzer menerima tegangan listrik yang sesuai dengan spesifikasi dan karakteristiknya. Buzzer sering digunakan sebagai alarm karena cara penggunaannya yang sederhana: cukup berikan tegangan input untuk menghasilkan getaran suara yang dapat didengar.

Spesifikasi Buzzer:
Tegangan pengoperasian : 5V 
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

Pinout Buzzer:
Pin VCC : Positif
Pin GND : Negatif



4.14 Kabel Jumper


Gambar 18. 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.15 Beardbord

Gambar 19. Beardboard

        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.



4.16 Resistor

Gambar 20. Resistor

        Resistor merupakan komponen penting dan sering dijumpai dalam sirkuit Elektronik. Boleh dikatakan hampir setiap sirkuit Elektronik pasti ada Resistor. Tetapi banyak diantara kita yang bekerja di perusahaan perakitan Elektronik maupun yang menggunakan peralatan Elektronik tersebut tidak mengetahui cara membaca kode warna ataupun kode angka yang ada ditubuh Resistor itu sendiri.

Cara membaca nilai resistor yaitu dengan menghitung nilai resistansi resistor dengan gelang warna :
1. Masukan angka langsung dari kode warna gelang pertama.
2. Masukan angka langsung dari kode warna gelang kedua.
3. Masukan angka langsung dari kode warna gelang ketiga.
4. Masukkan jumlah nol dari kode warna gelang ke-4 atau pangkatkan angka tersebut dengan 10         (10^n).
5. Gelang terakhir merupakan nilai toleransi dari resistor

Gelang warna Emas dan Perak biasanya terletak agak jauh dari gelang warna lainnya sebagai tanda gelang terakhir. Gelang Terakhirnya ini juga merupakan nilai toleransi pada nilai Resistor yang bersangkutan.

Tabel dibawah ini adalah gelang warna-warna Resistor
Gambar 21. Tabel gelang warna resistor


Perhitungan untuk Resistor dengan 4 Gelang warna :



Perhitungan untuk Resistor dengan 5 Gelang warna :



5. Flowchart dan Listing Program[Kembali]


  • Pi Pico 1


  • Pi Pico 2




  • Listing Program
# Pico 1 - LCD, Vibration Sensor & Buzzer

from machine import Pin, UART, I2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import utime

# ---------------------------
# PIN DEFINISI
# ---------------------------
UART_TX = 4      # GP4 (terima dari Pico 2)
UART_RX = 5      # GP5 (terima dari Pico 2)

# LCD
I2C_SDA = 0      # GP0
I2C_SCL = 1      # GP1

# Vibration Sensor
VIBRATION_PIN = 2  # GP2
# Buzzer
BUZZER_PIN = 3     # GP3

# ---------------------------
# INISIALISASI
# ---------------------------
uart = UART(1 , baudrate=9600, tx=Pin(UART_TX), rx=Pin(UART_RX))
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
lcd = I2cLcd(i2c, 0x27, 2, 16)
vibration = Pin(VIBRATION_PIN, Pin.IN)
buzzer = Pin(BUZZER_PIN, Pin.OUT)

# ---------------------------
# LOOP UTAMA
# ---------------------------
while True:
    getar = vibration.value()

    if uart.any():
        try:
            data = uart.readline().decode().strip()
            if data:
                tinggi, piezo = data.split(',')
                tinggi = float(tinggi)
                piezo = float(piezo)

                # Tentukan status berdasarkan data
                if piezo < 0.05:
                    status = "AMAN"
                elif piezo >0.05 and piezo < 0.1:
                    status = "WASPADA"
                else:
                    status = "BAHAYA"

                # LCD Output
                lcd.clear()
                lcd.putstr("Getar:{}\n".format(getar))
                lcd.putstr("Air:{:.1f} {}".format(tinggi, status))

                # Buzzer Pattern
                if status == "AMAN":
                    buzzer.value(0)
                elif status == "WASPADA":
                    buzzer.value(1)
                    utime.sleep(0.1)
                    buzzer.value(0)
                    utime.sleep(0.4)
                elif status == "BAHAYA":
                    for _ in range(3):
                        buzzer.value(1)
                        utime.sleep(0.2)
                        buzzer.value(0)
                        utime.sleep(0.2)

        except Exception as e:
            lcd.clear()
            lcd.putstr("UART Error")

    utime.sleep(0.5)
       

# Pico 2 - Sensor Piezoelektrik, Ultrasonik & Servo

from machine import Pin, UART, ADC, PWM
from hcsr04 import HCSR04
import utime

# ---------------------------
# PIN DEFINISI
# ---------------------------
PIEZO_PIN = 27     # GP26 (ADC0)
TRIG_PIN = 26       # GP6
ECHO_PIN = 7       # GP7
SERVO_PIN = 15     # GP15
UART_TX = 4        # GP4 (kirim ke Pico 1)
UART_RX = 5        # GP5 (tidak digunakan aktif)

# ---------------------------
# INISIALISASI
# ---------------------------
piezo = ADC(Pin(PIEZO_PIN))
ultrasonik = HCSR04(trigger_pin=TRIG_PIN, echo_pin=ECHO_PIN)
servo = PWM(Pin(SERVO_PIN))
servo.freq(50)
uart = UART(1, baudrate=9600, tx=Pin(UART_TX), rx=Pin(UART_RX))

# ---------------------------
# FUNGSI SERVO
# ---------------------------
def set_servo_angle(angle):
    duty = int(1638 + (angle / 180) * (8192 - 1638))
    servo.duty_u16(duty)

# ---------------------------
# LOOP UTAMA
# ---------------------------
while True:
    try:
        piezo_val = piezo.read_u16() / 65535 * 3.3  # volt
        tinggi_air = ultrasonik.distance_cm()

        # Kirim ke Pico 1
        uart.write("{:.2f},{:.2f}\n".format(tinggi_air, piezo_val))

        # Kontrol servo langsung
        if tinggi_air > 18:
            set_servo_angle(90)
        else:
            set_servo_angle(0)

        utime.sleep(1)

    except Exception as e:
        utime.sleep(2)






6. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

  • Rangkaian Demo


  • Rangkaian Simulasi


  • Prinsip Kerja

      Sistem deteksi tsunami otomatis ini bekerja berdasarkan tiga tahapan utama yang saling terintegrasi. Pertama, sensor getaran (vibration sensor) yang terpasang di daratan pantai akan mendeteksi aktivitas seismik atau gempa bumi. Ketika getaran terdeteksi melebihi ambang batas tertentu, Raspberry Pi Pico 1 akan menganggapnya sebagai potensi awal tsunami dan segera mengirim perintah ke Pico 2 melalui komunikasi UART.
    Selanjutnya, Raspberry Pi Pico 2 akan mengaktifkan sensor ultrasonik yang terpasang pada tiang di tepi laut untuk memantau ketinggian muka air secara real-time. Jika permukaan laut naik dengan cepat melebihi batas normal, Pico 2 akan menggerakkan motor servo untuk mengangkat tembok laut otomatis sebagai penghalang gelombang. Setelah tembok terangkat, sensor piezoelektrik yang tertanam pada tembok tersebut akan mendeteksi besarnya tekanan atau hantaman dari gelombang air. Sensor ini menghasilkan sinyal analog berupa tegangan yang menunjukkan seberapa kuat kekuatan gelombang tersebut. Data dari ketiga sensor ini diproses oleh Raspberry Pi Pico 1 untuk menentukan tingkat bahaya.
        Hasil akhirnya akan ditampilkan melalui LCD I2C dengan indikator status: "AMAN" jika tidak ada ancaman, "WASPADA" jika ada indikasi gelombang datang, dan "BAHAYA" jika gelombang besar benar-benar menghantam. Prinsip kerja ini memungkinkan sistem memberikan peringatan dini dan perlindungan aktif secara otomatis dalam menghadapi potensi bencana tsunami. Dan buzzer akan aktif jika terdeteksi "WASPADA" atau "BAHAYA" yang dibedakan oleh frekuensi nya.


7. Video Simulasi[Kembali]



HTML Download

Rangkaian Skematik Link

Listing Program Download

Video Simulasi Link

Library Sensor Ultrasonik Download

Library I2C Download

Library LCD Api Download

Datasheet Vibration Sensor Download

Datasheet Sensor Ultrasonik Download

Datasheet Sensor Piezzoelektrik  Download

Datasheet Buzzer Download

Datasheet LCD Download

Datasheet Raspberry pi pico Download

Datasheet Motor Servo Download

Datasheet Jumper Download












Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Elektronika

 BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA C Disusun Oleh : Nabilah Darma Fitri 2210953003 Dosen Pengampu : Dr. Darwison, M.T JURUSAN ...