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.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
Diagramma Schematica
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO27 |
Pin 13 |
2 |
27 |
Procedure Sperimentali
Passo 1: Costruisci il circuito.
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
Importa le classi necessarie
BuzzereButtondalla libreriagpiozero, e il modulotimedalla libreria standard di Python.#!/usr/bin/env python3 from gpiozero import Buzzer, Button import time
L’oggetto
Buzzerè collegato al pin GPIO 27, e unButton(che funge da interruttore reed) è collegato al pin GPIO 17 con l’argomentopull_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)
Il blocco
trycontiene 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
Il blocco
exceptgestisce 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