Sabtu, 15 Juni 2024

MODUL 4

 

 


Modul 4

CONTROL AND MONITORING FOR HOUSEHOLD WATER

 

1. Pendahuluan[Kembali]

Air merupakan sumber daya vital bagi kehidupan manusia, esensial untuk kesehatan, kebersihan, dan keberlanjutan lingkungan. Namun, kualitas air rumah tangga seringkali terabaikan, sehingga berpotensi membahayakan kesehatan. Air yang tercemar atau tidak sesuai standar kesehatan bisa mengandung bakteri, bahan kimia berbahaya, dan kontaminan lainnya yang dapat menyebabkan berbagai penyakit.

Sistem pemantauan kualitas dan kuantitas air tradisional, yang dilakukan secara manual, seringkali memakan waktu dan tidak mampu memberikan data real-time yang akurat. Hal ini menyulitkan upaya pemantauan dan pengelolaan air, serta mengakibatkan keterlambatan dalam penanganan air yang tidak memenuhi standar. Kondisi ini sangat berisiko bagi kesehatan pengguna, terutama anak-anak, lansia, dan mereka dengan sistem kekebalan tubuh yang lemah.

Untuk mengatasi masalah ini, diperlukan alat yang dapat memonitor kualitas dan kuantitas air secara real-time. Alat ini harus mampu mendeteksi berbagai parameter kualitas air, seperti pH, kadar klorin, tingkat kekeruhan, dan keberadaan bakteri atau bahan kimia berbahaya. Dengan menggunakan sensor canggih dan teknologi IoT (Internet of Things), alat ini dapat memberikan data langsung kepada pengguna melalui aplikasi di smartphone atau perangkat lainnya. Pengguna bisa mendapatkan informasi terkini tentang kualitas air di rumah mereka, sehingga dapat segera mengambil tindakan jika terjadi penurunan kualitas.

Selain itu, alat ini juga dapat membantu dalam pengelolaan kuantitas air. Dengan memonitor penggunaan air secara real-time, pengguna dapat mengidentifikasi kebocoran, penggunaan air berlebih, dan peluang untuk menghemat air. Hal ini tidak hanya membantu menjaga pasokan air bersih tetapi juga mendukung upaya konservasi air yang lebih luas.

Secara keseluruhan, sistem pemantauan kualitas dan kuantitas air yang berbasis teknologi real-time tidak hanya meningkatkan kesehatan dan keselamatan pengguna tetapi juga berkontribusi pada keberlanjutan lingkungan dan pengelolaan sumber daya air yang lebih efisien.

2. Tujuan[Kembali]
  1. Memahami penggunaan mikroprosesor dan mikrokontroler dalam pembuatan prototype.
  2. Menciptakan perangkat yang dapat beroperasi secara otomatis dengan menggunakan mikroprosesor dan mikrokontroler sebagai dasar sistemnya.

3. Alat dan Bahan[Kembali]

1.     a. Arduino UNO R3

 


2.     b. Sensor Ultrasonik (Ultrasonic Sensor) Tipe JSN SR04-T

 

 


3.     c. Sensor pH (pH Sensor) Tipe PH 4502C


 

 

4.     d. Sensor Suhu (Temperatur Sensor) Tipe DS18B20

 



5.     e. Sensor Hujan (Rain Sensor)


 

6.     f. Sensor Kekeruhan (Turbidity Sensor)


 

7.     g. Buzzer

 


8.     h. Tombol (Push Button)

ii   i. LCD 16X2


 

9.     j. Motor Servo



K    k. Toples Plastik


 

 

 

4. Dasar Teori [Kembali]

    

A.    A. Komunikasi: Universal Asynchronous Receiver Transmitter (UART)

Di era digital ini, pertukaran data antar perangkat menjadi hal yang lumrah. Salah satu metode yang umum digunakan adalah melalui antarmuka UART/USART (Universal Asynchronous Receiver Transmitter). Sebelum menyelami fungsi-fungsinya dalam HAL (Hardware Abstraction Layer), mari kita telusuri sekilas mengenai antarmuka dan protokol komunikasinya.

Bayangkan dua perangkat yang ingin saling bertukar informasi. Ada dua pilihan umum: transmisi paralel dan transmisi serial. Pada transmisi paralel, sejumlah jalur komunikasi digunakan, setara dengan ukuran kata data (contoh: delapan jalur independen untuk kata delapan bit). Sedangkan transmisi serial mengirimkan setiap bit dalam kata data secara berurutan, satu per satu. Di sinilah UART/USART berperan. Ia menerjemahkan

urutan bit paralel (biasanya dikelompokkan dalam satu byte) menjadi aliran sinyal kontinu yang mengalir pada satu kabel.

Ketika informasi melintas di antara dua perangkat melalui saluran yang sama, diperlukan kesepakatan antara keduanya (disebut pengirim dan penerima) mengenai pengaturan waktunya. Pengaturan ini menentukan lama waktu yang dibutuhkan untuk mengirimkan setiap bit informasi. Dalam transmisi sinkron, pengirim dan penerima menggunakan clock (jam) yang sama yang dihasilkan oleh salah satu perangkat (biasanya yang bertindak sebagai master dalam sistem interkoneksi).


 

Gambar 1: Komunikasi serial antara dua perangkat menggunakan sumber clock bersama

Gambar 1 menampilkan diagram waktu tipikal¹ yang memperlihatkan Perangkat A mengirimkan satu byte (0b01101001) secara serial ke Perangkat B menggunakan clock referensi bersama. Clock bersama ini juga digunakan untuk menyepakati kapan harus mulai mensample urutan bit: ketika perangkat master mulai menclocking jalur khusus, ini menandakan bahwa perangkat tersebut akan mengirimkan urutan bit.

