
Índice:
- Etapa 1: Reúna as peças
- Etapa 2: configurar o Raspberry Pi sem monitor ou teclado
- Etapa 3: Instale Wiring Pi, Apache e PHP
- Etapa 4: site
- Etapa 5: imagem do site
- Etapa 6: controlar remotamente o servidor da Web
- Etapa 7: conecte o circuito ao Raspberry Pi
- Etapa 8: Crie um serviço de inicialização
- Etapa 9: prenda o Raspberry Pi na garagem
- Etapa 10: anexe o Raspberry Pi ao SECO-LARM
- Etapa 11: enviar alerta se a porta estiver aberta, quando deveria ser fechada
- Etapa 12: coloque Raspberry Pi no livro secreto
- Etapa 13: Apêndice: Referências
- Etapa 14: Apêndice: atualizações
- Etapa 15: Apêndice: Solução de problemas
2025 Autor: John Day | [email protected]. Última modificação: 2025-06-01 06:10

Criei este instrutível em 2014. Muita coisa mudou desde então. Em 2021, atualizei o abridor de porta de garagem inteligente aqui.
Use um Raspberry Pi e um smartphone para abrir, fechar e monitorar a porta de uma garagem. A abertura e o fechamento da porta são protegidos por meio de certificados autoassinados instalados nos telefones celulares da família. Se a porta da garagem estiver aberta quando não deveria, envie uma mensagem de texto (SMS) para um telefone celular.
O portão da garagem está em uso contínuo desde o final de 2014. Ao longo dos anos, tentei manter as alterações atualizadas. Há um apêndice que descreve as mudanças no instrutível.
Os objetivos deste projeto são:
- Faça meu primeiro instrutível - eu não planejava postar isso, mas recebi muitos pedidos
- Abra a porta de uma garagem com um controle remoto padrão
- Abra a porta de uma garagem com o abridor de campainha montado na parede
- Abra a porta de uma garagem com um smartphone
- Monitore o status da porta da garagem remotamente por meio de um telefone celular ou laptop (está aberta ou fechada?)
- Enviar uma mensagem de texto para o meu celular se a porta estiver aberta quando deveria ser fechada
- Mantenha a porta da garagem segura (por exemplo, na perda de energia, a porta não deve abrir)
- Não permita que mais ninguém na rede abra a porta (certificado SSL autoassinado bidirecional)
- Use Wi-Fi em vez de uma conexão com fio
- Use um Raspberry Pi 3
A base para esta implementação do abridor de porta de garagem foi derivada do Instructable: Raspberry Pi Garage Door Opener da quartarian. Originalmente, usei um modelo B + Raspberry Pi, depois mudei para um Raspberry Pi 2 modelo B, e agora ele usa um Raspberry Pi 3.
Usei um MacBook para me comunicar com o Raspberry Pi, mas qualquer computador pode ser usado.
Não há nenhuma razão convincente para construir este dispositivo, mas foi divertido. É mais econômico comprar um. Um dispositivo semelhante pode ser adquirido por cerca de US $ 130.
- Lift master 828LM
- Chamberlain MyQ $ 129
- GoGo Gate $ 179
- Artesão $ 100
Notas:
- Texto entre espadas, como este ♣ substitua-este ♣ deve ser substituído por um valor real
- O texto azul sublinhado do Arduino é um link. Nesse caso, é um link para uma versão arduino de um abridor de porta de garagem.
- Eu tentei creditar todas as fontes usadas. Minhas desculpas por quaisquer omissões. A maior parte deste documento é baseada no trabalho de outras pessoas.
- $ indica um comando executado em uma janela de terminal no MacBook e geralmente está sendo executado no Raspberry Pi
Etapa 1: Reúna as peças
Compre ou reúna peças e ferramentas (preços em USD).
- Raspberry Pi 3 Modelo B Newark Element 14 $ 35
- Adaptador de alimentação USB 5,2 V 2,5 A da Amazon $ 9,99
- Cabo micro USB para USB 6 pés da Amazon $ 7,99
- Estojo da Amazon $ 6,99
- SanDisk Ultra 16 GB microSDHC Classe 10 com adaptador (SDSQUAN-016G-G4A) da Amazon $ 8,99
- Módulo de blindagem de relé 5V SunFounder 2 canais para Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6,79
- 3 fios de jumper fêmea-fêmea. Comprado na Fry’s por $ 4,95.
- DNS dinâmico $ 40 por ano para 30 nomes (dyn.com)
- 1-Gang 18 cu. pol., trabalho antigo, interruptor de parede pesada e caixa de tomadas, $ 3,12
- Placa de parede branca com pincel único Ultra Pro, $ 7,88
- SECO-LARM SM 226L, sensor de porta de garagem, o preço varia muito, US $ 9,99 na Amazon com frete grátis
- 50 pés de fio de termostato sólido, Home Depot ou Lowe's, ~ $ 20
Meu total: ~ $ 172,00
Eu tinha as seguintes peças, ferramentas e serviços:
- Cabo Ethernet CAT5
- Fio de bitola pequena, 6 pés de comprimento
- Chave de fenda Phillips
- Alicate de ponta fina
- Corta-caixas
- Chave de fenda de cabeça chata de joalheiros, necessária para afrouxar os parafusos no relé
- MacBook (um PC pode ser usado)
- AT&T GigaPower (qualquer provedor de serviços de Internet pode ser usado)
Etapa 2: configurar o Raspberry Pi sem monitor ou teclado

