LAPORAN DEMO PROJECT MIKRO





Sistem Otomatis untuk Pengisian Air pada Depot

1. Tujuan [kembali]

  • Mengotomatiskan proses pengisian air galon agar lebih efisien dan akurat.

  • Mendeteksi keberadaan galon secara otomatis menggunakan sensor IR.

  • Mengukur tinggi air menggunakan sensor ultrasonik untuk mencegah tumpahan.

  • Menghentikan pengisian secara otomatis jika volume atau berat air telah mencapai batas.

  • Mengurangi kebutuhan tenaga kerja manusia dan meminimalisir kesalahan manusiawi.

2. Alat dan Komponen [kembali]
  • raspberry pi pico
                                                                                    (a)                                                (b)
Gambar Mikrokontroler Rasberry Pi Pico (a) tampilan hardware, (b) tampilan simulasi

Raspberry Pi Pico adalah papan mikrokontroler berbasis RP2040, sebuah chip yang dikembangkan oleh Raspberry Pi Foundation. Mikrokontroler ini menggunakan prosesor ARM Cortex-M0+ dual-core, memiliki 264KB RAM, dan mendukung berbagai antarmuka seperti GPIO, I2C, SPI, dan UART. Raspberry Pi Pico cocok untuk proyek embedded systemsIoT, dan otomasi.

  • sensor Infrared


Sistem sensor infra merah pada dasarnya menggunakan infra merah sebagai media untuk komunikasi data antara receiver dan transmitter. Sistem akan bekerja jika sinar infra merah yang dipancarkan terhalang oleh suatu benda yang mengakibatkan sinar infra merah tersebut tidak dapat terdeteksi oleh penerima.

Sensor IR sendiri memiliki karakteristik sebagai 

berikut:

1. Sensor IR secara khusus menyaring cahaya IR, tapi tidak terlalu baik 

untuk mendeteksi cahaya tampak.

2. Sensor IR memiliki demulator (bagian yang memisahkan sinyal informasi 

(yang berisi data atau pesan) dari sinyal pembawa yang diterima sehingga 

informasi tersebut dapat diterima dengan baik) yang digunakan untuk 

mencari IR yang ter-modulasi (merupakan bagian yang mengubah sinyal 

informasi ke dalam sinyal pembawa (carrier) dan siap untuk dikirimkan) 

pada rentang frekuensi 38 KHz. Lampu LED IR yang hanya menyala terus 

menerus tidak akan terdeteksi oleh receiver, melainkan harus PWM 

Blinking/Flicking (berkedip secara konstan dalam kurun waktu beberapa 

milidetik) pada rentang 38 KHz.

3. Sensor IR mendeteksi sinyal IR 38 KHz dan keluaran rendah (0V) atau 

tidak mendeteksi apapun dan keluaran tinggi (5V) (Ada dkk, 2012).

Model dari sensor IR sendiri cukup beragam


  • sensor ultrasonik

sensor yang menggunakan gelombang ultrasonik. Gelombang ultrasonik yaitu gelombang yang umum digunakan untuk mendeteksi keberadaan suatu benda dengan memperkirakan jarak antara sensor dan benda tersebut. Sensor ini berfungsi untuk mengubah besaran fisis (bunyi) menjadi besaran listrik begitu pula sebaliknya. Gelombang ultrasonik memiliki frekuensi sebesar 20.000 Hz. Bunyi tersebut tidak dapat didengar oleh telinga manusia. Bunyi tersebut dapat didengar oleh hewan tertentu seperti anjing, kelelawar dan kucing. Bunyi gelombang ultrasonik dapat merambat melalui zat cair, padat dan gas. Benda cair merupakan media merambat yang paling baik untuk sensor ultrasonik jika dibandingkan dengan benda padat dan gas. Oleh karena itu, sensor ultrasonik banyak digunakan pada kapal selam dan alat khusus untuk mengukur kedalaman air laut. 

  • sensor loadcell + hx711


Sensor loadcell merupakan jenis sensor yang digunakan untuk mengubah ukuran beban menjadi sebuah tegangan listrik perubahan tegangan listrik. Perubahan yang terjadi pada tegangan listrik akan bergantung dari besarnya tekanan yang dirasakan atau yang diberikan beban. Untuk sensor loadcell terdapat komponen bernama Strain Gauge didalamnya yang dimana strain gauge adalah komponen elektronika yang berfungsi untuk mengukur sebuah tekanan. 
  • pompa air 5 v

Pompa Air DC 5V merupakan pompa yang ringkas dan efisien yang dirancang untuk digunakan dengan catu daya arus searah (DC) 5V . Pompa ini umumnya digunakan dalam aplikasi yang memerlukan pergerakan atau sirkulasi air skala kecil, seperti di akuarium, air mancur mini, atau sistem pendingin.

  • selang air

Selang air pada pompa air berfungsi sebagai saluran untuk mengalirkan air dari sumber air ke tempat yang dituju, seperti keran, instalasi irigasi, atau bak penampunganSelang juga berperan penting dalam menjaga aliran air yang lancar dan konsisten, serta melindungi pompa dari tekanan air yang berlebihan atau gesekan dengan benda keras.

  • breadboard

Breadboard Arduino merupakan papan yang digunakan untuk membuat prototype rangkaian elektronik. Ada beberapa orang yang menyebutnya project board bahkan protoboard (prototype board). Pada arah vertikal masing-masing lubang saling berhubungan, namun tidak untuk arah horizontal. Breadboard berfungsi sebagai konduktor listrik sekaligus tempat melekatkan kabel jumper atau header pin male agar arus listrik dari komponen satu ke komponen lainnya bisa saling terdistribusi dengan baik sesuai keinginan tanpa harus merepotkan pengguna untuk melakukan penyolderan atau melakukan bongkar pasang.

  • resistor


Resistor adalah komponen dasar  elektronika  yang berfungsi menghambat/membatasi jumlah arus input atau arus yang mengalir masuk ke dalam satu rangkaian, dimana kemampuan resistor dalam membatasi arus masuk sesuai dengan spesifikasi resistor tersebut. Sesuai  dengan  namanya  resistor  bersifat  resistif  dan umumnya  terbuat  dari  bahan   karbon.

  • LED
LED merupakan kependekan dari Light Emitting Diode, yakni salah satu dari banyak jenis perangkat semikonduktor yang mengeluarkan cahaya ketika arus listrik melewatinya.

  • buzzer

Buzzer Elektronika adalah sebuah komponen elektronika yang dapat menghasilkan getaran suara berupa gelombang bunyi. Buzzer elektronika akan menghasilkan getaran suara ketika diberikan sejumlah tegangan listrik dengan taraf tertentu sesuai dengan spesifikasi bentuk dan ukuran buzzer elektronika itu sendiri.

  • baterai
Baterai atau elemen kering adalah salah satu alat listrik yang berfungsi sebagai penyimpan energi listrik dan mengeluarkan tegangan dalam bentuk listrik (sebagai sumber tegangan). Pada umumnya baterai terdiri dari tiga komponen yang penting yaitu :
1. Batang karbon (C) sebagai anode (kutub positif baterai).
2. Seng (Zn) sebagai katode (kutub negatif baterai)
3. Amonium dioksida (NH4CI) sebagai larutan elektrolit (penghantar)

  • jumper

merupakan kabel elektrik yang mempunyai pin konektor di setiap ujungnya dan memungkinkan untuk menghubungkan dua komponen yang melibatkan Arduino tanpa memerlukan solder. Intinya, kegunaan kabel jumper ini digunakan sebagai konduktor listrik untuk menyambungkan rangkaian listrik. 

 

Kabel jumper biasanya digunakan pada breadboard atau alat prototyping lainnya supaya lebih mudah untuk mengutak-atik rangkaian. Konektor yang terdapat pada  ujung kabel terdiri dari konektor jantan (male connector) dan konektor betina (female connector). Konektor female berfungsi untuk menusuk dan konektor male berfungsi untuk ditusuk.


  • LCD 16x2 I2C

