Criamos um sensor de controle de qualidade do ar no InfluxDB, Grafana, Docker e Raspberry Pi

Já pensou em monitorar a qualidade do ar dentro ou fora de sua casa: onde você mora e trabalha? Este projeto, batizado de balenaSense , é uma unidade para medir temperatura, umidade, pressão barométrica e qualidade do ar, além de um painel que você pode acessar de qualquer lugar para ver estatísticas resumidas e acompanhar tendências.



Conteúdo



1. Introdução


Para controlar a qualidade do ar e da estação meteorológica, são necessários muitos fios e vários sensores, mas a situação ficou mais fácil após o aparecimento de sensores que combinam todas as leituras em uma boa prancha pequena, o que é fácil de começar.



Considere monitorar a temperatura, a umidade, a pressão barométrica e a qualidade do ar usando um sensor all-in-one que se conecta diretamente ao Raspberry Pi sem componentes adicionais. Você não precisa ter nenhuma experiência em eletrônica, mas um ferro de solda seria bem-vindo (embora também seja opcional). Este projeto implementa um banco de dados para armazenar leituras históricas, juntamente com uma interface gráfica para visualizar as leituras atuais e ver imediatamente as tendências.





Equipamento necessário


Aqui está o que você precisa comprar para este projeto. Dependendo se você deseja usar um ferro de soldar ou não, escolhemos uma placa sensora: alguns funcionam imediatamente, outros requerem um pouco de solda.



Eu não quero soldar


Se você não deseja soldar, precisará de:


Eu quero soldar - me dê!


Se você estiver feliz em pegar um ferro de soldar, precisará de:


Outros sensores


Se você já possui algum tipo de sensor, este projeto oferece suporte ao Sense HAT com um bônus adicional: um smiley na matriz de LEDs (dependendo da qualidade do ar, é claro)!



O Bosch BME680 com riser pode ser adquirido de diferentes fornecedores a preços diferentes.


Nota No artigo, usamos o Pimoroni: esta placa possui a vantagem adicional de que os contatos são quebrados na ordem correta para o Raspberry Pi GPIO. Ao usar outras placas, verifique se os pinos de alimentação, terra e I2C do barramento (SDA e SCL) correspondem, conforme explicado mais adiante neste manual.

De software


Abrimos o projeto balena-sense no GitHub, que contém todo o software, configuração e código que você precisa para um sistema em funcionamento. Vamos implantar este projeto em uma conta gratuita do balenaCloud para distribuir todo o software para o Raspberry Pi, além de fornecer acesso remoto. Portanto, você precisará de:


Montagem de equipamentos


Há pouco trabalho na frente de hardware deste projeto. Nosso objetivo é conectar a placa do sensor ao pino GPIO no Raspberry Pi.

O BME680 se comunica com o Raspberry Pi por um barramento chamado I2C (que é o quadrado do olho), que é um barramento serial de dois fios. Esses dois fios são chamados de linha de sincronização (SCK) e linha de dados (SDA). Além dos dois fios, é necessário fornecer energia ao sensor (3,3V ou 3V3) e aterrá-lo.

Se você escolheu a opção sem soldar da Pimoroni ou Sparkfun ou usando o Sense HAT, basta conectar os novos componentes brilhantes ao Raspberry Pi e todas as conexões serão feitas para você: prossiga para a próxima etapa!

Se você decidir conectar o sensor diretamente ao Raspberry Pi usando Pimoroni ou outro riser, o principal é garantir a conexão correta dos contatos descritos acima (SDA, SCK, 3V3 e GND).



Um site útil para trabalhar com o GPIO no Raspberry Pi é o pinout.xyz ; mostra claramente que precisamos dos pinos 1 (potência 3V3), 3 (SDA), 5 (SCL) e 9 (terra). Um GPIO de 40 pinos é padrão no Pi 2 e posterior. Se você usa uma placa Pimoroni, os contatos estão na ordem correta para conectar as placas. Observe como a inscrição no quadro corresponde ao diagrama de pinagem acima.



Mas se você conectar o sensor dessa maneira, o calor do processador Raspberry Pi afetará as leituras. Para coletar leituras mais precisas, é necessário remover o sensor da placa: faça-o com os cabos DuPont de mãe para mãe (ou Jumper Jerky ), conforme mostrado abaixo:



Da mesma forma, se você usar outro sensor, onde os diagramas de pinagem não coincidem exatamente, poderá conectar essas placas ao Pi usando o mesmo método. O principal é garantir a conformidade com 3V3, SDA, SCL e GND. Se a placa tiver contatos para SDI, SDO, CS - você poderá ignorá-los, porque eles são usados ​​para uma interface SPI alternativa, que não usamos neste projeto.

Nas fotos acima, temos o Raspberry Pi 3A +, mas o Pi Zero também é adequado como uma solução mais barata.

Configurar Raspberry Pi


Vamos fazer o flash do cartão SD com o sistema operacional balenaOS, conectar-se à nuvem balenaCloud, adicionar nosso dispositivo e configurar o projeto para que ele possa ser facilmente atualizado mais tarde.

Primeiro, você precisa configurar uma conta balenaCloud. Isso significa registrar, adicionar um aplicativo e adicionar um dispositivo.

Etapa 1. Inscreva-se no balenaCloud


Se você já possui uma conta do GitHub ou do Google, pode usá-lo para efetuar login sem passar pelo processo de registro .

Etapa 2. Criando o Aplicativo


Adicione o aplicativo selecionando o tipo de dispositivo correto e Starter como o tipo de aplicativo e clique em Create New Application . Este tipo suporta todos os microsserviços e é gratuito até dez dispositivos.

Em seguida, você será levado ao painel do aplicativo recém-criado, onde poderá ir para a próxima etapa e adicionar o dispositivo. Você pode atribuir um nome arbitrário ao aplicativo, mas será necessário mais tarde neste manual quando escrevermos o código.

Etapa 3. Adicione o dispositivo e inicialize o sistema operacional


Após criar o aplicativo, você pode adicionar um dispositivo a ele clicando no botão verde Adicionar dispositivo . Ao adicionar um dispositivo, especifique o tipo de dispositivo correto. Se você estiver se conectando a uma rede sem fio, poderá definir seu WiFI SSID e senha.

Nota: Raspberry Pi 3 é indicado na animação, não se esqueça de selecionar o tipo correto de seu dispositivo!



Esse processo cria uma imagem personalizada para o aplicativo e o tipo de dispositivo, que inclui configurações de rede, se especificado.

Nota: para iniciantes, é melhor escolher uma imagem de desenvolvimento para realizar alguns testes e solucionar problemas. Para mais informações sobre as diferenças entre imagens de desenvolvimento e produção, consulte aqui . Se você tem certeza de que pode começar a implantar uma imagem de produção agora - por favor.

Etapa 4. Grave o cartão SD e o dispositivo de inicialização


Quando a imagem do sistema operacional é carregada, é hora de piscar o cartão SD. Você pode usar o balenaEtcher para isso.



Após a conclusão do processo, insira o cartão SD no Raspberry Pi e conecte a fonte de alimentação.



Quando o dispositivo inicializa pela primeira vez, ele se conecta ao painel balenaCloud, após o qual você pode vê-lo na lista on-line e seguir para a próxima etapa.



Solução de problemas: o dispositivo deve aparecer no painel em alguns minutos. Se não aparecer, algo deu errado. A documentação possui um extenso guia de solução de problemas com muitas informações sobre por que isso pode acontecer. Se a documentação não ajudou, entre em contato com os fóruns .

Implantação de software


Quando o seu Raspberry Pi estiver preparado, baixado e conectado ao balenaCloud, você estará pronto para instalar o código do aplicativo no dispositivo.

Instale as ferramentas da CLI balena em uma estação de trabalho


O BalenaCloud permite transferir remotamente o software / código do aplicativo para o Raspberry Pi e outros dispositivos. Para tornar isso possível, sua estação de trabalho (não o Raspberry Pi) deve atender a alguns requisitos mínimos de software. Nota: Para implantar com sucesso este projeto, você não precisa executar nenhum comando no próprio dispositivo, por meio do SSH ou do painel balenaCloud. Tudo é feito remotamente!

Se você já possui (ou pode configurar) npm no seu computador, essa é a maneira mais rápida de executar as ferramentas da CLI. Também existem binários para Windows, macOS e Linux . Nota: se você já instalou essas ferramentas para nossos outros projetos, poderá pular esta parte e ir diretamente para a próxima etapa.

A documentação para as ferramentas da CLI descreve a instalação e configuração do pacote npm, além dos binários.

Quando a CLI está instalada e em execução, a primeira etapa é efetuar login no balenaCloud executando o comando balena login :





Quando houver uma CLI em funcionamento registrada na conta, você estará pronto para instalar programas no Raspberry Pi.

Baixando um projeto no GitHub


O próximo passo é baixar o código para este projeto no GitHub .

O botão azul carregará o arquivo zip do projeto, mas se você já estiver familiarizado com o Git, poderá usar o git clone maneira usual.

Instale no Raspberry Pi


Como a CLI e o código mais recente estão instalados, você pode executar esse código no balenaCloud com um comando. Lá, a imagem do Docker é coletada e configurada, que será executada no seu dispositivo.

No diretório do projeto após descompactá-lo, execute o balena push <appName> , em que appName é o nome do aplicativo especificado no início do manual. Por exemplo, balena push balenaSense .

Se tudo for feito corretamente, após alguns minutos, a tela de informações do seu dispositivo no painel de controle deverá mostrar os serviços em execução, um para cada componente do software, algo como isto:



