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.

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.

Spannung: 3~5V
Strom: 3.6mA
Leistung: 18mW
Blickwinkel: Y = 90°, X = 110° (Theoretischer Wert)
Erfassungsabstand: ≤5m

5.3.2 Passiver Summer

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

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.

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.

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);
channelwählt den LEDC-Kanal aus.dutywä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);
pinwählt den LEDC-Pin aus.freqwählt die Frequenz des PWM-Signals aus. Wenn die Frequenz0ist, 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