Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Дверной замок на базе Arduino и Android, защищенный паролем

Компоненты и расходные материалы

Arduino UNO
× 1
Модуль Bluetooth HC-05
× 1
Сервоприводы (Tower Pro MG996R)
× 1

Необходимые инструменты и машины

3D-принтер (общий)

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Введение

Этот умный замок - это надежный, простой и легкий в управлении замок вашего дома. Для этого замка не нужны ключи, замок крепится внутри двери, и вы можете управлять им извне с помощью Bluetooth. Поскольку замок находится внутри двери, вор не сможет взломать дверь. Для открытия и закрытия блокировки требуется приложение Android, и я объясню подробности того, как вы можете разработать приложение для Android, в более поздней части руководства. Пароль отправляется на замок с помощью приложения Android, и если пароль совпадает с вашим предварительно установленным паролем блокировки, замок будет открыт и отправит отзыв на ваш телефон, как будто замок открыт.

3D дизайн дверного замка

Все части замка напечатаны на 3D-принтере. Я хотел бы поблагодарить пользователя Thingiverse ridercz за красивый дизайн. Он разработал и опубликовал этот дверной замок с сервоприводом на сайте thingiverse.com. Все файлы, кроме Rack_Holder.stl, взяты из его дизайна. Вы можете скачать файлы ниже или с Thingiverse.com.

Некоторые файлы имеют LT версию. Облегченная версия требует меньше PLA по сравнению с обычной версией и имеет меньшую прочность. Я распечатал LT-версию и работает хорошо. Я использовал Anet A8 для печати всех деталей. Фотографии распечатанных деталей прилагаются.

Сборка деталей, напечатанных на 3D-принтере

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

Программа Arduino для управления дверным замком по Bluetooth, защищенным паролем

Код для управления умным дверным замком по bluetooth очень прост. Я разработал приложение для Android так, чтобы оно отправляло команду с паролем. На самом деле я установил две команды, одна - «OPEN =», а другая - «CLOSE =», и пароль может содержать любую цифру, более позднюю или символ или их комбинацию, как вам нравится. В приложении я использовал две кнопки:одну для открытия двери, а другую для закрытия двери. Когда пароль вводится в поле пароля и нажимается кнопка открытия, приложение объединяет команду «OPEN =» с паролем и отправляет его на arduino. Я добавляю знак '=' к команде, для этого я разделю команду и пароль с помощью этого '='. После получения строки с телефона программа arduino отделяет команду и пароль от строки приема и сохраняет их в двух отдельных переменных. Затем сначала проверьте пароль, если пароль совпадает с сохраненным паролем, затем откройте дверь для команды «ОТКРЫТЬ» и закройте дверь для команды «ЗАКРЫТЬ». «=» помогает разделить команду и пароль. Полный эскиз Arduino приведен ниже.

Схема

Связь между компонентами очень проста. Сначала подключите модуль Bluetooth HC-05 к Arduino. Обратите внимание на схему. Контакт TX платы Arduino подключен к контакту RX модуля Bluetooth, а контакт RX Arduino подключен к контакту TX модуля Bluetooth.

Установка замка на дверь

Надеюсь, вы запрограммировали свою плату Arduino с помощью эскиза, прикрепленного на предыдущем шаге, и вы уже проверили все соединения в соответствии со схемой. Если вы выполнили все шаги, то самое время поставить замок в соответствующем месте двери. Сначала закрепите замок четырьмя винтами. Затем закрепите модуль Bluetooth в нужном месте замка и добавьте немного горячего клея, чтобы плотно закрепить модуль с замком. После этого поместите плату Arduino в нижнюю часть замка и подключите все провода согласно схеме. После установки замка и выполнения соединений вы должны включить замок. Я использовал сетевой адаптер на 5 В, 1 А, чтобы обеспечить питание цепи.

Разработка приложений для Android для дверных замков, защищенных паролем

Я покажу вам, как разработать приложение Bluetooth для Android с помощью MIT App Inventor. Я использую App Inventor, потому что он не требует кодирования и установки программного обеспечения. Вам нужна только учетная запись Google. Перейдите на http://ai2.appinventor.mit.edu/, вам будет предложено войти в систему, используя учетную запись google.