LCD, atau Liquid Crystal Display, adalah teknologi layar yang menggunakan kristal cair untuk menampilkan gambarKristal cair ini akan berubah orientasinya ketika diberi tegangan listrik, sehingga memungkinkan cahaya untuk melewatinya dan membentuk gambar. LCD digunakan dalam berbagai perangkat elektronik seperti televisi, kalkulator, dan layar komputer.


3. Landasan Teori [kembali]

1. Raspberry Pi Pico

Raspberry Pi Pico 2 adalah mikrokontroler berbasis RP2040 dual-core ARM Cortex-M0+ yang mendukung komunikasi I2C, UART, dan SPI. Pico 2 mendukung koneksi nirkabel (WiFi dan Bluetooth), dan digunakan sebagai pusat pemrosesan sistem otomatisasi. Raspberry Pi Pico 2 merupakan pengembangan dari generasi sebelumnya yang menggunakan chip RP2040 buatan Raspberry Pi Foundation. Chip ini dilengkapi dengan dua inti pemroses ARM Cortex-M0+ yang mampu bekerja hingga frekuensi 133 MHz, serta didukung dengan memori SRAM sebesar 264 KB dan penyimpanan flash sebesar 2 MB. Raspberry Pi Pico 2 juga menambahkan fitur konektivitas nirkabel seperti WiFi dan Bluetooth yang menjadikannya sangat fleksibel untuk aplikasi Internet of Things (IoT). Dalam sistem otomatisasi pengisian air depot, Raspberry Pi Pico 2 berperan sebagai pusat kendali yang mengatur logika sistem secara keseluruhan. Mikrokontroler ini menerima data dari sensor-sensor seperti sensor inframerah (IR), sensor ultrasonik, dan loadcell, kemudian mengolah informasi tersebut untuk mengambil keputusan apakah sistem harus membuka atau menutup solenoid valve. Karena kemampuannya dalam mengakses berbagai protokol komunikasi digital seperti I2C, SPI, dan UART, Raspberry Pi Pico 2 mampu menangani banyak komponen secara bersamaan, serta mendukung sistem monitoring jarak jauh jika diperlukan. Keunggulan efisiensi daya dan kemampuan pemrosesan secara paralel menjadikannya pilihan yang sangat cocok untuk aplikasi otomatis yang membutuhkan respon cepat dan presisi tinggi.

Fungsi dalam sistem:

  • Membaca data dari semua sensor (IR, ultrasonik, load cell).

  • Memberi sinyal untuk aktuator (solenoid valve, buzzer, LED).

  • Mengelola logika keputusan otomatis pengisian air.

2. Sensor Inframerah (IR)

Sensor IR memanfaatkan prinsip pantulan cahaya inframerah. Sensor ini terdiri dari LED IR (pemancar) dan fotodioda atau fototransistor (penerima). Sensor inframerah merupakan sensor optik yang bekerja dengan prinsip memancarkan cahaya inframerah dan mendeteksi pantulannya dari suatu objek di depannya. Biasanya terdiri dari sepasang komponen yaitu pemancar (IR LED) dan penerima (fotodioda atau fototransistor). Ketika tidak ada objek di depan sensor, cahaya IR tidak kembali ke penerima, dan sensor menghasilkan logika LOW. Sebaliknya, ketika ada objek seperti galon berada dalam jangkauan, cahaya IR dipantulkan kembali dan diterima oleh sensor, sehingga menghasilkan logika HIGH. Sensor ini sangat cocok untuk sistem deteksi keberadaan objek karena harganya murah, mudah digunakan, dan tidak memerlukan kontak langsung. Dalam konteks sistem pengisian air depot, sensor IR digunakan untuk mendeteksi apakah galon sudah diletakkan di tempatnya. Dengan sistem ini, mikrokontroler hanya akan memulai proses pengisian ketika keberadaan galon sudah terdeteksi dengan pasti, sehingga menghindari tumpahan air akibat pengisian tanpa wadah. Sensor ini juga berperan dalam meningkatkan keamanan dan efisiensi sistem karena hanya mengizinkan sistem bekerja dalam kondisi yang sesuai.

