Rangkaian ini menggunakan Raspberry Pi Pico sebagai pusat kendali, yang terhubung dengan modul sensor cahaya berbasis LDR (Light Dependent Resistor). Sensor ini berfungsi untuk mengukur intensitas cahaya (lux) di sekitarnya. Sensor mendapatkan catu daya dari pin 3.3V dan GND Raspberry Pi Pico, sedangkan sinyal keluarannya dihubungkan ke salah satu pin GPIO untuk dibaca sebagai input analog atau digital. Pada rangkaian ini juga terdapat LED merah yang disambungkan ke salah satu pin GPIO melalui resistor pembatas arus, dengan katoda LED terhubung ke ground. Selain itu, buzzer dihubungkan ke pin GPIO lain dan ke ground, yang berfungsi sebagai output suara.
Secara keseluruhan, sistem ini bekerja dengan mendeteksi tingkat pencahayaan di lingkungan sekitar melalui sensor LDR. Raspberry Pi Pico kemudian memproses data tersebut; jika pencahayaan berada di bawah atau di atas ambang batas tertentu, LED akan menyala sebagai indikator visual, dan buzzer akan berbunyi sebagai peringatan suara. Semua sambungan memperhatikan kebutuhan tegangan dan arus masing-masing komponen untuk memastikan rangkaian berjalan dengan stabil.
Rangkaian ini berfungsi untuk mendeteksi tingkat pencahayaan di lingkungan sekitar menggunakan sensor cahaya berbasis LDR. Sensor ini akan membaca intensitas cahaya dan mengubahnya menjadi sinyal yang dapat dibaca oleh Raspberry Pi Pico. Output dari sensor dihubungkan ke salah satu pin GPIO Pico, yang selanjutnya dipantau secara berkala.
Ketika Raspberry Pi Pico membaca nilai pencahayaan di bawah atau di atas batas ambang (threshold) yang telah diprogramkan, mikrokontroler akan mengaktifkan LED dan buzzer. LED menyala sebagai indikator visual bahwa intensitas cahaya tidak sesuai dengan kondisi normal, sementara buzzer berbunyi untuk memberikan peringatan suara. Jika tingkat pencahayaan kembali ke rentang normal, Raspberry Pi Pico akan mematikan LED dan buzzer.
Selama sistem bekerja, Raspberry Pi Pico terus menerus membaca data sensor dan mengatur output LED dan buzzer secara real-time berdasarkan perubahan intensitas cahaya.
from machine import Pin, PWM, ADC
import utime
# Pin Setup
ldr = ADC(28)
# Pin AO dari LDR ke GP28
ldr_digital = Pin(0, Pin.IN)
# Pin DO dari LDR ke GP0
led = Pin(6, Pin.OUT)
# LED di GP6
buzzer = PWM(Pin(15))
# Buzzer di GP15 dengan PWM
# Konfigurasi PWM Buzzer
buzzer.freq(1000)
# Frekuensi awal buzzer (1kHz)
buzzer.duty_u16(0)
# Mulai dengan buzzer mati
# Fungsi untuk mengonversi nilai ADC ke lux
def adc_to_lux(adc_value):
return (adc_value
/ 65535) * 900 + 10 # Rentang 10 - 1000
lux
# Variabel untuk menyimpan kondisi normal awal
lux_normal = 0
# Variabel untuk kedip LED
last_blink_time = utime.ticks_ms()
led_state = False
led_should_blink = False
# hanya True saat kondisi mendeteksi perubahan cahaya
signifikan
# Loop utama
while True:
analog_value =
ldr.read_u16()
lux =
adc_to_lux(analog_value)
if lux_normal ==
0:
lux_normal = lux
print(f"Lux Normal: {lux_normal}")
print(f"LDR Value: {analog_value} | Lux: {lux}")
if lux > lux_normal + 50:
led_should_blink = True
# nyalakan mode kedip
buzzer.duty_u16(30000)
# nyalakan buzzer
for i in range(500, 1000, 100): # variasi frekuensi buzzer
buzzer.freq(i)
utime.sleep(0.1)
else:
led_should_blink = False
led.off()
buzzer.duty_u16(0)
# Kedip LED jika perlu
if led_should_blink:
current_time = utime.ticks_ms()
if utime.ticks_diff(current_time, last_blink_time) >=
1000:
led_state = not led_state
led.value(led_state)
last_blink_time = current_time
utime.sleep(0.1) #
sedikit delay supaya tidak terlalu cepat baca LDR
File HTML [disini]
Rangkaian [disini]
Listing Program [disini]
Video [disini]
Datasheet Raspberry Pi Pico [disini]
Datasheet LDR [disini]
0 comments:
Posting Komentar