Умный дом

Сделать автоматическую дверь офиса с датчиком приближения смартфона

Сделать автоматическую дверь офиса с датчиком приближения смартфона

Pssst — хотите ли вы высокотехнологичную защиту для вашего домашнего офиса или секретный замок для вашей «мастерской» (хорошо, вы меня поняли, на самом деле это темница / игровая комната), которую дети не смогут выяснить? Мы вас прикрыли. Давайте создадим умный замок DIY, который автоматически определяет, когда вы находитесь, и блокирует, когда вас нет.

Как это работает? НИКТО НЕ ЗНАЕТ! Или, точнее, Bluetooth.

Концепция

Ваш смартфон — это мощное устройство, которое постоянно раскрывает информацию о себе внешнему миру; Одним из способов является Bluetooth.

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

Мы будем настраивать Raspberry Pi с адаптером Bluetooth, чтобы постоянно следить за тем, когда ваш смартфон находится вне зоны действия, а когда это так, реле активируется и запирает дверь.

Тебе понадобится

  • Raspberry Pi — любая модель должна работать, так как это не требует интенсивной работы процессора, но я использую более старую модель B, и расположение выводов GPIO в вашей модели может немного отличаться. Смотрите раздел о режиме платы ниже. Вам также понадобятся некоторые основы, такие как проводное соединение Ethernet или настроенный Wi-Fi. ; плюс SD-карта и кабель питания micro USB.
  • Bluetooth USB-адаптер. Adafruit продает подтвержденный работающий модуль Bluetooth 4.0 BLE ( что такое Bluetooth 4.0? ), но Вы должны проверить все, что у вас уже есть, прежде чем покупать новый только для этого проекта. Я нашел старый стандартный мини-адаптер Bluetooth, который я купил в Японии, который, кажется, работает нормально. Мы не заботимся о скорости передачи или надежности соединения, так как все, что мы делаем, — это отправляем быстрое рукопожатие, чтобы увидеть, живо ли устройство в исправном состоянии.
  • Разделительная плата GPIO («cobbler») и соединительные кабели. Вы можете работать непосредственно с выводов на Pi, но намного проще, если у вас есть ярлыки на каждом выводе, и они в любом случае стоят всего $ 6.
  • Релейная плата. У вас есть широкий выбор вариантов, и все будет работать, если оно предназначено для использования с микроконтроллером и может подавать напряжение не менее 12 вольт на 5 ампер. Я использовал стандартную 4-канальную плату, похожую на эту, примерно за 5 долларов, но я собираюсь предположить, что вы знаете, как работать с вашей.
  • 12/24 В электромагнитный замок, хотя электронный замок соленоида также должен работать. Тот, который я купил, имеет усилие 180 кг и поставляется в комплекте с монтажными пластинами и инструкциями, примерно за 35 долларов .
  • Блок питания 12/24 В. Магнитный замок должен иметь отдельный источник питания — что бы вы ни делали, не пытайтесь получить питание для него от Pi.
  • Приложение Lock.py Python , но мы напишем это по ходу дела.

Работа с Bluetooth

Bluetooth занимает центральное место в этом проекте, поэтому давайте начнем с установки поддержки Bluetooth и протестируем наш адаптер. Вы можете сделать это либо напрямую из Pi, либо через SSH удаленно ( как настроить Windows для SSH на вас Pi ).

sudo apt-get install bluez python-bluez 

Вставьте ключ, если вы этого еще не сделали, и давайте посмотрим, что он сообщает.

 hcitool dev 

Если у вас есть что-то в списке, вы можете пойти. Далее мы будем использовать скрипт Python для опроса ближайших устройств Bluetooth и получения уникального адреса устройства. Нам нужно сделать это только один раз для каждого устройства.

 wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.py python inquiry.py 

Если отображается сообщение «найдено 0 устройств», либо у вас нет совместимого USB-ключа USB, либо смартфон не обнаружен. Не отчаивайтесь, хотя: я обнаружил, что мне пришлось открыть страницу настроек Bluetooth на моем iPhone, чтобы перевести ее в режим обнаружения, и тогда это произошло:

Bluetooth идентифицирован

Отлично, теперь давайте создадим первый этап нашего программного обеспечения, которое будет выполнять обнаружение. Создайте приложение Python под названием detect.py и откройте его с помощью Nano.

 nano detect.py 

Вставьте этот пример кода :

 #!/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 != None): print "User present" else: print "User out of range" time.sleep(10) 

и настройте следующую строку с адресом вашего устройства Bluetooth:

 result = bluetooth.lookup_name('78:7F:70:38:51:1B', timeout=5) 

Нажмите CTRL-X и Y, чтобы закрыть и сохранить. Запустите тот же код, и вы увидите что-то вроде этого:

подарок пользователя

Код должен быть очень простым для понимания, даже если вы никогда раньше не касались Python: он сканирует определенное устройство Bluetooth каждые 10 секунд и выводит другое сообщение в зависимости от того, найден он или нет. Переключите Bluetooth на вашем телефоне, чтобы имитировать перемещение в зону действия (вероятно, около 4 м). Вы можете уменьшить или увеличить время между сканированиями, но я чувствовал, что 10 секунд — это разумное количество времени, чтобы потенциально подождать, пока дверь откроется, и именно в этом мы и заключаем весь этот проект.

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

Поздравляем, теперь у вас есть приложение Python, которое знает, когда вы находитесь в пределах досягаемости, и мы можем начать действовать в этом направлении.

Режимы платы GPIO

Прежде чем продолжить, вам нужно выяснить, какой режим платы вы собираетесь использовать. Нет правильного или неправильного ответа, он просто влияет на то, указали ли вы буквальный номер контакта или виртуальный номер контакта GPIO.

По умолчанию используется буквенный номер контакта («режим платы»), начиная с контакта 1 внизу слева (если смотреть на Pi с портами USB справа). Контакт 2 чуть выше этого.

Однако, если у вас есть плата GPIO («cobbler»), у вас есть метки из альтернативного режима, называемого «BCM» (канал Broadcom SOC), и обычно они пишутся с префиксом GPIO или P. Вам строго не нужен прорыв GPIO — он просто делает вещи проще. Если у вас нет разделительной доски и вы не хотите ее покупать, используйте эту схему:

Схема распиновки Raspberry Pi модели A и B от RaspberryPi.org
Схема распиновки Raspberry Pi модели A и B от RaspberryPi.org

Обратите внимание, что исходная модель B, версия 1, версия 2, а также модели B + и Pi2 имеют разные выводы. Обратитесь к этому вопросу StackExchange для диаграммы, правильной для вашей доски.

В этом коде проекта я использую систему нумерации BCM GPIO, которая соответствует имеющейся у меня доске объявлений Adafruit. Незначительные модификации необходимы, если вы хотите использовать режим буквального вывода.

Провод в реле

Прикрепите коммутационную плату, убедившись, что провод от контактов 1 и 2 (те, что в углу вашего Pi) подключены к 3v3 и 5V0 на контакте. Вы можете вынуть тестер напряжения, чтобы проверить это.

смарт-замок rpi - gpio

Прежде чем продолжить, проверьте, не использовал ли кто-нибудь еще ваше конкретное реле с Raspberry Pi (или найдите заранее, что, как вы знаете, работает). Некоторым может потребоваться 5 В для активации, но RPi может обеспечить только 3,3 В на выходных выводах GPIO. Случайно, тот, который я использую, доволен 3,3 В, поэтому мне не нужны были дополнительные схемы, только 5V0 для VCC , GND для GND и вывод 23 GPIO для первого релейного входа .

Мой предыдущий учебник по GPIO показали, как подключить транзисторную схему для увеличения от 3,3 В до полного 5 В, если вам нужно (на самом деле я использовал ту же плату реле для этот учебник, но оказывается, что мне не нужно 5 В в конце концов).