Todos os projetos do Raspberry Pi requerem algum tipo de configuração. Gosto de usar o mesmo conjunto de instruções e, quando necessário, tenho um local para atualizar essas instruções.
Configure o Raspberry Pi usando as seguintes instruções:
Configuração do Raspberry Pi sem monitor ou teclado
O instrutivo acima inclui etapas opcionais no apêndice. Certifique-se de executar a etapa:
Adicionar certificados do lado do cliente aos servidores da web
Desligar Raspberry Pi
$ sudo shutdown -h 0
Uma vez desligado, remova
- Cabo Ethernet
- Cabo serial USB
Eles não serão mais necessários. Use wi-fi, ssh e uma janela de terminal no Mac Book para executar comandos no Raspberry Pi.
Desconecte a alimentação e reconecte a alimentação, e o raspberry pi deve reiniciar.
Etapa 3: Instale Wiring Pi, Apache e PHP
Instalar Fiação Pi
Abra uma janela de terminal no Mac Book. Faça login no Raspberry Pi, faça o download, compile e instale o Wiring Pi. Este software permite o controle dos pinos GPIO. Aqui está um guia passo a passo:
wiringpi.com/download-and-install/
Aqui está uma versão condensada das instruções:
$ ssh pi @ ♣ raspberry-pi-ip ♣
senha: ♣ senha ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build
Execute o comando gpio para verificar a instalação:
$ gpio -v
gpio versão: 2.29 Copyright (c) 2012-2015 Gordon Henderson Este é um software livre ABSOLUTAMENTE NENHUMA GARANTIA. Para obter detalhes, digite: gpio -warranty Raspberry Pi Detalhes: Tipo: Modelo 2, Revisão: 1.1, Memória: 1024 MB, Fabricante: Sony [OV] A árvore de dispositivos está ativada. Este Raspberry Pi oferece suporte a acesso GPIO em nível de usuário. -> Veja a página do manual para mais detalhes $ gpio readall + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + ------ + --------- + ----- + ----- + | BCM | wPi | Nome Modo | V | Físico | V | Modo | Nome wPi | BCM | + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | | | 3,3v | | | 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 OUT | 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,3v | | | 17 || 18 0 | IN | GPIO. 5 | 5 | 24 | 10 12 MOSI | IN | 0 | 19 || 20 | | 0v | | | | 9 13 MISO | IN | 0 | 21 || 22 0 | IN | GPIO. 6 6 25 | 11 14 SCLK | IN | 0 | 23 || 24 1 IN | CE0 | 10 8 | | | 0v | | | 25 || 26 1 IN | CE1 | 11 7 | 0 | 30 SDA.0 | IN | 1 27 || 28 1 IN | SCL.0 | 31 | 1 | 5 | 21 GPIO.21 | IN | 1 29 || 30 | | 0v | | | | 6 22 GPIO.22 | IN | 1 31 || 32 0 | IN | GPIO.26 | 26 12 | 13 23 GPIO.23 | IN | 0 | 33 || 34 | | 0v | | | | 19 24 GPIO.24 | IN | 0 | 35 || 36 0 | IN | GPIO.27 | 27 16 | | 26 25 GPIO.25 | IN | 0 | 37 || 38 0 | IN | GPIO.28 | 28 20 | | | 0v | | | 39 || 40 0 | IN | GPIO.29 | 29 | 21 + ----- + ----- + --------- + ------ + --- + ---- ++ ---- + --- + - ----- + --------- + ----- + ----- + | BCM | wPi | Nome Modo | V | Físico | V | Modo | Nome wPi | BCM | + ----- + ----- + --------- + ------ + --- + --- Pi 2 --- + --- + --- --- + --------- + ----- + ----- +
Os comandos acima devem dar a você alguma confiança de que wiringPi está funcionando bem.
Instale Apache e PHP
Execute os seguintes comandos:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Para verificar se o servidor da web funciona, abra um navegador e, na caixa do URL, digite:
♣ framboesa-pi-ip ♣
O site padrão do Apache responde com "Funciona!"
Etapa 4: site
Abra uma janela de terminal no Mac Book. Faça login no Raspberry Pi, remova o arquivo index.html padrão, altere as permissões no diretório do site e edite um arquivo chamado index.php.
$ ssh pi @ ♣ raspberry-pi-ip ♣
senha: ♣ senha ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root / var / www $ sudo nano /var/www/index.php
E insira o seguinte código:
Abridor de garagem
Automação residencial |
---|
Abridor de porta de garagem | Manual do abridor de porta de garagem | fechado 1 | aberto 0 |
CTRL-o e ENTER para gravar o arquivo e CTRL-x para sair do editor.
Alterar permissões no arquivo
$ sudo chmod 664 /var/www/index.php
Etapa 5: imagem do site


