Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime speciali.

  • Sconti esclusivi: Approfitta di sconti riservati sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

2.2.6 Modulo Sensore di Velocità

Introduzione

In questo progetto, impareremo l’uso del modulo sensore di velocità. Un modulo sensore di velocità è un tipo di tachimetro che viene utilizzato per misurare la velocità di un oggetto rotante, come un motore.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.6component.png

È sicuramente comodo acquistare un kit completo, ecco il link:

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Modulo Sensore di Velocità

-

Schema Elettrico

../_images/2.2.6circuit.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.6fritzing.png

Passo 2: Cambia directory.

cd ~/raphael-kit/python

Passo 3: Esegui.

sudo python3 2.2.6_speed_sensor_module.py

Dopo che il codice è stato eseguito, il LED verde si accenderà. Se metti un ostacolo nella fessura del modulo sensore di velocità, verrà stampato sullo schermo «light blocked» e il LED rosso si accenderà. Rimuovi l’ostacolo e il LED verde si accenderà di nuovo.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
import RPi.GPIO as GPIO

speedPin  = 17
Gpin   = 27
Rpin   = 22

def setup():
    GPIO.setmode(GPIO.BCM)       #
    GPIO.setup(Gpin, GPIO.OUT)     # Imposta Gpin in modalità output
    GPIO.setup(Rpin, GPIO.OUT)     # Imposta Rpin in modalità output
    GPIO.setup(speedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Imposta speedPin in modalità input e inizializzalo a livello alto (3.3V)
    GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

def detect(chn):
    Led(GPIO.input(speedPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.LOW)       # Spegni il LED verde
    GPIO.output(Rpin, GPIO.LOW)       # Spegni il LED rosso
    GPIO.cleanup()                    # Rilascia le risorse

if __name__ == '__main__':     # Il programma parte da qui
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # Quando viene premuto 'Ctrl+C', il programma distrugge() sarà eseguito.
        destroy()

Spiegazione del Codice

GPIO.add_event_detect(speedPin, GPIO.BOTH, callback=detect, bouncetime=200)

Aggiungi un evento qui, che viene attivato da una variazione del livello di speedPin e chiama detect() per controllare l’accensione e lo spegnimento dei 2 LED.

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)
    if x == 1:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        print ('Light was blocked')

Definisci una funzione Led() che accende il LED rosso e stampa Light was blocked quando il parametro è 1; accende il LED verde quando il parametro è 0.

def detect(chn):
    Led(GPIO.input(speedPin))

Definisci una funzione di callback dove il valore di speedPin controllerà l’accensione o lo spegnimento dei 2 LED.

Immagine del Fenomeno

../_images/2.2.6photo_interrrupter.JPG