Raspberry Pi Garage Door Opener com GaragePi

Introdução

Quando eu era pequeno, costumava apertar o botão da porta da garagem de dentro da garagem e depois correr para fora da garagem enquanto ela está fechando … pulando com cuidado o sensor para não acionar o mecanismo de segurança. Era fácil naquela época e um pouco divertido. Mas hoje em dia, nem tanto. Há momentos em que gostaria de ter uma maneira de fechar (e abrir) a porta da garagem remotamente e de preferência com algo que sempre tenho comigo … meu celular!

Portanto, no Natal passado, procurei construir algo para poder usar meu smartphone como abridor de porta de garagem. Eu li sobre as plataformas Arduino e Raspberry Pi antes que eu acreditava que cumpririam a tarefa e, por fim, decidi pelo Raspberry Pi. A plataforma Arduino, após alguma pesquisa e análise de custos, teria custado mais do que o Raspberry Pi! Isso não era algo que eu esperava, já que o Raspberry Pi é mais robusto e um computador mini-Linux completo. As possibilidades são realmente infinitas.

Um Raspberry Pi wi-fi conectado a um relé de 2 canais conectado ao meu controle remoto da porta da garagem real me permite abrir e fechar a porta da garagem com apenas um navegador no meu smartphone.

Depois de escrever software por muitos anos em desenvolvimento web, criar algo que interaja com o mundo real foi um tipo especial de empolgação para mim quando o vi funcionar pela primeira vez.

Abaixo, descreverei as etapas e os problemas que encontrei ao trabalhar neste projeto.

Etapa 1 – Peças

Abaixo está uma lista das partes que reuni para começar. Os preços provavelmente não serão os mesmos.

Custo total: $ 63, uma vez que já tinha algumas das peças necessárias.

Etapa 2 – Configurar o cartão SD

Segui este guia para configurar o cartão SD com NOOBS e inicializar o Pi para a configuração inicial.

Raspberry Pi Guia de início rápido

Etapa 3 – Configurar o Pi e instalar o Raspbian

Configurar o Pi é muito fácil. Basta conectar o cabo HDMI, teclado USB e mouse, conectar o cartão SD preparado na etapa 2 e, finalmente, ligar o Pi conectando a fonte de alimentação micro-USB. Isso deve inicializar o NOOBS e guiá-lo pelo processo de instalação de um sistema operacional. O que você quer para este projeto é Raspbian. Conclua a configuração do Raspbian e você deverá ter um Pi funcionando no final.

Foi nesta etapa que encontrei meu primeiro problema. Usei o teclado e o mouse que tinha no meu PC principal, um teclado Logitech G110 e um mouse Logitech G9. Depois que o NOOBS foi inicializado, descobri que não conseguia digitar ou controlar o mouse. O problema acabou sendo que as portas USB do Pi não fornecem energia suficiente para o teclado e o mouse. Você pode contornar esse problema usando um hub USB com alimentação.

Etapa 4 – Configurando Wifi

Você pode pular esta etapa se for deixar o Pi conectado com um cabo ethernet. Na verdade, eu recomendo pular esta etapa até o final para simplificar as coisas.

Eu não queria que o Pi fosse conectado por um cabo Ethernet, então comecei a tentar configurá-lo com o dongle wi-fi USB. Essa foi provavelmente a parte mais difícil do projeto. Eu segui vários guias que encontrei, mas nenhum deles funcionou para mim. Não é que o dongle não fosse compatível com o Raspbian, mas não consegui conectá-lo ao meu roteador sem fio. Depois de muita dor de cabeça e remendos, finalmente resolvi o problema. Você pode ler sobre os detalhes no meu guia de configuração de wi-fi .

[atualização – 2/8/15] A nova versão do Raspbian inclui uma nova versão de um gerenciador de wi-fi que funcionou perfeitamente para mim e a etapa acima não foi necessária. Basta executar a GUI do Raspbian com startx, encontrar o ícone do gerenciador de wi-fi no canto superior direito e configurá-lo para seu AP wi-fi. Muito simples com uma GUI.