Dalam transmisi sinkron, kecepatan dan durasi transmisi ditentukan oleh clock: frekuensinya menentukan seberapa cepat kita dapat mengirimkan satu byte pada saluran komunikasi. Namun, jika kedua perangkat yang terlibat dalam transmisi data sepakat mengenai lamanya waktu yang dibutuhkan untuk mengirimkan satu bit dan kapan harus mulai dan selesai mensample bit yang dikirimkan, maka penggunaan jalur clock khusus dapat dihindari. Dalam kasus ini, kita memiliki transmisi asinkron.

 


Gambar 2: Diagram waktu komunikasi serial tanpa garis clock khusus

 

Gambar 2 memperlihatkan diagram waktu untuk transmisi asinkron, mengilustrasikan urutan dan waktu pengiriman berbagai elemen data dalam transmisi serial. Pada awalnya, terdapat keadaan idle yang dilambangkan dengan sinyal level tinggi, menandakan tidak adanya transmisi yang sedang berlangsung. Transmisi dimulai dengan bit START, direpresentasikan oleh level sinyal rendah (low level). Receiver mendeteksi negative edge (penurunan level sinyal) dari bit START. Setelah 1,5 periode bit (T1.5bit), proses pengambilan sampel (sampling) bit data dimulai. Delapan bit data disampling, dengan Least Significant Bit (LSB) atau bit dengan nilai terkecil biasanya dikirimkan terlebih dahulu. Bit paritas (opsional) dapat ditambahkan setelah bit data untuk keperluan pengecekan kesalahan. Bit ini seringkali dihilangkan jika saluran transmisi diasumsikan bebas derau atau terdapat mekanisme pengecekan kesalahan pada layer protokol yang lebih tinggi. Terakhir, transmisi diakhiri dengan bit STOP yang memiliki durasi 1,5 periode bit. Diagram waktu ini memberikan gambaran yang jelas tentang bagaimana data ditransmisikan secara serial dalam sistem asinkron, dengan mempertimbangkan peran penting dari setiap elemen data dalam memastikan transmisi yang akurat dan andal.

 Gambar 3: UART dan USART

Universal Synchronous/Asynchronous Receiver/Transmitter (UART/USART) adalah perangkat yang mampu mengirimkan data secara serial menggunakan dua I/O (Input/Output). Satu I/O bertindak sebagai jalur pengiriman (TX) dan satu lainnya sebagai jalur penerimaan (RX). Antarmuka sinkron (USART) memiliki jalur I/O tambahan sebagai jalur clock, sedangkan antarmuka asinkron (UART) hanya menggunakan dua jalur I/O RX/TX (lihat Gambar 3). Secara umum, antarmuka USART disebut sebagai USART, sedangkan antarmuka UART disebut sebagai UART.

Meskipun UART/USART menentukan metode pensinyalan, antarmuka ini tidak menentukan level tegangan yang digunakan. Artinya, UART/USART pada mikrokontroler STM32 akan menggunakan level tegangan yang sama dengan I/O mikrokontroler, yaitu mendekati tegangan VDD (level tegangan ini juga sering disebut sebagai level tegangan TTL). Cara penerjemahan level tegangan ini untuk memungkinkan komunikasi serial di luar papan sirkuit memerlukan standar komunikasi lain. Sebagai contoh, EIA-RS232 dan EIA-RS485 adalah dua standar yang sangat populer yang menentukan level pensinyalan, beserta waktu dan makna sinyal tersebut, serta ukuran fisik dan pinout konektor. Selain itu, antarmuka UART/USART dapat digunakan untuk bertukar data menggunakan antarmuka serial fisik dan logis lainnya. Misalnya, FT232RL adalah IC yang populer untuk memetakan UART ke antarmuka USB, seperti yang ditunjukkan pada Gambar 4.

Kehadiran jalur clock khusus, atau kesepakatan bersama tentang frekuensi transmisi, tidak menjamin penerima aliran byte (byte stream) mampu memprosesnya pada kecepatan transmisi yang sama dengan pengirim. Oleh karena itu, beberapa standar komunikasi, seperti RS232 dan RS485, menyediakan kemungkinan untuk menggunakan jalur Kontrol Alur Perangkat Keras (Hardware Flow Control) khusus. Sebagai contoh, dua perangkat yang berkomunikasi menggunakan antarmuka RS232 dapat berbagi dua jalur tambahan, yaitu Request To Send (RTS) dan Clear To Send (CTS). Pengirim akan mengatur jalur RTS-nya, yang memberi sinyal kepada penerima untuk mulai memantau jalur input datanya. Ketika siap menerima data, penerima akan menaikkan jalur komplementernya, CTS, yang memberi sinyal kepada pengirim untuk mulai mengirim data, dan untuk pengirim mulai memantau jalur output data slave.

 


Gambar 4: Rangkaian tipikal berbasis FT232RL yang digunakan untuk mengkonversi antarmuka TTL UART 3.3V ke USB.

 

Mikrokontroler STM32 dilengkapi dengan antarmuka UART/USART dalam jumlah yang bervariasi. Antarmuka ini dapat dikonfigurasi untuk beroperasi dalam mode sinkron maupun asinkron. Beberapa MCU STM32 bahkan menyediakan antarmuka khusus yang hanya berfungsi sebagai UART. Tabel 1 mencantumkan daftar UART/USART yang tersedia pada MCU STM32 yang digunakan pada seluruh papan Nucleo.

Sebagian besar antarmuka USART pada STM32 juga mampu menerapkan Kontrol Alur Perangkat Keras (Hardware Flow Control) secara otomatis, baik untuk standar RS232 maupun RS485.

