Jeffrey Cross
Jeffrey Cross

Высмеивать | PiLarm: Как построить Raspberry Pi Room Alarm

Джефф Хайсмит

Я всегда в поиске тех обучающих моментов. Вдохновение поразило меня, когда мой пятилетний мальчик попросил помочь не дать своему младшему брату проникнуть в его комнату. Я заметил идеальное время, чтобы научить его вводам, выводам и программированию. Учиться легче, когда урок сосредоточен на решении личной проблемы.

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

Код моей охранной системы, который вы можете просмотреть на GitHub, довольно прост. Чтобы воспользоваться многопоточностью Linux, я разделил задачи между двумя скриптами Python. Один скрипт Python (keypadd.py) контролирует клавиатуру на предмет правильности кодов. При загрузке система настроена как «снята с охраны». Каждый раз, когда код постановки / снятия с охраны обнаруживается, он переключает состояние системы, перебрасывая байт в текстовый файл с именем «arm.txt».

Второй скрипт Python (alarmd.py) контролирует пассивный инфракрасный датчик через GPIO Raspberry Pi. При обнаружении движения он проверяет файл arm.txt, чтобы определить, включена ли система. Если система активирована при обнаружении движения, звучит сигнал тревоги.

В ходе проекта я столкнулся с несколькими проблемами, которые повлияли на мои дизайнерские решения:

  • Мой первый прототип использовал пакет программного обеспечения с открытым исходным кодом под названием Motion, чтобы обнаружить движение с помощью USB-камеры и затем запустить сценарии Python. Обнаружение движения было медленным, и я обнаружил, что мне нужно больше контроля над фильтрацией движения и синхронизацией событий. Датчик пассивного инфракрасного излучения (PIR), совместимый с напряжением 3,3 В, был прост в добавлении и на несколько порядков более чувствительным.
  • Клаксон / сирена может показаться знакомым. Я получил сигнал тревоги из бесплатных библиотек эффектов GarageBand от Apple.
  • Я экспериментировал с синтезированием речи на Pi на лету, но бедному маленькому компьютеру пришлось слишком долго думать, прежде чем говорить, поэтому я использовал на моем Mac сервис Text-to-iTunes-Track для создания аудиофайлов синтезированного голоса Mac. , который я скопировал в Пи. Скрипты Python вызывают проигрыватель mpg123 на Pi, чтобы воспроизвести их. Если вы хотите использовать Raspberry Pi для синтеза речи на лету, я рекомендую вам немного почитать.
  • Вместо того чтобы кодировать функцию клавиатуры с нуля, я использовал библиотеку Криса Крампакера для чтения моей матричной клавиатуры.
  • Я пробовал много разных библиотек для взаимодействия с Twitter через код Python, но TweetPony - единственная, которая мне показалась достаточно простой, чтобы быстро приступить к работе.
  • В будущем я мог бы добавить функциональность, используя разные коды клавиатуры для запуска различных функций системы. Например, ввод 1234 может поставить систему под тревогу, а ввод 5678 может просто твитнуть изображение вашего фойе при обнаружении движения, чтобы вы могли видеть, когда ваши дети вернутся домой. Прямо сейчас, есть один код для постановки / снятия с охраны и один код для того, чтобы Пи отключился, чтобы можно было безопасно отключить штепсельную вилку.

Существуют более совершенные системы сигнализации Raspberry Pi, но я надеюсь, что я показал вам, насколько легко, весело и познавательно можно создать свою собственную. Теперь доберитесь до него и доложите.

Смотрите всю серию здесь.

Поделиться

Оставить комментарий