MODUL 4




SISTEM OTOMASI LAUNDRY SELF-SERVICE GUNA MENGOPTIMALKAN PROSES PENCUCIAN DAN PENGHEMATAN SUMBER DAYA


1. Pendahuluan [Kembali]

Perkembangan revolusi industri 4.0 telah mendorong otomatisasi di berbagai sektor, termasuk bisnis jasa laundry. Di negara maju seperti Amerika Serikat dan Jepang, laundry self-service berbasis teknologi IoT telah menjadi solusi efisien untuk menghemat waktu, air, dan energi. Sistem otomatis ini mampu mengurangi ketergantungan pada tenaga manusia sekaligus meminimalkan kesalahan operasional.

Di Indonesia, bisnis laundry konvensional masih mendominasi pasar, terutama di daerah perkotaan dengan populasi padat seperti Jakarta, Bandung, dan Surabaya. Namun, sistem manual yang mengandalkan operator manusia seringkali menyebabkan beberapa masalah:

  • Pemborosan air akibat takaran yang tidak presisi
  • Ketidakakuratan timbangan berdampak pada harga layanan
  • Durasi pencucian tidak konsisten karena faktor human error

Berdasarkan data Asosiasi Pengusaha Laundry Indonesia (APLI), 30% air terbuang percuma di laundry konvensional akibat sistem pengisian manual. Di sisi lain, permintaan laundry self-service justru meningkat 20% per tahun seiring gaya hidup masyarakat urban yang mengutamakan kepraktisan.

Dalam rangka membuat projek Modul 4 Praktikum Mikrokontroler ini kami merancang sistem laundry otomatis berbasis STM32 dan Raspberry Pi Pico dengan fitur:

  • Akurasi tinggi melalui sensor berat HX711 (±10 gram)
  • Optimasi air menggunakan water flow sensor (3x berat pakaian)
  • Kontrol otomatis solenoid valve dan motor via relay
  • Antarmuka transparan melalui LCD I2C

Proyek ini tidak hanya menjadi media pembelajaran integrasi sensor-aktuator, tetapi juga solusi nyata untuk masalah efisiensi sumber daya di industri laundry lokal. 

2. Tujuan [Kembali]

2.1 Memenuhi syarat untuk modul 4 Praktikum Mikroprosesor & Mikrokontroler
2.2 Efisiensi sumber daya air, listrik, dan manusia.
2.3 Implementasi nyata dari modul 1, 2, dan 3 praktikum mikrokontroler.     
2.4Menciptakan sistem laundry otomatis berbasis mikrokontroler yang mampu:
  • Menggantikan proses manual menjadi fully automated
  • Mengoptimalkan penggunaan air melalui integrasi sensor HX711 dan water flow (YF-S201).
  • Memastikan konsistensi durasi pencucian menggunakan timer pada Development Board.

3. Alat dan Bahan [Kembali]

a.       Mikrokontroler STM32F103C8T6 (Blue Pill)

b.      Mikrokontroler Raspberry Pi Pico (RP2040)

c.       Load Cell 1kg + Modul HX711

d.      Water Flow Sensor YF-S201

e.       Solenoid Valve NC 12V

f.        Motor DC 5V 

g.      LCD I2C 16x2

h.      Modul Relay 5V SRD-05VDC-SL-C

i.        Baterai Li-ion 11.1V 3000mAh 3S

j.        Buck Converter LM2596 5V 3A


k.      Kabel Jumper Male-Female


l.      Breadboard


m.     STM32Cube

n.      Thonny IDE

 

4. Dasar Teori  [Kembali]

1. ADC (Analog to Digital Converter)

 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. 

 Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A (A0- A5 pada Arduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);.

2. Mikrokontroler


3. Komunikasi

3.2.1. Universal Asynchronous Receiver Transmitter (UART)

 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 :

 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, kemudian ditransfer secara parallel ke data bus penerima.

3.2.2. Inter-Integrated Circuit (I2C)

 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 :

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

4.4.1         Load Cell dan HX711

