- Використовувані компоненти:
- Підключення клавіатури 4x4 до Raspberry Pi за допомогою мультиплексування:
- Опис ланцюга:
- Робоче пояснення:
- Пояснення програмування:
Безпека є головною проблемою у нашому повсякденному житті, і цифрові замки стали важливою частиною цих систем безпеки. Існує безліч типів технологій для захисту нашого місця, таких як системи безпеки на основі PIR, система безпеки на основі RFID, лазерні сигналізації, системи з біоматрицею тощо.
Ми раніше побудували Digital Lock з паролем за допомогою Arduino та за допомогою 8051, тут ми збираємося створити цей Digital Lock за допомогою Raspberry Pi з користувацьким паролем. Після встановлення пароля користувач може отримати доступ до дверей лише з правильним паролем.
Якщо ви не знайомі з Raspberry Pi, ми створили низку навчальних посібників для вивчення Raspberry Pi із взаємодією з усіма основними компонентами та кількома простими проектами, які слід розпочати, перевірте.
Використовувані компоненти:
- Raspberry Pi (із завантаженою SD-картою)
- Модуль клавіатури
- Зумер
- РК-дисплей 16x2
- 10к горщик
- 10k резисторний пакет (підтягування)
- СВІТЛОДІОДНИЙ
- Резистор 1к
- Хлібна дошка
- CD / DVD візок як ворота
- Потужність 5 вольт
- Водій двигуна L293D
- 12-вольтовий акумулятор
- Підключення проводів
Підключення клавіатури 4x4 до Raspberry Pi за допомогою мультиплексування:
У цій схемі ми використовували метод мультиплексування для взаємодії клавіатури для введення пароля в систему. Тут ми використовуємо мультиплексну клавіатуру 4x4 з 16 клавішами. Зазвичай, якщо ми хочемо використовувати 16 ключів, тоді нам потрібно 16 контактів для підключення до Arduino, але в техніці мультиплексування нам потрібно всього 8 контактів для взаємодії 16 ключів. Так що це розумний спосіб взаємодії з модулем клавіатури. Дізнайтеся більше про техніку мультиплексування та її роботу в цьому цифровому замку за допомогою 8051.
Техніка мультиплексування - це дуже ефективний спосіб зменшити кількість контактів, що використовуються з мікроконтролером для забезпечення введення, пароля чи цифр. В основному цей прийом використовується двома способами - один - сканування рядків, а другий - сканування стовпців. Якщо ми використовуємо бібліотеку клавіатури (#include
Але у цьому проекті ми застосували короткий спосіб кодування для тієї ж клавіатури, не використовуючи бібліотеку клавіатури. Будь ласка, ознайомтесь з цим у розділі програмування нижче.
Опис ланцюга:
Схема цього цифрового дверного замка Raspberry Pi дуже проста, що містить Raspberry Pi 3, модуль клавіатури, зумер, візок DVD / CD як ворота та РК-дисплей. Тут Raspberry Pi керує повним процесом, таким як отримання пароля з модуля клавіатури, порівняння паролів, водіння зумера, відкриття / закриття воріт і надсилання стану на РК-дисплей. Клавіатура використовується для введення пароля. Звуковий сигнал використовується для індикацій і управляється вбудованим транзистором NPN. РК-дисплей використовується для відображення стану або повідомлень на ньому.
Штифти стовпця модуля клавіатури безпосередньо підключені до штифтів GPIO 22, 23, 24, 25, а шпильки рядків - до 21, 14, 13, 12 шпильок Raspberry Pi wringPi. 16x2 ЖК - дисплей з'єднаний з малиновим Pi в 4-бітному режимі. Керуючий штир RS, RW та En РК безпосередньо підключені до штифтів GPIO 11, GND та 10. Виводи даних D4-D7 підключені до штифтів GPIO 6, 15, 4 та 1. Один зумер підключений на штифті GPIO 8. А драйвер двигуна L293D підключений на виводах GPIO 28 і 29 Raspberry Pi. 12 вольт батарея сполучена на виводі 8 L293D по відношенню до землі.
Робоче пояснення:
Робота з цим проектом проста. Коли користувач запускає код у Raspberry Pi, на РК-дисплеї відображається деяке привітальне повідомлення, а після нього відображається “A- Введіть пароль”, а у другому рядку B - Змінити ключ доступу ”. Тепер користувач може вибрати свій вибір, натискаючи клавіші A та B на клавіатурі.
Тепер, якщо користувач хоче відкрити ворота, йому потрібно натиснути 'A' на клавіатурі, і тоді система запитає пароль. Пароль за замовчуванням - "1234". Тепер користувач повинен ввести пароль, і після того, як ця система перевірить пароль, дійсний він чи ні:
1. Якщо користувач введе правильний пароль, система відкриє ворота.
2. Якщо користувач введе неправильний пароль, система надішле команду зуммеру на звуковий сигнал і на РК-дисплеї відобразиться повідомлення «Доступ заборонено».
Тепер припустимо, що користувач хоче змінити пароль, тоді йому / їй потрібно натиснути «B» на клавіатурі, і тоді користувачеві буде запропоновано «Поточний пароль» або «Поточний пароль». Тепер користувачеві потрібно ввести поточний пароль, потім система перевірити його правильність і виконати одне із заданих завдань.
1. Якщо користувач введе правильний пароль, система запитає «Новий пароль», і тепер користувач може змінити пароль, ввівши новий пароль.
2. А якщо користувач введе неправильний пароль, система ввімкне звуковий сигнал і покаже “Неправильний пароль: на РК-дисплеї.
Тепер користувачеві потрібно повторити весь процес ще раз, щоб змінити пароль.
В основному, відкриття та закриття воріт - це не що інше, як обертання мотора за годинниковою та проти годинникової стрілки, щоб відкрити та закрити двері. Для невеликого проекту ви можете просто додати двигун постійного струму, щоб відкривати і закривати двері. Ми також можемо використовувати сервопривід або кроковий двигун, але нам потрібно відповідно змінити Кодекс.
Крім того, ви можете використовувати відповідний електронний дверний замок (легко доступний в Інтернеті) замість візка CD. Він має електромагніт, який утримує двері заблокованими, коли через замок не проходить струм (розімкнута ланцюг), а коли через нього проходить струм, замок розблоковується і двері можна відкрити. Код буде відповідно змінено, також перевірте цей спільний огляд проекту: Arduino RFID Door Lock
Пояснення програмування:
Програмування дуже схоже на Arduino. Функція Arduino використовує класи, але тут ми зробили цей код, використовуючи програмування на c, без класів. Ми також встановили бібліотеку wiringPi для GPIO.
Насамперед нам потрібно включити необхідні бібліотеки, а потім визначити штифти для РК-дисплея, зумера, світлодіода та двигуна.
#включати
Після цього визначте шпильки для рядків та стовпців клавіатури та визначте масив для зберігання номерів паролів та клавіатур.
char пас; char pass1 = {'1', '2', '3', '4'}; int n = 0; рядок char = {21, 14, 13, 12}; char col = {22, 23, 24, 25}; char num = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
Після цього ми написали кілька функцій для керування РК:
Функція void lcdcmd використовується для надсилання команди на РК-дисплей, а функція void write використовується для надсилання даних на РК-дисплей.
Функція void print використовується для надсилання рядка на РК-дисплей.
недійсний друк (char * str) {while (* str) {write (* str); str ++; }}
Функція void setCursor використовується для встановлення положення курсора на РК-дисплеї.
void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (набір); }
Функція void clear () використовується для очищення РК-дисплея, а зумер void () використовується для звукового сигналу.
Функція void gate_open (), void gate_stop () та void gate_close () використовуються для керування воротами (візок CD)
void gate_open () {digitalWrite (m1, LOW); digitalWrite (м2, ВИСОКО); затримка (2000); } void gate_stop () {digitalWrite (m1, LOW); digitalWrite (м2, НИЗЬКИЙ); затримка (2000); } void gate_close () {digitalWrite (m1, HIGH); digitalWrite (м2, НИЗЬКИЙ); затримка (2000); }
Дана функція використовується для ініціалізації РК в 4-розрядному режимі.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Дана функція void keypad () використовується для взаємодії модуля клавіатури з Raspberry Pi за допомогою `` короткого методу ''.
клавіатура void () {int i, j; int x = 0, k = 0; затримка (2000); while (k <4) {for (i = 0; i <4; i ++) {digitalWrite (col, LOW); for (j = 0; j <4; j ++) {if (digitalRead (row) == 0) {setCursor (x, 1);…………………
Перевірте всі функції в Повному коді нижче, код простий і зрозумілий.