MODUL 4






 Sistem Pendeteksi Kualitas Air dan Pengendali Penyaringan Otomatis untuk Industri Pertanian Skala Kecil

1. Pendahuan[Kembali]

Air merupakan salah satu komponen penting dalam kegiatan pertanian. Kualitas air yang digunakan dalam irigasi, penyemprotan, dan pemupukan cair, sangat mempengaruhi pertumbuhan tanaman, efisiensi penggunaan pupuk, serta hasil panen. Namun, di banyak wilayah pertanian skala kecil, petani masih menggunakan air tanpa mengetahui kadar keasaman, kandungan zat padat terlarut, atau tingkat kebersihan air secara real-time. Hal ini dapat menyebabkan penurunan produktivitas tanaman, kerusakan sistem irigasi, bahkan keracunan akibat endapan logam atau kontaminan tertentu.

Dalam era pertanian modern yang menekankan pada efisiensi dan keberlanjutan, penggunaan teknologi berbasis mikrokontroler menjadi solusi yang dapat menjawab tantangan tersebut. Dengan memanfaatkan berbagai sensor, seperti sensor yang digunakan yaitu sensor pH, sensor TDS, dan sensor level air yang terintegrasi ke dalam sistem mikrokontroler yaitu Raspberry Pi Pico, kualitas air dapat dipantau secara otomatis dan real-time. Lebih dari itu, sistem juga dapat dihubungkan dengan aktuator seperti pompa atau katup otomatis untuk menyaring atau menghentikan aliran air jika kualitasnya berada di luar batas aman.

Penerapan sistem ini sangat relevan bagi industri pertanian skala kecil yang umumnya memiliki keterbatasan biaya, tenaga kerja, dan akses terhadap teknologi canggih. Dengan sistem yang sederhana namun efektif, petani dapat menjaga kualitas air, meminimalisir risiko terhadap tanaman, serta meningkatkan hasil panen secara berkelanjutan.

Oleh karena itu, diperlukan sebuah inovasi berupa Sistem Pendeteksi Kualitas Air dan Pengendali Penyaringan Otomatis, yang tidak hanya mampu mengukur parameter penting air, tetapi juga dapat mengambil tindakan korektif secara otomatis untuk menjamin kualitas air yang digunakan dalam kegiatan pertanian.


2. Tujuan[Kembali]

1.     Merancang dan mengimplementasikan sistem otomatis berbasis Raspberry Pipico untuk memantau kualitas air secara real-time dengan menggunakan sensor pH, TDS, dan sensor level air.

2.     Mengembangkan mekanisme penyaringan otomatis yang dapat aktif saat kualitas air berada di luar ambang batas yang ditentukan, guna menjaga air tetap layak pakai untuk kebutuhan pertanian.


3. Alat dan Komponen[Kembali]

a.     Sensor Ph

Analog PH Probe Sensor Shield and PH value - JUAL ARDUINO | Jual Arduino  Jogja | Toko Arduino Yogyakarta| JUAL Raspberry JOGJA| Sensor Arduino|  Robot solar I Arduino Uno R3I Harga Arduino

Tegangan Catu Daya         : 5V DC

Rentang Pengukuran         : 0 - 14PH

Suhu pengukuran              : 0 - 60 ℃

Akurasi                             : ± 0.1pH (25 ℃)

Waktu Respon                   : ≤ 1 menit

Antarmuka                                    : pH2.0 (tambalan 3 kaki)