Semua papan Nucleo-64 dirancang agar USART2 pada MCU terhubung ke antarmuka ST-LINK. Ketika kita menginstal driver ST-LINK, driver tambahan untuk Virtual COM Port (VCP) juga ikut terinstal. Ini memungkinkan kita untuk mengakses USART2 pada MCU target menggunakan antarmuka USB, tanpa memerlukan konverter TTL/USB khusus. Dengan menggunakan program emulasi terminal, kita dapat bertukar pesan dan data dengan papan Nucleo.

CubeHAL memisahkan API untuk pengelolaan antarmuka UART dan USART. Semua fungsi dan penangan tipe-C yang digunakan untuk menangani USART diawali dengan awalan HAL_USART dan terdapat dalam file stm32xxx_hal_usart.{c,h}. Sementara itu, fungsi dan penangan yang terkait dengan pengelolaan UART diawali dengan awalan HAL_UART dan terdapat dalam file stm32xxx_hal_uart.{c,h}.

Karena kedua modul tersebut secara konseptual identik, dan karena UART merupakan bentuk interkoneksi serial yang paling umum antara modul yang berbeda, maka buku ini hanya akan membahas fitur-fitur dari modul HAL_UART.

 

B.    B. Alat dan Komponen

1.     1. Arduino UNO


 

Board Topology

 

Spesifikasi Connector Pinout Analog

Pin

Function

Type

Description

1

NC

NC

Not Connected

2

IOREF

IOREF

Reference for digital logic V - connected to 5V

3

Reset

Reset

Reset

4

+3V3

Power

+3V3 Power Rail

5

+5V

Power

+5V Power Rail

6

GND

Power

Ground

7

GND

Power

Ground

8

VIN

Power

Voltage Input

9

A0

Analog/GPIO

Analog input 0 /GPIO

10

A1

Analog/GPIO

Analog input 1 /GPIO

11

A2

Analog/GPIO

Analog input 2 /GPIO

12

A3

Analog/GPIO

Analog input 3 /GPIO

13

A4/SDA

Analog Input/I2C

Analog input 4/I2C Data line

14

A5/SCL

Analog Input/I2C

Analog input 5/I2C Clock line

 

Digital

Pin

Function

Type

Description

1

D0

Digital/GPIO

Digital Pin 0/GPIO

2

D1

Digital/GPIO

Digital Pin 1/GPIO

3

D2

Digital/GPIO

Digital Pin 2/GPIO

4

D3

Digital/GPIO

Digital Pin 3/GPIO

5

D4

Digital/GPIO

Digital Pin 4/GPIO

6

D5

Digital/GPIO

Digital Pin 5/GPIO

7

D6

Digital/GPIO

Digital Pin 6/GPIO

8

D7

Digital/GPIO

Digital Pin 7/GPIO

9

D8

Digital/GPIO

Digital Pin 8/GPIO

10

D9

Digital/GPIO

Digital Pin 9/GPIO

11

SS

Digital

SPI Chip Select

12

MOSI

Digital

SPI Main Out Secondary In

13

MISO

Digital

SPI Main In Secondary Out

14

SCK

Digital

SPI Serial Clock Output

15

GND

Power

Ground

16

AREF

Digital

Analog Reference Voltage

17

A4/SD4

Digital

Analog Input 4/I2C Data Line (Duplicated)

18

A5/SD5

Digital

Analog Input 5/I2C Clock Line (Duplicated)

 

2.     2. Sensor Ultrasonik (Ultrasonic Sensor) Tipe JSN-SR04T

Sensor ultrasonik (ultrasonic sensor) merupakan transduser yang dapat mengukur jarak dan mendeteksi keberadaan objek tanpa perlu kontak fisik.  Prinsip kerja sensor ini menggunakan emisi dan pemantauan gema ultrasonik.  Jarak efektif sensor di udara bervariasi tergantung jenis sensor dan sifat objek, umumnya mulai dari beberapa sentimeter hingga beberapa meter. Transduser ultrasonik tersebut menghasilkan dan memancarkan pulsa ultrasonik yang kemudian dipantulkan kembali ke sensor oleh objek yang berada dalam jangkauannya.

 


Gambar 1: Ultrasonic Time-of-Flight Measurement

 

Sensor ultrasonik merupakan transduser piezoelektrik, yang artinya ia memiliki kemampuan untuk mengubah sinyal listrik menjadi getaran mekanis, dan sebaliknya, getaran mekanis menjadi sinyal listrik.  Oleh karena itu, dalam pendekatan monostatik, sensor ultrasonik bertindak sebagai transceiver yang berfungsi sebagai pemancar (speaker) dan penerima (microphone) pada frekuensi tunggal.  Sensor ini mampu menangkap perbedaan waktu antara gema yang dipancarkan dan diterima.  Karena kecepatan suara adalah besaran yang diketahui, waktu pulang-pergi yang ditangkap dapat digunakan untuk menghitung jarak antara sensor dan objek. Persamaan 1 menunjukkan perhitungan jarak menggunakan sensor ultrasonik.


Sensor ultrasonik merupakan transduser piezoelektrik yang dapat mengukur jarak dan mendeteksi keberadaan objek tanpa kontak fisik. Sensor ini bekerja dengan memancarkan pulsa ultrasonik dan mendeteksi gema yang dipantulkan oleh objek. Jarak objek dapat dihitung berdasarkan waktu tempuh pulsa ultrasonik. Sensor ultrasonik mampu mendeteksi berbagai jenis material, seperti logam, plastik, kaca, kayu, batu, pasir, minyak, dan air. Namun, kemampuan deteksi dapat terpengaruh oleh bentuk, transparansi, warna, dan sifat objek, seperti sudut permukaan dan porositas.

