Оглавление:

Как управлять розетками с помощью Raspberry Pi: 6 шагов
Как управлять розетками с помощью Raspberry Pi: 6 шагов

Видео: Как управлять розетками с помощью Raspberry Pi: 6 шагов

Видео: Как управлять розетками с помощью Raspberry Pi: 6 шагов
Видео: Raspberry Pi - Что можно сделать? Готовые проекты. Есть ли смысл? Как научиться? 2024, Ноябрь
Anonim
Как управлять розетками с помощью Raspberry Pi
Как управлять розетками с помощью Raspberry Pi
Как управлять розетками с помощью Raspberry Pi
Как управлять розетками с помощью Raspberry Pi
Как управлять розетками с помощью Raspberry Pi
Как управлять розетками с помощью Raspberry Pi

В этом руководстве я продемонстрирую вам, как создать веб-интерфейс для управления розетками в вашем доме с помощью Raspberry Pi. Я решил написать этот проект, когда увидел конкурс «Датчики», и, поскольку этот проект предполагает использование датчика для считывания кодов с пульта дистанционного управления, поставляемого с приобретенными вами розетками, я подумал, что этот проект идеально подойдет.

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

В этом проекте используются розетки с радиочастотным управлением на частоте 433 МГц в сочетании с радиочастотным передатчиком, подключенным к вашему raspberry pi. Розетки поставляются с пультами дистанционного управления, которые могут включать и выключать розетки, но это совсем не весело! Вместо этого мы будем использовать веб-сервер, работающий на Raspberry Pi, который позволяет любому, кто подключен к сети, включать или выключать определенные розетки. Веб-интерфейс для этого проекта идеален, поскольку любое подключенное к Интернету устройство в вашей сети может использоваться в качестве пульта дистанционного управления.

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

Запасы

  • Raspberry Pi (я использовал RPi 3 Model B +)
  • Передатчик и приемник 433 МГц (я использовал этот)
  • Розетки 433 МГц (я использовал это)
  • Джемперы от женщины к женщине (я купила эту связку)
  • Компьютер или портативное устройство с доступом в Интернет.

Шаг 1. Настройте Raspberry Pi

Настройте свой Raspberry Pi
Настройте свой Raspberry Pi

Начните с установки последней версии Raspbian на свой новый Raspberry Pi. Если вы планируете использовать существующий Pi (что вы можете сделать полностью), все, что вам нужно, - это убедиться, что на вашем Pi установлен Python 3, поскольку именно на нем написан весь исходный код, который я предоставляю. Для этого, тип

python3

в командную строку. Если у вас Python 3, вы должны увидеть открытый терминал python. Выйдите из терминала, закрыв или набрав

выход()

После того, как вы это подтвердите, вам нужно установить flask на свой Pi. Flask позволяет нам создать наш веб-сервер. В командной строке Pi введите

sudo pip3 установить колбу

Если на вашем Pi не установлен pip, вам нужно будет ввести

sudo apt-get install python3-pip

Я предпочитаю разрабатывать на своем Raspberry Pi, не вставая с настольного компьютера. Если вы тоже предпочитаете этот вариант, вам необходимо установить какую-то среду для SSH в Pi. PuTTY будет работать, но я предпочитаю иметь GUI (графический пользовательский интерфейс), из-за чего создается впечатление, что вы находитесь непосредственно на Pi. Для варианта с графическим интерфейсом вам нужно установить VNC Viewer на компьютер, на котором вы планируете работать. Есть также настройки, которые вам нужно будет настроить на своем Pi. Инструкции по изменению настроек можно найти здесь.

Шаг 2: Подключение оборудования

Подключение вашего оборудования
Подключение вашего оборудования

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

распиновка

Ниже приведены связи, которые я сделал. У вас может быть другая конфигурация, если вы приобрели другое оборудование передатчика / приемника, чем я указал во введении. Если вы решите выбрать номера контактов, отличные от тех, которые я указал ниже, не бойтесь! Когда вы загружаете исходный код, просто измените номера контактов в файле RxTx.py по мере необходимости.

Ресивер (большая фишка):

  • GND - Любой обозначенный контакт заземления
  • ДАННЫЕ - контакт 11
  • DER - Не подключен
  • + 5V - Любой обозначенный контакт + 5V
  • ------
  • + 5V - Любой обозначенный контакт + 5V
  • GND - Любой обозначенный контакт заземления
  • GND - не подключен
  • ANT - не подключен

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

Передатчик:

  • P - вывод 3,3 В
  • DA - контакт 7
  • G - Любой обозначенный контакт заземления
  • AN - не подключен

Примечание. Опять же, вы можете подключить антенну к передатчику по мере необходимости, но я обнаружил, что в этом нет необходимости. Дальность действия более чем достаточна (более 50 футов).

Шаг 3: Добавление кода

