5.3 Alarmanlage

5.3.1 PIR-Bewegungssensor

Öffnen Sie den Code 5.3.1PIR-Motion-Sensor mit der Arduino IDE.

#define PyroelectricPIN 23

void setup() {
  Serial.begin(9600);
  pinMode(PyroelectricPIN,INPUT);
}

void loop() {
  //Read the value of PIR motion sensor
  int ReadValue = digitalRead(PyroelectricPIN);
  if(ReadValue){
    Serial.println("Someone");
  }
  else{
    Serial.println("No one");
  }
  delay(100);
}

Wählen Sie die Platine ESP32 Dev Module und den COM-Port und laden Sie den Code hoch.

5458448

Testergebnis:

Wenn sich jemand im Bereich befindet, wird Someone auf dem Monitor angezeigt und die rote LED am Sensor erlischt. Wenn jedoch niemand da ist, wird No one gedruckt und die LED am Sensor leuchtet immer.

image-20250417113532007

Spannung: 3~5V

Strom: 3.6mA

Leistung: 18mW

Blickwinkel: Y = 90°, X = 110° (Theoretischer Wert)

Erfassungsabstand: ≤5m

cou32

5.3.2 Passiver Summer

image

Ein passiver Summer kann selbst keinen Ton erzeugen, es sei denn, es wird ein Rechteckwellensignal mit einer bestimmten Frequenz angelegt. Da der emittierte Ton je nach Frequenz der Rechteckwelle variiert, kann ein passiver Summer Melodien simulieren.

Eine analoge Rechteckwelle kann durch Ändern des Leistungspegels an den Pins erzeugt werden. Zum Beispiel, nachdem der hohe Pegel 500 ms lang anhält, wechselt er für weitere 500 ms zu einem niedrigen Pegel und dann wieder zu einem hohen Pegel…

Wir steuern den Summer über eine Rechteckwelle im Bereich von 200~5000Hz, und wir können die Frequenz(f) berechnen: f=1/T, wobei T die Periode ist (die Gesamtzeit von hohem und niedrigem Pegel).

cou38

Parameter:

Spannung: 3~5V

Strom: ≤5mA

Leistung: ≤25mW

Öffnen Sie den Code 5.3.2Passive-Buzzer mit der Arduino IDE.

#define BuzzerPin 16  //Define the buzzer pin

void setup() {
  //Set the pin to output mode
  pinMode(BuzzerPin,OUTPUT);
}

void loop() {
  digitalWrite(BuzzerPin,HIGH);
  delayMicroseconds(500);//Delay 500us
  digitalWrite(BuzzerPin,LOW);
  delayMicroseconds(500);//Delay 500us
}

Wählen Sie die Platine ESP32 Dev Module und den COM-Port und laden Sie den Code hoch.

5458448

Testergebnis:

Der passive Summer gibt kontinuierlich Ton ab.

5.3.3 Summer-Ton

Öffnen Sie den Code 5.3.3Buzzer-Tone mit der Arduino IDE.

const int buzzerPin = 16;   //Set buzzer pin to 16
void setup() {
  ledcAttachChannel(buzzerPin,1000,8,4);
}
void loop() {
    ledcWriteTone(buzzerPin,532);           //duo --C2
    delay(100);
    ledcWriteTone(buzzerPin,587);           //re --D3
    delay(100);
    ledcWriteTone(buzzerPin,659);           //mi --E3
    delay(100);
   //Alarm
   for(int i = 200; i<=1000; i+=10){ 
    ledcWriteTone(buzzerPin,i);
    delay(10);
   }
    //Alarm
   for(int i = 1000; i>=200; i-=10){ 
    ledcWriteTone(buzzerPin,i);
    delay(10);
   }
ledcWriteTone(buzzerPin,0);
}

Wählen Sie die Platine ESP32 Dev Module und den COM-Port und laden Sie den Code hoch.

5458448

Testergebnis:

Der Summer alarmiert über die Funktion ledcWriteTone().

ledcWriteTone() erzeugt ein PWM-Signal mit einer bestimmten Frequenz, um den Summer zum Vibrieren anzuregen, wobei die Dauer und der Ton durch entsprechende Parameter gesteuert werden.

Die Funktion ledcWriteTone() muss in Verbindung mit der Funktion ledcAttachChannel() verwendet werden.

ledcAttachChannel

Diese Funktion wird verwendet, um den Arbeitszyklus für den LEDC-Kanal einzustellen.

bool ledcWriteChannel(uint8_t channel, uint32_t duty);
  • channel wählt den LEDC-Kanal aus.

  • duty wählt den für den ausgewählten LEDC-Kanal einzustellenden Arbeitszyklus aus.

Diese Funktion gibt true zurück, wenn das Einstellen des Arbeitszyklus erfolgreich war. Wenn false zurückgegeben wird, ist ein Fehler aufgetreten und der Arbeitszyklus wurde nicht eingestellt.

ledcWriteTone

Diese Funktion wird verwendet, um den LEDC-Pin auf einen 50%igen PWM-Ton mit einer ausgewählten Frequenz einzustellen.

uint32_t ledcWriteTone(uint8_t pin, uint32_t freq);
  • pin wählt den LEDC-Pin aus.

  • freq wählt die Frequenz des PWM-Signals aus. Wenn die Frequenz 0 ist, wird der Arbeitszyklus auf 0 gesetzt.

Diese Funktion gibt die für den LEDC-Pin eingestellte frequency zurück. Wenn 0 zurückgegeben wird, ist ein Fehler aufgetreten und der LEDC-Pin wurde nicht konfiguriert.

5.4 Summer-Musik

Öffnen Sie den Code 5.3.4Buzzer-Music mit der Arduino IDE.

#define NOTE_B0  31
#define NOTE_C1  33
#define NOTE_CS1 35
#define NOTE_D1  37
#define NOTE_DS1 39
#define NOTE_E1  41
#define NOTE_F1  44
#define NOTE_FS1 46
#define NOTE_G1  49
#define NOTE_GS1 52
#define NOTE_A1  55
#define NOTE_AS1 58
#define NOTE_B1  62
#define NOTE_C2  65
#define NOTE_CS2 69
#define NOTE_D2  73
#define NOTE_DS2 78
#define NOTE_E2  82
#define NOTE_F2  87
#define NOTE_FS2 93
#define NOTE_G2  98
#define NOTE_GS2 104
#define NOTE_A2  110
#define NOTE_AS2 117
#define NOTE_B2  123
#define NOTE_C3  131
#define NOTE_CS3 139
#define NOTE_D3  147
#define NOTE_DS3 156
#define NOTE_E3  165
#define NOTE_F3  175
#define NOTE_FS3 185
#define NOTE_G3  196
#define NOTE_GS3 208
#define NOTE_A3  220
#define NOTE_AS3 233
#define NOTE_B3  247
#define NOTE_C4  262
#define NOTE_CS4 277
#define NOTE_D4  294
#define NOTE