Secara keseluruhan, sensor ultrasonik menawarkan solusi pengukuran jarak dan deteksi objek yang handal, non-kontak, dan serbaguna untuk berbagai aplikasi.

 


Gambar 2. Ultrasonic System Level Block Diagram

Sensor JSN-SR04T ini sangat mirip dengan modul ultrasonik standar seperti HC-SR04, tetapi sensor ini menggunakan transduser tunggal yang tahan air dan menawarkan lebih banyak metode untuk dihubungkan ke mikrokontroler. Karena transdusernya tahan air, sensor ini dapat digunakan untuk penginderaan di dalam atau luar ruangan seperti sensor parkir mobil, alarm keamanan, penghindar rintangan, atau pemantau ketinggian air di tangki penyimpanan.

Seperti sensor ultrasonik lainnya yang menggunakan gelombang suara yang memantul dari objek untuk mendeteksinya, sensor ini dapat mendeteksi objek keras dengan cukup baik termasuk permukaan air yang tenang, tetapi deteksi kain lembut atau material penyerap suara lainnya kurang konsisten dan memerlukan pengujian empiris untuk menentukan kesesuaian untuk aplikasi tertentu. Karena modul ini menggunakan gelombang suara untuk deteksi, maka tidak sensitif terhadap sumber cahaya atau permukaan reflektif optik seperti inframerah. Selain itu, karena suara bergerak relatif lambat, maka waktu yang dibutuhkan suara untuk mencapai objek dan gema kembali dapat diukur, sehingga jarak ke objek dapat dihitung dengan akurasi yang cukup baik. Jangkauan deteksi dan pengukurannya adalah dari 23 cm hingga 600 cm (sekitar 9 inci hingga 20 kaki) dengan akurasi yang dinyatakan 1 cm. Bunyi ultrasonik berdenyut pada 40 kHz dan tidak terdengar oleh telinga manusia. Jika gema tidak kembali (tidak ada objek yang terdeteksi), modul akan timeout setelah penundaan tetap. Ini diperlukan untuk mencegah modul hang jika tidak ada gema yang kembali.

 

3.     3. Sensor pH (pH Sensor) Tipe PH 4502C

 

Sensor pH merupakan salah satu instrumen terpenting untuk pengukuran pH dan umum digunakan dalam pemantauan kualitas air.  Sensor jenis ini mampu mengukur tingkat alkalinitas dan keasaman pada air dan larutan lainnya.  Ketika digunakan dengan tepat, sensor pH dapat menjamin keamanan dan kualitas produk serta proses yang berlangsung di instalasi pengolahan air limbah atau pabrik manufaktur. 

Dalam kebanyakan kasus, kisaran pH standar diwakili oleh nilai dalam kisaran 0-14. Ketika suatu zat memiliki nilai pH 7, ini dianggap netral. Nilai pH di atas 7 mewakili alkalinitas yang lebih tinggi, sedangkan zat dengan nilai pH di bawah 7 dianggap lebih asam. Misalnya, pasta gigi biasanya memiliki pH 8-9. Di sisi lain, asam lambung memiliki pH 2.

Perbedaan antara zat alkali dan asam penting bagi setiap perusahaan yang menggunakan menara pendingin, boiler, proses manufaktur, kontrol kolam renang dan berbagai pemantauan lingkungan. PH standar tubuh manusia adalah 7,4, yang penting bagi tubuh untuk berfungsi secara efektif. Jika komposisi tubuh menjadi terlalu asam atau terlalu basa, itu akan tampak kembali ke keadaan netral.

Output elektroda pH adalah Milivolt, dan nilai pH hubungan ditunjukkan sebagai berikut (25 °C):

Tabel 1. Karakteristik elektroda pH

 

4.     4. Sensor Suhu (Temperatur Sensor) Tipe DS18B20

Termometer digital DS18B20 menyediakan pengukuran suhu Celcius 9-bit hingga 12-bit dan memiliki fungsi alarm dengan titik pemicu atas dan bawah yang tidak dapat diprogram pengguna. DS18B20 berkomunikasi melalui bus 1-Wire yang menurut definisi hanya membutuhkan satu jalur data (dan ground) untuk komunikasi dengan mikroprosesor pusat. Selain itu, DS18B20 dapat memperoleh daya langsung dari jalur data ("kekuatan parasit"), menghilangkan kebutuhan akan catu daya eksternal. Setiap DS18B20 memiliki kode seri 64-bit yang unik, yang memungkinkan beberapa DS18B20 berfungsi pada bus 1-Wire yang sama. Dengan demikian, mudah untuk menggunakan satu mikroprosesor untuk mengontrol banyak DS18B20 yang didistribusikan di area yang luas. Aplikasi yang dapat memanfaatkan fitur ini termasuk kontrol lingkungan HVAC, sistem pemantauan suhu di dalam gedung, peralatan, atau mesin, dan sistem pemantauan dan kontrol proses.

Gambar 1. DS18B20 Block Diagram

Gambar 2. Konfigurasi Pin

Data suhu keluaran DS18B20 dikalibrasi dalam derajat Celcius; untuk aplikasi Fahrenheit, tabel pencarian atau rutinitas konversi harus digunakan. Data suhu disimpan sebagai nomor komplemen dua yang diperpanjang tanda 16-bit dalam register suhu (lihat Gambar 4). Bit tanda (S) menunjukkan apakah suhunya positif atau negatif: untuk angka positif S = 0 dan untuk angka negatif S = 1. Jika DS18B20 dikonfigurasi untuk resolusi 12-bit, semua bit dalam register suhu akan berisi data yang valid. Untuk resolusi 11-bit, bit 0 tidak terdefinisi. Untuk resolusi 10-bit, bit 1 dan 0 tidak terdefinisi, dan untuk resolusi 9-bit bit 2, 1, dan 0 tidak terdefinisi. Tabel 1 memberikan contoh data output digital dan pembacaan suhu yang sesuai untuk konversi resolusi 12-bit.

 

 Gambar 3. Temperature Register Format

 

 

Tabel 1. Temperature/Data Relationship

 


Gambar 4. Typical Perfomance Curve

 

5.     4. Sensor Hujan (Rain Sensor) Tipe

 

Rain Sensor memiliki beberapa fitur unggulan. Sensor ini bekerja pada tegangan 5V dan menyediakan dua format output, yaitu output digital switching (0 dan 1) serta output tegangan analog AO. Sensitivitasnya dapat diatur menggunakan potensiometer. Sensor ini menggunakan komparator LM393 yang mendukung berbagai tegangan. Sinyal output dari komparator memiliki bentuk gelombang yang bersih dan kemampuan penggerak yang baik, dengan kapasitas lebih dari 15mA. Selain itu, sensor ini juga dilengkapi dengan perlindungan anti-oksidasi dan anti-konduktivitas, sehingga dapat digunakan dalam jangka waktu yang lama. Sensor ini juga memiliki lubang baut untuk memudahkan instalasi. Dimensi papan PCB kecilnya adalah 3,2cm x 1,4cm.

 

Interfacing rain sensor dengan mikrokontroler seperti 8051, Arduino, atau PIC itu sederhana. Modul rain board terhubung dengan modul kontrol sensor raindrop seperti yang ditunjukkan pada diagram di bawah ini.

 


 

Gambar 1: Diagram Sirkuit Rain Sensor

 

Seperti terlihat pada gambar di atas, resistor R1 dan modul rain board bertindak sebagai pembagi tegangan. Kapasitor C1 dan C2 digunakan sebagai elemen bias. Terminal non-inverting mendapatkan input dari titik sambungan R1 dan modul rain board, yang juga terhubung ke terminal A0 modul kontrol. Terminal inverting LM393 mendapatkan input dari potensiometer (R2), yang bertindak sebagai pembagi tegangan. Dengan mengatur R2, kita dapat mengubah tegangan input ke terminal inverting, yang mempengaruhi sensitivitas modul kontrol. Resistor R3 dan R4 berfungsi sebagai pembatas arus, sedangkan resistor R5 berfungsi sebagai pull-up untuk menjaga bus tetap dalam kondisi tinggi saat tidak digunakan.

 

 

6.     5. Sensor Kekeruhan (Turbidity Sensor) Tipe SEN0189

      Sensor turbiditas mendeteksi kualitas air dengan mengukur tingkat kekeruhan. Ini menggunakan cahaya untuk mendeteksi partikel tersuspensi dalam air dengan mengukur transmisi cahaya dan laju hamburan, yang berubah dengan jumlah total padatan tersuspensi (TSS) dalam air. Ketika TTS meningkat, tingkat kekeruhan cairan meningkat.  Sensor turbiditas digunakan untuk mengukur kualitas air di sungai dan sungai, pengukuran air limbah dan limbah, instrumentasi kontrol untuk kolam pengendapan, penelitian transportasi sedimen dan pengukuran laboratorium.  Sensor ini menyediakan mode output sinyal analog dan digital. Ambang batas dapat disesuaikan saat dalam mode sinyal digital. Anda dapat memilih mode sesuai dengan MCU Anda. 

Spesifikasinya meliputi

    Tegangan Operasi: 5V DC  Operasi Saat Ini: 40mA (MAX)  Waktu Respons: <500ms  Resistansi isolasi: 100M (mnt)  Metode output: Output analog: 0-4.5V Output Digital: Sinyal level Tinggi / Rendah (Anda dapat menyesuaikan nilai ambang batas dengan menyesuaikan potensiometer)  Suhu Operasional: 5 ~ 90  Suhu penyimpanan: -10 ~ 90  Berat: 30g  Dimensi adaptor:  38mm * 28mm * 10mm / 1.5 inci * 1.1 inci * 0.4 inci


 

Kurva karakteristik: Tegangan dan suhu

 

1.     6. Proteus

      Proteus Design Suite adalah perangkat lunak yang dirancang oleh para ahli khusus untuk mendesain PCB yang dilengkapi dengan simulasi rangkaian sebelum diupgrade menjadi PCB. Dalam Proteus Design Suite terdapat beberapa fitur, diantaranya:

1.              Schematic Capture merupakan tampilan awal yang ada didalam perangkat lunak, menu ini berfungsi sebagai tempat untuk mendesain atau merangkai wire atau pengkabelan dan juga penyambungan antar komponen.

2.              PCB Layout merupakan tampilan kedua yang ada didalam perangkat lunak Proteus Design Suite dimana menu ini digunakan sebagai tata letak komponen dan juga penempatan terminal yang divisualisasikan secara 2 dimensi bahkan kita dapat mengatur ukuran dan bentuk dari PCB. Disini kita dapat mengatur pengkabelan yang sebelumnya tertumpuk atau bermasalah menjadi lebih teratur sehingga tidak terdapat jalur yang saling terhubung.

3.              3D Visualizer menjadi Bagian ini merupakan yang paling menarik karena kita dapat melihat secara langsung bentuk asli dari komponen-komponen yang sebelumnya di schematic dan juga layout berbentuk simbol sehingga kita dapat membayangkan apakah rangkaian yang kita buat sesuai dengan keinginan yang kita inginkan. Bukan hanya melihat saja, kita dapat mengeksport ke dalam bentuk pdf untuk keperluan review.

