import network
import time
from machine import Pin, ADC
import socket
# معلمات ThingSpeak
THINGSPEAK_WRITE_API_KEY = "K9ANCT215BYGFOBC" # استبدل بـ API Key الخاص بك
THINGSPEAK_HOST = "api.thingspeak.com"
THINGSPEAK_URL = "/update"
# حساس رطوبة التربة
soil_moisture_pin = ADC(Pin(36)) # ADC1_CH0
soil_moisture_pin.atten(ADC.ATTN_11DB) # المدى الكامل: من 0 إلى 3.3 فولت
# دبابيس الري
relay = Pin(26, Pin.OUT)
relay.off() # بدءًا من إيقاف تشغيل الري
# دبابيس LED
led = Pin(26, Pin.OUT) # LED مدمج أو LED خارجي
led.off() # بدءًا من إيقاف تشغيل LED
# الاتصال بالشبكة اللاسلكية
print("Connecting to WiFi", end="")
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect('Wokwi-GUEST', '') # استبدل باسم الشبكة وكلمة المرور
while not sta_if.isconnected():
print(".", end="")
time.sleep(0.1)
print(" Connected!")
# إعداد الاتصال بـ ThingSpeak باستخدام socket
def send_to_thingspeak(moisture_value, relay_status, led_status):
# إضافة طباعة للتأكد من القيم المرسلة
print(f"Sending to ThingSpeak: Moisture={moisture_value}, Relay={relay_status}, LED={led_status}")
payload = "api_key={}&field1={}&field2={}&field3={}".format(
THINGSPEAK_WRITE_API_KEY, moisture_value, relay_status, led_status)
print("Payload:", payload) # إظهار الـ payload المرسل
addr = socket.getaddrinfo(THINGSPEAK_HOST, 80)[0][-1]
s = socket.socket()
s.connect(addr)
request = "GET {}?{} HTTP/1.1\r\nHost: {}\r\nConnection: close\r\n\r\n".format(
THINGSPEAK_URL, payload, THINGSPEAK_HOST)
s.send(request.encode())
response = s.recv(1024)
print("ThingSpeak Response:", response)
s.close()
# إرسال البيانات إلى ThingSpeak
prev_moisture = -1
while True:
# قراءة قيمة رطوبة التربة
moisture_value = soil_moisture_pin.read()
print("Soil Moisture Value:", moisture_value)
# تشغيل/إيقاف الري وLED بناءً على مستوى الرطوبة
if moisture_value < 1500: # قم بتعديل الحد حسب الحاجة
relay.on() # تشغيل الريال
led.on() # تشغيل LED
relay_status = "ON"
led_status = "ON"
print("Relay ON: Soil is dry, LED ON")
else:
relay.off() # إيقاف الريال
led.off() # إيقاف LED
relay_status = "OFF"
led_status = "OFF"
print("Relay OFF: Soil is wet, LED OFF")
# إرسال البيانات إلى ThingSpeak
if moisture_value != prev_moisture:
print("Reporting to ThingSpeak: Moisture =", moisture_value)
send_to_thingspeak(moisture_value, relay_status, led_status)
prev_moisture = moisture_value
time.sleep(15) # يسمح ThingSpeak بتحديث البيانات كل 15 ثانية