#1 2022-06-22 00:03:17

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Rfid замок, потрібна допомога

Добрий день. Потрібна допомога з доповнення скечу.
Роблю rfid замок, потрібно добавити кнопку(з підтягнути опором на 10ком на масу) , щоб при натисканні на кнопку зпрацював селеноид на 1 секунду і провернувся сервомотор на 90 градусів а потім повернувся на 0.
Будь ласка допоможіть.

Остання редакція Shylz (2022-06-22 00:40:03)

Неактивний

#2 2022-06-22 01:05:47

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

#include <SPI.h>
#include <MFRC522.h>

const int SS_PIN = 10;      // SS вывод модуля RC522
const int RST_PIN = 9;      // RST вывод модуля RC522

const int BUZZER = 3;       //Пин для Пищалки
const int LED_R = 8;        //Пин для Красного цвета
const int LED_G = 7;        //Пин для Зелёного цвета
const int buttonPin = 6;      //Пин для кнопка откр
const int LOCK = 4;         // подключаем электрозамок

char* keys[]={"71 17 43 99"}; // ,"242 166 122 26","02 187 203 27"

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
  pinMode(buttonPin, INPUT);  // объявляем пин как вход.
  pinMode(LED_G, OUTPUT);   //объявляем пин как выход.
  pinMode(LED_R, OUTPUT);   //объявляем пин как выход.  
  pinMode(BUZZER, OUTPUT);  //объявляем пин как выход.
  pinMode(LOCK, OUTPUT);    //объявляем пин как выход.
  
  digitalWrite(LOCK, LOW);  //Выключаем замок
 
  Serial.println("Поднесите карту к считывателю");
}
void loop() 
{
  if ( ! mfrc522.PICC_IsNewCardPresent()){
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()){
    return;
  }

  Serial.print("UID:");
  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], DEC);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], DEC));
  }
  Serial.println();
  content.toUpperCase();

int x=1;
  for (int i = 0; i < sizeof(keys) / sizeof(char *); i++){
  if (content.substring(1) == keys[i]){
    Serial.println("Доступ разрешён");
    digitalWrite(BUZZER, HIGH);     // Включаем Замок
    digitalWrite(LED_G, HIGH);    // Зажигаем Зелёный светодиод 
     digitalWrite(LOCK, HIGH);   //Включаем замок
    delay(500);
    digitalWrite(LOCK, LOW);  //Выключаем замок
    digitalWrite(BUZZER, LOW);
    delay(1000);
    digitalWrite(LED_G, LOW);    // Гасим Зелёный светодиод
   
    return;
  } 
  else  x=0;
}

 if(x==0){
    Serial.println("Доступ запрещён");
    digitalWrite(LED_R, HIGH);
    digitalWrite(BUZZER, HIGH);
    delay(100);
    digitalWrite(BUZZER, LOW);
    delay(100);
    digitalWrite(BUZZER, HIGH);
    delay(100);
    digitalWrite(BUZZER,LOW);
    delay(100);
    digitalWrite(LED_R, LOW);
}   

}

Неактивний

#3 2022-06-22 08:09:30

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Rfid замок, потрібна допомога

помогать бесплатно принято тем, кто что то сам накодил, но не получается.
в вашем коде нет ни кнопки, ни соленоида, ни сервы.

Неактивний

#4 2022-06-22 08:54:03

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

В соседних темах уже была и кнопка и серва

Неактивний

#5 2022-06-22 10:46:19

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

vvr пише:

помогать бесплатно принято тем, кто что то сам накодил, но не получается.
в вашем коде нет ни кнопки, ни соленоида, ни сервы.

