- Потрібні компоненти
- Кругова діаграма
- Налаштування колби в Raspberry Pi для управління гаражними дверима
- Створення сценарію Python для розумного відкривання дверей гаражних дверей
- Створення HTML-сторінки для веб-сервера Raspberry Pi
- {{pins.name}} {% if pins.state == true%} наразі відкрито
У цей вік IoT (Інтернет речей), де всім можна дистанційно керувати за допомогою смартфона, навіщо носити ключі з собою. Існує безліч технологій, що підтримують бездротове управління такими пристроями, як RFID, Bluetooth, Wi-Fi, LoRa. Раніше ми побудували кілька сигналізацій дверей та схему управління дверима, щоб відкрити та закрити двері бездротовим способом:
- Дверний замок Arduino RFID
- Автоматичне відкривання дверей за допомогою Arduino
- Схема сигналізації магнітних дверей за допомогою датчика Холла
- Сигналізація безпеки дверей на основі IoT, керована 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 без голови тут.
Кругова діаграма
Підключіть механізм відкривання гаражних дверей до виходу реле. Тут ми щойно підключили світлодіод із реле для демонстрації.
Налаштування колби в 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 в Smart Container.
Тепер ми напишемо сценарій python для нашого веб-сервера гаражних воріт.
Створення сценарію Python для розумного відкривання дверей гаражних дверей
Цей скрипт взаємодіє з нашими Raspberry Pi GPIO та налаштовує веб-сервер. Отже, це основний сценарій для нашої програми. Повний сценарій Python для відкривача дверей наведено в кінці, тут ми пояснили кілька його частин.
Спочатку зробіть папку. Усі інші необхідні папки мають бути лише в цій папці. Запустіть команди нижче, щоб створити папку та створити файл python з назвою app.py всередині цієї папки.
mkdir garage_door cd garage_door nano app.py
Це відкриє редактор Nano, де ми повинні написати сценарій.
Почніть із включення важливих бібліотек.
імпортувати RPi.GPIO як GPIO з колби імпортувати колбу, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Тепер створіть словник як шпильки, щоб зберігати номер піну, ім’я та стан штифта. Ви можете використовувати більше одного штифта відповідно до ваших потреб.
шпильки = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Потім встановіть штифт як вихідний і спочатку зробіть його низьким.
Для штифта в штифтах: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Тепер зробіть основну функцію для зчитування стану контактів та збереження цього стану у змінній.
@ app.route ("/") def main (): для штифта в штифтах : шпильки = GPIO.input (штифт) ..
Ми повинні передати ці дані на нашу сторінку html, щоб ми могли контролювати стан кнопки введення.
повернути render_template ('main.html', ** templateData)
Тепер створіть функцію для обробки запитів з URL-адреси із зазначенням номера піну та дії в ньому.
@ app.route ("/
Перетворіть шпильку з URL-адреси у ціле число.
changePin = int (changePin)
Якщо частина дії URL-адреси "відкрита", виконайте наступне.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
Ви можете скопіювати повний сценарій з кінця цього підручника та зберегти його за допомогою ctrl + x, а потім натиснути клавішу enter. Ми зробили зі сценарієм python. Тепер нам потрібно створити HTML-сторінку для взаємодії зі сценарієм python.
Створення HTML-сторінки для веб-сервера Raspberry Pi
У тій же папці garage_door створіть іншу папку з назвою шаблони, і всередині цієї папки створіть файл.html, використовуючи команди нижче.
шаблони компакт-дисків нано main.html
У текстовому редакторі нано напишіть 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
Ви побачите таку сторінку.
Переконайтесь, що модуль реле підключений до малинового пі. Натисніть кнопку Відкрити, щоб увімкнути реле або відкрити гаражні двері. Ви також можете побачити стан реле. Як тільки ви ввімкнете реле, текст кнопки буде змінено Закрити, щоб вимкнути реле. Тепер при повторному натисканні кнопки реле буде вимкнено, а текст кнопки знову змінено на Відкрити .
Щоб зупинити сервер, натисніть ctrl + c.
Тож просто підключіть це реле до якогось механізму відкривання дверей, який легко доступний на ринку, і починайте керувати гаражними воротами за допомогою смартфона.
Демонстрація відео наводиться нижче.