modul 4 mikro

 




MODUL 4

Smart Clean Water Supply System with Settling Tank and Monitoring Sensors



1. Pendahuluan[Kembali]
    
Banjir dan galodo sering menyebabkan kerusakan pada infrastruktur pertanian, terutama saluran irigasi yang berfungsi mengalirkan air ke area persawahan. Kerusakan tersebut mengakibatkan pasokan air ke lahan pertanian terhenti sehingga aktivitas bercocok tanam masyarakat menjadi terganggu. Kondisi ini dapat menurunkan produktivitas pertanian dan memperlambat proses pemulihan ekonomi masyarakat pascabencana.

Meskipun saluran irigasi mengalami kerusakan, sumber air dari sungai umumnya masih tersedia dan dapat dimanfaatkan sebagai alternatif penyediaan air. Namun, air sungai setelah banjir biasanya mengandung lumpur, pasir, dan sedimen dalam jumlah yang cukup tinggi. Jika digunakan secara langsung, kandungan tersebut dapat menyebabkan penyumbatan saluran serta mempercepat kerusakan pompa irigasi.

Untuk mengatasi permasalahan tersebut, dirancang Smart Clean Water Supply System with Settling Tank and Monitoring Sensors. Sistem ini memanfaatkan settling tank sebagai bak pengendap untuk mengurangi kandungan lumpur dan sedimen sebelum air dipompa. Selain itu, sistem dilengkapi dengan sensor monitoring untuk memantau kondisi air serta mikrokontroler STM32 yang berfungsi mengendalikan pompa secara otomatis berdasarkan data yang diperoleh dari sensor.

Proyek ini merupakan pengembangan sederhana dari proposal EPICS mengenai sistem irigasi tenaga surya untuk pemulihan pertanian pascabencana. Dengan menggabungkan proses pengendapan, monitoring kondisi air, dan kontrol otomatis, prototipe ini diharapkan dapat menyediakan air yang lebih bersih dan membantu mendukung aktivitas pertanian masyarakat selama masa pemulihan pascabencana.

2. Tujuan[Kembali]

1. Membuat prototype sistem irigasi otomatis berbasis STM32.

2. Menyalurkan air sungai ke area persawahan.

3. Mengurangi sedimen dan lumpur menggunakan settling tank.

4. Memonitor kondisi air dan aliran secara real-time.

5. Melindungi pompa dari kerusakan akibat air keruh dan kekurangan air.


3. Alat dan Bahan [Kembali]


STM32F103C8


sensor ultrasonik HC- SR 04


Flow Sensor YF-S201
turbidity sensor jd 23-2


LED


Buzzer


Resistor




Relay module



Pompa DC




LED 




OLed I2C


Adaptor


Breadboard

4. Dasar Teori [Kembali]

  • STM32F103C8T6 (Blue Pill)

STM32F103C8T6 merupakan mikrokontroler berbasis ARM Cortex-M3 yang diproduksi oleh STMicroelectronics. Mikrokontroler ini memiliki kemampuan pemrosesan yang tinggi, konsumsi daya rendah, serta dilengkapi berbagai fitur seperti ADC, timer, interrupt, UART, SPI, dan I2C. STM32 banyak digunakan pada sistem monitoring dan kontrol otomatis karena mampu mengolah data sensor secara cepat dan akurat.

STM32F103C8 adalah mikrokontroler berbasis ARM Cortex-M3 yang dikembangkan oleh STMicroelectronics. Mikrokontroler ini sering digunakan dalam pengembangan sistem tertanam karena kinerjanya yang baik, konsumsi daya yang rendah, dan kompatibilitas dengan berbagai protokol komunikasi. Pada praktikum ini, kita menggunakan STM32F103C8 yang dapat diprogram menggunakan berbagai metode, termasuk komunikasi serial (USART), SWD (Serial Wire Debug), atau JTAG untuk berhubungan dengan komputer maupun perangkat lain. Adapun spesifikasi dari STM32F4 yang digunakan dalam praktikum ini adalah sebagai berikut:


Gambar 4. STM32F103C8