Fungsi dalam sistem:

  • Mendeteksi keberadaan galon di tempat pengisian.

  • Jika pantulan terdeteksi (dari permukaan galon), maka proses pengisian bisa dimulai.

Karakteristik:

  • Jarak efektif: 2–30 cm

  • Respon cepat (dalam ms)

  • Output digital (HIGH saat objek terdeteksi)


Gambar Grafik Respon Sensor Infrared


3. Sensor Ultrasonik

Sensor ini bekerja dengan mengirimkan gelombang ultrasonik dan mengukur waktu pantul balik dari permukaan objek. Sensor ini sangat berguna dalam mengukur jarak permukaan air dari posisi sensor secara non-kontak. Dalam sistem pengisian air otomatis, sensor ini ditempatkan di atas galon dan bertugas mengukur seberapa penuh galon tersebut berdasarkan tinggi air. Keunggulan sensor ultrasonik adalah kemampuannya dalam bekerja di lingkungan yang lembab tanpa kehilangan akurasi signifikan, serta kecepatan responnya yang cukup tinggi. Dengan memantau jarak air secara terus-menerus, sistem dapat menghentikan pengisian saat air mencapai batas tertentu (misalnya 90% dari kapasitas galon), untuk mencegah tumpahan dan menjaga konsistensi volume pengisian.

Rumus Pengukuran Jarak:

Jarak (cm)=waktu tempuh (µs)×0.03432\text{Jarak (cm)} = \frac{\text{waktu tempuh (µs)} \times 0.0343}{2}

Fungsi dalam sistem:

  • Mengukur ketinggian air dalam galon.

  • Memberi sinyal jika tinggi air sudah mendekati penuh (misal 90%).

Karakteristik:

  • Jarak deteksi: 2 cm – 400 cm

  • Akurasi: ±3 mm


Gambar Grafik Respon Sensor Ultrasonik


4. Sensor Load Cell

Load cell adalah sensor gaya berbasis strain gauge yang mendeteksi deformasi logam akibat berat. HX711 digunakan sebagai penguat sinyal dan ADC 24-bit untuk membaca data dari load cell. Sensor loadcell adalah sensor gaya yang digunakan untuk mengukur berat atau tekanan. Dalam sistem digital, loadcell biasanya dikombinasikan dengan modul HX711 yang berfungsi sebagai penguat sinyal dan analog-to-digital converter (ADC) dengan resolusi tinggi 24-bit. Loadcell bekerja berdasarkan prinsip strain gauge, yaitu perubahan resistansi akibat deformasi fisik pada elemen logam akibat beban. Perubahan resistansi ini kemudian dikonversi menjadi sinyal listrik yang sangat kecil, yang diperkuat oleh HX711 sebelum dibaca oleh mikrokontroler. Dalam sistem ini, sensor loadcell digunakan untuk mengukur berat air yang masuk ke galon. Berat tersebut digunakan sebagai validasi tambahan selain pengukuran tinggi air dari sensor ultrasonik, sehingga proses pengisian dapat dihentikan jika berat telah mencapai batas tertentu (misalnya 19 kg untuk galon 19 liter). Kombinasi dua sistem pengukuran ini membuat sistem menjadi sangat andal, akurat, dan mampu menyesuaikan diri terhadap variasi bentuk atau ukuran galon.

Fungsi dalam sistem:

  • Mengukur berat air dalam galon (target ±19 kg).

  • Menentukan apakah volume sudah tercapai untuk menghentikan pengisian.

Rumus Berat:

Berat=Output Tegangan×Faktor Kalibrasi\text{Berat} = \text{Output Tegangan} \times \text{Faktor Kalibrasi}
4. Flowchart system [kembali]