Na primeira vez que o download pode demorar alguns minutos (dependendo da velocidade da sua conexão com a Internet), mas somente as alterações no contêiner são baixadas, para que tudo aconteça muito mais rápido.

Nota: quando o aplicativo é iniciado pela primeira vez (e você usa o BME680, não o Sense HAT), o sensor executa um 'burn-in' por cerca de cinco minutos. Durante esse período, as leituras não serão feitas e inseridas no banco de dados. O aplicativo registrará a contagem regressiva, exibida no painel balenaCloud:



Quando a contagem chegar a zero, você verá a mensagem 'Loop inicial ...'. Depois disso, as leituras serão realizadas e inseridas no banco de dados a cada 10 segundos.

Ver painel


Espero que você tenha atualizado o dispositivo, conectado à rede e iniciado sem problemas. Um dos grandes benefícios do uso de uma conta balenaCloud gratuita é o recurso de Public Device URL .



Ative essa opção e clique no ícone de seta azul para acessar o painel. Você pode compartilhar este link ou adicioná-lo aos favoritos no seu telefone ou outro dispositivo. Enquanto o dispositivo balenaSense está conectado e funcionando, você pode ver o painel de qualquer lugar!



Se você não deseja ativar o acesso público, ainda pode visualizar o painel da sua rede local por endereço IP, como pode ser visto na captura de tela acima. O seu será diferente, mas basta digitar http://<ip-> no navegador e você ainda terá acesso ao painel se estiver na mesma rede que o dispositivo. Por exemplo, para acessar meu dispositivo, http://10.1.231.36 .

Se você deseja fazer login no Grafana e brincar com as configurações, as credenciais padrão são admin e admin .

Como isso funciona?


Este projeto possui três componentes principais, três serviços. Esses nomes estão no painel balenaCloud:

  • InfluxDB - um banco de dados usado para armazenar leituras de sensores
  • Sensor - biblioteca e código Python para acessar o sensor, fazer leituras e salvá-las no banco de dados
  • Grafana - usado para criar um painel com gráficos e relatórios

O sensor BME680 da Bosch detecta temperatura, umidade, pressão e resistência a gases. Os sensores de temperatura, umidade e pressão funcionam imediatamente, mas as leituras de resistência de gás por si só não são muito úteis. Estes são indicadores de mudanças na composição do ar. Quando o sensor inicia, ele define a base e monitora as alterações. Os indicadores indicativos da qualidade do ar são dados em porcentagem e levam em consideração a influência da umidade e da resistência do gás.

Se você usar o Sense HAT, onde não há sensor de resistência ao gás, aproximamos as leituras da qualidade do ar com base nos valores de temperatura e umidade desejados.

O que vem a seguir?


Espero que agora você tenha lançado completamente o projeto, tenha acesso ao painel, tenha leituras e tenha começado a preencher seu banco de dados. Mencione algumas coisas mais importantes.

Alterar senha


Se você abrir o dispositivo para acesso público, é recomendável alterar a senha do Grafana.



Configuramos o sistema com o nome de usuário e a senha padrão admin admin . Para alterá-los, faça login no Grafana usando o botão no canto inferior esquerdo do painel. Você será solicitado a alterar a senha na primeira vez que efetuar login.

Personalização


O programa Grafana para o painel e os relatórios possui muitos parâmetros de configuração. Criamos um painel básico que mostra um gráfico e gráfico para cada uma das quatro opções de medição.



Você pode personalizar cada painel do Grafana passando o mouse sobre o título e passando para a edição. Eu recomendo brincar com as configurações - as alterações no painel não são salvas automaticamente; portanto, se você cometer um erro, basta recarregar a página e tudo voltará à sua forma original. Se você deseja salvar as alterações, clique em Salvar na parte superior do painel de controle e todas as configurações serão salvas no seu dispositivo.



Você também pode configurar os sensores. Por exemplo, no diagrama do manômetro, configuramos vários intervalos básicos e valores de texto em vez de números. Tudo isso muda ao seu gosto!

Habitação


Esses sensores são ideais para serem colocados em uma cabine meteorológica , que protege os sensores da luz solar e do calor irradiado. Se você controla o ambiente na sala, isso não é tão importante, mas se o sensor estiver instalado ao ar livre, seu posicionamento e proteção são importantes para obter leituras precisas.

Cabines de previsão do tempo estão à venda , mas podem ser bastante caras, portanto, considere as opções de bricolage .

O Thingiverse possui vários edifícios e cabines climáticas do BME680 .

Últimos pensamentos


Obrigado pela leitura! Se você decidir construir sua própria estação meteorológica com controle de qualidade do ar - conte-nos como tudo correu, que problemas surgiram. Idéias para o desenvolvimento do nosso projeto podem ser expressas nos fóruns .

Source: https://habr.com/ru/post/pt449484/


All Articles