Проблема с реле при загрузке в wemos d1 r1
Привет, у меня есть wemos d1 r1, и я хочу активировать реле с RFID-модулем rc522. проблема в том, что когда я подключаю плату к питанию, или когда я ее перезагружаю, или когда я загружаю код, светодиод на релейном модуле мигает, я использую D9 (GPIO02) для реле, и я боюсь, что в какой-то момент активируется реле, я попробовал D8 (GPIO0) но в вышеуказанных состояниях (включение питания, сброс, загрузка кода) он активирует реле. есть ли какой - нибудь способ предотвратить это ? другие контакты используются модулем rc522. мой код таков:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN D4
#define RST_PIN D2
char *StrAB[] = {"29 EC C7 C1", "69 5B C9 C2", "22 3B 83 34", "00 00 00 00", "C6 78 8E 2C","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","00 00 00 00","12 BF BF 34" };
#define NOTE_G4 392
#define NOTE_C5 523
#define NOTE_G5 784
#define NOTE_C6 1047
int TrueMelody[] = {NOTE_G5, NOTE_C6};
int TrueNoteDurations[] = {12, 8};
int FalseMelody[] = {NOTE_C6, NOTE_G5};
int FalseNoteDurations[] = {12, 8};
#define playTrueMelody() playMelody(TrueMelody, TrueNoteDurations, 2)
#define playFalseMelody() playMelody(FalseMelody, FalseNoteDurations, 2)
#define PIEZO D8
#define RELAY D9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
digitalWrite(RELAY, HIGH);
pinMode(RELAY, OUTPUT);
pinMode(PIEZO, OUTPUT);
Serial.println("Put your card to the reader...");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == StrAB[0] || content.substring(1) == StrAB[1] || content.substring(1) == StrAB[2] || content.substring(1) == StrAB[3] || content.substring(1) == StrAB[4] || content.substring(1) == StrAB[5] || content.substring(1) == StrAB[6] || content.substring(1) == StrAB[7] || content.substring(1) == StrAB[8] || content.substring(1) == StrAB[9] || content.substring(1) == StrAB[10] || content.substring(1) == StrAB[11] || content.substring(1) == StrAB[12] || content.substring(1) == StrAB[13] || content.substring(1) == StrAB[14] || content.substring(1) == StrAB[15] || content.substring(1) == StrAB[16] || content.substring(1) == StrAB[17] || content.substring(1) == StrAB[18] || content.substring(1) == StrAB[19] || content.substring(1) == StrAB[20] || content.substring(1) == StrAB[21] || content.substring(1) == StrAB[22] || content.substring(1) == StrAB[23] || content.substring(1) == StrAB[24] || content.substring(1) == StrAB[25] || content.substring(1) == StrAB[26] || content.substring(1) == StrAB[27] || content.substring(1) == StrAB[28] || content.substring(1) == StrAB[29] || content.substring(1) == StrAB[30] || content.substring(1) == StrAB[31] || content.substring(1) == StrAB[32] || content.substring(1) == StrAB[33] || content.substring(1) == StrAB[34] || content.substring(1) == StrAB[35] || content.substring(1) == StrAB[36] || content.substring(1) == StrAB[37] || content.substring(1) == StrAB[38] || content.substring(1) == StrAB[39] || content.substring(1) == StrAB[40] || content.substring(1) == StrAB[41] || content.substring(1) == StrAB[42] || content.substring(1) == StrAB[43] || content.substring(1) == StrAB[44] || content.substring(1) == StrAB[45] || content.substring(1) == StrAB[46] || content.substring(1) == StrAB[47] || content.substring(1) == StrAB[48] || content.substring(1) == StrAB[49] ) //change here the UID of the card/cards that you want to give access
{
playTrueMelody();
digitalWrite(RELAY, LOW);
delay(700);
digitalWrite(RELAY, HIGH);
}
else {
playFalseMelody();
}
}
void playMelody(int *melody, int *noteDurations, int notesLength)
{
pinMode(PIEZO, OUTPUT);
for (int thisNote = 0; thisNote < notesLength; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(PIEZO, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(PIEZO);
}
}
@dave, 👍0
Обсуждение0
Смотрите также:
- Как заставить 5-вольтовое реле работать с NodeMCU
- Esp8266 Vin контакт
- Правильный PIN для активации беспроводного реле с ESP8266 ESP-01
- Управление реле 5В с помощью Wemos D1 R1
- NodeMCU продолжает отключаться
- Управление 5В от ESP8266 Wemos D1 mini
- Реле с активным низким уровнем и контакты ESP8266 GPIO
- WiFi-реле Arduino UNO + ESP8266 от LC Technology
используйте GPIO 4 или 5; это, пожалуй, единственные контакты, которые "молчат" во время загрузки. если вы застряли с 0/2, в зависимости от нескольких факторов, вы могли бы очистить их, поместив конденсатор от gnd для передачи сигнала и подав сигнал реле через резистор. Это создает фильтр нижних частот, который может поглощать короткие импульсы, возникающие во время загрузки, хотя и за счет немного более медленного (~ 150 мс) времени переключения (что часто вообще не имеет значения)., @dandavis
спасибо вам ооооооооооооооооочень большое:), @dave
https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/, @Majenko