5. Listing Program [kembali]
  • listing program wokwi:
    {
      "version": 1,
      "author": "Ikhwanuz, Haris, Nabil",
      "editor": "wokwi",
      "parts": [
        {
          "type": "wokwi-pi-pico",
          "id": "pico",
          "top": 92.85,
          "left": -25.2,
          "attrs": { "env": "micropython-20241129-v1.24.1" }
        },
        {
          "type": "wokwi-hc-sr04",
          "id": "ultrasonic1",
          "top": -17.7,
          "left": -157.7,
          "attrs": { "distance": "2" }
        },
        {
          "type": "wokwi-hx711",
          "id": "cell1",
          "top": 69.8,
          "left": 117.8,
          "attrs": { "type": "5kg" }
        },
        {
          "type": "wokwi-lcd1602",
          "id": "lcd1",
          "top": 188.8,
          "left": 216.8,
          "attrs": { "pins": "i2c" }
        },
        {
          "type": "wokwi-led",
          "id": "led1",
          "top": 284.4,
          "left": -169,
          "attrs": { "color": "blue" }
        },
        {
          "type": "wokwi-resistor",
          "id": "r1",
          "top": 243.95,
          "left": -134.4,
          "attrs": { "value": "220" }
        },
        {
          "type": "wokwi-pir-motion-sensor",
          "id": "pir1",
          "top": 109.6,
          "left": -381.78,
          "attrs": {}
        }
      ],
      "connections": [
        [ "pico:VBUS", "ultrasonic1:VCC", "red", [ "h10.8", "v-9.6", "h-144" ] ],
        [ "pico:GND.8", "ultrasonic1:GND", "black", [ "h20.4", "v-38.4", "h-124.8" ] ],
        [ "cell1:GND", "pico:GND.8", "black", [ "h-57.6", "v28.5" ] ],
        [ "pico:GP5", "cell1:DT", "yellow", [ "h96", "v-57.6" ] ],
        [ "pico:GP6", "cell1:SCK", "cyan", [ "h115.2", "v-67.2", "h-9.6" ] ],
        [ "cell1:VCC", "pico:3V3", "red", [ "h-19.2", "v19.2" ] ],
        [ "ultrasonic1:ECHO", "pico:GP2", "yellow", [ "v0" ] ],
        [ "ultrasonic1:TRIG", "pico:GP3", "cyan", [ "v67.2", "h9.2" ] ],
        [ "lcd1:GND", "pico:GND.6", "black", [ "h0" ] ],
        [ "lcd1:VCC", "pico:VBUS", "red", [ "h-153.6", "v-124.7", "h-9.6" ] ],
        [ "pico:GP16", "lcd1:SDA", "green", [ "v0", "h116.4", "v-48" ] ],
        [ "pico:GP17", "lcd1:SCL", "green", [ "h126", "v-28.8" ] ],
        [ "pico:GP10", "r1:2", "green", [ "h-48", "v19.2" ] ],
        [ "pico:GP4", "pir1:OUT", "green", [ "h-230.4", "v67.2", "h-76.8" ] ],
        [ "pir1:GND", "pico:GND.2", "black", [ "v9.6", "h86.14", "v-48", "h19.2" ] ],
        [ "pir1:VCC", "pico:VBUS", "red", [ "v28.8", "h124.8", "v-134.4", "h278.4" ] ],
        [ "r1:1", "led1:A", "green", [ "v48", "h0", "v28.8" ] ],
        [ "led1:C", "pico:GND.4", "green", [ "v9.6", "h29.2", "v-67.2" ] ]
      ],
      "dependencies": {}
    }

  • listing program Thonny:
    Tx:
from machine import Pin, UART, time_pulse_us
import utime
from HX711 import HX711  # Pastikan file HX711.py ada

# UART1 → TX=GP4, RX=GP5
uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))

# Ultrasonik → TRIG=GP26, ECHO=GP27
TRIG = Pin(26, Pin.OUT)
ECHO = Pin(27, Pin.IN)

# HX711 → DT=GP18, SCK=GP19
hx = HX711(dout=Pin(18), pd_sck=Pin(19))
hx.set_scale(1975.31)  # Kalibrasi sesuai beban
hx.tare()

# Sensor IR → OUT dihubungkan ke GP10
sensor_ir = Pin(10, Pin.IN)

