у меня есть ESP32, есть бизер, есть читалка RFID-RC522
проект устройства учёта рабочего времени
Характеристики излучателя звука:
но при подключении к D4, даже если мультиметр показывает на нём околонулевое напряжение, он издаёт постоянный писк, полностью игнорируя напряжение на I/O пине
Как это починить?
Вот код прошивки:
проект устройства учёта рабочего времени
Характеристики излучателя звука:
- Напряжение питания: 1.5 В - 9 В
- Диапазон воспроизводимых частот: 500 .. 5000 Гц
- Размер модуля: 30 мм x 13 мм
но при подключении к D4, даже если мультиметр показывает на нём околонулевое напряжение, он издаёт постоянный писк, полностью игнорируя напряжение на I/O пине
Как это починить?
Вот код прошивки:
C++:
#include <SPI.h>
#include <MFRC522.h>
#include <WiFi.h>
#define SDA_PIN 21 // Пин для SDA
#define RST_PIN 22 // Пин для сброса
#define BUZZER_PIN 4 // Пин для подключения пьезоизлучателя
MFRC522 mfrc522(SDA_PIN, RST_PIN); // Создаем объект MFRC522
const char* ssid = ""; // Название вашей Wi-Fi сети
const char* password = ""; // Пароль от вашей Wi-Fi сети
const char* server = "192.168.1.200"; // Адрес сервера
bool isFirstSuccess = true; // Флаг для отслеживания первого успешного запроса
// Мелодия в виде последовательности частот
int melody[] = { 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000 };
// Длительность каждой ноты в миллисекундах
int noteDuration = 500; // 500 мс между каждой нотой
void setup() {
Serial.begin(115200);
SPI.begin(); // Инициализация SPI
mfrc522.PCD_Init(); // Инициализация MFRC522
Serial.println("RFID-RC522 initialized.");
pinMode(BUZZER_PIN, OUTPUT); // Устанавливаем пин пьезоизлучателя на вывод
// Подключаемся к Wi-Fi сети
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected to WiFi");
}
void loop() {
// Проверяем наличие новой метки
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
// Считываем UID метки
String uid = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
uid += String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println("UID tag: " + uid);
// Отправляем GET-запрос на сервер
if (sendGetRequest(uid)) {
Serial.println("GET request sent successfully");
// Воспроизводим мелодию при первом успешном запросе
if (isFirstSuccess) {
playMelody();
isFirstSuccess = false; // Устанавливаем флаг в false
}
} else {
Serial.println("Failed to send GET request");
}
// Пауза между считываниями
delay(3000);
}
}
bool sendGetRequest(String uid) {
// Создаем объект WiFiClient для соединения с сервером
WiFiClient client;
// Пытаемся подключиться к серверу
if (!client.connect(server, 80)) {
return false;
}
// Формируем GET-запрос
String url = "/handler.php?key=" + uid;
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + server + "\r\n" +
"Connection: close\r\n\r\n");
// Ждем ответа от сервера
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.print(c);
}
}
// Закрываем соединение с сервером
client.stop();
return true;
}
void playMelody() {
// Воспроизведение мелодии
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
tone(BUZZER_PIN, melody[i]);
delay(noteDuration);
noTone(BUZZER_PIN);
delay(50); // Пауза между нотами
}
}