Pegue um abridor de porta de garagem remoto de alta resolução na web. Modifique a imagem como desejar, usando o pincel Mac. Na imagem acima, um abridor de garagem Genie de alta resolução foi usado, um logotipo raspberry pi foi adicionado e o led foi removido.
Uma imagem é o plano de fundo (remote-background.jpg) e a outra é a imagem ativa (remote-press.jpg).
O plano era que ao apertar o botão, em vez de piscar o led, o framboesa piscaria. Simplifiquei o site.
Copie as imagens para o raspberry pi:
$ scp *-j.webp
senha: ♣ senha ♣
O site tem um único botão. Para verificar, abra um navegador e digite ♣ raspberry-pi-ip ♣. Em vez do site padrão do Apache, que diz "Funciona!", O botão deve aparecer. Pressione-o.
Etapa 6: controlar remotamente o servidor da Web
Para facilitar o acesso ao Mecanismo de abertura de garagem de um local remoto, uso um nome DNS dinâmico. Porque não gosto de lembrar endereços IP.
Com este recurso, eu insiro ♣ dynamic-hostname ♣.getmyip.com no campo URL de um navegador. Nota: O IP em roteadores domésticos pode mudar sem aviso prévio, mas isso raramente acontece. Optei por usar o DynDNS. Você precisará saber o endereço IP público do seu roteador.
IP do roteador U-Verse: ♣ uverse-public-ip ♣
Você pode ver seus nomes de host e detalhes da conta DynDNS Pro. Aqui estão algumas dicas para começar:
-
Crie seu nome de host DNS dinâmico (1 de 30):
- ♣ dynamic-hostname ♣
- Chave do atualizador: ♣ dynamic-ip-updater-key ♣
-
Instale um cliente de atualização para garantir que seu nome de host seja sempre apontado para o endereço IP correto.
- Baixe e instale no MacBook
- Os IPs da AT&T U-verse raramente mudam, então o atualizador acima pode ser executado sempre que mudar
-
Siga as direções:
- Adicionar Conta
- Digite o nome de usuário e a senha: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
- Selecione o nome do host
- Clique em Configurar Hosts Selecionados
- O host deve se tornar ativo
-
Configure sua rede para permitir acesso ao seu dispositivo a partir da Internet. Você pode usar nosso Dyn Wizard para obter algumas instruções gerais sobre como fazer isso, usar recursos como PortForward.com ou entrar em contato com o fabricante do dispositivo para obter assistência.
- AT&T U-verse
- Encaminhamento de porta para 2 fios 3801HGV - este é o roteador AT&T U-Verse que possuo. Consulte as atualizações em um apêndice para saber como encaminhar a porta no roteador AT&T U-verse 5268ac.
- Abra o navegador e vá para ♣ raspberry-pi-ip ♣
- Senha: ♣ senha ♣
- Definições
-
Firewall
- Escolha ♣ raspberry-pi-hostname ♣
-
Servidores
- Porta 80 do servidor web
- Servidor HTTPS - porta 443
- Adicionar
- Salve
Feito isso, o servidor web funcionará a partir da Internet. Para verificar, digite ♣ dynamic-hostname ♣ e você deverá ver o botão para abrir a porta da garagem.
Etapa 7: conecte o circuito ao Raspberry Pi