Gambar 5. Pinout Stm32 F103C8T6


    A. BAGIAN-BAGIAN PENDUKUNG

    1) STM32 NUCLEO-G474RE

    1. RAM (Random Access Memory)
    RAM (Random Access Memory) pada STM32 NUCLEO-G474RE digunakan sebagai memori sementara untuk menyimpan data selama program berjalan. Mikrokontroler STM32G474RET6 memiliki RAM sebesar 128 KB yang berfungsi untuk menyimpan variabel, buffer data, stack, dan heap.

    2. Memori Flash Eksternal
        STM32 NUCLEO-G474RE tidak menggunakan memori flash eksternal. Seluruh program dan data permanen disimpan pada memori Flash internal mikrokontroler STM32G474RET6 dengan kapasitas 512 KB. Memori flash ini bersifat non-volatile, sehingga data dan program tetap tersimpan meskipun catu daya dimatikan.

    3. Crystal Oscillator
        STM32 NUCLEO-G474RE menggunakan osilator internal (HSI – High Speed Internal) sebagai sumber clock utama secara default. Penggunaan clock internal ini membuat board dapat beroperasi tanpa memerlukan crystal oscillator eksternal. Clock berfungsi sebagai sumber waktu untuk mengatur kecepatan kerja CPU dan seluruh peripheral.

    4. Regulator Tegangan
        Untuk memastikan pasokan tegangan yang stabil ke mikrokontroler.

    5. Pin GPIO (General Purpose Input/Output):
        Pin GPIO pada STM32 NUCLEO-G474RE digunakan sebagai antarmuka input dan output digital yang fleksibel.

    2) STM32F103C8

    1. RAM (Random Access Memory)
    STM32F103C8 dilengkapi dengan 20KB SRAM on-chip. Kapasitas RAM ini memungkinkan mikrokontroler menjalankan berbagai aplikasi serta menyimpan data sementara selama eksekusi program.

    2. Memori Flash Internal
        STM32F103C8 memiliki memori flash internal sebesar 64KB atau 128KB, yang digunakan untuk menyimpan firmware dan program pengguna. Memori ini memungkinkan penyimpanan kode program secara permanen tanpa memerlukan media penyimpanan eksternal.

    3. Crystal Oscillator
        STM32F103C8 menggunakan crystal oscillator eksternal (biasanya 8MHz) yang bekerja dengan PLL untuk meningkatkan frekuensi clock hingga 72MHz. Sinyal clock yang stabil ini penting untuk mengatur kecepatan operasi mikrokontroler dan komponen lainnya.

    4. Regulator Tegangan
        STM32F103C8 memiliki sistem pengaturan tegangan internal yang memastikan pasokan daya stabil ke mikrokontroler. Tegangan operasi yang didukung berkisar antara 2.0V hingga 3.6V.

    5. Pin GPIO (General Purpose Input/Output)
        STM32F103C8 memiliki hingga 37 pin GPIO yang dapat digunakan untuk menghubungkan berbagai perangkat eksternal seperti sensor, motor, LED, serta komunikasi dengan antarmuka seperti UART, SPI, dan I²C.

  • Sensor Ultrasonik HC-SR04

HC-SR04 merupakan sensor ultrasonik yang digunakan untuk mengukur jarak atau ketinggian suatu objek dengan memanfaatkan gelombang suara berfrekuensi 40 kHz. Sensor ini terdiri dari transmitter dan receiver ultrasonik yang bekerja secara bersamaan untuk mendeteksi jarak suatu objek.



Prinsip Kerja

Sensor mengirimkan gelombang ultrasonik melalui transmitter setelah menerima sinyal trigger dari mikrokontroler. Gelombang tersebut dipantulkan oleh objek dan diterima kembali oleh receiver. Selisih waktu antara gelombang yang dikirim dan diterima digunakan untuk menghitung jarak objek. Pada sistem ini HC-SR04 digunakan untuk memantau level air pada settling tank sehingga ketersediaan air dapat diketahui secara real-time.

  • Turbidity Sensor

Turbidity Sensor merupakan sensor yang digunakan untuk mengukur tingkat kekeruhan air. Sensor ini bekerja berdasarkan perubahan intensitas cahaya yang diterima oleh fotodetektor akibat adanya partikel lumpur atau sedimen di dalam air.

Prinsip Kerja




Sensor terdiri dari LED inframerah dan fototransistor. Cahaya yang dipancarkan LED akan melewati air dan diterima oleh fototransistor. Semakin banyak partikel yang terdapat dalam air, semakin besar hamburan cahaya yang terjadi sehingga intensitas cahaya yang diterima berkurang. Perubahan intensitas cahaya tersebut diubah menjadi sinyal tegangan yang dibaca oleh mikrokontroler. Pada sistem ini sensor digunakan untuk mengetahui kualitas air setelah proses pengendapan.


  • Flow Sensor YF-S201

Flow Sensor YF-S201 merupakan sensor yang digunakan untuk mengukur debit aliran air. Sensor ini banyak digunakan pada sistem perpipaan untuk mengetahui jumlah air yang mengalir dalam satuan waktu tertentu.

Prinsip Kerja

Di dalam sensor terdapat rotor yang dilengkapi magnet permanen dan sensor Hall Effect. Ketika air mengalir, rotor akan berputar dan menghasilkan pulsa digital. Frekuensi pulsa yang dihasilkan sebanding dengan kecepatan aliran air. Mikrokontroler menghitung jumlah pulsa tersebut untuk menentukan debit air dalam satuan liter per menit (L/min). Pada sistem ini sensor digunakan untuk memantau aliran air menuju saluran irigasi.

  • Relay Module

Relay merupakan komponen elektronika yang berfungsi sebagai saklar elektromagnetik yang dapat dikendalikan menggunakan sinyal listrik berdaya rendah. Relay memungkinkan mikrokontroler mengendalikan perangkat yang membutuhkan arus atau tegangan lebih besar.

Prinsip Kerja

Ketika kumparan relay dialiri arus listrik, akan terbentuk medan magnet yang menarik kontak saklar di dalam relay. Akibatnya posisi kontak berubah sehingga beban dapat dihubungkan atau diputuskan dari sumber daya. Pada sistem ini relay digunakan untuk mengontrol kerja pompa DC berdasarkan perintah dari STM32.

  • Pompa DC

Pompa DC merupakan perangkat elektromekanik yang digunakan untuk memindahkan air dengan memanfaatkan motor arus searah (DC). Pompa ini banyak digunakan pada sistem distribusi air karena mudah dikendalikan dan memiliki konsumsi daya yang relatif rendah.

Prinsip Kerja

Ketika tegangan diberikan pada motor DC, motor akan memutar impeller yang berada di dalam pompa. Putaran impeller menghasilkan tekanan yang menyebabkan air terhisap dari sisi masuk dan didorong menuju sisi keluaran. Pada sistem ini pompa digunakan untuk mengalirkan air dari settling tank menuju saluran irigasi.

  • OLED Display SSD1306

OLED (Organic Light Emitting Diode) merupakan perangkat display yang digunakan untuk menampilkan informasi secara visual. OLED memiliki kontras tinggi, konsumsi daya rendah, serta mampu menampilkan karakter maupun grafik dengan kualitas yang baik.

Prinsip Kerja

OLED menerima data digital dari mikrokontroler melalui komunikasi I2C. Data yang diterima kemudian diterjemahkan oleh driver OLED menjadi tampilan pada layar. Pada sistem ini OLED digunakan untuk menampilkan informasi level air, nilai kekeruhan, debit aliran air, dan status pompa secara real-time.

  • LED (Light Emitting Diode)

LED merupakan komponen semikonduktor yang mampu memancarkan cahaya ketika dialiri arus listrik. LED banyak digunakan sebagai indikator visual pada berbagai sistem elektronika karena konsumsi dayanya rendah dan memiliki umur pakai yang panjang.

Prinsip Kerja

Ketika arus mengalir dari anoda menuju katoda, elektron dan hole akan berekombinasi pada sambungan semikonduktor sehingga menghasilkan energi dalam bentuk cahaya. Pada sistem ini LED digunakan sebagai indikator kondisi sistem seperti status normal, kondisi air keruh, atau status pompa aktif.

  • Buzzer

Buzzer merupakan komponen elektronika yang berfungsi mengubah energi listrik menjadi energi suara. Buzzer banyak digunakan sebagai alarm atau indikator peringatan pada berbagai sistem kontrol dan monitoring.

Prinsip Kerja

Ketika buzzer menerima tegangan atau sinyal dari mikrokontroler, elemen piezoelektrik atau elektromagnetik di dalam buzzer akan bergetar dan menghasilkan gelombang suara. Pada sistem ini buzzer digunakan sebagai alarm ketika air terlalu keruh, level air rendah, atau terjadi gangguan pada sistem sehingga pengguna dapat segera mengetahui kondisi tersebut.


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 STM32F103C8T6 dan STM32 NUCLEO G474RE 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.

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. 

        Pada mikrokontroler STM32, terdapat dua ADC (Analog-to-Digital Converter) 12-bit yang masing-masing memiliki hingga 16 kanal eksternal. ADC ini dapat beroperasi dalam mode single-shot atau scan mode. Pada scan mode, konversi dilakukan secara otomatis pada sekelompok input analog yang dipilih. Selain itu, ADC ini memiliki fitur tambahan seperti simultaneous sample and hold, interleaved sample and hold, serta single shunt. ADC juga dapat dihubungkan dengan DMA untuk meningkatkan efisiensi transfer data. Mikrokontroler ini dilengkapi dengan fitur analog watchdog yang memungkinkan pemantauan tegangan hasil konversi dengan akurasi tinggi, serta dapat menghasilkan interupsi jika tegangan berada di luar ambang batas yang telah diprogram. Selain itu, ADC dapat disinkronkan dengan timer internal (TIMx dan TIM1) untuk memulai konversi, pemicu injeksi, serta pemicu DMA, sehingga memungkinkan aplikasi untuk melakukan konversi ADC secara terkoordinasi dengan timer.

         Pada STM32 Nucleo G474RE, terdapat blok ADC (Analog-to-Digital Converter) yang digunakan untuk mengubah sinyal analog menjadi data digital. STM32 G474RE memiliki beberapa unit ADC (seperti ADC1, ADC2, ADC3, dan ADC4) yang memungkinkan proses konversi dilakukan secara paralel untuk meningkatkan kecepatan akuisisi data. Setiap ADC mendukung resolusi hingga 12-bit, dengan fitur tambahan seperti oversampling untuk meningkatkan akurasi dan mengurangi noise pada sinyal. Setiap unit ADC dapat mengakses banyak channel input yang terhubung ke berbagai pin GPIO, sehingga memungkinkan pembacaan berbagai sensor secara fleksibel. ADC pada STM32 G474RE juga dilengkapi dengan fitur scan mode untuk membaca beberapa channel secara berurutan, serta mode continuous conversion yang memungkinkan pembacaan data secara terus-menerus tanpa intervensi CPU. Selain itu, terdapat injected channel yang berfungsi sebagai channel prioritas untuk kebutuhan real-time.

       ADC ini juga mendukung berbagai sumber trigger, seperti timer (TIM) atau sinyal eksternal, sehingga dapat disinkronkan dengan modul lain seperti PWM untuk aplikasi kontrol tertutup (closed-loop). Proses konversi dilakukan melalui tahap sampling dan quantization, dengan hasil akhir disimpan pada register data ADC. Dengan fitur-fitur tersebut, ADC pada STM32 G474RE sangat cocok digunakan dalam aplikasi seperti pembacaan sensor, monitoring tegangan, serta sistem kendali berbasis sinyal analog yang membutuhkan kecepatan dan presisi tinggi.


  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 (%).


        PWM pada STM32 dihasilkan menggunakan timer internal yang berfungsi sebagai penghitung waktu dengan berbagai mode operasi. Mikrokontroler ini memiliki empat timer 16-bit (TIM1–TIM4), yang dapat dikonfigurasi untuk menghasilkan sinyal dengan frekuensi dan duty cycle tertentu. Timer bekerja dengan menghitung hingga nilai tertentu berdasarkan frekuensi clock, lalu mengubah status register untuk menghasilkan gelombang persegi. STM32 memiliki 15 pin yang mendukung PWM, beberapa di antaranya berasal dari timer tingkat lanjut seperti TIM1, yang memiliki fitur tambahan seperti complementary output. Selain menghasilkan sinyal PWM, timer juga bisa digunakan untuk mengukur sinyal eksternal (input capture), menghasilkan sinyal berbasis waktu (output compare), dan membuat satu pulsa berdasarkan trigger (one pulse mode). PWM sering digunakan untuk mengontrol kecepatan motor, mengatur kecerahan LED, dan berbagai aplikasi berbasis waktu lainnya.

     Pada STM32 Nucleo G474RE, PWM dihasilkan melalui blok timer (TIM) yang terdiri dari beberapa jenis, seperti advanced-control timer (TIM1, TIM8), general-purpose timer (TIM2–TIM5), dan basic timer. Setiap timer memiliki beberapa channel yang dapat digunakan untuk menghasilkan sinyal PWM, sehingga memungkinkan banyak output PWM dikendalikan secara bersamaan pada berbagai pin GPIO. Timer pada STM32 G474RE umumnya memiliki resolusi hingga 16-bit atau lebih (tergantung jenis timer), dilengkapi dengan prescaler untuk pengaturan frekuensi yang presisi, serta register pembanding (CCR) untuk mengatur duty cycle dari 0–100%.

        Selain itu, setiap channel PWM dapat dikonfigurasi secara independen, baik dalam mode edge-aligned maupun center-aligned, sehingga cocok untuk aplikasi seperti kontrol motor dan konversi daya. STM32 G474RE juga mendukung fitur lanjutan seperti complementary output, dead-time insertion, break input, dan sinkronisasi antar timer, yang sangat penting dalam sistem power electronics dan inverter. Pengaturan PWM dapat dilakukan secara fleksibel melalui register timer atau menggunakan library seperti HAL/LL, serta dapat diaktifkan atau dihentikan secara terpusat, memungkinkan sinkronisasi beberapa sinyal PWM untuk aplikasi yang lebih kompleks dan presisi tinggi.

    4.3 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 STM32F103C8, semua pin GPIO dapat digunakan sebagai pin interrupt, berbeda dengan Arduino Uno yang hanya memiliki pin tertentu (misalnya pin 2 dan 3). Untuk mengaktifkan interrupt di STM32 menggunakan Arduino IDE, digunakan fungsi attachInterrupt(digitalPinToInterrupt(pin), ISR, mode). Parameter pin menentukan pin mana yang digunakan untuk interrupt, ISR adalah fungsi yang dijalankan saat interrupt terjadi, dan mode menentukan jenis perubahan sinyal yang memicu interrupt. Mode yang tersedia adalah RISING (dari LOW ke HIGH), FALLING (dari HIGH ke LOW), dan CHANGE (baik dari LOW ke HIGH maupun HIGH ke LOW). Saat menggunakan lebih dari satu interrupt secara bersamaan, terkadang perlu memperhatikan batasan tertentu dalam pemrograman. Pada STM32 Nucleo G474RE, sistem interrupt merupakan mekanisme yang memungkinkan mikrokontroler merespons suatu kejadian (event) secara langsung tanpa harus terus-menerus melakukan polling. Dengan interrupt, CPU dapat menghentikan sementara proses utama untuk menjalankan fungsi khusus yang disebut Interrupt Service Routine (ISR), sehingga meningkatkan efisiensi dan respons sistem secara real-time. STM32 G474RE menggunakan NVIC (Nested Vectored Interrupt Controller) untuk mengatur berbagai sumber interrupt, seperti dari timer (TIM), ADC, UART, GPIO (external interrupt), dan periferal lainnya. Setiap sumber interrupt memiliki prioritas tertentu yang dapat diatur, sehingga memungkinkan penanganan beberapa interrupt secara bersamaan (nested interrupt). Selain itu, sistem ini mendukung preemption dan subpriority untuk pengelolaan interrupt yang lebih kompleks. Interrupt dapat dipicu oleh berbagai kondisi, seperti perubahan logika pada pin GPIO (EXTI), selesainya konversi ADC, overflow pada timer, atau penerimaan data komunikasi. Ketika interrupt terjadi, program akan lompat ke ISR yang sesuai, kemudian setelah selesai, eksekusi akan kembali ke program utama. STM32 G474RE juga menyediakan fitur enable/disable interrupt secara fleksibel melalui register maupun library seperti HAL. Dengan adanya interrupt, STM32 G474RE sangat cocok untuk aplikasi real-time seperti sistem kendali, monitoring sensor, komunikasi data, dan otomasi, karena mampu merespons kejadian penting dengan cepat tanpa membebani CPU secara terus-menerus.

 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.

            Cara Kerja Komunikasi UART


Gambar 1. Cara Kerja Komunikasi UART

    4.2 I2C (Inter-Intergrated 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.

          Cara Kerja Komunikasi I2C


Gambar 2. 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.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

Cara Kerja Komunikasi SPI


Gambar 3. 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.

Komentar

Postingan populer dari blog ini