M4 Praktikum Mikro
Sistem Monitoring Suhu Mesin Pengolahan Karet untuk Mencegah Kebakaran Pada Pabrik Karet
Pabrik pengolahan karet merupakan lingkungan kerja yang memiliki risiko tinggi terhadap kebakaran, terutama akibat suhu mesin yang beroperasi secara intensif dan terus-menerus. Proses pemanasan dan pengolahan karet pada suhu tinggi sangat rentan terhadap peningkatan suhu yang tidak terkontrol, yang dapat memicu percikan api atau reaksi kimia berbahaya. Dalam banyak kasus, kurangnya sistem pemantauan suhu secara real-time menyebabkan keterlambatan dalam penanganan kondisi darurat, sehingga memperbesar potensi kerugian material dan keselamatan pekerja.
Untuk mengatasi permasalahan tersebut, diperlukan sistem monitoring suhu yang dapat bekerja secara otomatis dan terus menerus, guna mendeteksi suhu berlebih serta gejala awal kebakaran seperti percikan api atau kebocoran gas. Proyek ini bertujuan untuk mengembangkan sebuah sistem monitoring suhu mesin pengolahan karet berbasis mikrokontroler Raspberry Pi Pico, yang mampu memantau suhu secara real-time menggunakan sensor suhu analog. Jika suhu terdeteksi melebihi ambang batas yang telah ditentukan, sistem akan secara otomatis mengaktifkan kipas pendingin melalui motor DC yang dikendalikan oleh sinyal PWM, menyalakan LED merah sebagai indikator bahaya, serta membunyikan buzzer sebagai alarm peringatan dini.
Lebih lanjut, sistem juga dilengkapi dengan sensor api (flame sensor) dan sensor gas (MQ-2) untuk mendeteksi keberadaan percikan api atau gas mudah terbakar. Jika terdeteksi kondisi kritis, sistem akan memperkuat alarm dan mengirimkan data suhu serta status keselamatan melalui komunikasi UART ke Raspberry Pi Pico kedua. Pico kedua akan menampilkan informasi suhu dan kondisi mesin pada LCD 16x2 agar mudah dipantau oleh operator. Untuk memastikan sistem bekerja dengan efisien tanpa gangguan, metode pembacaan data menggunakan millis() diterapkan agar tidak menghambat proses lain, serta interrupt digunakan untuk merespons kondisi kritis secara cepat.
Dengan adanya sistem ini, diharapkan potensi kebakaran akibat suhu berlebih atau percikan api dapat diminimalisir sedini mungkin, sehingga mendukung terciptanya lingkungan kerja yang lebih aman dan terkontrol di pabrik pengolahan karet.
Tujuan dari rancangan yang dilakukan yaitu:
Memenuhi syarat untuk modul 4 Praktikum Mikroprosesor & Mikrokontroler
Untuk mendesain Sistem Monitoring Suhu Mesin Pengolahan Karet untuk Mencegah Kebakaran Pada Pabrik Karet
Mengimplementasikan rangkaian Sistem Monitoring Suhu Mesin Pengolahan Karet ke bentuk prototipe
- Alat
- Komponen
1. Raspberry Pi Pico
2. Sensor MQ-2
3. Sensor Flame
4. Sensor LM-35
5. LED Hijau
6. LED Merah
7. Relay 5V
8. LCD 2×16
9. Water Pump
10. Motor DC
11. Baterai
12. Jumper
13. Selang air
14. Resistor
15. Buzzer
16. Motor Servo
17. Kotak baterai
18. Fan
19. DC to DC Step Down
1. PWM (Pulse Width Modulation)
PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (Duty Cycle) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi. Duty Cycle adalah perbandingan antara waktu ON (lebar pulsa High) dengan perioda. Duty Cycle biasanya dinyatakan dalam bentuk persen (%).
• Duty Cycle = tON / ttotal
• tON = Waktu ON atau Waktu dimana tegangan keluaran berada pada posisi tinggi (high atau 1)
• tOFF = Waktu OFF atau Waktu dimana tegangan keluaran berada pada posisi rendah (low atau 0)
• ttotal = Waktu satu siklus atau penjumlahan antara tON dengan tOFF atau disebut juga dengan “periode satu gelombang”
Pada board Raspberry Pi Pico, hampir semua pin digital dapat digunakan untuk PWM (Pulse Width Modulation) karena tersedia 16 saluran PWM yang dapat dikonfigurasi sesuai kebutuhan. Dalam pemrograman menggunakan MicroPython, PWM diakses melalui modul machine dengan membuat objek PWM dari pin tertentu, misalnya PWM(Pin(15)). Frekuensi PWM default adalah sekitar 1.000 Hz, tetapi dapat diubah menggunakan metode freq(), sedangkan lebar pulsa atau duty cycle diatur dengan metode duty_u16() yang menerima nilai dari 0 hingga 65.535. Nilai 0 berarti output pin selalu berada pada tegangan rendah (0 volt), sedangkan nilai 65.535 berarti pin selalu berada pada tegangan tinggi (3,3 volt). Jika diberi nilai tengah seperti 32.768, maka selama satu siklus, pin akan bernilai tinggi selama 50% waktu dan rendah selama 50% sisanya, menghasilkan duty cycle 50%. Nilai duty cycle lain seperti 16.384 (sekitar 25%) akan menghasilkan pulsa bernilai tinggi selama seperempat siklus dan rendah selama tiga perempatnya. Dengan pengaturan ini, Raspberry Pi Pico memungkinkan pengendalian sinyal analog semu (pseudo-analog) melalui sinyal digital yang dikendalikan waktunya, yang sangat berguna dalam aplikasi seperti pengaturan kecepatan motor, kecerahan LED, atau kontrol posisi servo.
2. 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.
Pada Raspberry Pi Pico, konversi sinyal analog ke digital dilakukan melalui ADC (Analog to Digital Converter) internal yang tersedia pada beberapa pin, yaitu pin GP26, GP27, dan GP28. Kecepatan sampling menyatakan seberapa sering sinyal analog dibaca dan dikonversi ke sinyal digital dalam satu detik, dan biasanya dinyatakan dalam satuan sample per second (SPS). Resolusi ADC pada Raspberry Pi Pico adalah 12 bit, yang berarti nilai digital yang dihasilkan berkisar antara 0 hingga 4095, memberikan tingkat ketelitian yang lebih tinggi dibandingkan dengan Arduino Uno yang hanya memiliki resolusi 10 bit (0–1023). Tegangan referensi ADC pada Raspberry Pi Pico adalah 3,3 volt, sehingga ADC mampu membaca tegangan analog dari 0 hingga 3,3 volt. Untuk membaca nilai analog, digunakan perintah ADC(Pin(x)).read_u16()
dalam MicroPython, di mana nilai yang dihasilkan berupa 16-bit (0 hingga 65.535), meskipun secara fisik hanya menggunakan 12 bit efektif. Nilai ini dapat dikonversi kembali ke bentuk tegangan dengan mengalikan hasil pembacaan dengan 3,3 dan membaginya dengan 65.535. Dengan kemampuan ini, Raspberry Pi Pico dapat membaca sinyal analog dengan lebih presisi dan kecepatan tinggi sesuai kebutuhan aplikasi.
3. Mikrokontroler
Raspberry Pi Pico adalah papan rangkaian elektronik yang di dalamnya terdapat komponen utama chip mikrokontroler RP2040, yang dirancang dan diproduksi oleh Raspberry Pi Foundatio. Tidak seperti komputer mini raspberry Pi lainnya yang menjalankan sistem operasi seperti Linux, Pico dirancang untuk tugas-tugas yang lebih sederhana dan langsung (embedded system), seperti membaca sensor, mengontrol perangkat, atau melakukan pengolahan data pada tingkat hardware. Adapun spesifikasi dari Raspberry Pi Pico adalah sebagai berikut:
Gambar 1. Arduino Uno
Microcontroller | RP2040 |
Operating Voltage | 3.3 V |
Input Voltage (recommended) | 5 V via USB |
Input Voltage (limit) | 1.8–5.5 V |
Digital I/O Pins | 26 GPIO pins |
PWM Digital I/O Pins | 16 |
Analog Input Pins | 3 |
DC Current per I/O Pin | 16 mA |
DC Current for 3.3V Pin | 300mA |
Flash Memory | 2 MB on-board QSPI Flash |
SRAM | 264 KB |
Clock Speed | Hingga 133 MHz |
4. Komunikasi
4.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.
4.2. Serial Peripheral Interface (SPI)
Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaitu MOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroler maupun antara mikrokontroler dengan peripheral lain di luar mikrokontroler.
- MOSI : Master Output Slave Input artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
- MISO : Master Input Slave Output artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
- SCLK : Clock jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.
- SS/CS : Slave Select / Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.
Cara Kerja Komunikasi SPI :
Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.
4.3. 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.
5. Sensor
5.1. Sensor Flame
Flame sensor adalah sebuah sensor yang digunakan untuk mendeteksi adanya nyala api atau sumber cahaya inframerah yang berasal dari api. Sensor ini umumnya digunakan dalam sistem keamanan kebakaran, alat pemadam otomatis, atau sistem monitoring suhu tinggi. Flame sensor dapat bekerja dengan berbagai prinsip, salah satunya dengan mendeteksi cahaya pada panjang gelombang tertentu yang dihasilkan oleh api, seperti cahaya ultraviolet (UV) atau inframerah (IR). Sensor ini biasanya memiliki bentuk kompak dan menggunakan fotodioda atau fototransistor sebagai elemen utamanya. Dalam aplikasi mikrokontroler seperti Raspberry Pi Pico atau Arduino, flame sensor yang umum digunakan adalah sensor digital berbasis fototransistor IR, yang memberikan output HIGH atau LOW tergantung ada tidaknya nyala api.
Cara kerja Sensor Flame
Flame sensor bekerja dengan mendeteksi radiasi cahaya inframerah yang dipancarkan oleh nyala api. Sensor ini memiliki elemen sensitif berupa fototransistor atau fotodioda IR yang akan merespons cahaya pada panjang gelombang tertentu, umumnya sekitar 760 nm hingga 1100 nm. Ketika tidak ada api, jumlah cahaya inframerah yang diterima sangat kecil sehingga output sensor berada dalam kondisi HIGH (logika 1). Namun, ketika ada api di dekat sensor, cahaya inframerah dari api akan terdeteksi dan menyebabkan output sensor berubah menjadi LOW (logika 0). Dalam sistem digital, perubahan ini dapat dengan mudah dibaca oleh pin input mikrokontroler, sehingga sistem dapat mengetahui adanya nyala api secara otomatis. Sensor ini bekerja secara real-time dan cukup sensitif, namun tetap dipengaruhi oleh cahaya sekitar, sehingga perlu penyesuaian sensitivitas menggunakan potensiometer yang biasanya tersedia di modul sensor.
Grafik respon sensor flame:
5.2. Sensor MQ-2
MQ-2 adalah sensor gas yang dirancang untuk mendeteksi keberadaan berbagai jenis gas mudah terbakar, seperti LPG, asap, metana, butana, dan hidrogen. Sensor ini sering digunakan dalam sistem pendeteksi kebocoran gas atau sistem keamanan rumah dan laboratorium. MQ-2 memiliki sensitivitas yang tinggi dan waktu respon yang cepat terhadap konsentrasi gas di lingkungan sekitarnya. Sensor ini terdiri dari elemen pemanas (heater) dan sensor resistif (SnO₂) yang resistansinya berubah seiring dengan konsentrasi gas yang terdeteksi. Sensor MQ-2 tersedia dalam bentuk modul yang sudah dilengkapi pembagi tegangan serta dua jenis output, yaitu analog (berupa tegangan yang proporsional terhadap konsentrasi gas) dan digital (HIGH atau LOW tergantung ambang batas yang disetel melalui potensiometer).
Cara kerja sensor MQ-2:
Sensor MQ-2 bekerja dengan prinsip perubahan resistansi pada material semikonduktor akibat paparan gas. Saat sensor dinyalakan, elemen pemanas dalam sensor akan memanaskan permukaan semikonduktor SnO₂. Ketika tidak ada gas, resistansi sensor cukup tinggi. Namun, saat ada gas mudah terbakar di sekitarnya, gas akan bereaksi dengan oksigen yang diserap pada permukaan semikonduktor dan menyebabkan penurunan resistansi. Penurunan resistansi ini menghasilkan peningkatan tegangan pada output analog. Output ini kemudian dapat dibaca oleh ADC (Analog-to-Digital Converter) pada mikrokontroler seperti Raspberry Pi Pico. Jika menggunakan output digital, maka sensor akan memberikan sinyal LOW ketika konsentrasi gas melebihi batas yang telah ditentukan oleh pengguna melalui potensiometer di modul sensor.
Grafik respon sensor MQ-2:
5.3. Sensor LM35
LM35 adalah sensor suhu analog yang dirancang untuk mengukur suhu lingkungan secara linear dengan presisi tinggi. Sensor ini menghasilkan tegangan keluaran yang proporsional terhadap suhu dalam derajat Celcius, di mana setiap kenaikan 1°C menghasilkan kenaikan tegangan sebesar 10 mV. LM35 memiliki keunggulan dibandingkan sensor suhu lainnya karena tidak memerlukan kalibrasi eksternal dan konsumsi dayanya rendah. Sensor ini cocok digunakan dalam berbagai aplikasi, seperti pemantauan suhu ruangan, sistem pendingin, dan perangkat berbasis mikrokontroler.
Cara kerja sensor LM35:
LM35 bekerja dengan mengubah suhu lingkungan menjadi sinyal tegangan analog yang proporsional. Sensor ini memiliki karakteristik linier, di mana output tegangan akan meningkat sebesar 10 mV setiap kenaikan suhu 1°C. Misalnya, pada suhu 25°C, sensor akan menghasilkan tegangan sebesar 250 mV. Tegangan ini kemudian dibaca oleh pin ADC pada mikrokontroler seperti Raspberry Pi Pico, yang akan mengkonversinya menjadi nilai digital. Nilai digital ini dapat diolah lebih lanjut untuk ditampilkan atau digunakan dalam sistem pengendalian suhu. Karena output LM35 bersifat analog, diperlukan pembacaan secara periodik menggunakan fungsi pembacaan ADC agar data suhu dapat diperbarui dan dimonitor secara real-time.
Grafik respon sensor LM35:
6. 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
7. Buzzer
Buzzer adalah sebuah komponen elektronika yang dapat menghasilkan getaran suara berupa gelombang bunyi. Buzzer akan menghasilkan getaran suara ketika diberikan sejumlah tegangan listrik dengan taraf tertentu sesuai dengan spesifikasi bentuk dan ukuran buzzer itu sendiri. Pada umumnya, buzzer ini sering digunakan sebagai alarm karena penggunaannya yang cukup mudah yaitu dengan memberikan tegangan input maka buzzer akan menghasilkan getaran suara berupa gelombang bunyi yang dapat didengar.
Spesifikasi :
• Nilai tegangan : 6V DC
• Tegangan pengoperasian : 4 hingga 8V DC
• Arus : ≤30mA
• Keluaran suara pada 10cm : ≥85dB
• Frekuensi resonansi : 2300 ±300Hz
• Nada : Berkelanjutan
• Suhu operasional : -25°C hingga +80°C
• Suhu penyimpanan : -30°C hingga +85°C
• Berat : 2g
8. 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 : 1500mAh
• Kapasitas minimum : 1400mAh
• Tegangan nominal : 3.7V
• Metode pengisian : CC – CV (tegangan konstan dengan arus terbatas)
• Tegangan cut-off discharge : 2.75V
• Berat sel : maks. 47.0g
• Dimensi sel : a. Diameter (maks.) : 18.40mm
b. Tinggi (maks.) : 65.00mm
10. Pompa DC 5V
Motor pump / pompa air adalah alat untuk menggerakan air dari tempat bertekanan rendah ke tempat bertekanan yang lebih tinggi. Pada dasarnya motor pump sama dengan motor DC pada umumnya, hanya saja sudah di-packing sedemikian rupa sehingga dapat digunakan di dalam air.
Spesifikasi :
- Panjang kabel USB: 1 Meter
- Jenis Pompa: Submersible DC
- Tegangan Kerja: 3 - 5V
- Batas Tegangan: 2.5 - 6V DC
- Konsumsi Arus: 120 - 330 mA
- Konsumsi Daya: 0.4 - 1.5W
- Kapasitas Pompa: 80 - 120L/H
- Dimensi Luar: 7.5mm / 0.3"
- Dimensi Dalam: 4.7mm / 0.18"
- Diameter Pompa: Kurang lebih 24 mm / 0.95"
- Panjang Pompa: Kurang lebih 45 mm / 1.8"
- Tinggi Pompa: Kurang lebih 33 mm / 1.30"
- Material: Engineering plastic
- Aktuator: Brushless DC
- Masa Kerja: 500 jam
11. 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.
Cara kerja sistem ini dimulai saat Raspberry Pi Pico pertama membaca data dari tiga sensor utama, yaitu sensor suhu LM35, sensor gas MQ-2, dan sensor api (flame sensor). Sensor LM35 menghasilkan sinyal analog yang diubah menjadi tegangan oleh ADC, lalu dihitung sebagai suhu dalam derajat Celcius. Sensor MQ-2 juga memberikan sinyal analog untuk mengukur konsentrasi gas, dan nilainya dibandingkan dengan ambang batas tertentu untuk menentukan apakah gas terdeteksi. Sensor flame bekerja secara digital, memberikan sinyal rendah (logika 0) saat mendeteksi adanya api. Hasil pembacaan suhu ditampilkan di LCD I2C bersama status “Aman” atau “Tidak Aman”. Jika suhu di bawah 50°C, LED hijau akan menyala sebagai indikator kondisi aman, dan LCD menampilkan suhu serta status aman. Sebaliknya, jika suhu melebihi 50°C, LED merah menyala, LCD menampilkan suhu serta status tidak aman, fan dinyalakan untuk menurunkan suhu, dan variabel relay_suhu
diset ke 1.
Selanjutnya, jika sensor MQ-2 mendeteksi gas berbahaya, maka motor servo bergerak ke sudut 90° untuk membuka ventilasi dan fan akan menyala untuk membantu mengeluarkan gas dari ruangan. Status ini juga dicatat dengan mengatur variabel relay_gas
menjadi 1. Apabila flame sensor mendeteksi adanya api, maka motor DC yang sedang dimonitoring secara otomatis akan dimatikan untuk mencegah bahaya lebih lanjut, dan pompa air akan dinyalakan melalui kendali relay guna membantu proses pemadaman awal. Dalam kondisi ini, relay_flame
diset ke 1. Semua status dari ketiga sensor ini (suhu, gas, dan api) kemudian dikirimkan dalam bentuk data serial melalui komunikasi UART ke Raspberry Pi Pico kedua.
Raspberry Pi Pico kedua bertugas untuk menerima data dari Pico pertama dan mengendalikan tiga buah modul relay yang terhubung dengan perangkat seperti fan, pompa air, dan motor DC. Selain itu, LED indikator merah yang terhubung pada masing-masing relay juga akan menyala sebagai penanda visual saat terjadi kondisi bahaya. Sistem ini bekerja secara terus menerus dalam loop, sehingga mampu memantau dan merespons kondisi suhu tinggi, gas berbahaya, maupun kebakaran secara real-time dengan memberikan peringatan serta melakukan tindakan otomatis untuk mitigasi awal.
- Listing Program
A. Sender
from machine import ADC, Pin, PWM, I2C, UART from lcd_api import LcdApi from i2c_lcd import I2cLcd from time import sleep # UART uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) # TX to RX Pico 2 # Sensor lm35 = ADC(28) # LM35 analog mq2 = ADC(26) # MQ2 analog flame = Pin(3, Pin.IN) # Output led_hijau = Pin(4, Pin.OUT) led_merah = Pin(5, Pin.OUT) servo = PWM(Pin(19)) servo.freq(50) # LCD I2C i2c = I2C(0, scl=Pin(21), sda=Pin(20), freq=400000) I2C_ADDR = i2c.scan()[0] lcd = I2cLcd(i2c, I2C_ADDR, 2, 16) def baca_suhu(): adc = lm35.read_u16() volt = adc * 3.3 / 65535 suhu = volt * 100 # LM35: 10mV/°C return adc, volt, suhu def gerak_servo(derajat): duty = int(2000 + (derajat / 180) * 6000) servo.duty_u16(duty) while True: # Baca suhu adc_lm35, v_lm35, suhu = baca_suhu() # Baca gas adc_mq2 = mq2.read_u16() gas_terdeteksi = adc_mq2 > 7000 # ambang bisa disesuaikan # Baca flame flame_terdeteksi = flame.value() == 0 # Tampilkan LCD lcd.clear() lcd.putstr("Suhu: {:.1f} C".format(suhu)) # LED & relay logika suhu if suhu > 50: led_hijau.off() led_merah.on() relay_suhu = 1 lcd.move_to(0, 1) lcd.putstr("Status: Tdk Aman") else: led_hijau.on() led_merah.off() relay_suhu = 0 lcd.move_to(0, 1) lcd.putstr("Status: Aman") # Servo & relay logika gas if gas_terdeteksi: relay_gas = 1 gerak_servo(90) else: relay_gas = 0 gerak_servo(0) # Relay logika flame relay_flame = 1 if flame_terdeteksi else 0 # Kirim data ke Pico 2 kirim = "{},{},{}\n".format(relay_suhu, relay_gas, relay_flame) uart.write(kirim) # Tampilkan ke serial monitor print("LM35 ADC: {} | Teg: {:.2f}V | Suhu: {:.1f} C".format(adc_lm35, v_lm35, suhu)) print("MQ2 ADC: {} | {}".format(adc_mq2, "GAS!" if gas_terdeteksi else "AMAN")) print("Flame : {}".format("API TERDETEKSI" if flame_terdeteksi else "AMAN")) print("---") sleep(1) |
B. Receiver
from machine import Pin, UART, PWM from time import sleep # UART uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) # RX from Pico 1 # Output relay_suhu = Pin(17, Pin.OUT) relay_gas = Pin(27, Pin.OUT) relay_flame_1 = Pin(16, Pin.OUT) relay_flame_2 = Pin(18, Pin.OUT) buzzer = PWM(Pin(22)) buzzer.freq(1000) buzzer.duty_u16(0) while True: if uart.any(): line = uart.readline() try: decoded = line.decode().strip() parts = decoded.split(",") if len(parts) == 3: suhu_val = int(parts[0]) gas_val = int(parts[1]) flame_val = int(parts[2]) # Atur relay relay_suhu.value(suhu_val) relay_gas.value(gas_val) relay_flame_1.value(flame_val) relay_flame_2.value(flame_val) # Buzzer aktif jika flame terdeteksi if flame_val == 1: buzzer.duty_u16(30000) else: buzzer.duty_u16(0) # Serial monitor log print(f"RELAY | Suhu: {suhu_val}, Gas: {gas_val}, Api: {flame_val}") except Exception as e: print("Error decoding:", e) sleep(0.1) |
Komentar
Posting Komentar