Estou trabalhando em um espaço de coworking em Toulouse, França, chamado Tau. As pessoas que trabalham lá são chamadas de “Taunauts” e cerca de 15 pessoas o usam todas as semanas.
Um problema que enfrentamos foi abrir a porta principal do prédio: ela usa um interfone montado na parede com um botão ou cartões RFID. O problema é que não temos 15 cartões rfid e queríamos fazer algo divertido.
A ideia era simples: poder clicar em um link ou dizer a um bot para abrir a porta.
Fundamentos
O intercomunicador é apenas um interruptor: você pressiona um botão, ele fecha um circuito e envia elétrons felizes (eles estão sempre felizes) em direção ao relé do eletroímã para abri-lo, liberando a porta.
A ideia é então simples: use um relé para fazer a mesma coisa que o botão faz quando pressionado.
- Para comandar um relé de um computador você precisa de algum tipo de controlador e um barato e bom é a Placa Arduino: http://www.arduino.cc & http://snootlab.com/lang-en/arduino/142- arduino-uno-rev3.html .
- Para poder acionar uma ação nos pinos do Arduino de uma rede, você precisa de uma extensão de rede para o Arduino (chamada de shields): um shield de ethernet: http://snootlab.com/arduino/163-ethernet-shield-r3. html .
- Para simplesmente lidar com um relé, você pode solicitar uma blindagem de 2 ou 4 relés: http://seeedstudio.com/wiki/Relay_Shield_V1.0 .
Para ter algo realmente funcionando com quem você precisa:
- uma fonte de alimentação de 9 V (para alimentar o arduino uno e, em seguida, os relés)
- raisers arduino para poderem adicionar a blindagem do relé no topo da blindagem ethernet sem causar curto-circuitos
Em seguida, você precisa de um servidor web básico escutando em uma porta TCP na ethernet em execução no Arduino. Com base em um exemplo disponível no site do Arduino, @madflo próprio código, escrevi um com o que precisamos, disponível em uma das minhas contas do github: https://github.com/Arbousier/tau_door .
Isso fornece um url simples para acessar e acionar o relé. Um simples encaminhamento de porta do seu roteador, um pequeno aplicativo da web e voila você pode abrir a porta com um clique.
Isso não é o bastante
Isso resolve nosso problema, mas não é tão simples para todos. Autenticar via formulário da web, clicar em um link, você precisa de um telefone para isso, e não é tão fácil. Todo mundo tem um telefone, nem todo mundo tem um telefone compatível com a web.
Espere , todo mundo tem um telefone?
Então, sim, a próxima etapa foi pular para Twilio, ler as perguntas frequentes e escrever um aplicativo sinatra simples:
- Twilio recebe uma chamada e envia uma solicitação para o aplicativo passando alguns parâmetros como De (o número de chamada)
- O app verifica se o número está na lista branca, caso esteja, a porta é aberta e uma mensagem é reproduzida para o chamador; se não for, a porta permanece fechada e o interlocutor é questionado se deseja falar com um humano.
Este aplicativo é bastante simples e fiquei surpreso ao ver como é fácil lidar com chamadas com o Twilio. É um aplicativo sinatra, sob licença do MIT, ele usa Cloudant para armazenar os números de telefone, mas obviamente com alguns pequenos ajustes que qualquer banco de dados poderia fazer. Você pode encontrar o código no github: https://github.com/Arbousier/Door-Opener-Twilio .
Conclusão
Os dois aplicativos funcionam bem juntos, por meio de um roteador privado. O aplicativo Sinatra está hospedado no heroku usando uma configuração de 1 dinamômetro. A coisa é rápida o suficiente e você não espera mais de 5 segundos na frente da porta …
Diverta-se.