Depois de usar essa configuração por algumas semanas, descobri que o Pi estava inacessível após um período de inatividade. Isso acabou sendo um recurso de economia de energia em que o componente wi-fi é desligado.

Fiz o seguinte para desativar esse recurso:

sudo vim /etc/modprobe.d/8192cu.conf

Adicione o seguinte:

# Disable power management
options
8192cu rtw_power_mgnt=0

Etapa 5 – Experimente com o GPIO no Pi

O que torna o Raspberry Pi tão interessante para mim são os pinos GPIO que permitem que o Pi se comunique e controle outros periféricos. Achei este guia excelente para obter uma compreensão básica do GPIO.

Meu primeiro teste com os pinos foi simplesmente conectar um LED que eu tinha e ver se conseguia acender.

Os LEDs geralmente têm uma perna mais longa que a outra. A perna mais longa deve ser a conexão + (positiva). Se o LED não tiver uma diferença visível no comprimento das pernas, você pode olhar para o topo do LED e verá 2 pequenos pedaços de metal. O lado menor é a conexão +. Aqui está um bom diagrama .

Comece conectando um fio jumper ao pino 1 do GPIO para a alimentação de 3,3 V e outro fio ao GND no pino 6. [foto]. Isso deve acender o LED. Yay! Ok, admito que isso não é muito emocionante. É apenas uma luz.

Em seguida, desconecte o fio do jumper do pino 1 e conecte-o ao pino 7 que é GPIO4. O LED deve estar apagado por enquanto. Para controlar as portas GPIO, existem inúmeras opções diferentes. Pesquise no Google Raspberry Pi GPIO, mas comecei com uma estrutura maravilhosa chamada WebIOPi .

Siga o guia de instalação do WebIOPi e execute:

$ sudo webiopi -d -c /etc/webiopi/config

Isso deve iniciar o servidor webiopi na porta 8000. Você pode acessar a página webiopi em um navegador em http://192.168.1.60:8000 . Claro, substitua 192.168.1.60 pelo IP do seu Pi.

Você deve ver um link do cabeçalho GPIO na página principal. Clique nesse link e você poderá controlar o GPIO usando uma IU da web que se parece com o cabeçalho da placa.

Cenário

Clique na caixa ‘IN’ à esquerda de GPIO4 para alternar para ‘OUT’. Em seguida, tente clicar na caixa à direita de GPIO4 com o número 7 nele. Se tudo estiver funcionando, você poderá ligar / desligar o LED conectado.

Ligar / desligar o LED foi muito emocionante para mim. Foi a primeira vez que construí algo em um computador que pudesse interagir com o mundo real. A Internet das Coisas como se costuma dizer. Para melhor ou pior, está chegando e provavelmente mais cedo ou mais tarde.

Etapa 6 – Fiação do relé de 2 canais

Agora é hora de substituir o LED pelo relé. Remova o LED dos fios do jumper e reconecte os fios de acordo com este desenho abaixo.

Cenário

Foi nesse ponto que me deparei com meu próximo problema. Cada vez que eu conectava o relé e mudava o GPIO4 para ‘OUT’, o Raspberry Pi travava e eu tinha que desconectá-lo / reiniciá-lo. Levei um tempo para descobrir que a fonte de alimentação que estava usando não fornecia energia suficiente para tudo. Aparentemente, alimentar o relé o levou ao limite. A fonte de alimentação que eu estava usando era de um antigo smartphone da Motorola com potência nominal de apenas 750ma. Depois de trocá-la por outra fonte de alimentação que tinha na 1850ma, não tive mais problemas de estabilidade com o Pi.

Você pode testar suas conexões agora voltando para a página WebIOPi e alternar GPIO4 ligado / desligado e você deve ser capaz de ver uma pequena luz no relé responder de acordo. Se o fizer, é um bom sinal. Significa que você pode controlar o relé para abrir e completar um circuito.

Etapa 7 – Conectando ao controle remoto da porta da garagem

