Nota

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

Perché Unirsi?

  • Supporto Tecnico Esperto: Risolvi i problemi post-vendita e affronta 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.

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

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni festive.

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

4.1.3 Sistema di Allarme a Induzione Magnetica

Introduzione

Hai un vaso prezioso? Puoi realizzare un sistema di allarme a induzione magnetica per proteggerlo: chiunque lo sposti, sentirai subito l’allarme.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/4.1.6_magneticalarmsystem_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Cicalino

ACQUISTA

Transistor

ACQUISTA

Modulo Interruttore Reed

ACQUISTA

Diagramma Schematica

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO27

Pin 13

2

27

../_images/4.1.6_magneticalarmsystem_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/4.1.6_magneticalarmsystem_circuit.png

Passo 2: Vai nella cartella del codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui.

sudo python3 4.1.6_MagneticAlarmSystem_zero.py

Se l’interruttore reed è influenzato dal magnete (ad esempio, se l’interruttore reed è posizionato sulla base e il magnete nel vaso), l’oggetto è al sicuro. In questo momento, l’interruttore reed è chiuso e il buzzer rimane silenzioso. Quando il magnete viene rimosso (ad esempio, se il vaso viene rubato), l’interruttore reed non è più influenzato dal magnetismo, si apre e il buzzer suona l’allarme.

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice sottostante. Ma prima di farlo, devi andare nel percorso del codice sorgente come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
from gpiozero import Buzzer, Button
import time

# Inizializza il buzzer sul pin GPIO 27
buzzer = Buzzer(27)
# Inizializza l'interruttore reed sul pin GPIO 17 con il resistore pull-up abilitato
reed_switch = Button(17, pull_up=True)

try:
    while True:
        # Verifica se l'interruttore reed è premuto
        if reed_switch.is_pressed:
            # Spegni il buzzer se l'interruttore reed è premuto
            buzzer.off()
        else:
            # Se l'interruttore reed non è premuto, attiva il buzzer
            buzzer.on()
            time.sleep(0.1)  # Buzzer acceso per 0.1 secondi
            buzzer.off()
            time.sleep(0.1)  # Buzzer spento per 0.1 secondi

except KeyboardInterrupt:
    # Spegni il buzzer quando il programma viene interrotto (ad esempio, con un'interruzione da tastiera)
    buzzer.off()
    pass

Spiegazione del Codice

  1. Importa le classi necessarie Buzzer e Button dalla libreria gpiozero, e il modulo time dalla libreria standard di Python.

    #!/usr/bin/env python3
    from gpiozero import Buzzer, Button
    import time
    
  2. L’oggetto Buzzer è collegato al pin GPIO 27, e un Button (che funge da interruttore reed) è collegato al pin GPIO 17 con l’argomento pull_up=True, abilitando il resistore pull-up interno.

    # Inizializza il buzzer sul pin GPIO 27
    buzzer = Buzzer(27)
    # Inizializza l'interruttore reed sul pin GPIO 17 con il resistore pull-up abilitato
    reed_switch = Button(17, pull_up=True)
    
  3. Il blocco try contiene un ciclo infinito (while True) che verifica lo stato dell’interruttore reed. Se è premuto (is_pressed), il buzzer viene spento. Altrimenti, il buzzer emette un suono intermittente (0.1 secondi acceso, 0.1 secondi spento).

    try:
        while True:
            # Verifica se l'interruttore reed è premuto
            if reed_switch.is_pressed:
                # Spegni il buzzer se l'interruttore reed è premuto
                buzzer.off()
            else:
                # Se l'interruttore reed non è premuto, attiva il buzzer
                buzzer.on()
                time.sleep(0.1)  # Buzzer acceso per 0.1 secondi
                buzzer.off()
                time.sleep(0.1)  # Buzzer spento per 0.1 secondi
    
  4. Il blocco except gestisce un’interruzione da tastiera (come Ctrl+C) per spegnere il buzzer in sicurezza.

    except KeyboardInterrupt:
          # Turn off the buzzer when the program is interrupted (e.g., keyboard interrupt)
        buzzer.off()
        pass