from machine import Pin, I2C
import utime
import time
from imu import MPU6050
import network
from umqttsimple import MQTTClient
from servo import Servo
print("Hello, Pi Pico W!")
# WiFi connect code here (same as your current code, without ssl)
# MQTT setup (try removing ssl=True if no ussl available)
# Setup IMU
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
imu = MPU6050(i2c)
# Setup Relay
RELAY_CTRL_PIN = 16
relay = Pin(RELAY_CTRL_PIN, Pin.OUT)
# Ultrasonic sensor pins
trigger = Pin(26, Pin.OUT)
echo = Pin(27, Pin.IN)
# PIR motion sensor
pir = Pin(0, Pin.IN)
# Servo
SERVO_CTRL_PIN = 27
sg90_servo = Servo(pin=SERVO_CTRL_PIN)
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
return distance
def sub_callback(topic, msg):
print("Received: {}:{}".format(topic.decode(), msg.decode()))
# Connect WiFi (your existing code)
# Setup MQTT client, set callback, connect, subscribe (your code here)
def main_loop():
while True:
# Read IMU data
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, ay, az, gx, gy, gz, tem)
# Relay control example (toggle every 4 seconds)
relay.high()
print("Relay ON - Parking Available")
utime.sleep(2)
relay.low()
print("Relay OFF - Parking Unavailable")
utime.sleep(2)
# Ultrasonic sensor distance
dist = ultra()
print(f"Distance: {dist:.2f} cm")
# PIR motion sensor state
motion_state = pir.value()
print(f"Motion detected: {motion_state}")
# Servo movement
sg90_servo.move(0)
utime.sleep(1)
sg90_servo.move(90)
utime.sleep(1)
# Sleep a bit before next loop iteration
utime.sleep(0.5)
if __name__ == "__main__":
main_loop()
#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)
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)