Guia de automação residencial com Raspberry Pi e Arduino

O mercado de automação residencial é inundado com sistemas de consumo caros, incompatíveis entre si e de instalação dispendiosa. Se você tem um Raspberry Pi e um Arduino, basicamente pode conseguir a mesma coisa por uma fração do preço, supondo que esteja disposto a dedicar tempo e esforço.

O mercado de automação residencial é inundado com sistemas de consumo caros, incompatíveis entre si e de instalação dispendiosa.  Se você tem um Raspberry Pi e um Arduino, basicamente pode conseguir a mesma coisa por uma fração do preço, supondo que esteja disposto a dedicar tempo e esforço.
Propaganda

Já falamos sobre os méritos relativos do Arduino e do Raspberry Pi - cada um deles tem seus pontos fortes. Eles não precisam ser uma escolha ou uma escolha - 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 com sistemas de consumo caros, incompatíveis entre si e de instalação dispendiosa. Se você tem um Raspberry Pi Raspberry Pi: O tutorial não oficial Raspberry Pi: O tutorial não oficial Se você é um proprietário atual Pi que quer aprender mais ou um potencial proprietário deste dispositivo de cartão de crédito, este não é um guia você quero perder. Leia mais e um Arduino, você pode basicamente conseguir a mesma coisa por uma fração do preço, assumindo que você está disposto a investir 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 integrada a uma grande variedade de kits caseiros e Arduino. Confira o vídeo abaixo para uma olhadinha, em seguida, siga para o nosso Getting Started with OpenHAB no Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry Pi OpenHAB é uma automação residencial madura e de código aberto plataforma que é executada em uma variedade de hardware e é independente de protocolo, o que significa que pode se conectar a praticamente qualquer hardware de automação residencial no mercado hoje. Leia mais guia para saber mais.

Heimcontrol.js é um aplicativo Node.js criado para rodar em Raspberry Pi. Combinado com um Arduino e alguns soquetes de controle remoto de prateleira, facilita o controle dos equipamentos AC. Você pode adicionar sensores de temperatura e até mesmo controlar sua TV - mas vamos manter as coisas básicas hoje e estender o projeto em um tutorial posterior.

Aqui está uma análise do projeto:

  • O Raspberry Pi atuará como o cérebro e o gateway de operações - ele executará um aplicativo Node, vinculado a um banco de dados Mongo e servirá a interface de front-end para qualquer navegador da web.
  • Um Arduino, alimentado a partir do Pi, fará a interface entre a eletrônica - interruptores de controle de rádio, por enquanto.

Para fazer isso, você precisará de:

  • Arduino e um Raspberry Pi
  • Alguns soquetes e controles remotos controlados (usei estes)
  • Hub USB alimentado

Soquetes RC

Antes de começarmos, aqui está um vídeo de demonstração do próprio criador do projeto.

Começar de novo

Vamos usar o Raspian para este projeto 10 Sistemas operacionais que você pode executar com o Raspberry Pi 10 Sistemas operacionais que você pode executar com o Raspberry Pi O hardware do Raspberry Pi sozinho é apenas um lado da história: Hoje eu exploro 10 sistemas operacionais diferentes você pode instalar. Leia mais, e eu sugiro fortemente começar com uma nova instalação, se você já realizou outros hacks e tal. Faça o download da imagem mais recente do Raspian, copie-a para o cartão SD e certifique-se de expandir o sistema de arquivos e ativar o SSH. O restante deste guia assumirá que você o fez e está se conectando por SSH usando o usuário padrão.

Se você não tiver feito 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 é derivado das instruções aqui. Infelizmente, eles estavam desatualizados ou não foram projetados para o Raspian, então os ajustei bem abaixo. Os códigos abaixo podem ser colados em blocos - você não precisa colar um por um. Já que estamos compilando algumas coisas no próprio Pi, esteja avisado que todo esse processo levará muito tempo. Eu diria que vá fazer uma xícara de chá para você - mas quando digo “muito tempo”, quero dizer a melhor parte de um 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 atualizam o sistema e instalam pré-requisitos:

sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core git scons build-essential scons libpcre++-dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev 

Em seguida, precisamos instalar o nó:

 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/node/bin/node /usr/local/bin/node sudo ln -s /opt/node/bin/npm /usr/local/bin/npm 

Adicione uma variável PATH ao seu perfil para que o sistema operacional saiba onde o Node está localizado. Use o editor de texto nano da seguinte forma:

 sudo nano /etc/profile 

Localize a linha que diz PATH de exportação e substitua-a por:

 NODE_JS_HOME="/opt/node" PATH="$PATH:$NODE_JS_HOME/bin" export PATH 

Pressione Ctrl-X para sair e Y para salvar.

Você pode precisar sair e entrar novamente para que as alterações de caminho entrem em vigor, mas você pode testar com o comando:

 which node 

Se você não obtiver nenhuma saída apontando para o binário do Nó, algo deu errado.

Mongo

O próximo trabalho é instalar o Mongo. O Mongo é um banco de dados No-SQL baseado em documentos, cada vez mais utilizado por aplicativos da web. Infelizmente, isso levará uma eternidade para instalar, já que temos que compilá-lo. Ao executar os seguintes comandos, você receberá muitos erros como:

 {standard input}:13085: Warning: swp{b} use is deprecated for this architecture 

Não se preocupe com isso. Então, execute estes comandos para instalar o Mongo:

 git clone git://github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix=/opt/mongo install scons -c 

Quando isso estiver concluído, precisamos de um pouco mais de configuração primeiro para corrigir problemas de permissão e garantir que ele esteja sendo executado na inicialização.

 sudo useradd mongodb sudo mkdir /data/dbb sudo chown $USER /data/db cd /etc/init.d sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh sudo chmod +x mongodb sudo update-rc.d mongodb defaults mongod 

Este último comando irá iniciar o servidor Mongo, e você precisará abrir um novo Terminal para continuar com os outros comandos. Eu não estou totalmente confiante nesta etapa, então se alguém puder corrigir isso nos comentários sobre como ter o mongod sendo iniciado automaticamente no início, seria muito apreciado. Por enquanto, funciona, não apenas elegantemente.

 sudo shutdown -r now 

Finalmente, é hora de instalar o aplicativo Heimcontrol.js Node.

 cd ~pi git clone git://github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Você pode começar a executar o aplicativo digitando

 node heimcontrol.js 

Neste ponto, você deve ser capaz de acessar a interface de controle com http: // localhost: 8080 a partir do Pi, ou substituir localhost pelo endereço IP se você estiver acessando-o de um computador diferente (e você também pode configurar a porta O que é encaminhamento de porta e como ele pode me ajudar? [MakeUseOf Explains] O que é o encaminhamento de porta e como ele pode me ajudar? [MakeUseOf explica] Você chora um pouco por dentro quando alguém lhe diz que há um problema de encaminhamento de porta e é por isso novo aplicativo brilhante não vai funcionar? Seu Xbox não vai deixar você jogar jogos, seus downloads torrent se recusam ... Leia mais para acessá-lo de qualquer lugar do mundo), então eu encorajaria você a bisbilhotar e verificar tudo é trabalhando com o banco de dados antes de anexar o Arduino.

Hardware

Eventualmente, eu gostaria de um relé com fio, mas por enquanto vou usar a opção mais segura de comutadores controlados por rádio.

Eu usei alguns conjuntos razoavelmente baratos de 20 libras 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. Eu encontrei as instruções para isso aqui.

rc-controlador-hack

Você também pode comprar transmissores individuais de 433 MHz prontos para uso no eBay ou de fornecedores de produtos eletrônicos de entretenimento. Tudo que você precisa é conectar o VCC a 5 V no Arduino, os GNDs e um único pino de controle - lembre-se de qual você usou. (Esquemática por Willi Thiel)

arduino-rcswitch

O plugin funciona enviando “códigos tristate”, mas estes variam de acordo com o fabricante. Consulte a documentação do RCSwitch para encontrar seus códigos exatos. Este guia wiki também pode ajudar.

A comunicação com o Arduino é feita usando uma biblioteca de nós chamada duino. Pare o aplicativo Heimcontrol se ele estiver em execução e instale a ponte do Arduino usando o seguinte comando.

 npm install duino 

O Arduino deve ter este código carregado - sugiro que você copie e cole para instalar isso de um computador diferente. É essencialmente um programa ouvinte que responde aos comandos seriais do Pi, mas não há nada que o impeça de estendê-lo com seus próprios recursos.

rc-settings

Com o aplicativo da web ativado, vá para o menu Configurações > Arduino .

heimcontrol-menu-settings

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, então volte para a tela principal do seu novo botão.

ajuste do interruptor

Insetos:

Depois de muitas horas de depuração do código, descobri que números de pinos de um único dígito não estavam funcionando - certifique-se de que seu transmissor esteja posicionado no pino 10 para ter certeza.

Eu também achei que o plugin do Arduino foi codificado com bits finais incorretos para os códigos tristate que meus receptores precisavam. Uma pequena explicação primeiro: os códigos dos três estados 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 um máximo de 16 soquetes endereçáveis). O byte final consiste em dois bits de preenchimento, mais 2 bits para on / off. Infelizmente, o último byte é codificado no plugin do Arduino - e no meu caso, o código on / off estava incorreto.

Eu tive que editar manualmente os plugins / arduino / index.js para usar os códigos corretos. Se você estiver usando os mesmos soquetes de controle remoto que eu, mude as linhas 80 para:

 // Send RC code if (item.value) { return that.pins[item.pin].triState(item.code + "FFFF");//change from FF0F } else { return that.pins[item.pin].triState(item.code + "FFF0");//change from FF00 } 

Aqui está um vídeo de demonstração de tudo funcionando:

Vou deixá-lo aqui neste momento, mas as leituras do sensor e os controles remotos do IR também são suportados. Eu provavelmente revisarei isso mais tarde, com mais alguns aprimoramentos. Se tudo isso foi um pouco complexo demais para você, talvez confira estes projetos Arduino iniciantes-amigáveis ​​10 Grandes Projetos Arduino para Iniciantes 10 Grandes Projetos Arduino para Iniciantes Completar um projeto Arduino lhe dá uma sensação de satisfação como nenhuma outra. A maioria dos iniciantes não sabe ao certo por onde começar, e até mesmo os projetos para iniciantes podem parecer assustadores. Consulte Mais informação .

Créditos da Imagem: Campainha da Porta Via Flickr

In this article