Это та часть, над которой я потратил большую часть своего времени, когда разрабатывал этот проект. Я стараюсь комментировать как можно больше, но я, вероятно, оставил пробелы, которые могут потребовать объяснения, если кто-то из вас потратит время, пытаясь понять это. Если это произойдет с вами, оставьте, пожалуйста, комментарий!

Здесь задействованы следующие языки:

  • Python
  • CSS
  • Javascript
  • HTML
  • JQuery / Ajax

Python используется на фляжном сервере и в

RxTx.py

файл, который обрабатывает передачу и получение кода. CSS используется для создания стиля веб-страницы. Кому нужен скучный сайт !? Javascript используется при любой обработке событий (нажатие кнопки и т. Д.). HTML - это основной строительный блок веб-страницы. Наконец, JQuery / Ajax используется для связи между веб-страницей и серверной частью Python.

Если все эти языки звучат устрашающе, не волнуйтесь! Я знал только о Python, входящем в этот проект, который оказался языком, требующим наименьшего количества кодирования, поймите… Достаточно сказать, не торопитесь, просматривая код, если это то, что вы решите сделать. Если не хочешь, не обязательно!

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

Outlet Switch-> comm-- DataRW.py-- keys.py-- RxTx.py-> webpage-- статический ----- favicon.ico ----- style.css-- шаблоны ----- index.html ----- schedule.html-- app.py-- файл данных

Вы можете поместить папку Outlet Switch в любое место на Pi. Когда вы будете готовы запустить свой веб-сервер, откройте терминал на своем Pi и

CD

(сменить каталог) в каталог веб-страницы. Затем введите

python3 app.py

в терминал. Если ошибок не было, все готово!

P. S. Пожалуйста, проявите терпение, если вы столкнетесь с какими-либо ошибками. Я попытался раздавить их все перед загрузкой.

Шаг 4: Сделайте снимок

Дать ему шанс!
Дать ему шанс!

Теперь, когда вы запускаете код, вы можете почувствовать веб-интерфейс у вас под рукой. Управление системой очень простое:

  • Вы можете добавить столько точек, сколько хотите, с помощью веб-интерфейса.
  • Удаление так же просто, как щелчок по редактированию, выбор выходов, которые вы хотите удалить, и щелчок по удалению.

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

  • Сначала введите название торговой точки в поле Название.
  • Щелкните или коснитесь за пределами поля заголовка, чтобы позволить программе проверить, что заголовок еще не существует. У вас не может быть названий с одинаковыми именами
  • После подтверждения становятся доступными кнопки кода включения и кода выключения.
  • Нажмите и удерживайте кнопку ON на предоставленном пульте дистанционного управления и быстро нажмите кнопку ON Code на интерфейсе. Удерживайте кнопку на пульте дистанционного управления, пока ваш двоичный код не заполнит соседнее поле.
  • Повторите предыдущий шаг для кода выключения.
  • Нажмите ОК, и теперь вы готовы переключить эту розетку!

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

Шаг 5: Отладка и файл RxTx.py

Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py
Отладка и файл RxTx.py

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

  • Убедитесь, что на вашем Pi установлен matplotlib. Вы можете сделать это, набрав в терминал Pi следующее:

    • python3

    • импортировать matplotlib

    • Если вы получили сообщение об ошибке, вам необходимо установить matplotlib.
    • Выйдите из оболочки Python, используя

      выход()

  • Чтобы установить matplotlib, введите

    sudo pip3 установить matplotlib

  • в терминал
  • Загрузите прикрепленный файл test.py и поместите его рядом с файлом RxTx.py на свой Pi.
  • Откройте терминал python и перейдите в папку comm.
  • Тип

    python3 test.py

  • Когда появится сообщение «** Началась запись **», нажмите и удерживайте кнопку ВКЛ или ВЫКЛ на пульте дистанционного управления, пока запись не закончится.
  • Программа загрузит фигуру matplotlib, похожую на приведенную выше. Увеличивайте масштаб, пока не увидите повторяющийся сигнал, как показано на фотографиях выше.
  • Подсчитайте общую логическую 1 и логический 0 для каждого сообщения, где сообщение - это одна итерация повторяющегося сигнала, показанного выше. Если общее количество равно 25, скорее всего, файл RxTx.py не виноват. Если вы столкнетесь с чем-то, кроме 25, обязательно прокомментируйте ниже, и я переделаю файл RxTx.py, чтобы он был более открытым (или не стесняйтесь попробовать свои силы).

Что делать, если я не вижу повторяющегося сигнала?

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

Шаг 6: Наслаждайтесь

Вы знаете, что у вас есть возможность включать / выключать розетки со своего телефона, планшета, компьютера или другого устройства с подключением к Интернету! Дайте мне знать, что вы думаете в комментариях!

Рекомендуемые: