import machine from Pin
import dht
import time from sleep
# Pin numaralarını tanımladık.
soil_pin = 32 # Toprak nem sensörü
dht_pin = 23
relay_pin = 26
working_led_pin = 19
not_working_led_pin = 18
led_bar_pins = [21, 22, 25, 33, 14]
# Pinleri tanımla
working_led = machine.Pin(working_led_pin, machine.Pin.OUT)
not_working_led = machine.Pin(not_working_led_pin, machine.Pin.OUT)
led_bar = [machine.Pin(pin, machine.Pin.OUT) for pin in led_bar_pins]
# Toprak nem sensörünü okuma fonksiyonu
def read_soil_moisture():
adc = machine.ADC(machine.Pin(soil_pin))
soil_moisture = adc.read()
return soil_moisture
# Hava durumu ve sıcaklık sensörünü okuma fonksiyonu
def read_dht_sensor():
d = dht.DHT22(machine.Pin(dht_pin))
d.measure()
temperature = d.temperature()
humidity = d.humidity()
return temperature, humidity
# Sulama kontrol fonksiyonu
def irrigate(should_irrigate):
relay = machine.Pin(relay_pin, machine.Pin.OUT)
relay.value(should_irrigate) # Röleyi aç veya kapat
working_led.value(should_irrigate) # Çalışma durumu LED'i kontrolü
not_working_led.value(not should_irrigate) # Çalışmama durumu LED'i kontrolü
# Toprak nemini LED bar grafiği olarak gösteren fonksiyon
def display_soil_moisture(moisture_value):
# 0 ile 100 arasındaki değeri 5 LED'lik bir bar grafiğine dönüştür
moisture_level = int(moisture_value / 20)
# LED bar grafiğini güncelle
for i, led_pin in enumerate(led_bar):
if i < moisture_level:
led_pin.value(1)
else:
led_pin.value(0)
# Ana döngü
while True:
soil_moisture = read_soil_moisture()
temperature, humidity = read_dht_sensor()
print("Toprak Nem: {} | Sıcaklık: {}°C | Nem: {}%".format(soil_moisture, temperature, humidity))
# Toprak nem seviyesine ve hava durumuna göre sulama kontrolü
if soil_moisture < 500 and temperature > 25:
irrigate(True)
print("Sulama yapılıyor...")
else:
irrigate(False)
# Toprak nemini LED bar grafiği olarak göster
display_soil_moisture(soil_moisture)
time.sleep(3600) # Her saatte bir ölçüm yap