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

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

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

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

Концепция

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

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

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

Вам понадобится

Работа с Bluetooth

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

  sudo apt-get install bluez python-bluez  

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

  hcitool dev  

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

  wget https://pybluez.googlecode.com/svn/trunk/examples/simple/inquiry.py python query.py  

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

Отлично, теперь давайте создадим первый этап нашего программного обеспечения, которое выполняет обнаружение. Создайте приложение 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 ):вывести «Пользователь присутствует» else:вывести «Пользователь вне допустимого диапазона» 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 («сапожник»), метки, которые у вас есть, относятся к альтернативному режиму, называемому «BCM» (канал Broadcom SOC), и обычно записываются с префиксом GPIO или P перед номером. Вам не обязательно нужен прорыв GPIO - он просто упрощает работу. Если у вас нет коммутационной панели и вы не хотите ее покупать, воспользуйтесь этой схемой:

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

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

Подключите реле

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

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

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

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

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

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

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

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

  gpio -g mode 23 out  

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

  gpio -g readall  

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

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


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

  1. Банковское хранилище
  2. Простая схема датчика приближения и работа с приложениями
  3. Рассмотрим проблему №1 с сетями интеллектуальных датчиков на основе Bluetooth
  4. Cypress:микроконтроллеры Bluetooth обеспечивают ячеистую сеть с повсеместным подключением к смартфону
  5. Датчик отслеживания линии с RPi
  6. API датчика окружающей среды с RPi
  7. Простой аналоговый датчик приближения с цифровым интерфейсом (для Raspberry Pi) [последнее обновление:7 февраля 2014 …
  8. Датчик Portenta и термопары (с MAX6675)
  9. Мониторинг CO2 с помощью датчика K30
  10. Arduino с Bluetooth для управления светодиодом!