.. note:: Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken. - **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte. - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil. 👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei! .. _4.1.6_py_pi5: 4.1.3 Magnetisches Induktions-Alarmsystem ============================================ Einführung ----------------- Wenn Sie eine wertvolle Vase erhalten, können Sie ein magnetisches Induktions-Alarmsystem dafür erstellen, sodass Sie rechtzeitig einen Alarm hören können, egal wer sie bewegt. Benötigte Komponenten ------------------------------ Für dieses Projekt benötigen wir folgende Komponenten. .. image:: ../python_pi5/img/4.1.6_magneticalarmsystem_list.png :width: 800 :align: center Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können diese auch separat über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_gpio_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| Schaltplan ----------------------- ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 GPIO27 Pin 13 2 27 ============ ======== ======== === .. image:: ../python_pi5/img/4.1.6_magneticalarmsystem_schematic.png :align: center Experimentelle Verfahren ------------------------------ **Schritt 1:** Bauen Sie den Schaltkreis. .. image:: ../python_pi5/img/4.1.6_magneticalarmsystem_circuit.png :width: 800 :align: center **Schritt 2:** Wechseln Sie in den Ordner des Codes. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3:** Ausführen. .. raw:: html .. code-block:: sudo python3 4.1.6_MagneticAlarmSystem_zero.py Wenn der Reed-Schalter durch den Magneten beeinflusst wird (zum Beispiel wird der Reed-Schalter auf der Basis platziert und der Magnet in der Vase), ist das Objekt sicher. Zu diesem Zeitpunkt ist der Reed-Schalter im geschlossenen Zustand und der Summer schweigt. Nach Entfernen des Magneten (wie beim Diebstahl der Vase) wird der Reed-Schalter nicht mehr durch den Magneten beeinflusst, der Schalter öffnet sich, und der Summer löst einen Alarm aus. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: Sie können den untenstehenden Code **modifizieren/zurücksetzen/kopieren/ausführen/stoppen**. Bevor Sie dies tun, müssen Sie zum Quellcodepfad wie ``raphael-kit/python-pi5`` gehen. Nach der Änderung des Codes können Sie ihn direkt ausführen, um die Auswirkung zu sehen. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import Buzzer, Button import time # Initialize the buzzer on GPIO pin 27 buzzer = Buzzer(27) # Initialize the reed switch on GPIO pin 17 with pull-up resistor enabled reed_switch = Button(17, pull_up=True) try: while True: # Check if the reed switch is pressed if reed_switch.is_pressed: # Turn off the buzzer if reed switch is pressed buzzer.off() else: # If reed switch is not pressed, beep the buzzer buzzer.on() time.sleep(0.1) # Buzzer on for 0.1 seconds buzzer.off() time.sleep(0.1) # Buzzer off for 0.1 seconds except KeyboardInterrupt: # Turn off the buzzer when the program is interrupted (e.g., keyboard interrupt) buzzer.off() pass **Code-Erklärung** #. Importiert die notwendigen Klassen ``Buzzer`` und ``Button`` aus der Bibliothek ``gpiozero`` und das Modul ``time`` aus der Standardbibliothek von Python. .. code-block:: python #!/usr/bin/env python3 von gpiozero import Buzzer, Button import time #. Der ``Buzzer``-Objekt ist mit dem GPIO-Pin 27 verbunden, und ein ``Button`` (fungiert als Reed-Schalter) ist mit dem GPIO-Pin 17 verbunden, mit dem Argument ``pull_up=True``, welches den internen Pull-Up-Widerstand aktiviert. .. code-block:: python # Initialize the buzzer on GPIO pin 27 buzzer = Buzzer(27) # Initialize the reed switch on GPIO pin 17 with pull-up resistor enabled reed_switch = Button(17, pull_up=True) #. Der ``try``-Block enthält eine Endlosschleife (``while True``), die den Zustand des Reed-Schalters überprüft. Wenn gedrückt (``is_pressed``), wird der Summer ausgeschaltet. Andernfalls piept der Summer (0,1 Sekunden an, 0,1 Sekunden aus). .. code-block:: python try: while True: # Check if the reed switch is pressed if reed_switch.is_pressed: # Turn off the buzzer if reed switch is pressed buzzer.off() else: # If reed switch is not pressed, beep the buzzer buzzer.on() time.sleep(0.1) # Buzzer on for 0.1 seconds buzzer.off() time.sleep(0.1) # Buzzer off for 0.1 seconds #. Der ``except``-Block behandelt ein KeyboardInterrupt (wie ein Ctrl+C im Terminal), um den Summer sicher auszuschalten. .. code-block:: python except KeyboardInterrupt: # Turn off the buzzer when the program is interrupted (e.g., keyboard interrupt) buzzer.off() pass