print("Hello, Pi Pico W!")
#يطبع رسالة على الشاشة.
#import libraries
from machine import Pin
import utime
from imu import MPU6050
import time
from machine import I2C
#هنا بيتم استيراد بعض المكتبات والأدوات اللازمة لتشغيل الحساسات والتواصل مع مكونات الهاردوير.
import network
import time
from machine import Pin
from umqttsimple import MQTTClient
#هذا الجزء يستورد مكتبات تسمح بالتواصل عبر الواي فاي وبروتوكول MQTT
# WiFi Network Parameters
# SSID: Wokwi-GUEST
# Security: Open
print("Connecting to WiFi", end="")
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("Wokwi-GUEST", "")
#يقوم بتشغيل واجهة الواي فاي، وتوصيل الجهاز بشبكة "Wokwi-GUEST".
while not wlan.isconnected():
print(".", end="")
time.sleep(0.1)
print(wlan.ifconfig())
print("WiFi Connected!")
#هنا يتم الاتصال بشبكة الواي فاي.
# MQTT Server Parameters
MQTT_CLIENT_ID = "picow-01"
MQTT_BROKER = "f7bad57596e34258bc8cde18b8b6474c.s2.eu.hivemq.cloud"
MQTT_USER = "user2023"
MQTT_PASSWORD = "Prog6002P@$$"
MQTT_TOPIC = "wokwi"
print("Connecting to MQTT server... ", end="")
client = MQTTClient(client_id=MQTT_CLIENT_ID,
server=MQTT_BROKER, user=MQTT_USER,
password=MQTT_PASSWORD,
keepalive=7200,
ssl=True,
ssl_params={'server_hostname':'f7bad57596e34258bc8cde18b8b6474c.s2.eu.hivemq.cloud'})
#يتصل بخادم MQTT.إعداد اتصال MQTT مع الخادم المحدد، والمصادقة بواسطة اسم المستخدم وكلمة المرور.
# The callback function
def sub_callback(topic, msg):
print("Received: {}:{}".format(topic.decode(), msg.decode()))
client.set_callback(sub_callback)
client.connect()
client.subscribe(topic = MQTT_TOPIC)
#لاشتراك في موضوع MQTT معين، حتى يتمكن الجهاز من استقبال الرسائل التي تُنشر في هذا الموضوع.
print("MQTT Connected!")
#يتم هنا تعيين دالة رد الفعل والاشتراك في موضوع MQTT.
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
imu = MPU6050(i2c)
#يقوم بإعداد الاتصال I2C مع متحسس MPU6050.
while True:
# Following print shows original data get from libary. You can uncomment to see raw data
#print(imu.accel.xyz,imu.gyro.xyz,imu.temperature,end='\r')
# Following rows round values get for a more pretty print:
ax=round(imu.accel.x,2)
ay=round(imu.accel.y,2)
az=round(imu.accel.z,2)
gx=round(imu.gyro.x)
gy=round(imu.gyro.y)
gz=round(imu.gyro.z)
tem=round(imu.temperature,2)
print(ax,"\t",ay,"\t",az,"\t",gx,"\t",gy,"\t",gz,"\t",tem," ",end="\r")
#يقوم بقراءة القيم من مستشعر MPU6050 وطباعتها على الشاشة بتنسيق محدد.
# Following sleep statement makes values enought stable to be seen and
# read by a human from shell
time.sleep(0.2)
#طباعة قراءات مستشعر MPU6050.
#code for relay and lED
RELAY_CTRL_PIN = 16
def main():
relay = Pin(RELAY_CTRL_PIN, Pin.OUT)
# يقوم بإعداد مخرج GPIO لتحكم في ريلاي، والذي يتحكم في تشغيل وإيقاف الإضاءة.
while True:
print("Led on")
print("parking is available ")
relay.high() #set the output pin to high level (1)
utime.sleep(2.0)
print("Led off")
print("parking is unavailable ")
relay.low() #set the output pin to low level (0)
utime.sleep(2.0)
if __name__ == "__main__":
main()
#يتم التحكم بريلاي لتشغيل الإضاءة بحسب توفر مكان لوقوف السيارات.
#code for ultrasonic sound sensor with raspberry pi pico w in micropython
trigger = Pin(26, Pin.OUT)
echo = Pin(27, Pin.IN)
def ultra():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() ==0:
signaloff = utime.ticks_us()
while echo.value() ==1:
signalon = utime.ticks_us()
timepassed = signalon-signaloff
distance = (timepassed * 0.0343) / 2
#يستخدم الوقت المستغرق لإرجاع الإشارة من المستشعر لحساب المسافة بين الجهاز والعائق.
print("The distance from object is ",distance, "cm")
while True:
ultra()
utime.sleep(1)
# يقوم بتكرار دائم لقراءة مستشعر الصوت الفوق الصوتي.يتم فيه استخدام مستشعر الصوت الفوق الصوتي لقياس المسافة.
##code for PIR Motion sensor
pir = Pin(0,Pin.IN)
while True:
motion_state=pir.value()
print(motion_state) #0 - no motion; 1 - there is motion
utime.sleep(1.0)
#يتم استخدام مستشعر الحركة PIR. يقوم بتكرار دائم لقراءة مستشعر الحركة وطباعة القيمة المقروءة. يقوم بقراءة قيمة مستشعر الحركة وطباعتها على الشاشة، حيث يكون القيمة 0 إذا لم يتم اكتشاف حركة و1 إذا تم اكتشافها.
from time import sleep
from servo import Servo
'''
يتم التحكم بحركة سيرفو موتور. مش مستخدمينه ممكن نمسح الكومنت ده لما نيجي نناقش
from machine import Pin, PWM
pwm = PWM(Pin(27))
pwm.freq(50)
while True:
for position in range(1000,9000,50):
pwm.duty_u16(position)
sleep(0.01)
for position in range(9000,1000,-50):
pwm.duty_u16(position)
sleep(0.01)
'''
SERVO_CTRL_PIN = 27
sg90_servo = Servo(pin=SERVO_CTRL_PIN)
while True:
sg90_servo.move(0) # turns the servo to 0°.
sleep(1)
sg90_servo.move(90) # turns the servo to 90°.
sleep(1)
#يتم التحكم بحركة سيرفو موتور.يتم التحكم بحركة سيرفو موتور بين زوايا محددة (0 درجة و 90 درجة) بشكل متكرر.