В коді є і кнопка і соленоід (const int buttonPin = 6;      //Пин для кнопка откр
const int LOCK = 4;         // подключаем электрозамок) соліноід від карточки спрацьовує а от з кнопкою ніяк неможу ту частину коду яку писав під кнопку витер щоб незаважала

Неактивний

#6 2022-06-22 13:03:25

Васятко
Гість

Re: Rfid замок, потрібна допомога

Shylz пише:

ту частину коду яку писав під кнопку витер щоб незаважала

потрібно не витирати, а показувати і писати що конкретно не виходить. Інакше - #3

#7 2022-06-22 14:39:57

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

// карта - 02 187 203 27
// брелок - "60 19 192 33"
// КАРТА - 242 166 122 26

#include <SPI.h>
#include <MFRC522.h>

const int SS_PIN = 10;      // SS вывод модуля RC522
const int RST_PIN = 9;      // RST вывод модуля RC522

const int BUZZER = 3;       //Пин для Пищалки
const int LED_R = 8;        //Пин для Красного цвета
const int LED_G = 7;        //Пин для Зелёного цвета
const int buttonPin = 6;      //Пин для кнопка откр
const int LOCK = 4;         // подключаем электрозамок

char* keys[]={"71 17 43 99"}; // ,"242 166 122 26","02 187 203 27"

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
  pinMode(buttonPin, INPUT);  // объявляем пин как вход.
  pinMode(LED_G, OUTPUT);   //объявляем пин как выход.
  pinMode(LED_R, OUTPUT);   //объявляем пин как выход.  
  pinMode(BUZZER, OUTPUT);  //объявляем пин как выход.
  pinMode(LOCK, OUTPUT);    //объявляем пин как выход.
  
  digitalWrite(LOCK, LOW);  //Выключаем замок
 
  Serial.println("Поднесите карту к считывателю");
}
void loop() 
{
  if ( ! mfrc522.PICC_IsNewCardPresent()){
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()){
    return;
  }

  Serial.print("UID:");
  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], DEC);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], DEC));
  }
  Serial.println();
  content.toUpperCase();

int x=1;
  for (int i = 0; i < sizeof(keys) / sizeof(char *); i++){
  if (content.substring(1) == keys[i]){
    Serial.println("Доступ разрешён");
    digitalWrite(BUZZER, HIGH);     // Включаем Замок
    digitalWrite(LED_G, HIGH);    // Зажигаем Зелёный светодиод 
     digitalWrite(LOCK, HIGH);   //Включаем замок
    delay(500);
    digitalWrite(LOCK, LOW);  //Выключаем замок
    digitalWrite(BUZZER, LOW);
    delay(1000);
    digitalWrite(LED_G, LOW);    // Гасим Зелёный светодиод
   
    return;
  } 
  else  x=0;
}

 if(x==0){
    Serial.println("Доступ запрещён");
    digitalWrite(LED_R, HIGH);
    digitalWrite(BUZZER, HIGH);
    delay(100);
    digitalWrite(BUZZER, LOW);
    delay(100);
    digitalWrite(BUZZER, HIGH);
    delay(100);
    digitalWrite(BUZZER,LOW);
    delay(100);
    digitalWrite(LED_R, LOW);
}   
int buttonState = digitalRead(buttonPin);
    // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение 
    if (buttonState == HIGH) {
       digitalWrite(BUZZER, HIGH);     // Включаем Замок
    digitalWrite(LED_G, HIGH);    // Зажигаем Зелёный светодиод 
     digitalWrite(LOCK, HIGH);   //Включаем замок
    delay(500);
    digitalWrite(LOCK, LOW);  //Выключаем замок
    digitalWrite(BUZZER, LOW);
    delay(1000);
    digitalWrite(LED_G, LOW);    // Гасим Зелёный светодиод // 
    
    }
}

Неактивний

#8 2022-06-22 14:41:13

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

Пробував отак але при натисканні на кнопку ардуіна зависа

Неактивний

#9 2022-06-22 18:22:31

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

Shylz пише:

при натисканні на кнопку ардуіна зависа

В чем это выражается?

Неактивний

#10 2022-06-22 18:37:26

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Rfid замок, потрібна допомога

Shylz пише:

Пробував отак але при натисканні на кнопку ардуіна зависа

нарисуй схему подключения своей кнопки, а то в первом посте какая то каша ...

Неактивний

#11 2022-06-22 21:23:27

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

г0сть пише:
Shylz пише:

при натисканні на кнопку ардуіна зависа

В чем это выражается?

На карточку більше нереагує пока неперезавантажиш

Неактивний

#12 2022-06-22 21:42:18

г0cть
Гість

Re: Rfid замок, потрібна допомога

А схема где?

#13 2022-06-22 21:48:44

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

Shylz пише:

На карточку більше нереагує

Вообще-то на кнопку не должно быть никакой реакции при таком построении кода. Так что схему в студию. И желательно нормальную (хоть и на листочке от руки), а не наскальную живопись из всяких там фритцингов и тинкеркадов

Остання редакція г0сть (2022-06-22 21:51:38)

Неактивний

#14 2022-06-23 13:30:37

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

IMG_20220623_132005_20220623-1328.jpeg

Неактивний

#15 2022-06-23 14:17:59

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

Куча вопросов.
1. Что собой представляет механизм открывания (схемотехнически)? Разводка платы если правильно понял - двусторонняя?
2. Если из кода убрать все что касается карточки - тоже зависает?
3. Если после включения карту не подносить, а сразу нажать кнопку - что происходит?
Ну и повторюсь, с этим кодом кнопка не должна срабатывать. Эти строки

if ( ! mfrc522.PICC_IsNewCardPresent()){
    return;
  }

крутятся к цикле пока не будет поднесена карта и код дальше не должен выполняться. Перенеси обработку кнопки в начало loop.

Неактивний

#16 2022-06-23 15:24:18

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

1-механізм відкривання буде соленоід через мосфет, або сервомотор. Більш завсесервомотор просто зараз нема в наявності бо той що прийшов бракований.
Плата одностороння, там лише одна перемичка між  опором та масою, і конденсатори стабілізаторів навісним монтажом.
Код без рфід не пробував.

Неактивний

#17 2022-06-23 15:34:42

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

Shylz пише:

Плата одностороння, там лише одна перемичка між  опором та масою

тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?

Неактивний

#18 2022-06-23 22:02:34

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

г0сть пише:
Shylz пише:

Плата одностороння, там лише одна перемичка між  опором та масою

тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?

Сама нижня дорожка приходить на опір, другий вивід опору переходить на 6 ножку ардуіни і опір на землю, зараз на місті першого опору перемичка. На ціх опорах на випадок необхідності може бути виконано пониження напруги, якщо наприклад кнопка це напруга в 12-15 v.

Неактивний

#19 2022-06-23 22:07:36

г0сть
Учасник
Зареєстрований: 2022-06-09
Повідомлень: 45

Re: Rfid замок, потрібна допомога

Shylz пише:

На ціх опорах на випадок необхідності може бути виконано пониження напруги, якщо наприклад кнопка це напруга в 12-15 v.

Бред. INPUT_PULLUP, кнопка на землю и не морочь йайголову всякой ерундой

Неактивний

#20 2022-06-23 22:48:07

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

https://forum.arduino.ua/img/members/3335/IMG_20220623_224258.jpegIMG_20220623_224258.jpeg

Неактивний

#21 2022-06-23 22:49:55

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

Може так буде зрозуміліше, pullup тут не проходить.
Выход з домофона на замок +15v саме вони мають давати команду на 6 ногу ардуіни щоб вона открывала замок. Домофон встановлено а кнопка покищо для тестової роботи ардуіни.

Остання редакція Shylz (2022-06-23 22:54:32)

Неактивний

#22 2022-06-24 07:57:49

renoshnik
Учасник
Зареєстрований: 2017-04-03
Повідомлень: 1,025

Re: Rfid замок, потрібна допомога

Объясни мне в чем сакральный смысл замыкания кнопки на "плюс" ???

подсказка http://schip.com.ua/pc817/

Остання редакція renoshnik (2022-06-24 08:04:29)

Неактивний

#23 2022-06-24 10:12:00

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

void loop() 
{
  int buttonState =digitalRead(buttonPin); //считуем порт кнопки
  if (buttonState == HIGH) {
    Serial.println("Доступ разрешён");
    digitalWrite(BUZZER, HIGH);     // Включаем Зумер
    digitalWrite(LED_G, HIGH);    // Зажигаем Зелёный светодиод 
     digitalWrite(LOCK, HIGH);   //Включаем замок
    delay(500);
    digitalWrite(LOCK, LOW);  //Выключаем замок
    digitalWrite(BUZZER, LOW);
    delay(1000);
    digitalWrite(LED_G, LOW);    // Гасим Зелёный светодиод
  }
  
  if ( ! mfrc522.PICC_IsNewCardPresent()){
    return;
  }

Неактивний

#24 2022-06-24 10:14:15

Shylz
Учасник
Зареєстрований: 2022-05-05
Повідомлень: 24

Re: Rfid замок, потрібна допомога

Частину коду яка відповіла за кнопку переніс з низу в самий початок луп, тепер все запрацювало. Дякую всім  за допомогу.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму