.. 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