def baca_jarak_cm():
    TRIG.low()
    utime.sleep_us(2)
    TRIG.high()
    utime.sleep_us(10)
    TRIG.low()

    try:
        durasi = time_pulse_us(ECHO, 1, 30000)  # timeout 30 ms
        if durasi <= 0:
            return -1
        jarak = (durasi * 0.0343) / 2
        return round(jarak, 2)
    except:
        return -1

while True:
    # 1. Baca jarak
    jarak = baca_jarak_cm()
    if jarak == -1:
        print("Gagal membaca jarak")
    else:
        print("Jarak: {:.2f} cm".format(jarak))
        if jarak < 10:
            uart1.write("ON\n")
        else:
            uart1.write("OFF\n")

    # 2. Baca berat dari HX711
    try:
        berat = hx.get_units(5)
        berat = max(0, berat)
        print("Berat: {:.2f} gram".format(berat))
        uart1.write("BERAT:{:.2f}\n".format(berat))
    except:
        print("Gagal membaca berat")
        uart1.write("BERAT:ERROR\n")

    # 3. Baca sensor IR
    if sensor_ir.value() == 0:  # Tergantung sensor, HIGH/LOW = aktif
        print("Sensor IR AKTIF")
        uart1.write("IR_ON\n")
    else:
        uart1.write("IR_OFF\n")

    utime.sleep(1)

Rx:

from machine import Pin, UART, I2C
import utime
from i2c_lcd import I2cLcd

# UART1 RX = GP5, TX = GP4
uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))

# Output: LED, buzzer, pompa, IR
led_jarak = Pin(6, Pin.OUT)
buzzer = Pin(10, Pin.OUT)
led_ir = Pin(8, Pin.OUT)
relay = Pin(20, Pin.OUT)

# I2C LCD
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000)
lcd = I2cLcd(i2c, 0x27, 2, 16)  # alamat I2C umum 0x27

# Status awal
led_jarak.off()
buzzer.off()
led_ir.off()
relay.off()
pompa_aktif = False
berat_terakhir = 0.0
status_ir = "-"
status_jarak = "-"
status_pompa = "NONAKTIF"

def update_lcd():
    lcd.clear()
    lcd.putstr("Jrk:{} B:{:.0f}g".format(status_jarak, berat_terakhir))
    lcd.move_to(0, 1)
    lcd.putstr("IR:{} Pmp:{}".format(status_ir, status_pompa))

while True:
    if uart1.any():
        try:
            data = uart1.readline()
            if data:
                pesan = data.decode().strip()
                print("Diterima:", pesan)

                if pesan == "ON":
                    led_jarak.on()
                    status_jarak = "DEKAT"
                elif pesan == "OFF":
                    led_jarak.off()
                    status_jarak = "JAUH"

                elif pesan.startswith("BERAT:"):
                    nilai = pesan.split(":")[1]
                    if nilai != "ERROR":
                        berat = float(nilai)
                        berat_terakhir = berat
                        if berat >= 200:
                            relay.off()
                            buzzer.on()
                            pompa_aktif = False
                            status_pompa = "NONAKTIF"
                        else:
                            buzzer.off()
                    else:
                        buzzer.off()

                elif pesan == "IR_ON":
                    led_ir.on()
                    status_ir = "YA"
                    if not pompa_aktif and berat_terakhir < 200:
                        relay.on()
                        pompa_aktif = True
                        status_pompa = "AKTIF"

                elif pesan == "IR_OFF":
                    led_ir.off()
                    status_ir = "-"
                    relay.off()
                    pompa_aktif = False
                    status_pompa = "NONAKTIF"

                update_lcd()
        except Exception as e:
            print("Error:", e)

    utime.sleep(0.1)



6. Rangkaian simulasi [kembali]

software:
  • rangkaian simulasi wokwi


Hardware:
tampak depan:

tampak samping:
tampak atas:
      

7. Video penjelasan [kembali]

8. Download file [kembali]








Tidak ada komentar:

Posting Komentar

MEMAHAMI ETIKA DI ERA DIGITAL

Menyelami Dunia Digital dengan Bertanggung Jawab: Memahami Etika Berkomunikasi di Era Digital (Lebih Detail) Memasuki Era Digital yang Pen...