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:
- Sinyal mV dari jembatan Wheatstone (berisi 4 strain gauge) diperkuat oleh modul HX711 yang memiliki amplifier instrumental dengan gain 128x.
- ADC 24-bit pada HX711 mengkonversi sinyal analog ke digital dengan resolusi tinggi (Gambar 2 [diagram blok HX711]).
- 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
- 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.
- 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:
- Mikrokontroler mengirim sinyal ke relay untuk menyalurkan tegangan ke solenoid.
- Solenoid aktif → magnet menarik plunger → katup terbuka → air mengalir.
- 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.
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.
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]
Komentar
Posting Komentar