Ukuran modul                   : 43 x 32mm (1.69x1.26 ")

b.     Sensor TDS

DFRobot Gravity Analog TDS Sensor - DFROBOT-SEN0244

Tegangan input : 3-5 volt

Tegangan output : 0-2.3 volt

Kerja arus : 3-6 mA

Ukuran modul : 42*32 mm

akurasi pengukuran: 10% F.S. (25 Cderjar celcius)

c.     Sensor water level

Water Level Sensor K-0135 - Edukasi Elektronika | Electronics Engineering  Solution and Education

Tegangan : +5 volt

Kerja arus : <20Ma

Area deteksi: 40mm x16mm

d.      LCD 16 x 2

LCD I2C 16x2 Blue - Aksesoris Komputer Lampung

e.     Breadboard

HOOGWAARDIG BREADBOARD - 400 INSTEEKPUNTEN - Whadda

f.     Resistor

Resistor - Wikipedia

i.     Jumper

Pengertian, Jenis dan Cara Kerja Kabel Jumper Arduino - Arduino Indonesia |  Tutorial Lengkap Arduino Bahasa Indonesia

h.     Ponpa 6 volt

Jual Pompa Air Dc 6 Volt Terbaru - Jan 2025 | Lazada.co.id

j. Raspberry Pi Pico


k.     Relay modul

Jual Relay Module DC 5V 1-Channel High Trigger - 12 Volt - Jakarta Utara -  Intelligent Led | Tokopedia 


4. Landasan Teori
[Kembali]

   1. Mikrokontroller

        Mikrokontroler adalah sebuah system microprocessor dimana didalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan peralatan internal lainnya yang sudah saling terhubung dan terorganisasi (teralamati), dikemas dalam satu chip yang siap pakai. Seperti umumnya komputer, mikrokontroler sebagai alat yang mengerjakan perintah-perintah yang diberikan kepadanya.

    Pada mikrokontroller seorang programmer dapat memasukkan program ke dalam mikrokontroler sehingga berfungsi sesuai dengan yang diinginkan oleh pengguna. Artinya, bagian terpenting dan utama dari suatu sistem komputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program ini memerintahkan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer. Salah satu kelebihan mikrokontroler adalah kesederhanaan dan ukurannya yang relatif kecil. 

Gambar 26. Prinsip kerja mikrokontroller

 

Gambar 27. Struktur dan diagram blok Mikrokontroler

 

Berikut ini merupakan struktur dan diagram blok mikrokontroler beserta penjelasan tentang bagian-bagian utamanya:

a.     CPU

CPU merupakan otak dari mikrokontroler. CPU bertanggung jawab untuk mengolah data dan eksekusi perintah yang masuk. 

b.     Serial Port (Port Serial)

Serial port menyediakan berbagai antarmuka serial antara mikrokontroler dan periferal lain seperti port paralel.

c.     Memori (Penyimpanan)

Memori ini bertugas untuk menyimpan data. Data tersebut merupakan data yang sudah diolah (output) atau data yang belum diolah (input). memori yang umum dipakai adalah Random Access Memory (RAM) dan Read Only Mmemory (ROM).Penyimpanan ini berupa RAM dan ROM. ROM digunakan untuk menyimpan data dalam jangka waktu yang lama. Sedangkan RAM digunakan untuk menyimpan data sementara.

d.     Port Input/Output Paralel

Port input/output paralel digunakan untuk mendorong atau menghubungkan berbagai perangkat. Kegunaan komponen ini adalah menerima input dari perangkat eksternal dan mengirimkannya ke perangkat pemroses. Nantinya hasil pengolahan data akan dikirimkan output ke perangkat eksternal.

e.     DAC (Digital to Analog Converter)

DAC (Digital to Analog Converter) melakukan operasi pembalikan konversi ADC (Analog to Digital Converter). DAC mengubah sinyal digital menjadi format analog. DAC ini biasanya digunakan untuk mengendalikan perangkat analog seperti motor DC dan lain sebagainya.

f.     Interrupt Control (Kontrol Interupsi)

Interrupt Control (Kontrol Interupsi) bertugas untuk mengendalikan penundaan terhadap pemrograman mikrokontroler. Bagianinterrupt control (kontrol interupsi) ini dapat dioperasikan secara internal ataupun eksternal.

g.     Special Functioning Block (Blok Fungsi Khusus)

Special functioning block merupakan bagian tambahan yang dibuat mempunyai fungsi khusus. Biasanya blok ini ditemukan pada arsitektur mikrokontroler di mesin robotika. Tidak semua perangkat menggunakan bagian ini.

h.     Timer and Counter (Pengatur Waktu dan Penghitung)

Timer/counter ini digunakan untuk mengukur waktu dan alat penghitungan. RTC memiliki tugas untuk menyimpan waktu dan tanggal saat proses dilakukan.

2.     Analog to Digital Converter (ADC)

ADC adalah suatu metode untuk konversi sinyal analog menjadi sinyal digital. Biasanya sinyal analog yang dikonversi berupa tegangan (Volt) dan dirubah menjadi sinyal digital seperti kode biner 0 dan 1.

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. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi. 

Rangkaian ADC memiliki dua karakter prinsip, yaitu kecepatan sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu tertentu yang dinyatakan dalam sample per second (SPS). Sedangkan resolusi suatu ADC menentukan ketelitian nilai hasil konversi yang berhubungan dengan jumlah bit yang dimilikinya. Sehingga semakin besar jumlah bit suatu ADC makan akan memberikan ketelitian nilai hasil konversi yang lebih baik. Pada Arduino, resolusi yang dimiliki adalah 10bit atau rentang nilai digital antara 0 - 1023. Pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Arduino Uno mempunyai 6 pin input analog yang berlabel A0 sampai A5 dimana masingmasing pin tersebut memberikan 10bit resolusi. 

 3. PWM, ADC, INTERRUPT, & MILLIS 

    a. PWM

Pulse Width Modulation (PWM) secara umum adalah sebuah cara memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam suatu perioda, untuk mendapatkan tegangan rata-rata yang berbeda. 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 22. Duty Cycle

Duty Cycle = 𝑡𝑂𝑁

𝑡𝑡𝑜𝑡𝑎𝑙

        

§  𝑡𝑜𝑛 = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (highatau 1) 
§  𝑡𝑜𝑓𝑓 = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah(low atau 0)

§  𝑡𝑡𝑜𝑡𝑎𝑙= 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.


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

c.     Millis

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

        a.     UART

Pada project yang kami buat, kami menggunakan komunikasi UART untuk 2 arduino. Komunikasi UART 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 24. 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.

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

Cara kerja:

      Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL. Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL.

 R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.

 5. Sensor Ph

Sensor pH adalah alat yang digunakan untuk mengukur tingkat keasaman atau kebasaan suatu larutan atau zat. Skala pH berkisar dari 0 hingga 14, dengan 7 menunjukkan netral, di bawah 7 asam, dan di atas 7 basa. Sensor pH penting dalam berbagai aplikasi, termasuk pemantauan kualitas air, pertanian, dan industri. 

Sensor pH bekerja berdasarkan prinsip elektrokimia, khususnya menggunakan elektrode gelas (glass electrode) yang peka terhadap ion hidrogen (H⁺). Berikut komponen dan cara kerjanya:

Komponen:

·       Elektrode pH (Elektrode Indikator) → Terbuat dari kaca khusus yang sensitif terhadap ion H⁺.

·       Elektrode Referensi → Memberikan tegangan referensi yang stabil (biasanya berisi larutan KCl).

·       Larutan Buffer Internal → Larutan dengan pH stabil di dalam elektrode.

·       Termistor → Untuk kompensasi suhu karena pengukuran pH dipengaruhi oleh temperatur.

 

Mekanisme pengukuran:

·     Ketika elektrode pH dimasukkan ke dalam air, ion H⁺ di larutan berinteraksi dengan lapisan tipis kaca pada elektrode, menciptakan potensial listrik.

· Perbedaan potensial antara elektrode pH dan elektrode referensi diukur sebagai tegangan mV (millivolt).

·       Hubungan antara tegangan dan pH bersifat logaritmik 

·     Sensor mengkonversi sinyal mV menjadi nilai pH menggunakan penguat dan ADC (Analog-to-Digital Converter).

 

Spesifikasi:

·       Tegangan Catu Daya: 5V DC

·       Rentang Pengukuran: 0 - 14PH

·       Suhu pengukuran: 0 - 60 ℃

·       Akurasi: ± 0.1pH (25 ℃)

·       Waktu Respon: ≤ 1 menit

·       Sensor pH dengan Konektor BNC

·       Antarmuka: pH2.0 (tambalan 3 kaki)

·       Adjustable Potensiometer

·       Indikator Daya LED

·       Ukuran modul: 43 x 32mm (1.69x1.26 ")

 

Grafik respon sensor

 

 

    6. Sensor TDS

    Sensor TDS (Total Dissolved Solids) adalah alat yang digunakan untuk mengukur jumlah padatan terlarut seperti garam, mineral, logam, dan senyawa organic, dalam suatu larutan. Satuan pengukurannya adalah part per million (ppm) atau miligram per liter (mg/L).

Sensor TDS bekerja berdasarkan konduktivitas listrik karena zat terlarut dalam air (seperti ion Na⁺, K⁺, Ca²⁺, Cl⁻) dapat menghantarkan arus listrik. Berikut komponen dan cara kerjanya:

 Komponen:

·       Dua Elektrode Logam (biasanya stainless steel atau grafit) → Berfungsi sebagai konduktor.

·       Sirkuit Pengukur Konduktivitas → Mengubah konduktivitas menjadi nilai TDS.

·       Termistor (opsional) → Kompensasi suhu karena konduktivitas dipengaruhi oleh suhu.

 

Mekanisme pengukuran:

·       Saat sensor dicelupkan ke dalam air, elektrode mengalirkan arus listrik bolak-balik (AC) untuk mencegah polarisasi.

·       Air yang mengandung zat terlarut akan menghantarkan listrik lebih baik daripada air murni.

·       Sensor mengukur konduktivitas listrik (μS/cm) dan mengkonversinya ke ppm TDS

Spesifikasi

Papan Pemancar Sinyal:

Tegangan Masukan: 3.3 ~ 5.5V

Tegangan Output: 0 ~ 2.3V

Bekerja Saat Ini: 3 ~ 6mA

Rentang Pengukuran TDS: 0 ~ 1000ppm

Akurasi Pengukuran TDS: ± 10 persen FS (25 derajat)

Ukuran Modul: 42 * 32mm

Antarmuka Modul: PH2.0-3P

Antarmuka Elektroda: XH2.54-2P

 

Penyelidikan TDS:

Jumlah Jarum: 2

Panjang Total: 83cm

Antarmuka Koneksi: XH2.54-2P

Warna hitam

Lainnya: Probe Tahan Air 

  

 

Grafik respon 


 

7.     Sensor water level

Sensor water level (sensor tingkat air) adalah perangkat yang digunakan untuk mendeteksi ketinggian atau volume air dalam suatu wadah, tangki, sungai, atau sistem aliran.

Cara kerja

Sensor level air beroperasi dengan menggunakan konduktivitas listrik air untuk melengkapi rangkaian antara dua set jejak tembaga yang saling terkait.

Saat sensor kering, jejak tembaga dipisahkan satu sama lain oleh udara. Ini berarti tidak ada arus listrik yang mengalir di antara jejak tersebut. Akibatnya, tidak ada arus yang mengalir ke basis transistor NPN, dan transistor tetap mati, mirip dengan sakelar terbuka. Karena transistor mati, listrik tidak dapat mengalir dari kolektornya (terhubung ke +5 volt) ke emitornya (yang terhubung ke ground melalui resistor 100 ohm). Karena emitor juga terhubung ke pin keluaran sensor (OUT), keluaran menunjukkan 0 volt (LOW).

Namun, saat air menyentuh jejak tembaga , ia menciptakan jembatan konduktif di antara keduanya karena air, khususnya dengan mineral dan kotoran yang terlarut, dapat menghantarkan arus listrik kecil. Arus kecil dari jejak ini mengalir ke basis transistor. Ini menyalakan transistor. Setelah transistor diaktifkan, ia memungkinkan arus yang jauh lebih besar mengalir dari +5 volt melalui transistor ke emitor dan akhirnya ke ground melalui resistor 100 ohm. Karena pin OUT terhubung antara emitor transistor dan resistor ini, tegangan pin OUT naik menuju +5 volt.

sensor tidak menyala atau mati sepenuhnya sensor memberikan tegangan keluaran yang berbeda tergantung pada seberapa banyak air yang menyentuh sensor. Jika hanya sedikit air, transistor akan aktif sebagian, menyebabkan sedikit peningkatan tegangan keluaran. Lebih banyak air akan meningkatkan konduktivitas, memungkinkan lebih banyak arus masuk ke basis transistor, dan menaikkan tegangan keluaran lebih tinggi lagi. Dengan demikian, sensor menghasilkan sinyal tegangan analog yang berbanding lurus dengan ketinggian air.

Spesifikasi

Tegangan operasi: Arus bolak-balik 3-5V

Arus operasi: < 20Ma

Jenis sensor: analok

Area deteksi: ujuran 40x16 mm

Suhu operasi: 10℃-30℃ Kelembaban: 10% -90% non-kondensasi

Ukuran: 60x20 mm

  Grafik respon

PENGUKURAN LEVEL KETINGGIAN AIR MENGGUNAKAN FIBER BRAGG GRATING (FBG)  BERBASIS MODULASI INTENSITAS LASER DIODA 

    7. Pompa 6 volt

    Motor pump / pompa air adalah alat untuk menggerakan air dari tempat bertekanan rendah ke tempat bertekanan yang lebih tinggi. Pada dasarnya motor pump sama dengan motor DC pada umumnya, hanya saja sudah di-packing sedemikian rupa sehingga dapat digunakan di dalam air.


Spesifikasi :

  • Tegangan Kerja: 2.5–6V DC (adaptif)

  • Aliran Air: 80–120 liter/jam (≈1.3–2 liter/menit)

  • Daya Dorong: 40–110 cm (tergantung voltase)

  • Dimensi: 24mm × 45mm × 33mm

  • Material: Plastik tahan air

  • Konsumsi Daya: ±6W (@6V)

  • Kabel: Panjang ≈20 cm

    

    8. Raspbery pipico

    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.


     9.  LCD 16x2

LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa menampilkan suatu gambar/karakter dikarenakan terdapat banyak sekali titik cahaya (piksel) yang terdiri dari satu buah kristal cair sebagai titik cahaya. LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat menampilkan 16 karakter. Bentuk fisik LCD 16x2 dapat dilihat pada gambar dibawah ini.

 

Gambar 14. LCD16x2

 

Bagian-bagian LCD atau Liquid Crystal Display diantaranya adalah :
 
       Lapisan Terpolarisasi 1 (Polarizing Film 1)
       Elektroda Positif (Positive Electrode)
       Lapisan Kristal Cair (Liquid Cristal Layer)
       Elektroda Negatif (Negative Electrode)
       Lapisan Terpolarisasi 2 (Polarizing film 2)
       Backlight atau Cermin (Backlight or Mirror)
 

Dibawah ini adalah gambar struktur dasar sebuah LCD :

 

Gambar 15. Struktur LCD

Tabel 1. Spesifikasi LCD16x2

    

 

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



 
2. Listing program 

PICO 1 (master)

from machine import Pin, I2C

import time


# --- Pin Definitions ---

WATER_LEVEL_PIN = 27  # Sensor water level 1 (GP27)

PUMP1_PIN = 4        # Pompa 1 (GP26)

PUMP2_PIN = 2         # Pompa 2 (GP2)

I2C_SDA_PIN = 0       # I2C SDA (GP0)

I2C_SCL_PIN = 1       # I2C SCL (GP1)

SLAVE_ADDR = 0x10     # Alamat I2C dari Pico 2


# --- Inisialisasi Pin ---

water_level = Pin(WATER_LEVEL_PIN, Pin.IN, Pin.PULL_UP)

pump1 = Pin(PUMP1_PIN, Pin.OUT)

pump2 = Pin(PUMP2_PIN, Pin.OUT)

pump1.off()

pump2.off()


# --- Inisialisasi I2C ---

i2c = I2C(0, sda=Pin(I2C_SDA_PIN), scl=Pin(I2C_SCL_PIN), freq=100000)


last_wl1_status = None

last_wl2_status = None


while True:

    if water_level.value() == 0:

        wl1_status = 1

    else:

        wl1_status = 0


    # Kirim status water level 1 ke slave

    try:

        i2c.writeto(SLAVE_ADDR, bytes([wl1_status]))

    except:

        pass


    # Baca status water level 2 dari slave

    try:

        data = i2c.readfrom(SLAVE_ADDR, 1)

        wl2_status = int(data[0])

    except:

        wl2_status = 0  # default aman jika gagal baca


    # Kontrol pompa 1

    pump1.value(wl1_status)


    # Kontrol pompa 2

    #pump2.value(wl2_status)


    if wl1_status != last_wl1_status or wl2_status != last_wl2_status:

        print(f"[MASTER] WL1: {'No Water' if wl1_status else 'Water OK'}")

        print(f"Pompa1: {'ON' if pump1.value() else 'OFF'}")

        print(f"Pompa2: {'ON' if pump2.value() else 'OFF'}")

        print(wl1_status)

        last_wl1_status = wl1_status

        last_wl2_status = wl2_status


    time.sleep(0.5)

PICO 2 (slave)

from machine import Pin, ADC, I2C

from utime import sleep_ms

from lcd_api import LcdApi

from pico_i2c_lcd import I2cLcd

import i2c_slave  # Ensure i2c_slave.py is present on the board


# --- Pin Definitions ---

PH_SENSOR_PIN = 27

TDS_SENSOR_PIN = 28

WATER_LEVEL_PIN = 26

PUMP3_PIN = 2

LCD_SDA_PIN = 18

LCD_SCL_PIN = 19

I2C_SDA_SLAVE = 0

I2C_SCL_SLAVE = 1

I2C_SLAVE_ADDR = 0x10

LCD_ADDR = 0x27

LCD_COLS = 16

LCD_ROWS = 2


# --- Inisialisasi ---

ph_adc = ADC(Pin(PH_SENSOR_PIN))

tds_adc = ADC(Pin(TDS_SENSOR_PIN))

water_adc = ADC(Pin(WATER_LEVEL_PIN))

pump3 = Pin(PUMP3_PIN, Pin.OUT)

pump3.off()


# --- LCD ---

i2c_lcd = I2C(1, sda=Pin(LCD_SDA_PIN), scl=Pin(LCD_SCL_PIN), freq=400000)

try:

    lcd = I2cLcd(i2c_lcd, LCD_ADDR, LCD_ROWS, LCD_COLS)

    lcd.clear()

    lcd.putstr("Sistem Siap")

    sleep_ms(2000)

except:

    lcd = None


# --- I2C Slave ---

i2c_slave = i2c_slave.I2CSlave(0, sda=Pin(I2C_SDA_SLAVE), scl=Pin(I2C_SCL_SLAVE), addr=I2C_SLAVE_ADDR)


wl1_status = 0

last_pump_status = None


while True:

    ph_raw = ph_adc.read_u16()

    tds_raw = tds_adc.read_u16()

    water_raw = water_adc.read_u16()


    tds_ppm = int(tds_raw * 1000 / 65535)

    ph_val = (ph_raw / 65535) * 14

    water2_status = 1 if water_raw < 30000 else 0


    req = i2c_slave.request()

    if req:

        if req.is_write:

            data = req.read(1)

            if data:

                wl1_status = data[0]

        if req.is_read:

            req.write(bytes([water2_status]))


    if wl1_status == 1 and tds_ppm < 15:

        pump3.on()

        pump_state = "ON"

    else:

        pump3.off()

        pump_state = "OFF"


    if pump_state != last_pump_status:

        print(f"Pompa3: {pump_state} | WL1: {wl1_status} | TDS: {tds_ppm}")

        last_pump_status = pump_state


    kualitas = "Air Baik" if 6.0 <= ph_val <= 8.0 else "Air Buruk"

    if lcd:

        try:

            lcd.clear()

            lcd.move_to(0, 0)

            lcd.putstr(f"TDS:{tds_ppm:>4}ppm")

            lcd.move_to(0, 1)

            lcd.putstr(kualitas.center(LCD_COLS))

        except:

            pass


    sleep_ms(500)

 

PICO 1



PICO 2

Skema  rangkayan 


   Rakayan 


 

2. Prinsip kerja 

Sistem ini terdiri dari dua Raspberry Pi Pico yang saling terhubung menggunakan komunikasi I2C, di mana:

  • Pico 1 (Master): menerima input dari sensor level air (tangki 1) dan mengendalikan pompa 1 dan pompa 2.

  • Pico 2 (Slave): menerima input dari sensor water level 2, sensor TDS, dan sensor pH, serta mengendalikan LCD dan pompa 3.

1. Pengisian Air ke Tangki 1 (Pico 1)

  • Ketika sensor level air pada tangki 1 mendeteksi bahwa tangki kosong, maka, Pico 1 mengaktifkan pompa 1 untuk mengisi air ke tangki 1.

  • Setelah tangki 1 terisi penuh, sensor mendeteksi kondisi tersebut dan Pompa 1 dimatikan secara otomatis oleh Pico 1. 

2. Pengisian Air ke Tangki 2 (Pico 2 → komunikasi ke Pico 1)

  • Ketika sensor level air pada tangki 2 (yang berada di Pico 2) mendeteksi bahwa tangki 2 kosong, maka:

    • Pico 2 mengirimkan perintah melalui I2C ke Pico 1 (Master).

    • Pico 1 kemudian mengaktifkan pompa 2 untuk mengisi tangki 2.

  • Setelah tangki 2 terisi penuh, sensor mengirim perintah lagi agar pompa 2 dimatikan.

3. Deteksi Kualitas Air (Pico 2)

  • Air di tangki 2 yang sudah melalui proses penyaringan akan diperiksa oleh sensor TDS:

    • Jika nilai PPM < 15, maka air dianggap jernih dan layak digunakan oleh petani.

    • Jika nilai PPM ≥ 15, maka air dianggap kotor, dan:

      • Pompa 3 diaktifkan oleh Pico 2 untuk mengembalikan air ke tangki 1 agar disaring ulang.

  • Data nilai PPM ini juga akan ditampilkan pada LCD oleh Pico 2.

4. Monitoring pH Air (Pico 2)

  • Sensor pH membaca tingkat keasaman air:

    • Jika nilai pH berada di antara 6 hingga 8, maka air dianggap baik.

    • Jika pH berada di luar rentang tersebut, maka air dianggap tidak layak digunakan.

  • Status kualitas air berdasarkan pH juga akan ditampilkan di LCD.

 

 

8. Download File[Kembali]

HTML

Rangkaian Simulasi Pi pico 1 [KliK]

Rangkaian Simulasi Pi pico 2 [KliK]

Rangkaian Skematik [KliK]

Listing Program [KliK]

Video Simulasi [KliK]

Library Sensor pH [KliK]

Library Sensor TDS [KliK]

Library Sensor level water [KliK]

Library I2C [KliK]

Library LCD 16x2 i2c [KliK]

Library pompa [KliK]

Datasheet Sensor  level water [KliK]

Datasheet Sensor TDS [KliK]

Datasheet Sensor pH [KliK]

Datasheet pompa [KliK]

Datasheet Raspberry pi pico [KliK]

Datasheet LCD 16x2 i2c [KliK]








Tidak ada komentar:

Posting Komentar

     BAHAN PRESENTASI     MATA KULIAH ELEKTRONIKA 2022 Oleh Mutia Azzahra 2210953018 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi  1. Darwiso...