Gambar Load Cell dan HX711

Load cell merupakan sensor gaya yang bekerja berdasarkan prinsip perubahan resistansi strain gauge ketika menerima beban mekanis. Pada sistem ini, load cell tipe single point dengan kapasitas 1 kg digunakan untuk mengukur berat pakaian. Strain gauge yang terpasang pada struktur logam load cell akan mengalami deformasi sebanding dengan beban yang diberikan, mengubah nilai resistansinya secara linier seperti ditunjukkan pada Gambar 4.1.2 berikut:

Gambar Grafik Respon Load Cell

Dalam proyek ini, load cell dengan kapasitas 1 kg digunakan bersama modul HX711 yang berfungsi sebagai amplifier dan analog-to-digital converter. Sinyal keluaran load cell yang sangat kecil (dalam orde milivolt per volt eksitasi) diperkuat dan dikonversi menjadi data digital oleh HX711 sebelum dikirim ke mikrokontroler STM32. Proses kalibrasi dilakukan untuk menentukan offset dan faktor skala menggunakan beban referensi, dengan rumus dasar: 

Berat (gram) = (Nilai ADC - Offset) / Faktor Kalibrasi

Gambar Alur kerja Load Cell dan HX711

Proses konversi sinyal mekanis ke digital melibatkan beberapa tahap:

  1. Sinyal mV dari jembatan Wheatstone (berisi 4 strain gauge) diperkuat oleh modul HX711 yang memiliki amplifier instrumental dengan gain 128x.
  2. ADC 24-bit pada HX711 mengkonversi sinyal analog ke digital dengan resolusi tinggi (Gambar 2 [diagram blok HX711]).
  3. Mikrokontroler membaca data digital melalui protokol serial clock (SCK) dan data output (DT).

 

4.4.2         Water Flow Sensor

Gambar Water Flow Sensor YS-201

Water flow sensor YF-S201 merupakan sensor aliran air berbasis efek Hall yang mengukur volume air dengan mendeteksi putaran rotor. Sensor ini terdiri dari rumah plastik berisi turbin kecil yang berputar ketika air mengalir, seperti ditunjukkan pada Gambar 3 [struktur water flow sensor]. Pada rotor terdapat magnet permanen yang memicu sensor Hall setiap kali melewatinya, menghasilkan pulsa listrik.

Prinsip Kerja

  1. Konversi Aliran ke Pulsa
  • Debit air yang mengalir memutar turbin dengan kecepatan proporsional.
  • Setiap putaran menghasilkan 1 pulsa dari sensor Hall (Gambar 4 [grafik pulsa vs debit]).
  • Kalibrasi standar: 4500 pulsa/liter (tertera di datasheet).

2.                  Proses Pembacaan

  • Pulsa dihitung oleh STM32 menggunakan fitur interrupt pada pin PA2.
  • Volume air dihitung dengan rumus:

 

4.4.3         Touch Sensor

Gambar Touch Sensor

Sensor TTP223 adalah modul sentuh kapasitif yang mendeteksi sentuhan manusia melalui perubahan kapasitansi. Sensor ini bekerja dengan prinsip deteksi medan elektrostatik dan biasa digunakan sebagai pengganti tombol mekanis.

  1. Konsep Dasar Kapasitansi
  • Sensor memiliki elektroda logam yang membentuk kapasitor dengan lingkungan sekitarnya.
  • Ketika jari mendekat (Gambar 6 [ilustrasi medan elektrostatik]), kapasitansi elektroda meningkat karena tubuh manusia bersifat konduktif.

2.                  Deteksi Perubahan

  • IC TTP223 mengukur perubahan kapasitansi ini dengan osilator internal.
  • Jika perubahan melebihi threshold, output sensor berlogika HIGH (3.3V/5V).

3.                  Karakteristik Respons

  • Waktu respons: ~100 ms (tergantung konfigurasi).
  • Dapat mendeteksi sentuhan melalui bahan isolator tipis (plastik/kaca ≤3 mm).