Войдите в App Inventor с помощью Gmail и выполните следующие действия:

  • i. Принять условия использования изображение 1
  • ii. Нажмите "пройти опрос позже", а затем "продолжить", чтобы закрыть заставку 2, 3.
  • iii. Начать новый проект (без пробелов!) Image 4
  • iv. Назовите проект "BluetoothControlDoorLock" (без пробелов!) Image 5

Теперь вы находитесь в конструкторе, где вы размещаете «пользовательский интерфейс» своего приложения (изображение 6). Окно конструктора - это то место, где вы определяете внешний вид своего приложения и указываете, какие функции оно должно иметь. Вы выбираете такие элементы пользовательского интерфейса, как кнопки, изображения, метки, текстовые поля, а также такие функции, как преобразование текста в речь, Bluetooth, датчики и GPS.

Теперь, следуя рисунку 7, добавьте средство выбора списка в средство просмотра. Переименуйте его в «Подключиться к устройству Bluetooth» (изображение 8). Добавьте одну метку, одно текстовое поле пароля и две кнопки, показанные на рисунке 10. Измените текстовые свойства компонентов как «Введите пароль», «Открыть дверь» и «Закрыть дверь» соответственно. Окончательный интерфейс пользователя должен выглядеть, как показано на рисунке 11. Теперь добавьте клиента Bluetooth в средство просмотра. Это невидимый компонент, у которого нет пользовательского интерфейса. См. Изображение 12.

Перейдите в редактор блоков

Пора сказать вашему приложению, что делать! Нажмите «Блоки», чтобы перейти в редактор блоков (изображение 13). Думайте о кнопках Designer и Blocks как о вкладках - вы используете их для перемещения вперед и назад между двумя областями App Inventor. Редактор блоков - это место, где вы программируете поведение своего приложения. Есть встроенный блок, который обрабатывает такие вещи, как математика, логика и текст. Ниже приведены блоки, которые входят в состав каждого из компонентов вашего приложения. Чтобы блоки для определенного компонента отображались в редакторе блоков, сначала необходимо добавить этот компонент в свое приложение через конструктор.

Давайте разработаем блоки для List Picker. Средство выбора списка - это элемент пользовательского интерфейса, при нажатии на который отображается список соответствующих элементов, здесь находится сопряженное устройство Bluetooth. Нам нужно добавить два блока ListPicker.BeforePicking и ListPicker.AfterPicking (изображение 14). Полные блоки показаны на рисунках 18 и 19.

Создайте файл apk

Наш дизайн завершен, теперь нам нужно создать файл apk для нашего телефона Android. Щелкните меню сборки и выберите «Приложение (сохранить .apk на моем компьютере)». Подожди минутку. Файл apk будет загружен в папку загрузок по умолчанию. Установите и пользуйтесь.

Приложение для Android с более широким набором функций

На предыдущем шаге я показал вам, как разработать базовое приложение Bluetooth в App Inventor. Но это приложение не так удобно для пользователя. Он не покажет вам никаких сообщений, если ваша дверь открыта или закрыта, или Bluetooth не может быть подключен из-за какой-либо ошибки. Я прикрепил сюда более продвинутое приложение для нашего проекта.

Когда вы запускаете приложение, проверьте, включен ли ваш Bluetooth-радио, если он не включен, появится диалоговое окно включения Bluetooth. Нажмите «Да», чтобы включить Bluetooth-радио. Затем выполните сопряжение устройства с помощью кнопки сопряжения устройства. Затем нажмите кнопку подключения. При успешном подключении к любому устройству приложение показывает MAC-адрес и имя подключенного устройства. Введите пароль в поле пароля, затем нажмите кнопку открытия двери. Если вы ввели правильный пароль, дверь будет открыта, и приложение покажет вам сообщение о том, что ваша дверь теперь открыта. Затем введите пароль еще раз, если хотите закрыть дверь. Если вы введете неправильный пароль, приложение покажет неправильный пароль.

Полный исходный файл App Inventor (BTcontrol.aia) прилагается. Если вам не нравится создавать собственное приложение или изменять его, просто загрузите BTcontrol.apk и установите его на свой Android-сервер.

Вы также можете скачать его из Google Play Store по ссылке:

https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.BTcontrol&hl=en

Для изменения источника щелкните меню «Проекты», выберите «Импортировать проект (.aia) с моего компьютера», как показано на рисунке 24, и просмотрите файл BTcontrol.aia со своего компьютера. После импорта вы можете легко изменить его.