Para o código fornecido (etapas 4 e 6), usei GPIO pino 7. É coincidência que GPIO 7 é o mesmo que wiringPi pino 7. No código PHP, números de pino Pi de fiação são usados e NÃO números de pino GPIO. Você pode usar o que quiser, mas certifique-se de alterar o código.
Tentei usar fio trançado, mas o relé não segura bem com fio trançado. Fio sólido é melhor.
Na minha primeira tentativa, criei três cabos de conexão (feminino para masculino).
- Use três cabos jumper fêmea para fêmea
-
Corte três pedaços de arame sólido para cerca de 1 pol.
Tira 1/4 pol. Em ambas as extremidades do fio sólido
- Insira um fio sólido em um cabo de jumper fêmea.
Esta é a melhor maneira de criar cabos de conexão (fêmea para macho):
- Use apenas fio sólido
- Corte três pedaços de 4 polegadas de arame sólido
- Tira 1 / 10cm em ambas as extremidades do fio sólido
-
Use pinos de conexão fêmeas
- Deslize um pino de conexão fêmea em uma extremidade do fio sólido e prenda
O pino fêmea não deve se soltar, soldar se necessário
- Deslize o alívio de tensão sobre o pino de conexão fêmea ou o pino de cobertura com fita isolante
- Deslize um pino de conexão fêmea em uma extremidade do fio sólido e prenda
Conecte o relé ao pi conforme mostrado no diagrama:
- Conecte a extremidade fêmea do cabo ao pino Raspberry Pi.
- Insira o fio sólido no relé.
Etapa 8: Crie um serviço de inicialização
A maioria dos relés, incluindo o adquirido, opera assim:
- Quando o sinal está LIGADO, o circuito permanece desligado.
- Quando o sinal está desligado, o circuito está ligado.
Se o Raspberry Pi perder energia, o relé possui um mecanismo de segurança que mantém o circuito DESLIGADO.
Pode ocorrer um problema quando o Rapberry Pi e o relé são restaurados, mas antes que o Raspberry Pi termine de inicializar para ligar o sinal, o que é necessário para manter o circuito desligado. Você pode acordar de manhã com sua garagem aberta e, potencialmente, alguns novos amigos!
No entanto, o relé não inicializa até que o modo GPIO pin seja definido por meio deste comando: gpio mode 7 out. Além disso, se o pino GPIO estiver ligado (gpio escrever 7 1) antes de definir o modo GPIO, o relé permanecerá desligado depois de inicializado.
Para fazer essa inicialização ser executada na inicialização e não despertar para novos amigos, use o seguinte script de inicialização.
$ ssh pi @ ♣ raspberry-pi-ip ♣
$ sudo nano /etc/init.d/garagerelay
Em seguida, cole este script:
#! / bin / bash
# /etc/init.d/garagerelay # Executa funções específicas quando solicitado pelo caso do sistema "$ 1" no início) echo "Iniciando relé" # Liga 7 que mantém relé desligado / usr / local / bin / gpio write 7 1 #Iniciar Gpio / usr / local / bin / modo gpio 7 out;; parar) echo "Parando gpio";; *) echo "Uso: /etc/init.d/garagerelay {start | stop}" exit 1;; saída 0 esac
Para salvar: CTRL-o, ENTER
Para sair do nano, CTRL-x
Torne o arquivo executável:
$ sudo chmod + x /etc/init.d/garagerelay
Agora diga ao seu pi para executar este script na inicialização:
$ sudo update-rc.d -f garagerelay start 4
(Observação: você pode ignorar com segurança o aviso de "tags LSB ausentes".)
Certifique-se de que o script de inicialização esteja em execução
$ sudo reboot
Abra um navegador e clique no abridor. O relé deve clicar.
Etapa 9: prenda o Raspberry Pi na garagem

