LA M4 mP uP
- Dapatkan link
- X
- Aplikasi Lainnya
MODUL 4
Sistem Cerdas Monitoring Kandang Ayam Otomatis
- Download library yang diperlukan pada bagian download dalam blog.
- Buka WOKWI yang untuk membuat rangkaian simulasi.
- Tambahkan komponen seperti Dev Board (Raspberry Pi Pico 2 buah), sensor (DHT22, MQ2, Loadcell, LDR,), dan perangkat lain/output (Van, Kipas, Motor Servo, LCD, LED) lalu susun menjadi rangkaian yang sesuai.
- Buat dan masukan kodingan yang sudah sesuai dengan semua sensor yang ada pada rangkaian.
- Buka Thony yang sudah diinstal dan hubungkan ke raspberry pi pico.
- Di Thony, pilih port yang sudah di pilih dan kemudian Thony akan mendeteksi dev board yang ada.
- Setelah Dev Board terdeteksi, pilih dan salin atau masukkan kodingan yang sudah di buat.
- Kemudian salinkan kodingan untuk di inputkan ke dalam dev board.
- Salin kode program Thony kemudian tempelkan program tadi ke Raspberry pi pico
- Jalankan Rangkaian
- Rangkaian Simulasi
1. DHT22 (Sensor Suhu dan Kelembapan)
📌 Fungsi:
Mengukur suhu dan kelembapan udara di lingkungan sekitar.
⚙️ Cara Kerja:
-
DHT22 membaca suhu dan kelembapan melalui sensor resistif internal.
-
Menghasilkan output digital yang dikirim melalui satu pin data ke Raspberry Pi Pico 1.
-
Pico 1 membaca nilai suhu dan kelembapan dengan library khusus (seperti
dht
di MicroPython). -
Data suhu dan kelembapan dikirim ke Pico 2 melalui komunikasi UART.
🎯 Dampak terhadap Output:
-
Jika suhu lebih dari ambang batas (misalnya 35°C), Fan (kipas) diaktifkan oleh Raspberry Pi Pico 2 untuk mendinginkan ruangan atau alat.
2. MQ2 (Sensor Gas/Asap)
📌 Fungsi:
Mendeteksi keberadaan gas berbahaya seperti Amonia CO, dan asap.
⚙️ Cara Kerja:
-
Sensor MQ2 memiliki elemen pemanas dan elektroda kimia yang berubah resistansi ketika mendeteksi gas.
-
Outputnya berupa van yang menghisap dan mengeluarkan gas berbahaya ke luar kandang.
-
Raspberry Pi Pico 1 membaca nilai ini yang berfungsi sebagai input dari sensor ini.
-
Jika gas terdeteksi, data dikirim ke Pico 2.
🎯 Dampak terhadap Output:
-
Ketika Pico 2 menerima sinyal adanya gas berbahaya, Motor DC 1 (Van) diaktifkan.
Motor (Van) ini bisa berfungsi sebagai sistem penghisap udara atau alarm mekanis (pengganti LED indikator merah).
3. Load Cell (Sensor Berat)
📌 Fungsi:
Mengukur berat pada pakan ayam, untuk mengisi kembali lumbung pakan ketika sensor mendeteksi berat pakan sudah berkurang dari yang di setting.
⚙️ Cara Kerja:
-
Load Cell menghasilkan sinyal listrik sangat kecil saat tekanan diberikan.
-
Ketika loadcell mendeteksi kurangnya berta pakan ayam yang artinya pakan ayam tinggal sedikit di tempat pakan ayam, maka sensor akan aktif.
-
Raspberry Pi Pico 1 membaca data berat pakan yang berkurang dan mengirimkan sinyal ke Pico 2
-
Berat dikirim ke Pico 2 melalui komunikasi UART.
🎯 Dampak terhadap Output:
-
Jika berat sudah kurang dari nilai tertentu (misalnya 100 g), maka Servo Motor akan bergerak untuk membuka pintu pada stok pakan ayam untuk dapat mengisi pakan ayam yang sudah berkurang, sampai pada berat tertentu (misalnya 120 g) maka servo akan kembali menutup pintu stok pakan ayam agarpakan ayam tidak terbuang atau melimpah.
4. LDR (Sensor Cahaya)
📌 Fungsi:
Mendeteksi intensitas cahaya di lingkungan.
⚙️ Cara Kerja:
-
LDR memiliki hambatan yang berkurang saat cahaya terang, dan meningkat saat gelap.
-
Pico 1 membaca tegangan analog (via ADC) dari rangkaian pembagi tegangan dengan LDR.
-
Semakin gelap, nilai ADC meningkat → dikirim ke Pico 2.
🎯 Dampak terhadap Output:
-
Jika intensitas cahaya rendah (misalnya < 100 lux), maka LED akan menyala untuk dapat menghangatkan kandang ayam.
Alur Kerja LCD dalam Sistem:
-
Sensor dibaca oleh Pico 1.
-
Pico 1 kirim data ke Pico 2.
-
Pico 2 olah dan tampilkan ke LCD:
-
Data suhu & kelembapan (DHT22).
-
Status gas (MQ2).
-
Berat beban (Load Cell).
-
Cahaya (LDR, jika diperlukan).
-
-
Tampilan diperbarui terus-menerus.
- Flowchart
- Listing Program
A. Pico 1
from machine import Pin, ADC, I2C, UART from time import sleep import lcd_api import pico_i2c_lcd # === Inisialisasi UART === uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) # === Inisialisasi Sensor === ldr = ADC(26) # GP26 mq2 = ADC(27) # GP27 # === Inisialisasi Output === led_kuning = Pin(9, Pin.OUT) # LED untuk LDR led_merah = Pin(8, Pin.OUT) # LED untuk MQ2 # === Inisialisasi LCD === i2c = I2C(1, scl=Pin(7), sda=Pin(6), freq=400000) lcd = pico_i2c_lcd.I2cLcd(i2c, 0x27, 2, 16) def adc_to_lux(adc_value): return (65535 - adc_value) / 65535 * 1000 def adc_to_ppm(adc_value): return (adc_value / 65535) * 10000 while True: # --- Sensor LDR --- lux = adc_to_lux(ldr.read_u16()) print(f"LUX: {lux:.2f}") lcd.clear() if lux < 100: led_kuning.value(1) lcd.putstr("Cahaya: Kurang") else: led_kuning.value(0) lcd.putstr("Cahaya: Cukup") sleep(2) # --- Sensor MQ2 --- ppm = adc_to_ppm(mq2.read_u16()) print(f"MQ2: {ppm:.2f} ppm") lcd.clear() if ppm >= 200: led_merah.value(1) lcd.putstr("Amonia Berbahaya") else: led_merah.value(0) lcd.putstr("Amonia Rendah") sleep(2) # --- Kirim sinyal ke Pico 2 jika ingin koordinasi (opsional) --- # uart.write("PING\n") |
B. Pico 2
from machine import Pin, PWM, UART from time import sleep import dht import hx711 # === Inisialisasi UART === uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) # === Inisialisasi Sensor === dht22 = dht.DHT22(Pin(2)) # GP2 hx = hx711.HX711(d_out=Pin(3), pd_sck=Pin(4)) # GP3 dan GP4 hx.set_scale(2280) hx.tare() # === Inisialisasi Output === led_hijau = Pin(15, Pin.OUT) # GP15 servo = PWM(Pin(16)) # GP16 servo.freq(50) def gerakkan_servo(derajat): min_us = 500 max_us = 2500 us = min_us + (max_us - min_us) * derajat / 180 duty = int(us * 65535 / 20000) servo.duty_u16(duty) while True: # --- Sensor DHT22 --- try: dht22.measure() suhu = dht22.temperature() print("Suhu:", suhu) if suhu > 35: led_hijau.value(1) else: led_hijau.value(0) except: print("Gagal baca DHT22") sleep(2) # --- Sensor Loadcell & Servo --- try: berat = hx.get_units(5) print("Berat:", berat) if berat < 100: gerakkan_servo(90) # Tuas buka elif berat > 120: gerakkan_servo(0) # Tuas tutup except: print("HX711 error") sleep(2) # --- Terima data dari Pico 1 jika diperlukan --- # if uart.any(): # data = uart.readline() # print("Dari Pico 1:", data) |
- Dapatkan link
- X
- Aplikasi Lainnya
Komentar
Posting Komentar