Para esta etapa, você pode ligar os fios ao botão do controle remoto da porta da garagem que está em sua garagem ou usar um controle remoto sobressalente da porta da garagem. Como planejava deixar o Pi dentro de casa, onde tenho fácil acesso a ele, optei por conectá-lo a um controle remoto. Eu abri a caixa do controle remoto e estudei um pouco a placa de circuito. A primeira coisa que fiz foi testar se conseguia ativar o controle remoto sem realmente pressionar o botão, então encurtei esses 2 pontos tocando-os com um fio.

Voila!

Eu ouvi os sons da porta da garagem se abrindo. Então, teoricamente, eu deveria ser capaz de conectar isso ao relé e fazer o relé abrir / fechar o circuito. Estimulado por esse conhecimento, observei como poderia soldar 2 fios ao circuito e percebi que o controle remoto foi gracioso o suficiente para deixar alguns orifícios extras que funcionam em série com o botão real. Então eu soldei 2 fios ao controle remoto e os conectei às conexões esquerda e intermediária no relé como este abaixo.

Cenário

Agora alternar GPIO4 em WebIOPi deve realmente abrir e fechar a porta real da garagem. Você pode notar ao fazer isso que a porta da garagem só é ativada quando o sinal do GPIO4 está desligado. O relé que comprei, o relé Sainsmart de 2 canais e se o que li estiver correto, a maioria dos outros relés funcionam assim. Quando o sinal está ligado, o relé está aberto, o que significa que o controle remoto não será ativado. Quando o sinal está DESLIGADO, o relé é fechado e o circuito está completo, o que deve ativar o controle remoto. Mantenha essas informações em mente quando trabalharmos com a configuração do código WebIOPi posteriormente.

Etapa 8 – Configuração do GaragePi

** ATUALIZAÇÃO (17/02/15): Dê uma olhada no Node-GaragePi se você preferir Node.js ao Python e como você pode substituir a bateria no controle remoto da garagem. **

O GaragePi foi desenvolvido usando a estrutura WebIOPi de Eric @ trouch.com. É configurado com a seguinte estrutura de arquivo:

pi@raspberrypi ~ $ tree garagepi
garagepi

├── config
├── html
   └── index.html
└── python
└── garagepi.py

Baixe e extraia o arquivo zip GaragePi para / home / pi / garagepi .

Ou você também pode cloná-lo do Github:

git clone https://github.com/chasechou/GaragePi.git /home/pi/garagepi

Por padrão, o WebIOPi é configurado com login e senha. Mas eu só planejo usar isso quando estiver na minha rede wi-fi local, então optei por remover a proteção por senha completamente. Faça isso removendo / etc / webiopi / passwd ou esvaziando-o e reinicie o servidor webiopi.

sudo rm /etc/webiopi/passwd

Execute o comando abaixo para carregar o webiopi com o novo arquivo de configuração:

sudo webiopi -d -c /home/pi/garagepi/config

Em seguida, carregue isso no seu navegador … novamente, altere o IP para o IP do seu Pi:

http://192.168.1.60:8000

Você deverá ver uma página simples como esta abaixo, sinta-se à vontade para enfeitar a página como quiser.

Cenário

Clicar no botão nesta página deve agir como se você estivesse pressionando o botão no controle remoto da porta da garagem.

Se funcionou, você pode fazer o GaragePi rodar na inicialização.

sudo update-rc.d webiopi defaults

# As a side note, you can start/stop the background service by doing:
$ sudo
/etc/init.d/webiopi start
$ sudo
/etc/init.d/webiopi stop

Em seguida, substitua o arquivo de configuração padrão em / etc / webiopi / config por um link simbólico para o arquivo de configuração em / home / pi / garagepi / config.

sudo rm /etc/webiopi/config
sudo ln
-s /home/pi/garagepi/config /etc/webiopi/config

Reinicie e teste-o.

sudo reboot

Etapa 9 – Salvar na tela inicial do seu smartphone

Eu recomendo que você salve esta página na tela inicial do seu smartphone, ou pelo menos marque-a. Instruções para Android / iOS .

Cenário

Divirta-se e espero que funcione para você!