Мокрый центральный замок. Аквазамок.



Приехали на автомобиле на водоем и хотите искупаться, но некуда убрать ключи от машины, есть выход простой аквазамок. Есть силиконовые браслеты с меткой которые не боятся погружения в воду на основе которых мы в этом видео сделаем центральный замок автомобиля.  



Вот схема на транзисторах



Скетч.
#include <rdm6300.h>            // Запускаем библиотеку rdm6300.h
Rdm6300 rdm6300;                // Обращение к библиотеке rdm6300.h называем rdm6300
bool Latch = 0;                 // Определяем логическую переменную для защелки и устанавливаем ее в 0
long Key;                       // Определяем переменную для ключей
void setup(){                   // Установки
  Serial.begin(9600);           // Устанавливаем скорость ком порта для передачи номеров ключей в монитор порта пк.
  pinMode(7, OUTPUT);           // Подключаем 7 пин ардуино
  digitalWrite(7, 0);           //  Устанавливаем 0 вольт на пине 7
  pinMode(8, OUTPUT);           // Подключаем 8 пин ардуино
  digitalWrite(8, 0);           //  Устанавливаем 0 вольт на пине 7
  rdm6300.begin(2);             // На 2 пине подключаем считывание через софтсериал порт rdm6300
}
void loop(){                    // Зацикливаем
  if (rdm6300.update()) {       // Обновляем опрос rdm6300
    Key = rdm6300.get_tag_id(); // Считываем код ключа и сохраняем его в переменную Key
    Serial.println(Key);        // Пишем в ком порт код ключа
  }
  //--------------------------Открытие центрального замка-------------------------------------
  if (Latch == 0) {             // Если переменная Latch имеет значение 0 то проходим если 1 идем дальше
    if (Key == 10626030) {      // Если код ключа 10626030 то проходим
      digitalWrite(7, 1);       // Выставляем на пине 7 логическую еденицу (+5 вольт , включаем реле открытия)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(7, 0);       // Выставляем на пине 7 логический ноль (0 вольт , выключаем реле открытия)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 1;                // Переменную Latch устанавливаем в 1 
      rdm6300.update();         // Обновляем опрос rdm6300
    } }
  //--------------------------Закрытие центрального замка-------------------------------------
  if (Latch == 1) {             // Если переменная Latch имеет значение 1 то проходим если 0 идем дальше
    if (Key == 10626030) {      // Если код ключа 10626030 то проходим
      digitalWrite(8, 1);       // Выставляем на пине 8 логическую еденицу (+5 вольт , включаем реле закрытия)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(8, 0);       // Выставляем на пине 8 логический ноль (0 вольт , выключаем реле закрытия)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 0;                // Переменную Latch устанавливаем в 0
      rdm6300.update();         // Обновляем опрос rdm6300
    } }
}                               // Конец цикл




Видео про сборку, схему и скетч.

Вторая часть.
Сборка на макетной плате.


Вот ссылка на скетч, схему и библиотеку.


Про версия прошивки, добавлен еще один ключ, сделаны выходы состояния и пр.

