
Оглавление:
- Шаг 1: Соберите детали
- Шаг 2: Настройте Raspberry Pi без монитора или клавиатуры
- Шаг 3: Установите Wiring Pi, Apache и PHP
- Шаг 4: Веб-сайт
- Шаг 5. Изображение веб-сайта
- Шаг 6. Удаленное управление веб-сервером
- Шаг 7: Подключите схему к Raspberry Pi
- Шаг 8: Создайте службу запуска
- Шаг 9: прикрепите Raspberry Pi к гаражу
- Шаг 10: прикрепите Raspberry Pi к SECO-LARM
- Шаг 11: отправьте уведомление, если дверь открыта, когда ее следует закрыть
- Шаг 12: Поместите Raspberry Pi в секретную книгу
- Шаг 13: Приложение: ссылки
- Шаг 14: Приложение: обновления
- Шаг 15: Приложение: Устранение неполадок
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-06-01 06:10

Я создал это руководство в 2014 году. С тех пор многое изменилось. В 2021 году я обновил здесь умный открыватель гаражных ворот.
Используйте Raspberry Pi и смартфон, чтобы открывать, закрывать и контролировать дверь гаража. Открытие и закрытие двери обеспечивается с помощью самозаверяющих сертификатов, установленных на мобильных телефонах семьи. Если дверь гаража открыта, а не должна быть, то отправьте текстовое сообщение (SMS) на мобильный телефон.
Гаражные ворота постоянно используются с конца 2014 года. На протяжении многих лет я старался обновлять изменения. Есть приложение с описанием изменений в инструкции.
Цели этого проекта:
- Сделайте мой первый поучительный - я не планировал публиковать это, но я получил много запросов
- Открыть дверь гаража с помощью стандартного пульта ДУ
- Откройте дверь гаража с помощью настенного дверного звонка для открывания гаража
- Откройте дверь гаража с помощью смартфона
- Отслеживайте состояние гаражных ворот удаленно с помощью мобильного телефона или ноутбука (открыты они или закрыты?)
- Отправить текстовое сообщение на мой мобильный телефон, если дверь открыта, когда ее следует закрыть
- Держите дверь гаража в безопасности (например, при отключении электроэнергии дверь не должна открываться)
- Не позволяйте никому в сети открывать дверь (двусторонний самоподписанный сертификат SSL)
- Используйте Wi-Fi вместо проводного подключения
- Используйте Raspberry Pi 3
Основа для этой реализации открывателя гаражных ворот была взята из инструкции: Raspberry Pi Garage Door Opener by quartarian. Первоначально я использовал модель B + Raspberry Pi, затем перешел на модель B Raspberry Pi 2, а теперь она использует Raspberry Pi 3.
Я использовал MacBook для связи с Raspberry Pi, но можно использовать любой компьютер.
Нет веских причин для создания этого устройства, но это было весело. Это более выгодно с точки зрения затрат. Подобное устройство можно приобрести примерно за 130 долларов США.
- Мастер подъемника 828LM
- Чемберлен MyQ $ 129
- Ворота GoGo $ 179
- Ремесленник $ 100
Примечания:
- Текст, заключенный в пики, например ♣ replace-this ♣, следует заменить фактическим значением.
- Подчеркнутый синий текст Arduino - это ссылка. В данном случае это ссылка на версию устройства открывания гаражных ворот для Arduino.
- Я попытался указать на каждый использованный источник. Приношу свои извинения за любые упущения. Большая часть этого документа основана на работах других людей.
- $ указывает на команду, выполняемую в окне терминала на MacBook и обычно выполняемую на Raspberry Pi.
Шаг 1: Соберите детали
Купите или соберите детали и инструменты (цены в долларах США).
- Raspberry Pi 3 Model B Newark Element14 $ 35
- Адаптер питания USB 5,2 В 2,5 А от Amazon $ 9,99
- Кабель Micro USB-USB длиной 6 футов от Amazon $ 7,99
- Чехол от Amazon $ 6,99
- SanDisk Ultra 16 ГБ microSDHC класса 10 с адаптером (SDSQUAN-016G-G4A) от Amazon $ 8,99
- 2-канальный модуль реле SunFounder 5V для Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6,79
- 3x перемычки «мама-женщина». Купил в Fry’s за 4,95 доллара.
- Динамический DNS 40 долларов в год для 30 имен (dyn.com)
- 1-я банда 18 куб. в. Старый рабочий тяжелый настенный выключатель и розеточная коробка, 3,12 доллара США.
- Белая настенная тарелка Ultra Pro с одной щеткой, $ 7,88
- SECO-LARM SM 226L, Датчик двери гаража, цена варьируется в широких пределах, $ 9,99 на Amazon с бесплатной доставкой
- 50 футов сплошного провода термостата, Home Depot или Lowe's, ~ 20 долларов
Моя сумма: ~ 172,00 $
У меня были следующие запчасти, инструменты и услуги:
- Кабель Ethernet CAT5
- Проволока малого калибра, длина 6 футов
- Отвертка с крестообразным шлицем
- Плоскогубцы
- Ножницы для коробок
- Отвертка с плоской головкой для ювелиров, необходимая для откручивания винтов на реле
- MacBook (можно использовать ПК)
- AT&T GigaPower (можно использовать любого интернет-провайдера)
Шаг 2: Настройте Raspberry Pi без монитора или клавиатуры

Все проекты Raspberry Pi требуют определенной настройки. Мне нравится использовать один и тот же набор инструкций, и при необходимости у меня есть одно место для обновления этих инструкций.
Настройте Raspberry Pi, используя следующие инструкции:
Настройка Raspberry Pi без монитора или клавиатуры
Указанные выше инструкции включают дополнительные шаги в приложении. Обязательно проделайте шаг:
Добавить клиентские сертификаты на веб-серверы
Выключение Raspberry Pi
$ sudo выключение -h 0
После выключения удалите
- сетевой кабель
- Последовательный USB-кабель
Они больше не понадобятся. Используйте Wi-Fi, ssh и окно терминала в Mac Book для выполнения команд на Raspberry Pi.
Отключите питание и снова подключите питание, и Raspberry Pi должен перезагрузиться.
Шаг 3: Установите Wiring Pi, Apache и PHP
Установите Wiring Pi
Откройте окно терминала в Mac Book. Войдите в Raspberry Pi, затем загрузите, скомпилируйте и установите Wiring Pi. Это программное обеспечение позволяет управлять контактами GPIO. Вот пошаговое руководство:
wiringpi.com/download-and-install/
Вот сокращенная версия инструкций:
$ ssh pi @ ♣ малина-пи-ip ♣
пароль: ♣ пароль ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build
Запустите команду gpio, чтобы проверить установку:
$ gpio -v
Версия gpio: 2.29 Авторские права (c) 2012-2015 Гордон Хендерсон Это бесплатное программное обеспечение, не имеющее АБСОЛЮТНО БЕЗ ГАРАНТИЙ. Для получения подробной информации введите: gpio -warranty Raspberry Pi Подробности: Тип: Модель 2, Версия: 1.1, Память: 1024 МБ, Производитель: Sony [OV] Дерево устройств включено. Этот Raspberry Pi поддерживает доступ GPIO на уровне пользователя. -> См. Справочную страницу для более подробной информации $ gpio readall + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + ------ + --------- + ----- + ----- + | BCM | wPi | Имя | Режим | V | Физический | V | Режим | Имя | wPi | BCM | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | | | 3,3 В | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | ВНЕ | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 | | | | 3,3 В | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | В | 0 | 21 || 22 | 0 | В | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | В | 0 | 23 || 24 | 1 | В | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | В | 1 | 27 || 28 | 1 | В | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | В | 1 | 31 || 32 | 0 | В | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | В | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | В | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | В | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | BCM | wPi | Имя | Режим | V | Физический | V | Режим | Имя | wPi | BCM | + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + --- --- + --------- + ----- + ----- +
Приведенные выше команды должны дать вам уверенность в том, что wiringPi работает нормально.
Установите Apache и PHP
Выполните следующие команды:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Чтобы убедиться, что веб-сервер работает, откройте браузер и в поле URL введите:
♣ малина-пи-ип ♣
Веб-сайт Apache по умолчанию отвечает "Работает!"
Шаг 4: Веб-сайт
Откройте окно терминала в Mac Book. Войдите в Raspberry Pi, затем удалите файл index.html по умолчанию, измените разрешения для каталога веб-сайта и отредактируйте файл с именем index.php.
$ ssh pi @ ♣ малина-пи-ip ♣
пароль: ♣ пароль ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root / var / www $ sudo nano /var/www/index.php
И введите следующий код:
Открывалка для гаража
Домашняя автоматизация |
---|
Открывалка для гаражных ворот | Руководство для открывания гаражных ворот | закрыто 1 | открытый 0 |
CTRL-o и ENTER для записи файла и CTRL-x для выхода из редактора.
Изменить права доступа к файлу
$ sudo chmod 664 /var/www/index.php
Шаг 5. Изображение веб-сайта


Возьмите дистанционное устройство открывания гаражных ворот с высоким разрешением из Интернета. Измените изображение, как вы хотите, используя кисть Mac. На изображении выше использовался Genie Garage Opener с высоким разрешением, был добавлен логотип Raspberry Pi и удален светодиод.
Одно изображение является фоном (remote-background.jpg), а другое - активным изображением (remote-press.jpg).
Планировалось, что при нажатии кнопки вместо мигания светодиода будет мигать малина. Я упростил сайт.
Скопируйте изображения на raspberry pi:
$ scp *-j.webp
пароль: ♣ пароль ♣
На веб-сайте есть одна кнопка. Для проверки откройте браузер и введите raspberry-pi-ip ♣. Вместо веб-сайта Apache по умолчанию, на котором написано «Это работает!», Должна появиться кнопка. Нажми.
Шаг 6. Удаленное управление веб-сервером
Чтобы упростить доступ к механизму открывания гаражных ворот из удаленного места, я использую динамическое DNS-имя. Потому что я не люблю запоминать IP-адреса.
С помощью этой функции я ввожу ♣ dynamic-hostname ♣.getmyip.com в поле URL-адреса браузера. Примечание. IP-адрес домашних маршрутизаторов может быть изменен без предварительного уведомления, но это случается редко. Я решил использовать DynDNS. Вам нужно будет знать общедоступный IP-адрес вашего маршрутизатора.
IP-адрес маршрутизатора U-Verse: uverse-public-ip ♣
Вы можете просмотреть свои имена хостов и данные учетной записи DynDNS Pro. Вот несколько советов для начала:
-
Создайте свое имя хоста динамического DNS (1 из 30):
- ♣ динамическое имя хоста ♣
- Ключ средства обновления: ♣ dynamic-ip-updater-key ♣
-
Установите клиент обновления, чтобы ваше имя хоста всегда указывало на правильный IP-адрес.
- Скачайте и установите на MacBook
- IP-адреса AT&T U-verse меняются редко, поэтому указанное выше средство обновления можно запускать всякий раз, когда оно действительно меняется.
-
Следуйте инструкциям:
- Добавить аккаунт
- Введите имя пользователя и пароль: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
- Выберите имя хоста
- Нажмите Настроить выбранные хосты.
- Хост должен стать активным
-
Настройте свою сеть, чтобы разрешить доступ к вашему устройству из Интернета. Вы можете использовать наш Dyn Wizard для получения некоторых общих инструкций о том, как это сделать, использовать такие ресурсы, как PortForward.com, или обратиться за помощью к производителю устройства.
- AT&T U-verse
- Переадресация портов для 2-Wire 3801HGV - это маршрутизатор AT&T U-Verse, который у меня есть. См. Обновления в Приложении, чтобы узнать, как перенаправить порт на маршрутизаторе AT&T U-verse 5268ac.
- Откройте браузер и перейдите в ♣ raspberry-pi-ip ♣
- Пароль: ♣ пароль ♣
- Настройки
-
Межсетевой экран
- Выберите ♣ raspberry-pi-hostname ♣
-
Серверы
- Порт веб-сервера 80
- Сервер HTTPS - порт 443
- Добавлять
- Сохранить
Как только это будет сделано, веб-сервер будет работать из Интернета. Для проверки введите ♣ dynamic-hostname ♣, и вы должны увидеть кнопку открывания двери гаража.
Шаг 7: Подключите схему к Raspberry Pi