Если вы хотите узнать больше о разработке приложений для Android с помощью App Inventor, просмотрите:http://appinventor.mit.edu/explore/ai2/tutorials.html. Вы также можете попробовать http://meta-guide.com/videography/100-best-appinventor-videos/

Код

  • Эскиз Arduino
Эскиз Arduino Arduino
 #include  Servo myservo; // создаем сервообъект для управления servoString inputString =""; String command =""; String value =""; String password ="arduPi"; // это пароль для открытия и закрытия вашей двери // вы можете установить любой пароль, который вам нравится, используя цифры и символыboolean stringComplete =false; void setup () {// запускаем последовательное соединение Serial.begin (9600); // скорость передачи 9600 бод должна соответствовать bluetooth // Функция String Reserve () позволяет вам выделить буфер в памяти для управления строками. inputString.reserve (50); // резервируем 50 байт в памяти для сохранения для обработки строк command.reserve (50); value.reserve (50); логическая строкаOK =false; myservo.attach (9); // подключает сервопривод на выводе 9 к сервообъекту} void loop () {// если arduino получит символ завершения строки, например \ n, stringComplete установит значение true if (stringComplete) {//Serial.println(inputString); задержка (100); // определил позицию '=' в строке и установил его индекс в переменную pos int pos =inputString.indexOf ('='); // значение переменной pos> или =0 означает, что в полученной строке присутствует '='. if (pos> -1) {// функция substring (start, stop) вырезает определенную часть строки от начала до остановки // здесь команда будет частью полученной строки до '=' // пусть полученная строка открыта =test123 // тогда команда 'open' command =inputString.substring (0, pos); // значение будет от after =до команды новой строки // для приведенного выше примера значение test123 // мы просто игнорируем '=', принимая первый параметр подстроки как 'pos + 1' // мы используем '=' как разделитель между командой и значением // без '=' можно использовать любой другой символ // мы используем =menas, наша команда или пароль не должны содержать никакого '=', иначе это вызовет ошибку value =inputString.substring (pos + 1 , inputString.length () - 1); // извлекаем команду до \ n исключено //Serial.println(command); //Serial.println(value); // password.compareTo (значение) сравнивает строку пароля и строку значения, если соответствие возвращает 0 if (! password.compareTo (value) &&(command =="OPEN")) {// если пароль совпадает и команда 'OPEN 'чем дверь должна открываться openDoor (); // вызов функции openDoor () Serial.println ("OPEN"); // отправил открытый отзыв на телефон delay (100); } else if (! password.compareTo (value) &&(command =="CLOSE")) {// если пароль совпал и команда 'ЗАКРЫТЬ', то дверь должна закрываться closeDoor (); Serial.println («ЗАКРЫТЬ»); // отправили на телефон строку «ЗАКРЫТЬ» delay (100); } else if (password.compareTo (value)) {// если пароль не найден, то на телефон отправлен неправильный ответ Serial.println ("WRONG"); задержка (100); }} // очищаем строку для следующей итерации inputString =""; stringComplete =false; }} void serialEvent () {while (Serial.available ()) {// получаем новый байт:char inChar =(char) Serial.read (); //Serial.write(inChar); // добавляем его к inputString:inputString + =inChar; // если входящий символ - это новая строка или возврат каретки, установите флаг // чтобы основной цикл мог что-то с этим сделать:if (inChar =='\ n' || inChar =='\ r') {stringComplete =правда; }}} пустота openDoor () {myservo.write (0); задержка (100); } void closeDoor () {myservo.write (65); задержка (100); } 

Изготовленные на заказ детали и корпуса

Thingiverse
https://www.thingiverse.com/thing:2350856CAD-файл на сайте thingiverse.com

Схема

door-lock_android_source_PDi5PbxDwC.aia дверной замок_android_app_K05l3Csr61.apk

Производственный процесс

  1. Банковское хранилище
  2. Канал и замок
  3. Учебное пособие по блокировке RFID для Arduino
  4. Универсальный пульт дистанционного управления с использованием Arduino, 1Sheeld и Android
  5. ЖК-анимация и игры
  6. Управление роботом Roomba с помощью Arduino и устройства Android
  7. Дверной замок на основе пароля
  8. Связь Python3 и Arduino
  9. Клеточные автоматы на основе Arduino и OLED
  10. Умный дверной замок с использованием страницы входа в WiFi от Arduino и ESP8266