#include <rdm6300.h>            // Запускаем библиотеку rdm6300.h
Rdm6300 rdm6300;                // Обращение к библиотеке rdm6300.h называем rdm6300
bool Latch = 0;                 // Определяем логическую переменную для защелки и устанавливаем ее в 0
long Key;                       // Определяем переменную для ключей
void setup() {                  // Установки
  Serial.begin(9600);           // Устанавливаем скорость ком порта для передачи номеров ключей в монитор порта пк.
  pinMode(4, OUTPUT);           // Подключаем 4 пин ардуино
  digitalWrite(4, 0);           //  Устанавливаем 0 вольт на пине 4
  pinMode(5, OUTPUT);           // Подключаем 5 пин ардуино
  digitalWrite(5, 0);           //  Устанавливаем 0 вольт на пине 5
  pinMode(6, OUTPUT);           // Подключаем 6 пин ардуино
  digitalWrite(6, 0);           //  Устанавливаем 0 вольт на пине 6
  pinMode(7, OUTPUT);           // Подключаем 7 пин ардуино
  digitalWrite(7, 0);           //  Устанавливаем 0 вольт на пине 7
  pinMode(8, OUTPUT);           // Подключаем 8 пин ардуино
  digitalWrite(8, 0);           //  Устанавливаем 0 вольт на пине 8
  pinMode(9, OUTPUT);           // Подключаем 9 пин ардуино
  digitalWrite(9, 0);           //  Устанавливаем 0 вольт на пине 9
  pinMode(10, OUTPUT);          // Подключаем 10 пин ардуино
  digitalWrite(10, 0);          //  Устанавливаем 0 вольт на пине 10
  rdm6300.begin(2);             // На 2 пине подключаем считывание через софтсериал порт rdm6300
}
void loop() {                   // Входим в цикл
  //-------------------------- Выход состояния центрального замка открытие -------------------------------------
  if (Latch == 0) {             // Если переменная Latch имеет значение 0 то заходим
    digitalWrite(9, 1);         //  Выставляем на пине 9 логическую еденицу
    digitalWrite(10, 0);        //  Выставляем на пине 10 логический 0
  }
  //--------------------------Выход состояния центрального замка закрытие-------------------------------------
  if (Latch == 1) {             // Если переменная Latch имеет значение 1 то заходим
    digitalWrite(10, 1);        //  Выставляем на пине 10 логическую еденицу
    digitalWrite(9, 0);         //  Выставляем на пине 9 логический 0
  }
  //--------------------------------------------------------------------------------------------------------
  if (rdm6300.update()) {       // Обновляем опрос rdm6300
    Key = rdm6300.get_tag_id(); // Считываем код ключа и сохраняем его в переменную Key
    Serial.println(Key);        // Пишем в ком порт код ключа
  }
  //--------------------------Открытие центрального замка 1 ключ-------------------------------------
  if (Latch == 0) {             // Если переменная Latch имеет значение 0 то проходим если 1 идем дальше
    if (Key == 10626030) {      // Если код ключа 10626030 то проходим
      digitalWrite(5, 1);       // Выставляем на пине 5 логическую еденицу (+5 вольт , включаем реле открытия)
      digitalWrite(8, 1);       // Выставляем на пине 8 логическую еденицу (+5 вольт , включаем реле датчика)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(5, 0);       // Выставляем на пине 5 логический ноль (0 вольт , выключаем реле открытия)
      delay(30000);             // Ждем 20 секунд секунды для различных дейсвий
      digitalWrite(8, 0);       // Выставляем на пине 8 логический ноль (0 вольт , выключаем реле датчика)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 1;                // Переменную Latch устанавливаем в 1
      rdm6300.update();         // Обновляем опрос rdm6300
    }
  }
  //--------------------------Закрытие центрального замка 1 ключ-------------------------------------
  if (Latch == 1) {             // Если переменная Latch имеет значение 1 то проходим если 0 идем дальше
    if (Key == 10626030) {      // Если код ключа 10626030 то проходим
      digitalWrite(6, 1);       // Выставляем на пине 6 логическую еденицу (+5 вольт , включаем реле закрытия)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(6, 0);       // Выставляем на пине 6 логический ноль (0 вольт , выключаем реле закрытия)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 0;                // Переменную Latch устанавливаем в 0
      rdm6300.update();         // Обновляем опрос rdm6300
    }
  }
  //--------------------------Открытие центрального замка 2 ключ-------------------------------------
  if (Latch == 0) {             // Если переменная Latch имеет значение 0 то проходим если 1 идем дальше
    if (Key == 1062603) {       // Если код ключа 1062603 то проходим
      digitalWrite(7, 1);       // Выставляем на пине 7 логическую еденицу (+5 вольт , включаем реле открытия)
      digitalWrite(5, 1);       // Выставляем на пине 5 логическую еденицу (+5 вольт , включаем реле датчика)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(7, 0);       // Выставляем на пине 7 логический ноль (0 вольт , выключаем реле открытия)
      delay(20000);             // Ждем 20 секунд секунды для различных дейсвий
      digitalWrite(5, 0);       // Выставляем на пине 5 логический ноль (0 вольт , выключаем реле датчика)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 1;                // Переменную Latch устанавливаем в 1
      rdm6300.update();         // Обновляем опрос rdm6300
    }
  }
  //--------------------------Закрытие центрального замка 2 ключ-------------------------------------
  if (Latch == 1) {             // Если переменная Latch имеет значение 1 то проходим если 0 идем дальше
    if (Key == 1062603) {       // Если код ключа 1062603 то проходим
      digitalWrite(8, 1);       // Выставляем на пине 8 логическую еденицу (+5 вольт , включаем реле закрытия)
      delay(800);               // Ждем 0.8 секунды для сработки реле
      digitalWrite(8, 0);       // Выставляем на пине 8 логический ноль (0 вольт , выключаем реле закрытия)
      Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
      Latch = 0;                // Переменную Latch устанавливаем в 0
      rdm6300.update();         // Обновляем опрос rdm6300
    }
  }
  
}                               // Конец цикла

Скетч

Скетч только с открытием. AKVAZAMOKmini

#include <rdm6300.h>            // Запускаем библиотеку rdm6300.h
Rdm6300 rdm6300;                // Обращение к библиотеке rdm6300.h называем rdm6300
long Key;                       // Определяем переменную для ключей
void setup() {                  // Установки
  Serial.begin(9600);           // Устанавливаем скорость ком порта для передачи номеров ключей в монитор порта пк.
  pinMode(7, OUTPUT);           // Подключаем 7 пин ардуино
  digitalWrite(7, 0);           //  Устанавливаем 0 вольт на пине 7
  rdm6300.begin(2);             // На 2 пине подключаем считывание через софтсериал порт rdm6300
}
void loop() {                   // Зацикливаем
  if (rdm6300.update()) {       // Обновляем опрос rdm6300
    Key = rdm6300.get_tag_id(); // Считываем код ключа и сохраняем его в переменную Key
    Serial.println(Key);        // Пишем в ком порт код ключа
  }
  //--------------------------Открытие центрального замка-------------------------------------
  if (Key == 10626030) {      // Если код ключа 10626030 то проходим
    digitalWrite(7, 1);       // Выставляем на пине 7 логическую еденицу (+5 вольт , включаем реле открытия)
    delay(800);               // Ждем 0.8 секунды для сработки реле
    digitalWrite(7, 0);       // Выставляем на пине 7 логический ноль (0 вольт , выключаем реле открытия)
    Key = 0;                  // Переменную Key устанавливаем в 0 (сбрасываем код ключа)
    rdm6300.update();         // Обновляем опрос rdm6300
  }
}                               // Конец цикла


Скетч AKVAZAMOKmini





Комментарии