.. note:: Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze di Raspberry Pi, Arduino ed ESP32 con 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 consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime esclusive. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni e omaggi festivi**: Partecipa a omaggi e promozioni speciali durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _4.1.6_py: 4.1.6 Sistema di allarme a induzione magnetica ======================================================== Introduzione ----------------- Quando ricevi un prezioso vaso, puoi realizzare un sistema di allarme a induzione magnetica per proteggerlo. Se qualcuno lo sposta, potrai sentire l'allarme in tempo. Componenti necessari ------------------------------ In questo progetto, avremo bisogno dei seguenti componenti. .. image:: ../img/3.1.20components.png :width: 800 :align: center È sicuramente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Raphael - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_buzzer` - |link_passive_buzzer_buy| * - :ref:`cpn_transistor` - |link_transistor_buy| * - :ref:`cpn_reed_switch` - |link_reed_switch_buy| Schema elettrico ----------------------- ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 GPIO27 Pin 13 2 27 ============ ======== ======== === .. image:: ../img/3.1.20_schematic.png :width: 600 :align: center Procedura sperimentale ------------------------------ **Passo 1:** Costruisci il circuito. .. image:: ../img/3.1.20fritzing.png :width: 800 :align: center **Passo 2:** Accedi alla cartella del codice. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Passo 3:** Esegui. .. raw:: html .. code-block:: sudo python3 4.1.6_MagneticAlarmSystem.py Se l'interruttore reed è influenzato dal magnete (ad esempio, l'interruttore reed è posizionato sulla base e il magnete è posto nel vaso), l'oggetto è sicuro. In questo momento, l'interruttore reed è chiuso e il cicalino rimane silenzioso. Dopo aver rimosso il magnete (ad esempio, se il vaso viene rubato), l'interruttore reed non è più influenzato dal campo magnetico, l'interruttore si apre e il cicalino emette un allarme. **Codice** .. note:: Puoi **Modificare/Resettare/Copiare/Eseguire/Fermare** il codice qui sotto. Ma prima di farlo, devi accedere al percorso del codice sorgente come ``raphael-kit/python``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 import RPi.GPIO as GPIO import time BeepPin = 27 ReedPin = 17 def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(BeepPin, GPIO.OUT, initial=GPIO.HIGH) GPIO.setup(ReedPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) def loop(): while True: if GPIO.input(ReedPin) == 0: GPIO.output(BeepPin, GPIO.HIGH) else: GPIO.output(BeepPin, GPIO.LOW) time.sleep(0.1) GPIO.output(BeepPin, GPIO.HIGH) time.sleep(0.1) def destroy(): GPIO.output(BeepPin, GPIO.HIGH) GPIO.cleanup() if __name__ == '__main__': setup() try: loop() except KeyboardInterrupt: destroy() **Spiegazione del Codice** .. code-block:: python def loop(): while True: if GPIO.input(ReedPin) == 0: GPIO.output(BeepPin, GPIO.HIGH) else: GPIO.output(BeepPin, GPIO.LOW) time.sleep(0.1) GPIO.output(BeepPin, GPIO.HIGH) time.sleep(0.1) Nel ciclo principale, verifichiamo lo stato dell'interruttore reed. Se l'interruttore reed è chiuso, il cicalino non suona; altrimenti, il cicalino emette un segnale acustico. Immagine del fenomeno -------------------------- .. image:: ../img/4.1.6_security.JPG :align: center