4.              Source Code merupakan sebuah menu yang memungkinkan kita untuk menuliskan kode pemprograman yang biasanya digunakan untuk keperluan simulasi kontroller misalnya arduino dan juga AVR . Sehingga kita dapat mencoba mengisi program tanpa harus menggunakan kontroller yang nyata.

 

2.     7. Arduino IDE

Arduino dapat diprogram menggunakan bahasa pemrograman khusus yang disebut dengan Arduino IDE (Integrated Development Environment). Arduino IDE adalah perangkat lunak yang digunakan untuk mengembangkan dan memprogram mikrokontroler Arduino. Arduino IDE memungkinkan pengguna untuk membuat program untuk mikrokontroler Arduino dengan menggunakan bahasa pemrograman C atau C++. Perangkat lunak ini memiliki antarmuka yang sederhana dan mudah digunakan, bahkan untuk pengguna yang belum berpengalaman dalam pemrograman.

 

Untuk mulai menggunakan Arduino IDE, pertama-tama kita perlu mengunduh dan menginstal perangkat lunak dari situs resmi Arduino. Setelah diinstal, buka Arduino IDE dan pilih jenis board Arduino yang akan digunakan. Ada berbagai jenis board Arduino yang tersedia seperti Arduino Uno, Mega, Nano, dan lain-lain. Pastikan untuk memilih jenis board yang sesuai dengan proyek yang akan dibuat.

 

Setelah memilih jenis board, langkah selanjutnya adalah membuat program. Program dapat ditulis dengan menggunakan bahasa pemrograman C atau C++. Arduino IDE sudah menyediakan berbagai library dan contoh program yang dapat digunakan untuk mempermudah pembuatan program.

 

Setelah menulis program, kita perlu mengupload program ke mikrokontroler Arduino. Pastikan mikrokontroler Arduino sudah terhubung dengan komputer melalui kabel USB. Klik tombol upload di Arduino IDE untuk mengupload program ke mikrokontroler.



5. Percobaan [Kembali]

a. Prosedur[Kembali]
  1. Siapkan semua alat dan komponen yang dibutuhhkan
  2. Rangkai semua komponen.
  3. Buka programpada arduino IDE dan upload pada arduino Master dan Slave.
  4. Setelah selesai proses upoad, jalan kan rangkaian sesuai dengan prinsip kerja yang telah dibuat.
  5. Selesai
        Pada rangkaian control and monitoring for houshold water ini menggunakan dua arduino yang saling terhubung dan menggunakan komunikasi data UART. Untuk arduino pertama perangkat yang terhubung adalah: pin analog A0 terhubung dengan Turbidity sensor, Pin Analog A1 terhubung dengan pH meter, Pin analog A2 terhubung dengan sensor suhu, sensor ultrasonic terhubung dengan pin 6 dan 7, rain sensor terhubung dengan pin 5, pin IN1 motor driver L293D terhubung dengan pin 4, pin IN2 motor driver L293D terhubung dengan pin 3, pin EN1 motor driver L293D terhubung dengan pin 2 . Untuk arduino kedua perangkat yang terhubung adalah: Button 1 pada pin 9, button 2 pada pin 8, Buzzer pada pin 10, pin 7 terhubung dengan pin IN1 L293D, pin 6 terhubung dengan pin IN2 L293D, pin 5 terhubung dengan pin EN1 L293D, pin 4 terhubung dengan pin EN2 L293D, pin 3 terhubung dengan pin IN3 L293D, pin 0 terhubung dengan pin IN4 L293D, pin A4 terhubung dengan pin SCL PCF8574, dan pin A5 terhubung dengan SDA PCF8574. PCF8574 terhubung dengan LCD 16x2.

b. Hardware[Kembali]

c. Rangkaian Simulasi dan Prinsip Kerja[Kembali]



d. Prinsip Kerja[kembali]
 

 
 

Cara kerja dari rangkaian ini adalah jika rain sensor mendeteksi tetesan air hujan dan sensor ultrasonic mendeteksi ketinggian air kurang dari 80% ketinggian wadah maka motor akan membuka tutup wadah monitoring. Motor yang terhubung dengan Arduino 1 juga  akan bergerak menutup tutup wadah kembali jika tetesan air hujan sudah berhenti atau ketinggian air  besar sama dengan 80% ketinggian wadah. Air akan dimonitoring oleh turbidity, pH sensor , dan sensor suhu. hasil monitoring akan ditampilkan pada LCD yang terhubung dengan Arduino 2. Kriteria air yang diloloskan ke wadah air bersih adalah air yang memiliki pH 6,5 hingga 8,5 dan NTU 2 hingga 2,5. jika tidak memenuhi kriteria, buzzer akan berbunyi maka pompa air akan memindahkan air ke tempat filtering atau bisa juga pengguna menekan button satu untuk menghidupkan pompa yang akan membawa air menuju proses filtering jika kurang yakin dengan hasil monitoring dan filtering.

Jika tidak yakin dengan air hasil filtrasi, maka air bisa dikembalikan lagi pada wadah monitoring dan dilakukan monitoring ulang. 

e. Flowchart dan listing program[Kembali]

Arduino 1
 

 Arduino 2
 
 
Listing program:
 
Arduino 1:
 
//input library
#include <SoftwareSerial.h>
#include <NewPing.h>

