Dozator automat de sapun lichid facut cu Raspberry Pi si Python

Salutare prieteni!

Azi am incercat sa fac un nou proiect, unul destul de simplu dar interesant: un dozator automat de sapun lichid pe care l-am facut cu ajutorul urmatoarelor componente:

Pe Raspberry Pi am facut programul Python pe care il puteti gasi la finalul articolului. Senzorul ultrasonic masoara distanta pana la obstacolele din fata lui si astfel detecteaza daca ne apropiem cu mainile fata de senzor la mai putin de 5cm. In momentul in care senzorul detecteaza mainile in apropiere vom actiona releul si acesta la randul lui va porni pompa care va transporta sapunul lichid spre maini.

Atentie: timpul cat mentinem pompa pornita trebuie sa difere in functie de lungimea furtunului. Daca furtunul e scurt atunci timpul trebuie sa fie si el scurt. Daca furtunul este mai lung atunci si timpul trebuie sa fie mai lung pentru ca pompa trebuie sa impinga coloana de lichid pe distanta mai mare.

Buuun… acum prototipul este gata, trebuie sa gasesc o cutie in care sa le asez si sa-l pun la treaba pe chiuveta in baie! 😉

UPDATE: Gata, am si rezultatul final facut impreuna cu un Raspberry Pi Zero W si sapun linchid:

Iata codul scris de mine (*Free to copy and use for educational purposes):

# Copyright 2020 by Sebastian Chetroni - ZCoder.ro
# Free to copy and use for educational purposes

#importam librariile necesare si alegem pinii GPIO cu care vom lucra
import time
import RPi.GPIO as GPIO
from datetime import datetime
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
# Alegem pinul GPIO pentru controlul releului
pinReleu = 13
# Alegem pinii de comunicare GPIO pentru senzorul ultrasonic
trig = 16
echo = 18
# Alegem directia de comunicare pentru fiecare pin
GPIO.setup(pinReleu,GPIO.OUT)
GPIO.setup(trig, GPIO.OUT)
GPIO.setup(echo, GPIO.IN)

# Pornim bucla repetitiva care va masura distanta si va porni pompa
while True:
    # Facem pauza de 0,25 secunde intre masuratori
    time.sleep(0.25)
    # Incepem masurarea distantei
    now = datetime.now()
    date = now.strftime("%Y.%m.%d – %H:%M:%S")
    GPIO.output(trig, GPIO.HIGH)
    time.sleep(0.00001)
    GPIO.output(trig, GPIO.LOW)
    start = time.time()
    stop = time.time()
    while GPIO.input(echo) == 0:
        start = time.time()
    while  GPIO.input(echo) == 1:
        stop = time.time()
    duration = stop - start
    distance = 34300/2 * duration
    # Afisam distanta masurata de senzor
    if distance < 3400:
        print ("Distanta = %.2fcm" %distance)
    # Daca distanta este mai mica de 5cm pornim pompa
    if distance < 5:
        # Dam comanda releului pentru pornirea pompei
        GPIO.output(pinReleu, GPIO.HIGH)
        # Mentinem pompa pornita pentru 0,5 secunde.
        # Acest timp trebuie modificat in functie de lungimea furtunului prin care va circula lichidul
        time.sleep(0.5)
        # Dam comanda releului pentru oprirea pompei
        GPIO.output(pinReleu, GPIO.LOW)
        #  Facem pauza de 3 secunde pana la urmatoarea masuratoare
        time.sleep(3)
    else:
        # Daca distanta este mai mare de 5cm lasam pompa oprita
        GPIO.output(pinReleu, GPIO.LOW)
GPIO.cleanup()

Ma numesc Sebastian, am 10 ani si sunt pasionat de: programare in Python, C++, Raspberry Pi, citit, astronomie, astrofizica, chimie, sport, fotografie si Xbox. Ma gasesti si pe: Instagram, Youtube, Facebook
Comments

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *