SB Components
Published © GPL3+

PiCoder: Effortless Parking with Automatic Garage/Barrier

Experience effortless parking with the PiCoder, an automatic garage/barrier gate opening system powered by the Raspberry Pi Pico Learning Ki

BeginnerProtip1 hour324
PiCoder: Effortless Parking with Automatic Garage/Barrier

Things used in this project

Hardware components

PiCoder  - Raspberry Pi Pico Learning Kit
SB Components PiCoder - Raspberry Pi Pico Learning Kit
×1
Raspberry Pi Pico
Raspberry Pi Pico
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1

Story

Read more

Code

automatic_garage_door.py

Python
Automatic Garage / Barrier Gate opening system
from time import sleep
from machine import Pin,PWM
import utime

#configure ultrasonic sensor pins
trigger = Pin(16, Pin.OUT)  #set GP16 as OUTPUT connected to Trig pin of Ultrasonic
echo = Pin(17, Pin.IN)		#set GP17 as INPUT connected to Echo pin of Ultrasonic

buzzer = Pin(22, Pin.OUT) #set GP12 as OUTPUT where buzzer connected

servo = PWM(Pin(15)) #configure GP15 for PWM where servo sig connected
servo.freq(50)

def ultrasonic():
    timepassed = 0
    trigger.low()
    utime.sleep_us(2)
    trigger.high()
    utime.sleep_us(10)
    trigger.low()
        
    while echo.value() == 0:
        signaloff = utime.ticks_us()
    while echo.value() == 1:
        signalon = utime.ticks_us()
           
    timepassed = signalon - signaloff
    distance_cm = (timepassed * 0.0343) / 2
    distance_cm = round(distance_cm,2)
    return distance_cm

def doorOpen():
    buzzer.value(1) #Switch ON Buzzer for audio alert
    for position in range(1000,6000,50):
        servo.duty_u16(position)
        sleep(0.01)
    buzzer.value(0) #Switch OFF Buzzer 
    

def doorClose():
    buzzer.value(1) #Switch ON Buzzer
    for position in range(6000,1000,-50):
        servo.duty_u16(position)
        sleep(0.01)
    buzzer.value(0) #Switch OFF

thresholdDistance = 4  # change this as per your requirement, when to trigger servo gate

while True:
    distance = ultrasonic()
    print("Distance =",distance)
    
    if distance < thresholdDistance:	#Check if vehicle close to sensor, 
        doorOpen()
        print("Door Opened!!")
        while distance < thresholdDistance:        #Wait for vehicle to pass
            distance = ultrasonic()
            sleep(1)
        doorClose()
        print("Door Closed!!")
        
    utime.sleep(0.5)
    

Credits

SB Components
14 projects • 6 followers
#Robotics #RaspberryPi #DIYElectronics
Contact

Comments

Please log in or sign up to comment.