// Definisi pin untuk sensor dan aktuator
#define TURBIDITY_PIN A0  // Pin untuk sensor kekeruhan
#define PH_PIN A1         // Pin untuk sensor pH
#define TEMP_PIN A2       // Pin untuk sensor suhu
#define ULTRASONIC_TRIG_PIN 7  // Pin trig untuk sensor ultrasonik
#define ULTRASONIC_ECHO_PIN 6  // Pin echo untuk sensor ultrasonik
#define RAIN_SENSOR_PIN 5      // Pin untuk sensor hujan
#define MOTOR_IN1_PIN 4        // Pin IN1 pada motor driver
#define MOTOR_IN2_PIN 3        // Pin IN2 pada motor driver
#define MOTOR_EN1_PIN 2        // Pin EN1 pada motor driver

// Variabel untuk menyimpan data sensor
float turbidity, ph; //float itu tipe data bilangan desimal
double temp;
int waterLevel;//int untuk bilangan bulat

// Inisialisasi objek SoftwareSerial untuk komunikasi UART
SoftwareSerial mySerial(0, 1); // RX, TX

// Inisialisasi objek NewPing
#define MAX_DISTANCE 600  // Maksimal jarak dalam cm
NewPing sonar(ULTRASONIC_TRIG_PIN, ULTRASONIC_ECHO_PIN, MAX_DISTANCE);

void setup() {
  // Inisialisasi pin
  pinMode(TURBIDITY_PIN, INPUT);  // Pin untuk sensor kekeruhan sebagai input
  pinMode(PH_PIN, INPUT);         // Pin untuk sensor pH sebagai input
  pinMode(TEMP_PIN, INPUT);       // Pin untuk sensor suhu sebagai input
  pinMode(RAIN_SENSOR_PIN, INPUT);// Pin untuk sensor hujan sebagai input
  pinMode(MOTOR_IN1_PIN, OUTPUT); // Pin IN1 pada motor driver sebagai output
  pinMode(MOTOR_IN2_PIN, OUTPUT); // Pin IN2 pada motor driver sebagai output
  pinMode(MOTOR_EN1_PIN, OUTPUT); // Pin EN1 pada motor driver sebagai output

  // Inisialisasi komunikasi serial
  Serial.begin(19200);  // Kecepatan komunikasi serial ke komputer
  mySerial.begin(19200); // Kecepatan komunikasi serial ke Arduino kedua
}

void loop() {
  // Baca data dari sensor
  turbidity = analogRead(TURBIDITY_PIN) * (5.0 / 1023.0); // Baca data sensor kekeruhan
  ph = analogRead(PH_PIN) * (5.0 / 1023.0);               // Baca data sensor pH
  temp = analogRead(TEMP_PIN) * (5.0 / 1023.0);           // Baca data sensor suhu
  waterLevel = sonar.ping_cm();                           // Baca data sensor ultrasonik

  // Kirim data ke Arduino kedua
  mySerial.print(turbidity);
  mySerial.print(","); //koma untuk memisahkan data satu dengan yang lainnya
  mySerial.print(ph);
  mySerial.print(",");
  mySerial.print(temp);
  mySerial.print(",");
  mySerial.println(waterLevel);

  // Baca data dari rain sensor
  bool isRaining = digitalRead(RAIN_SENSOR_PIN); // Baca status sensor hujan, bool untuk tipe data logika 0 atau 1

  // Logika untuk mengontrol motor
  if (isRaining == true && waterLevel < 14) { // Jika hujan dan ketinggian air kurang dari 24 cm (80% dari 17 cm)
    // Buka tutup wadah monitoring
    digitalWrite(MOTOR_IN1_PIN, HIGH);
    digitalWrite(MOTOR_IN2_PIN, LOW);
    analogWrite(MOTOR_EN1_PIN, 255);
  } else if (!isRaining == false || waterLevel >= 14) { // Jika tidak hujan atau ketinggian air >= 17 cm
    // Tutup tutup wadah monitoring
    digitalWrite(MOTOR_IN1_PIN, LOW);
    digitalWrite(MOTOR_IN2_PIN, HIGH);
    analogWrite(MOTOR_EN1_PIN, 255);
  }

  delay(1000); // Jeda 1 detik antara setiap loop, 1 detik=1000 milidetik
}



Arduino 2
 
#include <LiquidCrystal_I2C.h>  // Library untuk LCD I2C
#include <PCF8574.h>  // Library untuk ekspander I/O I2C PCF8574
#include <SoftwareSerial.h>  // Library untuk komunikasi serial dengan perangkat lain
#include <Servo.h>  // Library untuk kontrol motor servo

// Definisi pin untuk sensor dan aktuator
#define BUTTON1_PIN 9  // Pin untuk tombol 1
#define BUTTON2_PIN 8  // Pin untuk tombol 2
#define BUZZER_PIN 10  // Pin untuk buzzer
#define MOTOR_IN1_PIN 7  // Pin IN1 pada motor driver
#define MOTOR_IN2_PIN 6  // Pin IN2 pada motor driver
#define MOTOR_EN1_PIN 5  // Pin EN1 pada motor driver
#define SERVO_PIN 4  // Pin untuk motor servo

//Komunikasi I2C menggunakan dua pin standar pada Arduino,
// yaitu pin SDA (data) dan SCL (clock). Oleh karena itu,
// tidak perlu mendefinisikan pin secara eksplisit untuk modul PCF8574
//karena Arduino akan secara otomatis menggunakan pin yang telah ditetapkan untuk komunikasi I2C.

// Inisialisasi objek SoftwareSerial untuk komunikasi UART
SoftwareSerial mySerial(0, 1); // RX, TX

// Inisialisasi LCD menggunakan PCF8574
PCF8574 pcf8574(0x27); // Alamat I2C untuk PCF8574
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD

// Inisialisasi objek Servo
Servo servo;  // Objek untuk kontrol motor servo

// Variabel untuk menyimpan data sensor
float turbidity, ph;
double temp;
int waterLevel;

