Создание умного автозамка двери с использованием Bluetooth-близости смартфона
Ищете надежный, технологичный способ защитить свой домашний офис или частную мастерскую? Это руководство проведет вас через создание DIY умного замка, который автоматически обнаруживает ваше присутствие через Bluetooth и запирает дверь, когда вы уходите.
Концепция
Ваш смартфон постоянно вещает уникальный Bluetooth-идентификатор в режиме обнаружения. Мониторя этот сигнал с Raspberry Pi, мы можем определить, находится ли устройство в диапазоне, и триггерить реле для запирания или отпирания двери соответственно.
Что понадобится
- Raspberry Pi — любая модель подойдет; я использовал старую Model B за ее простоту. Убедитесь, что у нее есть сетевое подключение (Ethernet или Wi‑Fi), SD-карта и micro‑USB блок питания.
- Bluetooth USB-адаптер — модуль Adafruit 4.0 BLE работает надежно, но любой совместимый донгл подойдет. Адаптеру нужно только отправлять короткие пинги, поэтому скорость передачи не критична.
- GPIO breakout-плата («cobbler») — делает подключение пинов понятным; недорого и удобно.
- Релейная плата — выберите 4-канальную, рассчитанную на 12 В/5 А. Мой выбор — универсальная модель за ~$5.
- Электромагнитный замок 12/24 В — я приобрел замок с удерживающей силой 180 кг с крепежом примерно за $35.
- Блок питания 12/24 В — замок должен питаться от внешнего источника; никогда не питайте его от Pi.
- Python-скрипт (Lock.py) — мы разработаем его пошагово.
Начало работы с Bluetooth
Сначала установите необходимые Bluetooth-пакеты на ваш Pi. Можно сделать это непосредственно на устройстве или через SSH.
sudo apt-get install bluez python-bluez
Вставьте донгл и проверьте, что он распознан:
hcitool dev
Затем получите пример Python-скрипта для обнаружения близких устройств:
wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py
python inquiry.py
Если скрипт сообщает «0 devices found», убедитесь, что ваш телефон в режиме обнаружения. На iPhone откройте страницу настроек Bluetooth, чтобы включить его.
Создание скрипта обнаружения
Создайте файл detect.py и добавьте следующий код. Замените MAC-адрес на идентификатор вашего телефона.
#!/usr/bin/python
import bluetooth
import time
while True:
print("Checking "+time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()))
result = bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5)
if result:
print("User present")
else:
print("User out of range")
time.sleep(10)
Запустите скрипт для просмотра обновлений статуса в реальном времени. 10-секундный интервал балансирует отзывчивость с потреблением энергии. Если время автономной работы важно, рассмотрите добавление переключателя, отключающего цикл, пока вы внутри.
Режимы GPIO-платы
Выберите схему нумерации пинов, соответствующую вашему оборудованию. Режим «board» использует физические номера пинов, а «BCM» (Broadcom) — номера GPIO-каналов. Я буду использовать BCM в примерах ниже, что соответствует большинству breakout-плат.
Подключение реле
Подключите breakout-плату к Pi: пины 3,3 В и 5 В к VCC и GND реле соответственно. Соедините GPIO 23 с входом реле. Проверьте требования реле к логическому уровню; многие принимают 3,3 В сигналы напрямую.
Для ручного тестирования реле установите wiringPi и настройте GPIO 23 как выход:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
gpio -g mode 23 out
Подтвердите статус пина:
gpio -g readall
Когда реле щелкает, вы готовы интегрировать замок. Держите блок питания замка отдельно от линий питания Pi.
Дальнейшие шаги
Объедините скрипт обнаружения с логикой управления GPIO для триггеринга замка, когда телефон выходит из диапазона. Тщательно протестируйте в контролируемой среде перед развертыванием.
Производственный процесс
- Внутри банковских хранилищ: история, дизайн и будущее безопасности
- Индуктивный датчик приближённости: схема, принцип работы и практические применения
- Bluetooth Smart Sensor Networks: почему ограничения дальности — главная проблема
- Cypress запустила двухрежимные Bluetooth 5.0 MCU с Mesh-сетями, связывающие IoT-устройства со смартфонами
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Построение надёжного Temperature & Sensor API на Raspberry Pi с модулем GY‑91
- Низкокостный ИК-датчик приближенности для Raspberry Pi с использованием только цифровых пинов
- Интеграция термопары с Arduino Portenta H7 через MAX6675
- Датчик CO2 K30: мониторинг качества воздуха в реальном времени на Arduino
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид