Умный бесключевой замок: Arduino + Android (Bluetooth, пароль)
Компоненты и материалы
- Arduino UNO — 1 шт.
- Bluetooth-модуль HC-05 — 1 шт.
- Сервопривод Tower Pro MG996R — 1 шт.
- 3D-принтер — для печати корпуса замка
Необходимые инструменты
- 3D-принтер (Anet A8 или аналогичный)
- Паяльник, припой, флюс
- Клейкий пистолет (горячий клей)
- Отвертки, шурупы M3/M4
Приложения и сервисы
- Arduino IDE
- MIT App Inventor 2 — для создания Android-приложения
О проекте
Этот умный замок обеспечивает безопасный, простой и удобный доступ к дому без ключей. Замок монтируется внутри двери, поэтому взломщик не может добраться до механизма извне. Управление осуществляется с Android-смартфона через Bluetooth. Приложение отправляет пароль; если он совпадает с заданным в Arduino, сервопривод открывает/закрывает замок и отправляет подтверждение на телефон.
3D-модель замка
Все детали печатаются на 3D-принтере. Автор использует дизайн пользователя Thingiverse ridercz (thing:2350856). Файлы доступны для скачивания. Существуют облегченные версии (LT) — меньше пластик, но достаточная прочность. Автор напечатал LT-версию на Anet A8 — работает отлично.
Сборка 3D-деталей
Собирайте детали последовательно по фото/видео. Закрепите 4 шурупами для жесткости.
Программа Arduino (Bluetooth + пароль)
Логика проста: Android-приложение отправляет команду с паролем. Две команды: OPEN= и CLOSE=. Пароль может содержать цифры, буквы, символы. В приложении два поля: ввод пароля и кнопки «Open Door» / «Close Door». При нажатии приложение склеивает команду, знак «=» и пароль, отправляет строку (например, OPEN=myPass123\n). Arduino разделяет строку по символу «=», проверяет пароль, при совпадении выполняет команду сервопривода и отправляет ответ: OPEN, CLOSE или WRONG.
Схема подключения
- HC-05 TX → Arduino RX (пин 0)
- HC-05 RX → Arduino TX (пин 1) через делитель напряжения 5В→3.3В!
- Сервопривод: сигнал на пин 9, питание 5V, GND
- Питание: 5В 1А (блок питания от розетки)
Установка замка на дверь
- Закрепите корпус замка 4 шурупами.
- Установите HC-05 в отверстие корпуса, зафиксируйте горячим клеем.
- Поместите Arduino UNO в нижнюю часть корпуса, подключите по схеме.
- Подайте питание (5В 1А).
Разработка Android-приложения в MIT App Inventor
App Inventor не требует кодирования и установки ПО — нужен только Google-аккаунт. ai2.appinventor.mit.edu
Дизайнер (UI)
- Создайте проект «BluetoothControlDoorLock» (без пробелов).
- Добавьте: ListPicker (переименуйте в «Connect to Bluetooth Device»), Label («Enter Password»), PasswordTextBox, две Button («Open Door», «Close Door»), невидимый компонент BluetoothClient.
Блоки (Logic)
ListPicker.BeforePicking— установить список элементов в адреса и имена спаренных устройств.ListPicker.AfterPicking— подключиться к выбранному устройству.- Кнопки «Open Door» / «Close Door» — отправить текст
OPEN=илиCLOSE=+ пароль +\nчерез BluetoothClient. - Обработка входящих сообщений («OPEN», «CLOSE», «WRONG») — показ уведомлений пользователю.
Сборка APK
Menu → Build → «App (save .apk to my computer)». Установите на телефон.
Расширенное приложение (BTcontrol)
Базовое приложение не показывает статус соединения или ошибки. Автор предоставляет улучшенную версию:
- Проверяет, включен ли Bluetooth, предлагает включить.
- Показывает MAC и имя подключенного устройства.
- Сообщения: «Door is now open», «Wrong password», ошибки связи.
- Исходник:
BTcontrol.aia, APK:BTcontrol.apk, в Google Play: BTcontrol.
Для модификации: Projects → Import project (.aia) from my computer.
Программный код (Arduino Sketch)
#include <Servo.h>
Servo myservo;
String inputString = "";
String command = "";
String value = "";
String password = "arduPi"; // Ваш пароль
boolean stringComplete = false;
void setup() {
Serial.begin(9600);
inputString.reserve(50);
command.reserve(50);
value.reserve(50);
myservo.attach(9);
}
void loop() {
if (stringComplete) {
delay(100);
int pos = inputString.indexOf('=');
if (pos > -1) {
command = inputString.substring(0, pos);
value = inputString.substring(pos + 1, inputString.length() - 1);
if (!password.compareTo(value) && (command == "OPEN")) {
openDoor();
Serial.println(" OPEN");
delay(100);
} else if (!password.compareTo(value) && (command == "CLOSE")) {
closeDoor();
Serial.println(" CLOSE");
delay(100);
} else if (password.compareTo(value)) {
Serial.println(" WRONG");
delay(100);
}
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n' || inChar == '\r') {
stringComplete = true;
}
}
}
void openDoor() {
myservo.write(0);
delay(100);
}
void closeDoor() {
myservo.write(65); // Угол может отличаться — откалибруйте!
delay(100);
}
3D-модели и файлы
- Thingiverse: thing:2350856
- Файлы проекта: схема (
.png), исходник App Inventor (BTcontrol.aia), APK (BTcontrol.apk)
Схемы
Схема подключения (изображение в оригинале). Файлы: door-lock_android_source_PDi5PbxDwC.aia, door-lock_android_app_K05l3Csr61.apk.
Производственный процесс
- Внутри банковских хранилищ: история, дизайн и будущее безопасности
- Каналы и шлюзы: инженерия, история и будущее водного транспорта в США
- Создание надежного RFID-замка на Arduino — пошаговое руководство
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Создание анимации и игр на LCD 16×2 с Arduino UNO
- Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
- Электронный кодовый замок на Arduino с клавиатурой и линейным приводом
- Управление Arduino Uno из Python 3: команды через последовательный порт и демонстрация с LED
- Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64
- WiFi-умный замок на Arduino и ESP8266 — открывание с телефона