// Variabel untuk penjadwalan tampilan LCD
unsigned long previousMillis = 0;
const long interval = 5000; // Interval 5 detik
int displayState = 0;

void setup() {
  // Inisialisasi pin
  pinMode(BUTTON1_PIN, INPUT); // Pin untuk tombol 1 sebagai input
  pinMode(BUTTON2_PIN, INPUT); // Pin untuk tombol 2 sebagai input
  pinMode(BUZZER_PIN, OUTPUT); // Pin untuk buzzer sebagai output
  pinMode(MOTOR_IN1_PIN, OUTPUT); // Pin IN1 pada motor driver sebagai output
  pinMode(MOTOR_IN2_PIN, OUTPUT); // Pin IN2 pada motor driver sebagai output
  pinMode(MOTOR_EN1_PIN, OUTPUT); // Pin EN1 pada motor driver sebagai output
  //pinMode(MOTOR_EN2_PIN, OUTPUT); // Pin EN2 pada motor driver sebagai output - Tidak digunakan lagi

  // Inisialisasi komunikasi serial
  Serial.begin(19200);   // Kecepatan komunikasi serial ke komputer
  mySerial.begin(19200); // Kecepatan komunikasi serial ke Arduino pertama

  // Inisialisasi LCD
  Wire.begin();     // Mulai komunikasi I2C
  lcd.init();       // Inisialisasi LCD
  lcd.backlight();  // Nyalakan backlight LCD

  // Inisialisasi motor servo
  servo.attach(SERVO_PIN);  // Menentukan pin untuk motor servo
  servo.write(0);  // Set posisi awal servo ke 0 derajat
}

void loop() {
  // Baca data dari Arduino pertama
  if (mySerial.available()) {
    String data = mySerial.readStringUntil('\n'); // Baca data dari serial hingga karakter newline
    sscanf(data.c_str(), "%f,%f,%f,%d", &turbidity, &ph, &temp, &waterLevel); // Parse data yang diterima
  }

  // Logika untuk menampilkan data di LCD secara bergantian
  unsigned long currentMillis = millis(); // Ambil waktu saat ini
  if (currentMillis - previousMillis >= interval) { // Jika waktu interval telah berlalu
    previousMillis = currentMillis; // Reset waktu sebelumnya
    displayState = (displayState + 1) % 4; // Ubah tampilan setiap 5 detik
    lcd.clear(); // Bersihkan layar LCD
    switch (displayState) {
      case 0:
        lcd.setCursor(0, 0);
        lcd.print("Suhu=");
        lcd.setCursor(6, 0);
        lcd.print(temp);
        lcd.print(" C");
        break;
      case 1:
        lcd.setCursor(0, 0);
        lcd.print("pH=");
        lcd.setCursor(3, 0);
        lcd.print(ph);
        break;
      case 2:
        lcd.setCursor(0, 0);
        lcd.print("NTU=");
        lcd.setCursor(4, 0);
        lcd.print(turbidity);
        break;
      case 3:
        lcd.setCursor(0, 0);
        lcd.print("WaterLvl=");
        lcd.setCursor(10, 0);
        lcd.print(waterLevel);
        lcd.print(" cm");
        break;
    }
  }

  // Logika untuk memonitoring air
  bool isBuzzerOn = (ph < 6.5 || ph > 8.5) || (turbidity < 2 || turbidity > 2.5);
  if (isBuzzerOn) {
    digitalWrite(BUZZER_PIN, HIGH); // Nyalakan buzzer jika nilai pH atau NTU di luar batas
  } else {
    digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer jika nilai pH dan NTU dalam batas normal
  }

  // Logika untuk mengontrol pompa air
  if (isBuzzerOn || digitalRead(BUTTON1_PIN) == HIGH) {
    // Mengalirkan air ke luar
    digitalWrite(MOTOR_IN1_PIN, HIGH);
    digitalWrite(MOTOR_IN2_PIN, LOW);
    analogWrite(MOTOR_EN1_PIN, 255);
  } else if (digitalRead(BUTTON2_PIN) == HIGH) {
    // Mengalirkan air ke wadah air bersih
    digitalWrite(MOTOR_IN1_PIN, LOW);
    digitalWrite(MOTOR_IN2_PIN, HIGH);
    analogWrite(MOTOR_EN1_PIN, 255);
  } else {
    // Matikan pompa jika tidak ada kondisi yang memenuhi
    analogWrite(MOTOR_EN1_PIN, 0);
  }

  // Logika untuk mengontrol katup pemisah menggunakan motor servo
  if (digitalRead(BUTTON2_PIN) == HIGH) {
    servo.write(90);  // Buka katup (posisi 90 derajat)
  } else {
    servo.write(0);  // Tutup katup (posisi 0 derajat)
  }
}


 

e. Video Demo[Kembali]


Video Menjalankan Alat


f. Download File[Kembali]
Simulasi rangkaian klik disini
Video Demo klik disini
HTML 
Codingan Arduino 1 klik disini
Codingan Arduino 2 klik di sini
Datasheet sensor JSN SR04 Ultrasonic Sensor klik disini
Datasheet sensor pH sensor klik disini
Datasheet sensor rain sensor klik disini
Datasheet sensor Turbidity sensor klik disini
Datasheet sensor Suhu klik disini
Datasheet button klik disini
Datasheet Buzzer klik disini
Datasheet Motor servo klik disini
Datasheet Arduino UNO klik disini
Datasheet LCD klik disini
Library sensor turbidity klik disini
Library sensor ultrasonic  klik disini
Library sensor pH klik disini
Library sensor Hujan klik disini
Library Arduino uno klik disini








MODUL 4

    [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan Per...