Propaganda
Já falamos sobre os méritos relativos do Arduino e do Raspberry Pi antes - cada um tem seus pontos fortes. No entanto, eles não precisam ser um ou outro - combine-os para obter o melhor dos dois mundos. A automação residencial é o candidato perfeito para isso. O mercado de automação residencial é inundado por sistemas de consumo caros, incompatíveis entre si e com instalação dispendiosa. Se você tem um Raspberry Pi Raspberry Pi: o tutorial não oficialSe você é um proprietário atual do Pi que deseja saber mais ou um proprietário em potencial desse dispositivo de tamanho de cartão de crédito, este não é um guia que você deseja perder. consulte Mais informação e um Arduino, você pode basicamente alcançar a mesma coisa por uma fração do preço, desde que esteja disposto a dedicar tempo e esforço.
Atualização: desde que este artigo foi escrito, eu descobri o OpenHAB, uma plataforma de automação residencial gratuita e de código aberto que roda em Raspberry Pi e pode ser integrado a uma enorme variedade de kits domésticos inteligentes prontos para uso, além de Arduino. Confira o vídeo abaixo para um sneak peak, então siga para o nosso Introdução ao OpenHAB no Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry PiO OpenHAB é uma plataforma madura de automação residencial de código aberto que roda em uma variedade de hardware e é independente de protocolo, o que significa que ele pode se conectar a praticamente qualquer hardware de automação residencial do mercado hoje. consulte Mais informação guia para aprender mais.
O Heimcontrol.js é um aplicativo Node.js criado para ser executado no Raspberry Pi. Combinado com um Arduino e alguns soquetes de controle remoto prontos para uso, ele facilita o controle de dispositivos CA. Você pode adicionar sensores de temperatura e até controlar sua TV - mas manteremos as coisas básicas hoje e estenderemos o projeto em um tutorial posterior.
Aqui está um detalhamento do projeto:
- O Raspberry Pi atuará como o cérebro e o gateway de operações - executará um aplicativo Node, vinculado a um banco de dados Mongo e servirá a interface front-end para qualquer navegador da web.
- Um Arduino, alimentado a partir do Pi, fará a interface entre os eletrônicos - interruptores de controle por rádio, por enquanto.
Para fazer isso, você precisará de:
- Arduino e um Raspberry Pi
- Algumas tomadas e controlador remotos (usei estes)
- Hub USB alimentado
Antes de começar, aqui está um vídeo de demonstração do próprio criador do projeto.
Começar de novo
Nós vamos usar o Raspian para este projeto 11 sistemas operacionais executados no seu Raspberry PiQualquer que seja o seu projeto Raspberry Pi, há um sistema operacional para ele. Ajudamos você a encontrar o melhor sistema operacional Raspberry Pi para suas necessidades. consulte Mais informação , e eu sugiro começar de uma nova instalação se você já executou outros hacks e tal. Faça o download das últimas Imagem Raspian, copie-o para o seu cartão SD e certifique-se de expandir o sistema de arquivos e ativar o SSH. O restante deste guia presumirá que você fez isso e está se conectando por SSH usando o usuário padrão.
Se você nunca fez isso antes, este vídeo explica o processo de preparação do seu cartão SD no OS X:
E este para usuários do Windows:
Preparação
O processo de instalação é bastante trabalhoso e deriva do instruções aqui. Infelizmente, eles estavam desatualizados ou não foram projetados para Raspian, então os ajustei bastante abaixo. Os códigos abaixo podem ser colados principalmente em blocos. Não é necessário colar um por um. Como estamos compilando algumas coisas no próprio Pi, lembre-se de que todo esse processo levará muito tempo. Eu diria que vá fazer uma xícara de chá - mas quando digo "muito tempo", quero dizer a melhor parte do dia - então 178 xícaras seriam mais apropriadas.
Todos os comandos devem ser digitados no Terminal e você pode precisar pressionar Enter em alguns pontos. Estes primeiros comandos atualizarão o sistema e instalarão os pré-requisitos:
sudo apt-get update atualização do sudo apt-get. sudo apt-get install git-core git scons scons essenciais para compilação libpcre ++ - dev xulrunner-dev libboost-dev libboost-programa-opções-dev-libboost-thread-dev
Em seguida, precisamos instalar o Node:
sudo mkdir / opt / node. wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz. tar xvzf node-v0.10.2-linux-arm-pi.tar.gz. sudo cp -r node-v0.10.2-linux-arm-pi / * / opt / node. sudo ln -s / opt / nó / bin / nó / usr / local / bin / nó. sudo ln -s / opt / nó / bin / npm / usr / local / bin / npm.
Adicione uma variável PATH ao seu perfil para que o SO saiba onde o Nó está localizado. Use o editor de nano texto da seguinte maneira:
sudo nano / etc / profile.
Localize a linha que diz PATH de exportação e substitua-o por:
NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" exportar PATH.
Pressione Ctrl-X para sair e Y para salvar.
Pode ser necessário fazer logoff e logon novamente para que as alterações no caminho entrem em vigor, mas você pode testar com o comando:
qual nó.
Se você não obtiver nenhuma saída apontando para o binário do Nó, algo deu errado.
Mongo
O próximo trabalho é instalar Mongo. O Mongo é um banco de dados No-SQL baseado em documentos, cada vez mais usado por aplicativos da web. Infelizmente, isso levará uma eternidade para instalar, pois precisamos compilá-lo. Ao executar os seguintes comandos, você encontrará muitos erros como:
{entrada padrão}: 13085: Aviso: o uso de swp {b} foi descontinuado para esta arquitetura.
Não se preocupe com isso. Portanto, execute estes comandos para instalar o Mongo:
git clone git: //github.com/RickP/mongopi.git. cd mongopi. scons. sudo scons --prefix = / opt / mongo instala scons -c.
Quando terminar, precisamos primeiro de um pouco mais de configuração para corrigir problemas de permissão e garantir que ele esteja em execução na inicialização.
sudo useradd mongodb. sudo mkdir / data / dbb. sudo chown $ USER / data / banco de dados. cd /etc/init.d. sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh. sudo chmod + x mongodb. Padrões sudo update-rc.d mongodb. mongod
Este último comando iniciará o servidor Mongo e você precisará abrir um novo Terminal para continuar com os outros comandos. Não estou totalmente confiante nessa etapa; portanto, se alguém puder corrigir isso nos comentários sobre como iniciar o mongod automaticamente na inicialização, isso será muito apreciado. Por enquanto, funciona, mas não de forma elegante.
sudo shutdown -r agora
Finalmente, é hora de instalar o aplicativo Nó Heimcontrol.js.
cd ~ pi. git clone git: //github.com/ni-c/heimcontrol.js.git. cd heimcontrol.js. instalação npm.
Você pode começar a executar o aplicativo digitando
nó heimcontrol.js.
Nesse ponto, você deve conseguir acessar a interface de controle com http://localhost: 8080 do Pi ou substitua host local pelo endereço IP, se você estiver acessando a partir de um computador diferente (e você também pode configurar encaminhamento de porta O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf explica]Você chora um pouco quando alguém lhe diz que há um problema de encaminhamento de porta e é por isso que seu novo aplicativo brilhante não funciona? Seu Xbox não permite que você jogue, seus downloads de torrents recusam ... consulte Mais informação para acessá-lo de qualquer lugar do mundo), então eu encorajo você a procurar e verificar se tudo está funcionando com o banco de dados antes de conectar o Arduino.
Hardware
Eventualmente, eu gostaria de um relé conectado, mas por enquanto utilizarei a opção mais segura de switches controlados por rádio.
Eu usei alguns conjuntos de 20 libras razoavelmente baratos da Maplin, que vêm com 3 soquetes, e abri o controle remoto para que eu pudesse interagir diretamente com o chip de 433 MHz no interior. Encontrei as instruções para isso aqui.
Você também pode comprar transmissores individuais de 433 MHz, prontos para uso no eBay ou de fornecedores de eletrônicos para hobby. Tudo o que você precisa é conectar o VCC a 5 V no Arduino, nos GNDs e em um único pino de controle - lembre-se de qual deles você usou. (Esquema de Willi Thiel)
O plug-in funciona enviando "códigos tristate", mas eles variam de acordo com o fabricante. Consulte o Documentação do RCSwitch para encontrar seus códigos exatos. este guia wiki pode ajudar também.
A comunicação com o Arduino é feita usando uma biblioteca Node chamada duino. Pare o aplicativo Heimcontrol se estiver em execução e instale a ponte do Arduino usando o seguinte comando.
npm install duino.
O Arduino deve ter esse código foi enviado - Sugiro que você copie e cole para instalar isso em um computador diferente. É essencialmente um programa de ouvinte que responde a comandos seriais do Pi, mas não há nada para impedir que você o estenda com seus próprios recursos.
Com o aplicativo da web lançado, vá para o Definições menu> Arduino.
A partir daí, você pode adicionar um novo item, escolhendo o método RCSwitch, o pino do seu transmissor e o código de endereço tristate. Lembre-se de salvar e volte para a tela principal do seu novo botão.
Insetos:
Depois de muitas horas depurando o código, descobri que os números de um dígito do pino não estavam funcionando - verifique se o transmissor está colocado no pino 10 para ter certeza.
Também descobri que o plug-in do Arduino estava codificado com bits finais incorretos para os códigos tristate que meus receptores precisavam. Uma pequena explicação primeiro: os códigos tristate consistem em 3 bytes de informação. O primeiro nos determina o número da rede (1-4) e o segundo fornece o endereço do transceptor (novamente, 1-4, produzindo no máximo 16 soquetes endereçáveis). O byte final consiste em dois bits de preenchimento, mais 2 bits para ligar / desligar. Infelizmente, o byte final está codificado no plug-in do Arduino - e, no meu caso, o código de ativação / desativação estava incorreto.
Eu tive que editar manualmente o plugins / arduino / index.js para usar os códigos corretos. Se você estiver usando os mesmos soquetes de controle remoto que eu, altere as linhas 80 em diante para:
// Envia o código RC. if (item.value) {retorna that.pins [item.pin] .triState (item.code + "FFFF"); // muda de FF0F. } else {retorna that.pins [item.pin] .triState (item.code + "FFF0"); // muda de FF00. }
Aqui está um vídeo de demonstração de tudo que funciona:
Vou deixar aqui neste momento, mas as leituras dos sensores e controles remotos de IR são também suportado. Provavelmente, revisitarei essas informações posteriormente com mais alguns aprimoramentos. Se tudo isso foi um pouco complexo demais para você, talvez veja projetos Arduino para iniciantes 15 grandes projetos de Arduino para iniciantesInteressado em projetos do Arduino, mas não sabe por onde começar? Esses projetos iniciantes o ensinarão como começar. consulte Mais informação .
James é bacharel em Inteligência Artificial e possui certificação CompTIA A + e Network +. Ele é o principal desenvolvedor do MakeUseOf e passa seu tempo livre jogando paintball e jogos de tabuleiro em VR. Ele está construindo PCs desde que era criança.