Sensores Home Inteligentes DIY com Arduino, MySensors e OpenHAB

Sensores domésticos inteligentes custam uma quantia ridícula de dinheiro. Fiação de uma casa inteira é o domínio daqueles com quantidades tolas de renda disponível. Vamos construir nosso próprio com MySensors.

Sensores domésticos inteligentes custam uma quantia ridícula de dinheiro.  Fiação de uma casa inteira é o domínio daqueles com quantidades tolas de renda disponível.  Vamos construir nosso próprio com MySensors.
Propaganda

Sensores domésticos inteligentes custam uma quantia ridícula de dinheiro. De US $ 60 a US $ 100 apenas para um detector de movimento ou sensor de umidade, a instalação de uma casa inteira torna-se o domínio daqueles com quantias tolas de renda disponível. Vamos construir nossos próprios

Felizmente, o trabalho árduo já foi feito pelo bom pessoal por trás do MySensors.org. Hoje mostrarei como usar a estrutura MySensors para criar um conjunto barato de sensores domésticos inteligentes que podem alimentar uma instalação do OpenHAB (consulte nosso guia Introdução ao OpenHAB no Raspberry Pi). Introdução ao OpenHAB Home Automation no Raspberry Pi Introdução ao OpenHAB Home Automation no Raspberry Pi O OpenHAB é uma plataforma de automação residencial de código aberto e madura 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 atualmente. Consulte Mais informação . Suponho que você já tenha um servidor MQTT em funcionamento e entenda os fundamentos do formato de mensagens MQTT; se não, leia o seguinte no guia OpenHAB, que inclui instruções para instalar um servidor MQTT Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e Gráficos Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e Criação de Gráficos do OpenHAB O software de automação residencial de código aberto excede em muito as capacidades de outros sistemas de automação residencial no mercado - mas não é fácil de configurar. Na verdade, pode ser francamente frustrante. Consulte Mais informação .

Embora eu esteja lidando especificamente com o encaminhamento dos dados do MySensors de uma rede de Arduinos, usando o MQTT, para uma instalação do OpenHAB, devo salientar que a estrutura MySensors pode ser usada em vários controladores de automação residencial diferentes. Eu apresentei isto aqui como uma solução completa que funciona para mim, mas, por favor, confira o site MySensors, pois você pode achar que ele também serve para o seu propósito similar, mas usando um hardware ligeiramente diferente ou um protocolo de mensagens diferente. É incrivelmente versátil.

hardware de mysensors -1

O custo de hardware para minha configuração é menor que US $ 10 por nó (um pouco mais para o gateway), mas sensores adicionais e atuadores podem ser adicionados por muito pouco (o sensor de umidade e temperatura DHT11 por exemplo é de US $ 1 cada); é em torno de US $ 3).

O que estamos fazendo

A ideia básica é que, em vez de adicionar à nossa rede local lotada existente usando Wi-Fi não confiável ou escudos Ethernet caros, criamos uma rede com capacidade de malha totalmente separada apenas para os Arduinos; em seguida, conecte-o à rede local usando um único nó de gateway, que possui uma conexão Ethernet e uma conexão de rádio com os outros Arduinos. Então, estamos fazendo alguns nós sensores, que coletam dados; e um nó de gateway, que transmite esses dados para o servidor OpenHAB.

Mais uma vez, isso é o que funciona para mim, porque a minha recepção Wi-Fi é tão horrível e eu não quero sobrecarregar com dados desnecessários. Se você está feliz com o Wi-Fi, veja o baixo custo ESP8266 Compatível com Arduino Conheça o Arduino Killer: ESP8266 Conheça o Arduino Killer: ESP8266 E se eu dissesse a você que há uma placa de desenvolvimento compatível com Arduino com Wi-Fi embutido -Fi por menos de US $ 10? Bem, existe. Leia mais com placas Wi-Fi incorporadas - O MySensors também oferece suporte a elas.

Nota importante para usuários do El Capitan e Clones do Arduino: A Apple conseguiu quebrar os drivers seriais usados ​​para se comunicar com uma série de placas clone do Arduino na última versão do El Capitan, graças a novas medidas de segurança. Para ver se você está afetado, olhe para sua placa e o chip mais próximo da porta USB. Se ele diz CH340, você é afetado por isso. Siga as instruções aqui para desativar a assinatura kext do driver, instale os drivers seriais CH340 novamente.

Componentes necessários

Para o gateway, você precisará de:

  • Arduino Uno
  • Escudo Ethernet (baseado em W5100)
  • Módulo NRF24L01 - Eu usei as versões + PA + LNA, que têm um alcance maior de até 1 km. A fiação é a mesma que você escolher.

Para cada nó do sensor:

  • Arduino Uno
  • Módulo NRF24L01
  • Sensores (para começar, eu sugeriria um módulo de temperatura e umidade DHT11 ou DHT22)

