Реклама
Вы когда-нибудь хотели приехать домой с личным приемом? С Raspberry Pi и несколькими простыми компонентами, вы можете! В этом простом проекте мы будем использовать геркон, чтобы запустить мелодию темы, когда дверь открыта. Мы будем использовать Raspberry Pi в качестве контроллера, хотя вы можете использовать практически любой другой микроконтроллер Микроконтроллеры по 5 долларов: Arduino, Raspberry Pi Zero или NodeMCU?Раньше случалось так, что, если вы хотите получить компьютер, вам придется повторно арендовать дом, чтобы заплатить за него. Теперь вы можете получить один для Авраама Линкольна. Читать далее Для этого проекта используется та же схема. Вот демо.
Тебе понадобится
Скорее всего, вам уже будут принадлежать все детали, необходимые для этого, кроме тростникового переключателя, который стоит около 2–3 долларов, или вы можете получить пакет из 5 за чуть более 8 долларов. Вот.
- Raspberry Pi (для этого подойдет любая модель).
- 1 х 220 Ом резистор.
- 1 х 1 кОм резистор.
- Резистор 3 х 10 кОм.
- 1 х Магнитный геркон.
- 1 х светодиодный.
- 2 х кнопочный переключатель.
- Макетная.
- Соединительные кабели.
- Компьютерный динамик или аналогичный.
Мы будем использовать Raspberry Pi для воспроизведения песни при входе в комнату, и разработаем схему с кнопками на макете, чтобы активировать ее с задержкой, и остановим программу.
Этот проект, хотя и делается в основном для развлечения, охватывает основы для многих приложений в Домашняя автоматизация Руководство по домашней автоматизации с Raspberry Pi и ArduinoРынок домашней автоматизации наводнен дорогими потребительскими системами, несовместимыми друг с другом и дорогостоящими в установке. Если у вас есть Raspberry Pi и Arduino, вы можете добиться того же в ... Читать далее а также DIY домашней безопасности Ищете решение домашней системы безопасности DIY? Попробуйте один из этихВ век цифровых технологий и постоянно подключенного оборудования, установка домашней системы безопасности должна превзойти искусство ставить коробку в форме будильника на стене. Читать далее
Начиная
Давайте начнем с создания нашей схемы. Убедитесь, что ваш Pi отключен, и настройте схему следующим образом:
Светодиод подключен к контакту 7 на нашем пи. Два кнопочных переключателя прикреплены к контактам 11 и 13, а геркон подключается к контакту 15. Наша сила идет к контакту 1 (3v3) и контакту 6 (Gnd).
Обязательно проверьте, все ли находится именно в нужном месте.
Пока вы тестируете этот проект, он может помочь держать ваш геркон перед собой, чтобы вы могли легко включать или выключать его. В этом случае геркон уже был установлен над дверью. Как только ваш проект запущен и вы можете временно подключить выключатель к вашей двери, используя лента, или если вы чувствуете себя более уверенно, вы можете прикрепить ее более навсегда для использования в будущем проекты!
Подключите выход 3,5 мм вашего Pi к вашей акустической системе. Когда все собрано вместе, оно должно выглядеть примерно так:
Обратите внимание, что используемый здесь макет имеет силовые направляющие, противоположные схеме Fritzing выше.
Теперь включите ваш Pi и получите к нему доступ через SSH, чтобы мы могли получить доступ к терминалу. Если вы не уверены, как это сделать, это руководство Настройка Raspberry Pi для использования без головы с SSHRaspberry Pi может принимать команды SSH при подключении к локальной сети (через Ethernet или Wi-Fi), что позволяет легко его настроить. Преимущества SSH выходят за рамки ежедневных проверок ... Читать далее могу помочь тебе. Если вы используете Raspberry Pi с монитором, мышью и клавиатурой, пропустите этот шаг и откройте терминал.
Прежде чем начать, стоит проверить, в курсе ли вы. Тип sudo apt-get update
в терминал.
Теперь мы можем перейти к тому, чтобы наш Пи говорил с нашей схемой.
Тестирование нашей установки
Для начала давайте проверим нашу схему с помощью простой программы. Если вы уверены, что все правильно настроили, вы можете пропустить этот шаг, хотя я бы порекомендовал его, поскольку в дальнейшем это избавит от головной боли.
Если вы никогда раньше не программировали на Python и чувствуете себя немного испуганным, есть множество отличные сайты 5 лучших сайтов для изучения программирования на PythonХотите научиться программировать на Python? Вот лучшие способы изучения Python в Интернете, многие из которых полностью бесплатны. Читать далее это может помочь вам начать.
В терминале создайте новый скрипт:
нано test.py
После открытия добавьте этот код в файл и нажмите Ctrl-C, чтобы выйти, следуя диалоговому окну сохранения:
# Этот код был написан для статьи на www. MakeUseOf.com от Яна Бакли. импорт RPi. GPIO как GPIO. время импорта. GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN), в то время как True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print («Кнопка на GPIO 11») time.sleep (1 ) если (GPIO.input (13) == 1): время печати («Кнопка на GPIO 13») time.sleep (1) if (GPIO.input (15) == 1): время печати («кнопка на GPIO 15») .sleep (1) GPIO.cleanup ()
Этот код считывает значение кнопок и печатает на экране при их изменении. Две кнопки имеют резисторы, поэтому при нажатии они сообщают о ВЫСОКОМ. Герконовый переключатель сообщает о ВЫСОКОМ, когда его магнит находится рядом.
Запустите программу:
python test.py
Вы должны увидеть светящийся светодиод и отчет на экране, когда вы нажмете две кнопки и потяните магнит от герконового переключателя. Если вы не получаете отклика при нажатии кнопок, проверьте схему еще раз и убедитесь, что все подключено, как и должно быть. Когда вы закончите тестирование, нажмите CTRL-C остановить программу.
Теперь мы можем собрать простую программу для установки, запуска и сброса нашего датчика двери. Мы рассмотрим код по частям и кратко объясним, что делает каждая часть, хотя, если вы хотите увидеть полный код, прокрутите вниз, чтобы увидеть его полностью.
Нам нужно начать с импорта некоторых модулей:
импорт Rpi. GPIO как GPIO. импорт pygame.mixer. время импорта.
Мы будем использовать Pygame Модуль для воспроизведения нашей музыки. Он входит в стандартную комплектацию Raspbian Jessie и является отличной библиотекой для всего, что вам нужно для создания игр на Python и многих других удивительные проекты Как создать Twitter-бот Raspberry PiTwitter является крупнейшим в мире хранилищем коротких сообщений от людей, которым нечего сказать - и сейчас Вы также можете внести свой вклад в этот эпический проект с помощью автоматизированного бота Twitter, работающего на Малина... Читать далее .
Мы собираемся использовать переменную под названием активный решить, активна ли наша система или нет. Давайте определим пару функций, которые сделают это для нас:
def activeSetup (): глобальный активный активный = 0 print («В настоящее время не активен») def activeState (): глобальный активный, если активный == 1: активный = 0 GPIO.output (7, GPIO.LOW) print («В настоящее время не активен») elif active == 0: print («Активация через 10 секунд») для x в диапазоне (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("В настоящее время" Активно ") остальное: возврат.
Первая функция здесь создает переменную с именем активныйи устанавливает его в 0. Присвоение активному состоянию числового значения означает, что, если вы планируете впоследствии увеличить масштаб вашей программы, чтобы иметь разные активные состояния, вы можете соответствующим образом нумеровать их. Хотя это может быть не лучшее программирование на Python в мире, этого будет более чем достаточно для этого проекта.
Вторая функция при вызове проверяет, активна ли система (или активного == 1). Если это так, то система становится неактивной (Активный == 0), выключает светодиод и печатает на консоль. Если это не так, он дает вам 10-секундный обратный отсчет, чтобы покинуть комнату, в которой мигает светодиод, перед тем как остаться включенным, чтобы показать, что система активна.
Теперь мы можем определить функцию, которая будет следить за переключателем тростникового магнита:
def watchDoor (): глобальное воспроизведение, играя = False, в то время как True: если активно == 1 и GPIO.input (15) == 1 и играет == False: Playing = True pygame.mixer.music.play () if GPIO.input (13) == 1: print («Нажата кнопка остановки: выход») pygame.mixer.music.stop () прервать, если GPIO.input (11) == 1: activeState () time.sleep (0.5)
Мы создаем еще одну переменную здесь игры - это просто для того, чтобы остановить программу, пытающуюся начать повторное воспроизведение при срабатывании переключателя.
Внутри цикла while первый оператор if запускает музыку (чего у нас пока нет, но не волнуйтесь, она идет). Она позволяет запускать музыку только в том случае, если система активна, геркон открыт, и он еще не воспроизводится.
Второй оператор if для нашей кнопки выхода. Если эта кнопка нажата, музыка останавливается и программа закрывается.
Третий оператор if предназначен для переключения, активна система или нет. time.sleep функция здесь состоит в том, чтобы предотвратить многократное чтение кнопки, когда она нажата.
Теперь пришло время установить контакты Пи.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, initial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Если вы уже проводили какие-либо эксперименты с Пи, это должно быть вам знакомо. Начальные = GPIO.LOW Аргумент в настройке контакта 7 устанавливает его на низкое значение, как только он инициализируется.
Теперь мы можем вызвать нашу функцию, которая установит, что система не будет активной при запуске программы.
activeSetup ()
Музыка Маэстро!
На данный момент, мы должны начать думать о музыке, чтобы играть. Вы можете выбрать любой музыкальный файл, который пожелаете, но сейчас мы выберем что-то доступное для всех. Если вы смотрите YouTube, вы, вероятно, уже знакомы с музыкой Кевина МакЛауда. Давайте скачаем фантастическую мелодию, которую он назвал «Одноглазый маэстро». Это, наряду с большей частью музыки на его сайте, под лицензией Creative Commons, и есть много веских причин Что такое Creative Commons и некоммерческое использование?Что такое Creative Commons? Что означает «некоммерческое использование»? Узнайте о лицензиях Creative Commons и о том, как они работают. Читать далее использовать контент с этими лицензиями для ваших проектов.
Вернемся к нашему коду, нам нужно запустить микшер Pygame и загрузить нашу мелодию.
pygame.mixer.init (44100, -16,21024) pygame.mixer.music.set_volume (1.0) name = "Одноглазый Maestro.mp3" pygame.mixer.music.load (имя) print («Загруженный трек -» + str (имя))
Первая строка этого блока инициирует Pygame Смеситель. Последний аргумент в скобках - это буфер, который управляет задержкой воспроизведения звука. Если позднее вы услышите прерывистое воспроизведение во время воспроизведения музыки, попробуйте увеличить это число до 4096. Настройки как они работают без проблем на Pi 3.
Если вы загрузили музыкальный файл в другой каталог, door.py Программа, вам нужно будет указать полный путь в скобках при определении переменной имени.
Теперь все, что осталось сделать, - это установить цикл, который ждет, когда мы либо активируем программу, либо выйдем из нее.
в то время как True: if (GPIO.input (13) == 1): print («Нажата кнопка остановки: выход») pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Этот цикл while ожидает ввода с любой из кнопок и соответственно покидает или изменяет состояние на активное. Если активное состояние становится 1, то watchDoor Функция, которую мы определили ранее, вызывается, и в следующий раз, когда дверь откроется, будет играть наша мелодия. Мы также называем GPIO.cleanup () сбросить наши контакты при выходе, что, как правило, является хорошей практикой для всех программ на Raspberry Pi.
Это все, что нам нужно сделать, чтобы запустить этот проект, вот код полностью:
импорт RPi. GPIO как GPIO. импорт pygame.mixer. время импорта def activeSetup (): глобальный активный активный = 0 печать («В настоящее время не активен») def activeState (): глобальный активный, если активен == 1: активный = 0 GPIO.output (7, GPIO.LOW) печать («В настоящее время» Не Active ") elif active == 0: печать (" Активация через 10 секунд ") для x в диапазоне (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("В настоящее время активен") иначе: вернуть def watchDoor (): глобальное воспроизведение play = False, а True: если active == 1 и GPIO.input (15) == 1 и playing == False: Playing = True pygame.mixer.music.play () if GPIO.input (13) == 1: print («Нажата кнопка остановки: выход») pygame.mixer.music.stop () прервать, если GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, initial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Одноглазый Maestro.mp3" pygame.mixer.music.load (имя) print ("Загруженная дорожка -" + str (имя)), в то время как True: if (GPIO.input (13) == 1): print ("Нажата кнопка остановки: выход") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()
Если вы прокрутили здесь, чтобы сразу получить полный код, имейте в виду, что вам все равно нужно будет загрузить музыку на Pi, чтобы она заработала!
Теперь у вас должна быть действующая приветственная домашняя мелодия! Прикрепите тростниковый переключатель к двери и опробуйте его. Неловко танцевать не обязательно, но рекомендуется.
Этот проект охватывал основы для многих форм домашнего мониторинга, безопасности и автоматизации, и, надеюсь, тоже был веселым!
Теперь, когда вы зашли так далеко, зачем останавливаться на достигнутом? Вы можете добавить больше треков и сделать так, чтобы программа выбирала один из списка произвольно Вы могли бы добавить реле Начало работы с GPIO на Raspberry PiЕсли вы считаете, что Arduino был крутым, просто подождите, пока вы не получите в руки Raspberry Pi - эти вещи потрясающие. Помимо того, что они являются полностью функциональным компьютером, они также имеют ... Читать далее и другие объекты должны быть активированы при входе. Если у вас есть домашняя музыкальная система, почему бы не создать музыкальную тему для каждой комнаты?
Будете ли вы создавать свое личное приветственное домашнее сообщение? Вы были изобретательны с герконами в вашем доме другими способами? Если это так, оставьте комментарий о том, что вы планируете или уже сделали в разделе комментариев ниже!
Ян Бакли - независимый журналист, музыкант, исполнитель и продюсер, живущий в Берлине, Германия. Когда он не пишет или не играет на сцене, он возится с электроникой или кодом «сделай сам» в надежде стать безумным ученым.