Для предоставленного кода (шаги 4 и 6) я использовал вывод 7 GPIO. По совпадению, GPIO 7 совпадает с выводом 7 wiringPi. В коде PHP используются номера выводов Pi, а НЕ номера выводов GPIO. Вы можете использовать то, что хотите, но не забудьте изменить код.
Я пробовал использовать скрученный провод, но реле плохо держится на скрученном проводе. Сплошная проволока лучше.
С первой попытки я создал три соединительных кабеля (мама-папа).
- Используйте три соединительных кабеля типа мама-мама
-
Отрежьте три куска прочной проволоки примерно на 1 дюйм.
Зачистите 1/4 дюйма с обоих концов сплошной проволоки
- Вставьте один сплошной провод в один соединительный кабель с внутренней резьбой.
Вот лучший способ создания соединительных кабелей (мама-папа):
- Используйте только одножильный провод
- Отрежьте три 4-дюймовых куска твердой проволоки.
- Зачистите 1/4 дюйма с обоих концов сплошного провода.
-
Используйте соединительные штифты с внутренней резьбой
-
Наденьте один соединительный штифт с внутренней резьбой на один конец сплошного провода и обожмите
Гнездовой штифт не должен расшатываться, при необходимости припаяйте
- Наденьте приспособление для снятия натяжения на соединительный штифт с внутренней резьбой или заглушку с помощью электротехнической ленты.
-
Подключите реле к пи, как показано на схеме:
- Подключите женский конец кабеля к контакту Raspberry Pi.
- Вставьте сплошной провод в реле.
Шаг 8: Создайте службу запуска
Большинство реле, в том числе и купленное, работают следующим образом:
- Когда сигнал включен, цепь остается выключенной.
- Когда сигнал выключен, значит, цепь включена.
Если Raspberry Pi теряет питание, реле имеет предохранительный механизм, который отключает цепь.
Проблема может возникнуть, когда питание Rapberry Pi и реле восстанавливается, но до того, как Raspberry Pi завершит загрузку, чтобы включить сигнал, который необходим для отключения цепи. Вы можете проснуться утром с открытым гаражом и, возможно, с несколькими новыми друзьями!
Однако на самом деле реле не инициализируется до тех пор, пока режим вывода GPIO не будет установлен с помощью этой команды: gpio mode 7 out. Кроме того, если вывод GPIO находится в положении ON (gpio write 7 1) до того, как вы установите режим GPIO, реле останется выключенным после инициализации.
Чтобы эта инициализация запускалась при загрузке и не просыпалась от новых друзей, используйте следующий сценарий запуска.
$ ssh pi @ ♣ малина-пи-ip ♣
$ sudo nano /etc/init.d/garagerelay
Затем вставьте этот скрипт:
#! / bin / bash
# /etc/init.d/garagerelay # Выполнять определенные функции по запросу системы case "$ 1" в start) echo "Starting Relay" # Включите 7, чтобы реле оставалось выключенным / usr / local / bin / gpio write 7 1 # Запустить режим Gpio / usr / local / bin / gpio 7 out;; stop) echo "Остановка gpio";; *) echo "Использование: /etc/init.d/garagerelay {start | stop}" exit 1;; esac выход 0
Для сохранения: CTRL-o, ENTER
Чтобы выйти из nano, CTRL-x
Сделайте файл исполняемым:
$ sudo chmod + x /etc/init.d/garagerelay
Теперь скажите вашему пи запускать этот скрипт при загрузке:
$ sudo update-rc.d -f garagerelay start 4
(Примечание: предупреждение «Отсутствуют теги LSB» можно игнорировать.)
Убедитесь, что сценарий запуска запущен
$ sudo перезагрузка
Откройте браузер и нажмите кнопку открытия. Реле должно щелкнуть.
Шаг 9: прикрепите Raspberry Pi к гаражу

При перемещении Raspberry Pi обязательно запустите:
$ выключение -h 0
Вы можете отключить электричество в гараже. Так что дверной звонок не убьет вас электрическим током:). Настоящая причина в том, что каждый раз, когда вы закорачиваете провода, дверь будет подниматься и опускаться.
Отвинтите стенные винты от открывателя дверного звонка, с помощью которого дверной звонок крепится к стене.
Проделайте дыру из гаража за открывателем дверного звонка внутрь дома. В Техасе Raspberry Pi не должен находиться в гараже, колебания температуры в гараже выходят за рамки рабочих характеристик Raspberry Pi.
Пропустите провода реле через отверстие (используйте вешалку).
Ослабьте оба винта на задней стороне устройства открывания дверного звонка.
Зачистите оба конца проводов реле: 1) примерно 1/8 дюйма со стороны реле и примерно ½ дюйма со стороны дверного звонка. Согните проволоку со стороны дверного звонка в виде полупетли, достаточно большой, чтобы ее можно было охватить задним винтом.
Подсоедините один провод реле к каждому винту на задней стороне дверного звонка и затяните винт. Подключения показаны на изображении. Поскольку реле изолирует цепь, направление даже не имеет значения, какое реле к какому винту прикреплено.
Шаг 10: прикрепите Raspberry Pi к SECO-LARM


Прежде чем я закончил код, мы с семьей были в отпуске, и я открыл свой браузер. Последний раз мой браузер видел устройство открывания гаражных ворот - страница обновилась и гаражные ворота открылись. Через несколько дней позвонил сосед и спросил, нужно ли открывать дверь гаража? К счастью, я смог закрыть его за 500 миль.
Этот беспорядок заставил меня изменить код, чтобы этого не произошло, и добавить на сайт датчик и состояние гаражных ворот.
Это ссылка на оригинальную инструкцию по добавлению датчика. Однако, учитывая все, что уже выполнено, установку датчика можно значительно упростить и вместо использования python добавить пару строк кода в index.php.
Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:518 Stack trace: #0 W:\www\langs\.php-gen-lang\v3-core\macros.php(127): eval() #1 W:\www\langs\.php-gen-lang\v3-core\index-global.php(231): Macros->macros_parse('<!DOCTYPE html>...') #2 W:\www\langs\howwhatproduce.com\ru.howwhatproduce.com\index.php(9): require_once('W:\\www\\langs\\.p...') #3 {main} thrown in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code on line 518