Adicional / Opcional:

  • Capacitores de 10uF, um para cada módulo de RF que você tem (o link é para um pacote de 50!)
  • Fonte de alimentação com saída de 5v e 3, 3v (YwRobot MB102 funciona bem e são US $ 1 cada) - necessário se usar um clone Arduino. Você também precisará de uma fonte de alimentação CC de 9-12V para estes.
  • Prototipagem Shields, ou fios de jumper curtos macho-fêmea.

Trabalhando com módulos NRF24L01

Vamos começar com os módulos NRF24L01, pois são a parte mais complexa do projeto. Eu fui para a versão mais cara e mais ampla destes: tecnicamente conhecida como NRF24L01 + PA + LNA . Eles vêm com um circuito de amplificação de sinais on-board e conexão de antena, embora eu sugiro que você experimente a versão não-antena mais barata dos módulos primeiro se você tiver uma casa normal com paredes regulares, não o tipo de parede de pedra sólida Eu faço. A faixa reivindicada destes é de cerca de um quilômetro, mais do que suficiente para eu colocar no galpão do jardim.

No entanto, essas coisas são realmente difíceis de trabalhar; Se você for em frente e conecte tudo sem ler essas dicas primeiro, ficará desapontado.

  • O módulo precisa de energia de entrada 3.3v para o pino VCC - não 5v . Se você colocar 5v, você vai fritar.
  • Soldar um capacitor de 10uF através dos terminais VCC / GND. A linha cinza sólida no capacitor indica o lado negativo / GND.
  • Use cabos de salto curtos e de alta qualidade; ou melhor ainda, solde-os diretamente em uma blindagem de prototipagem para manter o comprimento do cabo em conexões mínimas e sólidas.
  • Se você estiver usando um clone do Arduino, o regulador de tensão não fornecerá o suficiente para eles no pino 3.3v - você precisará usar uma placa de fonte de alimentação externa (conectada acima), disponível por cerca de US $ 1 cada. Estes fornecem um 3.3v estável. Se você estiver usando uma marca original do Arduino, Uno, isso não parece ser um problema.

Eu sugiro fortemente que você faça alguns testes básicos primeiro apenas para estabelecer que seu rádio está funcionando. Conecte dois rádios como mostrado na página MySensors. Não importa que o diagrama mostre placas Arduino Micro - os mesmos números de pinos são usados. Note que o diagrama mostra o NRF24L01 a partir do topo ; você realmente estará conectando as coisas da parte de baixo . Mentalmente ajuste de acordo. Ignore o pino de IRQ cinza, não é usado atualmente. Em suma:

  • VCC vai para 3.3v em sua fonte de alimentação externa
  • GND vai para trilho comum
  • CE para fixar 9
  • CSN / CS para fixar 10
  • MOSI para fixar 11
  • MISO para fixar 12
  • SCK para fixar 13

fiação da página do mysensors

Você precisará de dois nós totalmente conectados para testar. Faça o download da biblioteca RF24 e carregue o exemplo mais simples de Introdução . Ligue os dois módulos, mas deixe um conectado via USB e abra o console serial. Digite “T” e envie, para comutá-lo no modo de transmissão, ponto no qual você deve receber mensagens de depuração dizendo que está executando o ping com êxito em uma mensagem para o outro nó.

Construindo o MySonic MQTT Client Gateway

Ok, agora que sabemos que os rádios RF24 estão ligados e funcionando corretamente, vá em frente e baixe o ramo de desenvolvimento do pacote MySensors Arduino. Este tutorial foi escrito usando a versão 1.5, mas deve ser aprovado também em versões posteriores. Estamos usando o ramo de desenvolvimento porque, no momento da gravação, o gateway do cliente MQTT ainda não faz parte do pacote principal.

Embora haja MQTTGateway disponível na ramificação principal, ele também atua como um servidor, o que não queremos porque já temos um servidor MQTT estável em execução no Raspberry Pi. Nós apenas queremos encaminhar os dados do MySensors para isso. Novamente, se isso não for o que você deseja - se você preferir não usar MQTT -, consulte EthernetGateway ou SerialGateway, ambos compatíveis com o OpenHAB.

Vale a pena notar que o pacote de download não inclui apenas os arquivos essenciais do MySensors, ele também inclui bibliotecas compatíveis necessárias para todos os sensores possíveis. Para evitar conflitos, sugiro apenas fazer o backup de toda a pasta de bibliotecas atuais e substituí-la por todas as do pacote de download.

A fiação do gateway é um pouco diferente; Depois de ter sua blindagem Ethernet, use os seguintes pinos para o módulo de rádio:

  • CE para fixar 5
  • CSN para fixar 6
  • SCK para fixar A0
  • MOSI para fixar A1
  • MISO para fixar A2

Você também precisa ativar a linha #define SOFTSPI no arquivo libraries / mySensors / MyConfig.h . Faça isso removendo o // para descomentar, está na linha 309 da minha.

Precisamos fazer isso porque o módulo de rádio e o escudo de rede usam SPI e são incompatíveis; então apenas mudamos o módulo de rádio SPI para alguns outros pinos e executamos a comunicação SPI no software (portanto, SPI suave ).

Carregue o esboço MySensors / GatewayW5100MQTTClient . Se você não vir isso no menu MySensors, não terá a ramificação de desenvolvimento instalada. Use o link fornecido acima para baixar novamente toda a biblioteca.

gateway de mysensors

Você precisará definir um endereço IP estático para o controlador, o IP do roteador e da sub-rede da rede e o endereço IP do seu servidor MQTT existente. Sinta-se à vontade para modificar os prefixos do tópico também, se quiser. Carregue e ligue essa coisa na rede. Verifique brevemente o console Serial quanto a erros grosseiros, como impossibilidade de se conectar ao seu servidor MQTT, caso contrário, deixe-o de lado (mas deixe-o ligado).

endereços IP para mudar

Construindo os Nós do Sensor

Primeiro, comente que #define a linha SOFTSPI no arquivo MyConfig.h novamente colocando // de volta no início. É necessário apenas para o gateway - estamos usando a fiação NRF24L01 padrão para os nós sensores, que usam SPI de hardware. Se você precisa lembrar:

  • O VCC vai para 3.3v em sua fonte de alimentação externa (ou no próprio Arduino se for um original e não um clone)
  • GND vai para trilho comum
  • CE para fixar 9
  • CSN / CS para fixar 10
  • MOSI para fixar 11
  • MISO para fixar 12
  • SCK para fixar 13

Em seguida, conecte sua escolha de sensor; Eu uso o sensor de umidade e temperatura DHT11 para testes, mas se você descer até a lista de sensores e atuadores na barra lateral da página MySensors, você encontrará uma grande variedade de outras opções: portas, pluviômetro, luz, movimento, até RFID - e carrega mais. Você pode ver que também adicionei um relé ao nó mostrado abaixo, mas mais sobre isso depois.

mysensors hardware -2

Por fim, carregue o exemplo do HumiditySensor no menu MySensors e adicione a seguinte linha imediatamente após os comentários.

 #define MY_NODE_ID 2 

Como estamos usando uma versão especial do controlador que apenas encaminha as coisas para nosso próprio servidor MQTT, ele não possui o recurso de controlador padrão que atribui automaticamente IDs de nós a cada novo nó. Em vez disso, vamos defini-lo manualmente a cada vez. Anote esse número em algum lugar para seus próprios registros e altere-o para cada nó.

Habilite a saída de depuração também:

 #define MY_DEBUG 

Finalmente, verifique se o pino de dados do seu sensor DHT11 está correto.

 #define HUMIDITY_SENSOR_DIGITAL_PIN 7 

Então, faça o upload!

Vale a pena abrir o console serial para dar uma olhada. O bit crucial a ser observado é st =, que é o status da mensagem. st = fail significa que a mensagem não foi enviada. É possível que você não tenha definido um ID de nó exclusivo ou que seu gateway esteja off-line. Eu fingi essas falhas simplesmente desconectando o gateway:

st-fail

Se tudo estiver funcionando, você deve começar a ver algumas leituras de dados no seu servidor MQTT. Colocá-las no OpenHAB está fora do escopo deste tutorial, mas foi abordado na parte 2 do guia OpenHAB, Guia do Iniciante do OpenHAB, Parte 2: ZWave, MQTT, Regras e Gráficos Guia do Iniciante do OpenHAB Parte 2: ZWave, MQTT, Regras e Gráficos do OpenHAB, o software de automação residencial de código aberto excede em muito as capacidades de outros sistemas de automação residencial no mercado - mas não é fácil configurá-lo. Na verdade, pode ser francamente frustrante. Leia mais para que você possa se referir lá.

Combinando o Código do Sensor

Embora instalar um único nó sensor em execução seja relativamente simples, fica um pouco mais complicado quando se deseja adicionar vários sensores a cada nó. Essencialmente, você vai mesclar os trechos de código de dois exemplos diferentes. A maneira mais fácil de mostrar isso é por exemplo com um vídeo! Aqui estou combinando nosso sensor básico de umidade com um relé.

Você pode encontrar o código completo para o sensor de umidade e retransmissão aqui, que já foi modificado com um loop sem bloqueio, como mencionei no vídeo. Para aprender mais sobre a estrutura de comando do MQTT necessária para ativar o relay, verifique a API Serial - mas basta dizer que o canal a seguir controla o primeiro relé no código que eu dei (com um corpo de mensagem de 0 ou 1):

 mysensors-in / 9/1/1/0/2 

Sua única limitação agora é a quantidade de memória no Arduino, e eu direi isso - os sensores mais confiáveis ​​na minha casa inteligente não são os módulos Z-Wave comerciais que custam US $ 80, mas os módulos personalizados do MySensor.

Eu terminarei com isso hoje, mas se você tiver problemas, você pode perguntar nos comentários ou nos fóruns de usuários muito ativos do MySensors. Você estará montando seus próprios sensores baratos? Como está a sua casa inteligente?

In this article