.. 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!
.. _3.1.2_c_pi5:
3.1.2 Willkommen
=======================
Einführung
-------------
In diesem Projekt werden wir PIR verwenden, um die Bewegung von Fußgängern zu erfassen und mit Servos, LEDs und Summer die Funktion einer Sensorschutztür eines Convenience-Stores zu simulieren. Wenn ein Fußgänger im Erfassungsbereich des PIR erscheint, leuchtet die Kontrolllampe auf, die Tür öffnet sich und der Summer gibt das Öffnungssignal wieder.
Benötigte Komponenten
------------------------------
Für dieses Projekt benötigen wir die folgenden Komponenten.
.. image:: ../img/list_Welcome.png
:align: center
Es ist sicherlich praktisch, ein komplettes Set 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 unten stehenden 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_led`
- |link_led_buy|
* - :ref:`cpn_pir`
- \-
* - :ref:`cpn_servo`
- |link_servo_buy|
* - :ref:`cpn_Buzzer`
- |link_passive_buzzer_buy|
* - :ref:`cpn_transistor`
- |link_transistor_buy|
Schaltplan
-------------------
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO18 Pin 12 1 18
GPIO17 Pin 11 0 17
GPIO27 Pin 13 2 27
GPIO22 Pin 15 3 22
============ ======== ======== ===
.. image:: ../img/Schematic_three_one2.png
:align: center
Experimentelle Verfahren
----------------------------
**Schritt 1:** Bauen Sie den Schaltkreis.
.. image:: ../img/image239.png
:align: center
**Schritt 2:** Wechseln Sie das Verzeichnis.
.. raw:: html
.. code-block::
cd ~/raphael-kit/c/3.1.2/
**Schritt 3:** Kompilieren.
.. raw:: html
.. code-block::
gcc 3.1.2_Welcome.c -lwiringPi
**Schritt 4:** Starten.
.. raw:: html
.. code-block::
sudo ./a.out
Nachdem der Code ausgeführt wurde und der PIR-Sensor jemanden erkennt, der vorbeigeht, wird die Tür automatisch geöffnet (simuliert durch den Servo), die Anzeige eingeschaltet und die Türklingel-Musik abgespielt. Nachdem die Türklingelmusik gespielt wurde, schließt das System automatisch die Tür, schaltet die Anzeige aus und wartet auf das nächste Vorbeigehen einer Person.
Am PIR-Modul befinden sich zwei Potentiometer: eines zur Einstellung der Empfindlichkeit und eines zur Einstellung der Erfassungsentfernung. Damit das PIR-Modul optimal funktioniert, müssen Sie beide im Uhrzeigersinn bis zum Anschlag drehen.
.. image:: ../img/PIR_TTE.png
:width: 400
:align: center
.. note::
Wenn es nach dem Starten nicht funktioniert oder eine Fehlermeldung angezeigt wird: \"wiringPi.h: Datei oder Verzeichnis nicht gefunden\", beziehen Sie sich bitte auf :ref:`install_wiringpi_pi5`.
**Code Erklärung**
.. code-block:: c
void setAngle(int pin, int angle){ //Create a funtion to control the angle of the servo.
if(angle < 0)
angle = 0;
if(angle > 180)
angle = 180;
softPwmWrite(pin,Map(angle, 0, 180, 5, 25));
}
Erstellen Sie eine Funktion namens setAngle, um den Winkel des Servos im Bereich von 0 bis 180 Grad zu definieren.
.. code-block:: c
void doorbell(){
for(int i=0;i-1;i--){ //make servo rotate from maximum angle to minimum angle
setAngle(servoPin,i);
delay(1);
}
}
Erstellen Sie eine Funktion namens closedoor, die das Schließen der Tür simuliert, die LED ausschaltet und den Servo von 180 Grad auf 0 Grad dreht.
.. code-block:: c
void opendoor(){
digitalWrite(ledPin, HIGH); //led on
for(int i=0;i<181;i++){ //make servo rotate from minimum angle to maximum angle
setAngle(servoPin,i);
delay(1);
}
doorbell();
closedoor();
}
Die Funktion opendoor() beinhaltet mehrere Teile: das Einschalten der Kontrollleuchte, das Drehen des Servos (simuliert das Öffnen der Tür), das Abspielen der Türklingelmusik des Convenience-Stores und das Aufrufen der Funktion closedoor() nach dem Abspielen der Musik.
.. code-block:: c
int main(void)
{
if(wiringPiSetup() == -1){ //when initialize wiring failed,print message to screen
printf("setup wiringPi failed !");
return 1;
}
if(softToneCreate(BuzPin) == -1){
printf("setup softTone failed !");
return 1;
......
In der Funktion main() wird die Bibliothek wiringPi initialisiert und softTone eingerichtet. Dann wird ledPin auf den Ausgabezustand und pirPin auf den Eingabezustand gesetzt. Wenn der PIR-Sensor jemanden erkennt, der vorbeigeht, wird die Funktion opendoor aufgerufen, um das Öffnen der Tür zu simulieren.
Phänomen-Bild
--------------------
.. image:: ../img/image240.jpeg
:align: center