Пока не нужно подключать электромагнит, так как вы услышите щелчок при срабатывании реле.

Далее давайте возьмем некоторый код для взаимодействия с портами GPIO.

Мы начнем с тестирования вне Python, чтобы убедиться, что все работает на самих портах. Установите wiringPi , который дает вам несколько полезных инструментов командной строки.

 git clone git://git.drogon.net/wiringPi cd wiringPi ./build 

После установки настройте вывод GPIO 23 на выход.

 gpio -g mode 23 out 

Теперь сделайте быстрое сканирование всех портов, чтобы подтвердить

 gpio -g readall 

У вас будет что-то похожее на это, хотя у вас может быть больше на модели B + или Pi2, так как он имеет больше выводов GPIO:

gpio readall

Поначалу это может немного сбивать с толку, но таблица разбита по середине, и порядок столбцов меняется с каждой стороны. В крайнем левом и правом нижнем углу находится номер контакта BCM. Поскольку мы используем 23, вы должны увидеть режим, указанный сейчас как OUT. Это полезная небольшая команда, чтобы получить хорошее представление о том, что происходит со всеми вашими выводами в любой момент.

Чтобы написать пин-код высокого или низкого, просто используйте

 gpio -g write 23 1 gpio -g write 23 0 

Надеюсь, если у вас правильно подключено реле, вы услышите, как оно включается и выключается. Если нет, не продолжайте, пока не разобрались с проводкой. Помните, что вам может потребоваться более высокое напряжение для активации реле.

Как только вы подтвердите, что реле и GPIO работают, добавьте модули Python для GPIO.

 sudo apt-get install python-dev python-rpi.gpio 

Теперь давайте изменим наше приложение Python для включения или выключения реле при обнаружении телефона. Вы найдете окончательный код в этом Gist . Скопируйте существующий detect.py в новый lock.py и добавьте следующие команды импорта и настройки:

 import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) RELAY = 23 GPIO.setup(RELAY, GPIO.OUT) 

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

 GPIO.output(RELAY,1) 

Чтобы запустить эту новую версию, добавьте к команде sudo — для доступа к GPIO требуются права суперпользователя.

Подключить его

Убедившись, что реле срабатывает с помощью датчика приближения, добавьте в замок электромагнит. Со стороны реле, подайте 12 В на клемму, помеченную как COM (общая), а затем положительный вход питания от электромагнита к клемме NO ( нормально разомкнутой, т. Е. Обычно она не подключена к общей клемме, но будет, когда вы активировать реле ).

Соедините землю от источника питания и электромагнита на клемме GND.

Rpi Smart Lock - реле

Обратитесь к инструкции по установке, прилагаемой к вашему замку; дверь должна быть достаточно толстой, и легче, если она открывается в ту сторону, с которой вы хотите, чтобы замок был. У меня все было наоборот, поэтому мне нужен L-образный монтажный кронштейн, а также дополнительный кусочек дерева для увеличения толщины двери.

интеллектуальный замок rpi - электромагнит

улучшения

Для меня это было доказательством того, что я должен опираться на другие проекты и просто не пускать глаз в мой офис, когда меня там нет — он не предназначен для надежной системы безопасности. Для этого вам понадобится резервная батарея, чтобы поддерживать подачу энергии в случае отключения.

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

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

Какую функцию вы думаете, я должен добавить дальше? У вас были какие-то проблемы со сборкой? Дайте мне знать в комментариях, и я сделаю все возможное, чтобы помочь!

Похожие посты
Умный дом

Что такое «Эхо Амазонки Авто»?

Умный дом

Что такое умный туалет и стоит ли его покупать?

Как сделатьУмный дом

Как добавить Alexa в ваше умное зеркало

Tech новостиКак сделатьУмный дом

Как контролировать свои потолочные вентиляторы в SmartHome