Ao mover o Raspberry Pi, certifique-se de executar:
$ shutdown -h 0
Você pode querer desligar a energia da garagem. Então, o abridor de campainha não eletrocuta você:). O verdadeiro motivo é que cada vez que você coloca os fios em curto, a porta sobe e desce.
Solte os parafusos de parede do abridor de tipo de campainha, que fixa a campainha à parede.
Faça um buraco na garagem atrás do abridor da campainha para dentro da casa. No Texas, o Raspberry Pi não deve estar na garagem, a variação de temperatura na garagem está fora das especificações operacionais do Raspberry Pi.
Passe os fios do relé pelo orifício (use um cabide).
Afrouxe os dois parafusos na parte traseira do abridor da campainha.
Desencape as duas extremidades dos fios do relé: 1) cerca de 1/8 "polegada do lado do relé e cerca de ½" polegada do lado da campainha. Dobre o lado da campainha do fio em uma meia volta grande o suficiente para caber em torno do parafuso traseiro.
Conecte um fio de relé a cada parafuso na parte traseira da campainha e aperte o parafuso. As conexões são as mostradas na imagem. Uma vez que o relé isola o circuito, a direção nem importa qual relé está conectado a qual parafuso.
Etapa 10: anexe o Raspberry Pi ao SECO-LARM


Antes de terminar o código, minha família e eu estávamos de férias e abri meu navegador. A última visualização do meu navegador foi o abridor da porta da garagem - a página atualizada e a porta da garagem aberta. Poucos dias depois, um vizinho ligou e perguntou se a porta da garagem deveria ser aberta. Felizmente, eu poderia fechá-lo a 500 milhas de distância.
Essa confusão me forçou a alterar o código para que isso não acontecesse e adicionar um sensor e o estado da porta da garagem ao site.
Este é um link para o original instrutível para adicionar um sensor. No entanto, dado tudo o que já foi concluído, a instalação do sensor pode ser bastante simplificada e, em vez de usar python, adicione algumas linhas de código a 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:516 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\pt.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 516