Кодовой замок на Ардуино: подключение

1 Оценка2 Оценки3 Оценки4 Оценки5 Оценок (1 голосов, среднее: 5,00 из 5)
Загрузка...

Многие люди всерьез задумываются о том, чтобы установить у себя на двери кодовый замок, который можно открывать без ключа. Конечно, можно купить уже готовый замок и установить его, но стоимость в этом случае будет довольно высокая. А если говорить за надежность, то можно найти варианты и лучше. В этой статье мы расскажем вам про кодовой замок на Ардуино и поговорим о том, как его подключить.

Кодовой замок на Ардуино: принцип работы

кодовой замок на АрдуиноНа самом деле принцип его работы предельно простой, с внешний стороны двери находится клавиатура, с помощью которой вводится пароль. На внешней стороне двери находится остальная конструкция замка. Если нужно выйти из комнаты, тогда нужно нажать «+», для входа вводим пароль. Дверь закрывается с помощь геркона, который и обеспечивает надежность закрытия.

Что нужно для сборки

Собрать такой замок довольно проблематично, ведь нужно найти все комплектующие, которые далеко не всегда продаются в обычных магазинах. Итак, для стандартной сборки нам понадобиться:

  1. Пучок провод для бреборда, 30 штук будет более чем достаточно.
  2. Далее нужно купить две вилки и розетки RJ45.
  3. L293D.
  4. Актуатор центрального замка. Можно использовать с ВАЗа – это оптимально по цене и функциональности.
  5. Геркон – его можно взять со старого окна, здесь сложностей нет.
  6. Нам еще понадобиться блок питания от хаба D-LINK на 12 Вольт.
  7. Пульт управления от охранной сигнализации, его можно найти в любом магазине с электроникой.
  8. Arduino protoshield + breadboard.
  9. Arduino UNO.
  10. Также не обойтись без шпингалета. Он должен иметь внушительный размер, чтобы не сделать ошибку во время его выбора смотрите фото дальше.

Как правило, чтобы приобрести все эти детали, придется выложить 40-50 долларов. Вроде сумма небольшая, но решать вам, напрягаться с этим или установить уже рабочую модель. Чтобы установить и соединить между собой, придется потратить несколько часов при условии, если вы все будете делать правильно.

Программирование кодового замка

Мы рекомендуем использовать код с официального сайта разработчиков, выглядит он следующим образом:

#include <Password.h>

#include <Keypad.h>

  1. Password password= Password( «0000» );
  2. constbyte ROWS = 4;
  3. constbyte COLS = 3;
  4. charkeys[ROWS][COLS] = {
  5. {
  6.  ‘1’,’2′,’3′  }
  7. ,
  8. {
  9.  ‘4’,’5′,’6′  }
  10. ,
  11. {
  12.  ‘7’,’8′,’9′  }
  13. ,
  14. {
  15.  ‘*’,’0′,’#’  }
  16. };
  17. byte rowPins[ROWS]={
  18. 3, 4, 5, 6};
  19. byte colPins[COLS]={
  20. 7, 8, 9};
  21. Keypad keypad=Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  22. byte Closed=0;
  23. byte Gerkon=2;
  24. byte LedRed=12;
  25. byte LedGreen=13;
  26. byte MotorPin1=0;
  27. byte MotorPin2=1;
  28. byte MotorPinGo=11;
  29. boolean programMode=false;
  30. intspeakerPin= 10;
  31. voidsetup(){
  32. pinMode(MotorPin1,OUTPUT);
  33. pinMode(MotorPin2,OUTPUT);
  34. pinMode(LedRed,OUTPUT);
  35. pinMode(LedGreen,OUTPUT);
  36. pinMode(speakerPin,OUTPUT);
  37. pinMode(Gerkon,INPUT);
  38. digitalWrite(Gerkon,HIGH);
  39. digitalWrite(LedRed,LOW);
  40. digitalWrite(LedGreen,LOW);
  41. digitalWrite(MotorPin1,LOW);
  42. digitalWrite(MotorPin2,LOW);
  43. digitalWrite(MotorPinGo,LOW);
  44. addEventListener(keypadEvent);
  45. setDebounceTime(100);
  46. startupSound();
  47. }
  48. voidloop(){
  49. char key = getKey();
  50. if (Closed==1) {
  51.   digitalWrite(LedRed,HIGH);
  52.   digitalWrite(LedGreen,LOW);
  53. }
  54. else{
  55.   digitalWrite(LedRed,LOW);
  56.   digitalWrite(LedGreen,HIGH);
  57. }
  58. }
  59. voidkeypadEvent(KeypadEvent key){
  60. switch (getState()){
  61. case PRESSED:
  62.  switch (key){
  63.  case ‘#’:
  64.     guessPassword();
  65.     digitalWrite(LedRed,LOW);
  66.    break;
  67.  case ‘*’:
  68.     CloseBolt();
  69.     digitalWrite(LedRed,LOW);
  70.     digitalWrite(LedGreen,LOW);
  71.    break;
  72.  default :
  73.    if (key != NO_KEY){
  74.    }
  75. append(key);
  76.     digitalWrite(LedRed,HIGH);
  77.     analogWrite(speakerPin,128);
  78.    break;
  79.  }
  80.  break;
  81. case RELEASED:
  82.  switch (key){
  83.   default :
  84.     digitalWrite(LedRed, LOW);
  85.     analogWrite(speakerPin, 0);
  86.     break;
  87.   }
  88.   break;
  89.  }
  90. }
  91. voidguessPassword(){
  92.  if (evaluate()){
  93.   if (Closed==1) {
  94.     digitalWrite(LedGreen,HIGH);
  95.     OpenBolt();
  96.     digitalWrite(LedGreen,LOW);
  97. reset();
  98.   }
  99.  }
  100.  else{
  101.   digitalWrite(LedGreen,LOW);
  102. reset();
  103.   errorSound();
  104.  }
  105. }
  106. voidstartupSound()
  107. {
  108.  int note = (1/33)*500000;
  109.  for (int _=0;_<100000/note;_++){
  110.   delayMicroseconds(note);
  111.   digitalWrite(speakerPin, HIGH);
  112.   delayMicroseconds(note);
  113.   digitalWrite(speakerPin, LOW);
  114.  }
  115. note = (1/25)*500000;
  116.  for (int _=0;_<100000/note;_++){
  117.   delayMicroseconds(note);
  118.   digitalWrite(speakerPin, HIGH);
  119.   delayMicroseconds(note);
  120.   digitalWrite(speakerPin, LOW);
  121.  }
  122. note = (1/26)*500000;
  123.  for (int _=0;_<100000/note;_++){
  124.   delayMicroseconds(note);
  125.   digitalWrite(speakerPin, HIGH);
  126.   delayMicroseconds(note);
  127.   digitalWrite(speakerPin, LOW);
  128.  }
  129. }
  130. voiderrorSound()
  131. {
  132.  int n = 2000;
  133.  for (int vez=0;vez<2;vez++){
  134.   for (int _=0;_<30;_++){
  135.     delayMicroseconds(n);
  136.     digitalWrite(speakerPin, HIGH);
  137.     delayMicroseconds(n);
  138.     digitalWrite(speakerPin, LOW);
  139.   }
  140.   delay(50);
  141.  }
  142. }
  143. voidopenSound()
  144. {
  145.  int n = 300;
  146.  for (int vez=0;vez<3;vez++){
  147.   for (int _=0;_<100;_++){
  148.     delayMicroseconds(n);
  149.     digitalWrite(speakerPin, HIGH);
  150.     delayMicroseconds(n);
  151.     digitalWrite(speakerPin, LOW);
  152.   }
  153.   delay(100);
  154.  }
  155. }
  156. voidOpenBolt()
  157. {
  158.  if (Closed == 1){
  159.   digitalWrite(MotorPin1, LOW);
  160.   digitalWrite(MotorPin2, HIGH);
  161.   digitalWrite(MotorPinGo, HIGH);
  162.   delay(30);

digitalWrite(MotorPin1, LOW);

  1.   digitalWrite(MotorPin2, LOW);
  2.   digitalWrite(MotorPinGo, LOW);
  3.   Closed=0;
  4.   openSound();
  5.  }
  6. }
  7. voidCloseBolt()
  8. {
  9.  if (Closed == 0){
  10.   closeSound1();
  11.   do
  12.   {
  13.   delay(1);
  14.   } while (digitalRead(Gerkon)==1);
  15.   delay(3000); //wait 3 seconds
  16.   digitalWrite(MotorPin1, HIGH);
  17.   digitalWrite(MotorPin2, LOW);
  18.   digitalWrite(MotorPinGo, HIGH);
  19.   delay(30);
  20.   digitalWrite(MotorPin1, LOW);
  21.   digitalWrite(MotorPin2, LOW);
  22.   digitalWrite(MotorPinGo, LOW);
  23.   Closed=1;
  24.   closeSound2();
  25.  }
  26. }
  27. voidcloseSound1()
  28. {
  29.  int n = 200;
  30.  for (int vez=0;vez<2;vez++){
  31.   for (int _=0;_<100;_++){
  32.     delayMicroseconds(n);
  33.     digitalWrite(speakerPin, HIGH);
  34.     delayMicroseconds(n);
  35.     digitalWrite(speakerPin, LOW);
  36.   }
  37.   delay(100);
  38.  }
  39. }
  40. voidcloseSound2()
  41. {
  42.  int n = 450;
  43.  for (int _=0;_<110;_++){
  44.   delayMicroseconds(n);
  45.   digitalWrite(speakerPin, HIGH);
  46.   delayMicroseconds(n);
  47.   digitalWrite(speakerPin, LOW);
  48.  }
  49. }

Процесс сборки: фото и видео

Изначально покажем вам несколько фото о том, как его собирать и устанавливать.

Вот так выглядит кодовой замок в сочетании с актуатором.кодовой замок на Ардуино подключение

Подключаем блок питания.блок питание кодогового замка

Шпингалет, который и будет закрывать всю нашу конструкцию.шпингалет на кодовый замок

Как подключить кодовый замок Arduino: видео

Также читайте: как спрятать провода от компьютера.

Поделитесь своим мнением

Ваш e-mail не будет опубликован. Обязательные поля помечены *