5. LCD

 LCD (Liquid-Crystal Display) atau Penampil Kristal Cair adalah layar panel datar atau perangkat optik elektronik termodulasi yang menggunakan sifat modulasi cahaya dari kristal cair (liquid crystal) yang dikombinasikan dengan polarizer. Kristal cair tidak memancarkan cahaya secara langsung, melainkan menggunakan lampu latar atau reflektor untuk menghasilkan gambar berwarna atau monokrom.

Spesifikasi :

        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

6. Baterai

 Baterai merupakan alat listrik-kimiawi yang menyimpan energi serta mengeluarkan tenaganya dalam bentuk listrik. Baterai ialah perangkat yang mampu menghasilkan tegangan DC, yaitu dengan cara mengubah energi kimia yang terkandung di dalamnya menjadi energi listrik melalui suatu reaksi elektrokimia, Redoks (Reduksi – Oksidasi). Baterai yang biasa dijual (disposable/sekali pakai) ini mempunyai tegangan listrik 1,5 volt. Baterai ada yang berbentuk tabung ataupun kotak.

Spesifikasi :

        Kapasitas nominal : 2200mAh (0.2Ca, debit)

        Kapasitas minimum : 2100mAh (0.2Ca, debit)

        Tegangan nominal : 3.7V

        Metode pengisian : CC – CV (tegangan konstan dengan arus terbatas)

        Pengisian arus :  a. Biaya standar : 1300mA

                                       b. Pengisian cepat : 2600mA

        Waktu pengisian daya :  a. Biaya standar : 3jam

                                                    b. Pengisian cepat : 2.5jam

        Maks. mengisi arus : 2600mA

        Maks. debit saat ini : 5200mA

        Tegangan cut-off discharge : 2.75V

        Berat sel : maks. 47.0g

        Dimensi sel :  a. Diameter (maks.) : 18.40mm

                                   b. Tinggi (maks.) : 65.00mm

7. Relay 5V

Relay adalah komponen elektronik berupa saklar elektronik yang digerakkan oleh arus listrik. Secara prinsip, relay merupakan tuas saklar dengan lilitan kawat pada batang besi (solenoid) di dekatnya, ketika solenoid dialiri arus listrik, tuas akan tertarik karena adanya gaya magnet yang terjadi pada solenoid sehingga kontak saklar akan menutup. Pada saat arus dihentikan, gaya magnet akan hilang, tuas akan kembali keposisi semula dan kontak saklar kembali terbuka. Relay biasanya digunakan untuk menggerakkan arus/tegangan yang besar (misalnya peralatan listrik 4 A/AC 220V) dengan memakai arus/tegangan yang kecil (misalnya 0.1 A/12 volt DC).

Relay adalah komponen listrik yang bekerja berdasarkan prinsip induksi medan elektromagnetis. Jika sebuah penghantar sialiri oleh arus listrik, maka disekitar penghantar tersebut timbul medan magnet. Medan magnet yang dihasilkan oleh arus listrik tersebut selanjutnya diinduksikan ke logam ferromagnetis. Penemu relay pertama kali adalah Joseph Henry pada tahun 1835 (Elangsakti,2013)

8. Solenoid Valve NC 12V

Katup solenoid tipe Normally Closed (NC) adalah perangkat yang bekerja secara elektromagnetik untuk mengontrol aliran cairan atau gas. Dalam kondisi tanpa arus listrik, katup ini secara default akan tetap tertutup, mencegah aliran. Ketika dialiri listrik, kumparan di dalamnya menciptakan medan magnet yang menarik bagian inti logam, sehingga membuka jalur aliran. Sistem ini banyak digunakan dalam aplikasi otomasi, termasuk irigasi otomatis dan mesin cuci, karena hanya bekerja saat dibutuhkan, yang membantu dalam penghematan energi dan efisiensi sistem.

Solenoid valve bekerja berdasarkan prinsip elektromagnetik. Pada kondisi tanpa arus  listrik, valve tetap tertutup (NC - Normally Closed). Saat diberikan arus, kumparan (coil) dalam solenoid menciptakan medan magnet yang menarik plunger atau inti besi ke atas, sehingga membuka katup dan memungkinkan aliran fluida (air) melewati valve.

Langkah kerjanya:

  1. Mikrokontroler mengirim sinyal ke relay untuk menyalurkan tegangan ke solenoid.
  2. Solenoid aktif → magnet menarik plunger → katup terbuka → air mengalir.
  3. Saat arus dihentikan → plunger kembali turun (dengan bantuan pegas) → katup tertutup → aliran terhenti.

9. Motor Gearbox 

Gambar 4.7.1 Motor DC 5 volt

 

Motor arus searah (DC) adalah komponen penggerak yang mengubah energi listrik menjadi energi mekanik menggunakan prinsip medan magnet dan arus pada kumparan. Motor ini dikenal karena kemudahan dalam mengatur kecepatan dan arah putarannya hanya dengan mengubah tegangan atau polaritas. Dalam sistem otomasi seperti laundry otomatis, motor DC berfungsi untuk menggerakkan drum pencuci atau memompa air. Pengendalian motor umumnya dilakukan melalui PWM atau modul penggerak motor agar putarannya sesuai kebutuhan.

Motor DC digunakan untuk menghasilkan gerakan rotasi dengan mengubah energi listrik menjadi energi mekanik. Saat tegangan diberikan ke terminal motor, medan magnet yang terbentuk akan mendorong rotor untuk berputar. Kecepatan putar motor dapat diatur dengan teknik modulasi lebar pulsa (PWM) dari mikrokontroler.

 Dalam konteks sistem laundry otomatis, motor ini biasanya digunakan untuk menggerakkan drum pencuci atau memutar pompa air, sesuai instruksi yang diberikan oleh Raspberry Pi Pico.

5. Percobaan [Kembali]

a) Prosedur [Kembali]


1. Mode Standby (Awal Sistem)

       Load Cell (HX711) mengukur berat pakaian.

       Data berat dikirim ke RPi Pico → Dihitung harga (berat × Rp500).

       Hasil ditampilkan di LCD 16x2 via I2C.

       Data berat juga dikirim ke STM32 via UART untuk hitung volume air (berat × 10 ml).

       Sistem menunggu input dari Touch Sensor (koin).

2. Trigger oleh Sentuhan Tangan

       Touch Sensor (PA0 STM32) mendeteksi sentuhan tangan:

       Pegawai/pelanggan menyentuh sensor setelah memasukkan pakaian.

       STM32 menerima sinyal HIGH → memulai siklus pencucian.

3. Pengisian Air Otomatis

STM32

       Membuka Inlet Solenoid Valve (PA3 HIGH → Valve NC terbuka).

       Memonitor Water Flow Sensor (PA1):

       Hitung aliran air sampai volume sesuai perhitungan (contoh: 300g = 3000 ml).

       Jika volume tercapai, tutup valve (PA3 LOW).

4. Proses Pencucian

       Timer 5 detik (jeda sebelum motor menyala).

       STM32 menyalakan Motor DC (PA2 HIGH) selama 3 menit.

       Setelah 3 menit:

       Motor dimatikan (PA2 LOW).

       Drain Valve dibuka (PA4 LOW → Valve NO terbuka) untuk buang air.

5. Siklus Selesai

       Drain Valve terbuka selama 30 detik (pastikan air terbuang semua).

       Valve ditutup (PA4 HIGH).

       Sistem kembali ke Mode Standby.

       LCD menampilkan berat baru jika ada pakaian baru.


b) Rangkaian Simulasi dan Prinsip Kerja [Kembali]

  • Rangkaian Simulasi


  • Rangkaian skema


  • Prinsip Kerja


d) Flowchart [Kembali]

  • Flowchart
  • Listing Program
1. Program STM32

from machine import Pin, I2C

from time import sleep, ticks_ms

from hx711 import HX711

from lcd_api import LcdApi

from i2c_lcd import I2cLcd

 

# ==== Pin Setup ====

TRIGGER = Pin(0, Pin.IN)  # GP0 menerima HIGH dari PA10 STM32

MOTOR = Pin(2, Pin.OUT)

VALVE = Pin(3, Pin.OUT)

hx = HX711(d_out=Pin(4), pd_sck=Pin(5))

hx.tare()

 

i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=400000)

lcd = I2cLcd(i2c, 0x27, 2, 16)

lcd.clear()

lcd.putstr("Timbang Siap...")

 

motor_on = False

valve_on = False

motor_start = 0

valve_start = 0

 

while True:

    now = ticks_ms()

 

    # Deteksi sinyal HIGH dari STM32

    if TRIGGER.value() == 1 and not motor_on and not valve_on:

        motor_on = True

        motor_start = now

        MOTOR.value(1)

        print(">> Trigger Detected → MOTOR ON")

 

    if motor_on and now - motor_start >= 20000:

        MOTOR.value(0)

        motor_on = False

        valve_on = True

        valve_start = now

        VALVE.value(1)

        print(">> MOTOR OFF → VALVE ON")

 

    if valve_on and now - valve_start >= 20000:

        VALVE.value(0)

        valve_on = False

        print(">> VALVE OFF → Siap lagi")

 

    # LCD berat dan harga

    if hx.is_ready():

        weight = hx.get_units(5)

        if weight < 0:

            weight = 0

        price = int(weight * 500)

 

        lcd.move_to(0, 0)

        lcd.putstr("Berat: {:.1f} g   ".format(weight))

        lcd.move_to(0, 1)

        lcd.putstr("Harga: Rp{:d}   ".format(price))

 

    sleep(0.2)


2. Program Rapsberry Pi Pico

from machine import Pin, I2C

from time import sleep, ticks_ms

from hx711 import HX711

from lcd_api import LcdApi

from i2c_lcd import I2cLcd

 

# ==== Pin Setup ====

TRIGGER = Pin(0, Pin.IN)  # GP0 menerima HIGH dari PA10 STM32

MOTOR = Pin(2, Pin.OUT)

VALVE = Pin(3, Pin.OUT)

hx = HX711(d_out=Pin(4), pd_sck=Pin(5))

hx.tare()

 

i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=400000)

lcd = I2cLcd(i2c, 0x27, 2, 16)

lcd.clear()

lcd.putstr("Timbang Siap...")

 

motor_on = False

valve_on = False

motor_start = 0

valve_start = 0

 

while True:

    now = ticks_ms()

 

    # Deteksi sinyal HIGH dari STM32

    if TRIGGER.value() == 1 and not motor_on and not valve_on:

        motor_on = True

        motor_start = now

        MOTOR.value(1)

        print(">> Trigger Detected → MOTOR ON")

 

    if motor_on and now - motor_start >= 20000:

        MOTOR.value(0)

        motor_on = False

        valve_on = True

        valve_start = now

        VALVE.value(1)

        print(">> MOTOR OFF → VALVE ON")

 

    if valve_on and now - valve_start >= 20000:

        VALVE.value(0)

        valve_on = False

        print(">> VALVE OFF → Siap lagi")

 

    # LCD berat dan harga

    if hx.is_ready():

        weight = hx.get_units(5)

        if weight < 0:

            weight = 0

        price = int(weight * 500)

 

        lcd.move_to(0, 0)

        lcd.putstr("Berat: {:.1f} g   ".format(weight))

        lcd.move_to(0, 1)

        lcd.putstr("Harga: Rp{:d}   ".format(price))

 

    sleep(0.2)



e) Video Demo [Kembali]


Link Download File Rangkaian  [Unduh]
Link Download Video Percobaan [Unduh]
Link Download HTML [Unduh]
Link Download Datasheet Relay [Unduh]
Link Download Datasheet Buzzer [Unduh]
Link Download DataSheet Resistor [Unduh]












Komentar

Postingan populer dari blog ini

Tugas Besar Elektronika

Aplikasi Adder Amplifier

Sub Bab 3.4