- Необходимые компоненты
- Принципиальная электрическая схема
- Настройка Flask в Raspberry Pi для управления дверью гаража
- Создание скрипта Python для интеллектуального открывателя дверей гаража
- Создание HTML-страницы для веб-сервера Raspberry Pi
- {{pins.name}} {% if pins.state == true%} в настоящее время открыт
В наш век IoT (Интернета вещей), когда всем можно управлять удаленно с помощью смартфона, зачем носить ключи с собой. Существует множество технологий для поддержки беспроводного управления устройствами, такими как RFID, Bluetooth, Wi-Fi, LoRa. Ранее мы создали несколько дверных сигнализаций и схему управления дверью, чтобы открывать и закрывать дверь без проводов:
- Дверной замок Arduino RFID
- Автоматический открыватель дверей с использованием Arduino
- Цепь магнитной дверной сигнализации с датчиком Холла
- Дверная сигнализация на базе Интернета вещей, управляемая Google Assistant
Здесь, в этом уроке, мы создадим умный открыватель гаражных дверей с помощью Raspberry Pi. Здесь будет создан веб-сервер Raspberry Pi, чтобы открывать и закрывать гаражные ворота с помощью вашего смартфона.
Необходимые компоненты
- Плата Raspberry Pi с установленным в ней Raspbian
- Модуль реле
- Подключение проводов
Предполагается, что на вашем Raspberry Pi уже установлена операционная система и он может подключаться к Интернету. Если нет, перед продолжением следуйте руководству «Начало работы с Raspberry Pi». Здесь мы используем Rasbian Jessie, установленный Raspberry Pi 3.
Здесь внешний монитор с использованием кабеля HDMI используется в качестве дисплея для подключения к Raspberry Pi. Если у вас нет монитора, вы можете использовать SSH-клиент (Putty) или VNC-сервер для подключения к Raspberry pi с помощью ноутбука или компьютера. Узнайте больше о настройке Raspberry Pi без подключения к голове здесь.
Принципиальная электрическая схема
Подключите механизм открывания гаражных ворот к выходу реле. Здесь мы только что соединили светодиод с реле для демонстрации.
Настройка Flask в Raspberry Pi для управления дверью гаража
Здесь мы создали веб-сервер с использованием Flask, который обеспечивает способ отправки команд с веб-страницы на Raspberry Pi для управления роботом по сети. Flask позволяет нам запускать наши скрипты Python через веб-страницу, и мы можем отправлять и получать данные от Raspberry Pi в веб-браузер и наоборот. Flask - это микрофреймворк для Python. Этот инструмент основан на Unicode, имеет встроенный сервер разработки и отладчик, интегрированную поддержку модульного тестирования, поддержку безопасных файлов cookie и простоту использования, что делает его полезным для любителей.
Выполните следующие команды, чтобы установить флягу в Raspberry Pi:
sudo apt-get update sudo apt-get install python-pip python-flask
Теперь запустите команду pip, чтобы установить Flask и его зависимости:
sudo pip установить колбу
Вы можете узнать больше о программировании с использованием Flask здесь, а также проверить наши предыдущие проекты, в которых мы использовали Flask для управления роботом через веб-сервер, отправили сообщение с веб-страницы на Raspberry Pi и отправили значение веса в Raspberry Pi в смарт-контейнере.
Теперь мы напишем скрипт на Python для нашего веб-сервера гаражных ворот.
Создание скрипта Python для интеллектуального открывателя дверей гаража
Этот скрипт будет взаимодействовать с нашими GPIO Raspberry Pi и настраивать веб-сервер. Итак, это основной сценарий для нашего приложения. Полный скрипт Python для открывания дверей приведен в конце, здесь мы объяснили некоторые его части.
Сначала сделайте папку. Все остальные необходимые папки должны находиться только в этой папке. Выполните следующие команды, чтобы создать папку и создать файл python с именем app.py внутри этой папки.
mkdir garage_door cd garage_door nano app.py
Это откроет редактор Nano, в котором мы должны написать сценарий.
Начните с включения важных библиотек.
импортировать RPi.GPIO как GPIO из фляги import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Теперь создайте словарь в виде булавок для хранения номера, имени и состояния контакта. Вы можете использовать несколько булавок в зависимости от ваших потребностей.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Затем установите вывод как выходной и сначала сделайте его низким.
Для контакта в контактах: GPIO.setup (контакт, GPIO.OUT) GPIO.output (контакт, GPIO.LOW)
Теперь создайте основную функцию для чтения состояния вывода и сохранения этого состояния в переменной.
@ app.route ("/") def main (): для вывода в контактах: pins = GPIO.input (pin) ..
Мы должны передать эти данные на нашу html-страницу, чтобы мы могли контролировать состояние кнопки ввода.
вернуть render_template ('main.html', ** templateData)
Теперь создайте функцию для обработки запросов от URL-адреса с указанием номера пина и действия в нем.
@ app.route ("/
Преобразуйте пин из URL-адреса в целое число.
changePin = int (changePin)
Если часть действия URL-адреса «открыта», выполните следующие действия.
если действие == "открыть": GPIO.output (changePin, GPIO.HIGH), если действие == "закрыть": GPIO.output (changePin, GPIO.LOW)
Вы можете скопировать полный сценарий из конца этого руководства и сохранить его, используя ctrl + x, а затем нажмите Enter. Мы закончили со скриптом Python. Теперь нам нужно создать HTML-страницу для взаимодействия со скриптом Python.
Создание HTML-страницы для веб-сервера Raspberry Pi
В той же папке garage_door создайте другую папку с именем templates и внутри этой папки создайте файл.html, используя приведенные ниже команды.
шаблоны mkdir шаблоны компакт- дисков nano main.html
В текстовом редакторе nano напишите html-код. Вы можете редактировать часть страницы и стилизуйте ее по своему усмотрению. Я только что использовал стороннюю схему css, используя тег ссылки. Полный HTML-код приведен ниже:
Веб-сервер Garage Door
{% для булавки в контактах%}{{pins.name}} {% if pins.state == true%} в настоящее время открыт
Здесь важная часть - создать кнопку для открытия и закрытия двери и назначить состояние для кнопки открытия и закрытия . Кнопка отправит и получит состояние GPIO из скрипта python.
Вы можете использовать приведенный выше HTML-код в редакторе и сохранить его. Теперь веб-сервер готов к запуску.
Откройте терминал, перейдите в папку garage_door и выполните команду ниже
sudo python app.py
Откройте браузер, введите свой IP-адрес Raspberry Pi и нажмите Enter. Чтобы узнать свой IP-адрес, вы можете запустить следующую команду в терминале.
имя хоста -I
Вы увидите такую страницу.
Убедитесь, что модуль реле подключен к Raspberry Pi. Нажмите кнопку « Открыть» , чтобы включить реле или открыть дверь гаража. Вы также можете увидеть состояние реле. Как только вы включите реле, текст кнопки изменится на Close, чтобы выключить реле. Теперь, когда вы снова нажмете кнопку, реле выключится, а текст кнопки снова изменится на « Открыть» .
Чтобы остановить сервер, нажмите ctrl + c.
Так что просто подключите это реле к какому-нибудь механизму открывания двери, который легко доступен на рынке, и начните управлять гаражными воротами с помощью смартфона.
Ниже приводится демонстрационное видео.