Índice:

Sistema de monitoramento do clima interno baseado em Raspberry Pi: 6 etapas
Sistema de monitoramento do clima interno baseado em Raspberry Pi: 6 etapas

Vídeo: Sistema de monitoramento do clima interno baseado em Raspberry Pi: 6 etapas

Vídeo: Sistema de monitoramento do clima interno baseado em Raspberry Pi: 6 etapas
Vídeo: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, Novembro
Anonim
Sistema de monitoramento de clima interno baseado em Raspberry Pi
Sistema de monitoramento de clima interno baseado em Raspberry Pi

Leia este blog e construa seu próprio sistema para que possa receber alertas quando seu quarto estiver muito seco ou úmido.

O que é um sistema de monitoramento de clima interno e por que precisamos de um?

Os sistemas de monitoramento de clima interno fornecem uma visão rápida das principais estatísticas relacionadas ao clima, como temperatura e umidade relativa. Poder ver essas estatísticas e receber alertas em seu telefone quando o quarto estiver muito úmido ou seco pode ser muito útil. Usando os alertas, você pode realizar ações rápidas necessárias para obter o máximo conforto no ambiente, ligando o aquecedor ou abrindo as janelas. Neste projeto, veremos como usar o Simulink para:

1) trazer estatísticas climáticas (temperatura, umidade relativa e pressão) do Sense HAT para o Raspberry Pi

2) exibir dados medidos na matriz 8x8 LED do Sense HAT

3) projetar um algoritmo para decidir se a umidade interna é 'boa', 'ruim' ou 'feia'.

4) registrar os dados na nuvem e enviar um alerta se os dados forem categorizados como 'Feio' (muito úmido ou seco).

Suprimentos

Raspberry Pi 3 Modelo B

Chapéu Raspberry Pi Sense

Etapa 1: software necessário

Necessário software
Necessário software

Você precisa de MATLAB, Simulink e Add-Ons selecionados para acompanhar e construir seu próprio sistema de monitoramento de clima interno.

Abra o MATLAB com acesso de administrador (clique com o botão direito no ícone do MATLAB e selecione Executar como administrador). Selecione Add-Ons na barra de ferramentas do MATLAB e clique em Get Add-Ons.

Pesquise aqui os pacotes de suporte com seus nomes listados abaixo e "Adicione".

uma. Pacote de suporte MATLAB para hardware Raspberry Pi: adquira entradas e envie saídas para placas Raspberry Pi e dispositivos conectados

b. Pacote de Suporte Simulink para Hardware Raspberry Pi: execute modelos Simulink em placas Raspberry Pi

c. RPi_Indoor_Climate_Monitoring_System: exemplos de modelos necessários para este projeto

Nota - Durante a instalação, siga as instruções na tela para configurar seu Pi para funcionar com MATLAB e Simulink.

Etapa 2: leve os dados do sensor para Raspberry Pi usando o Simulink

Traga dados do sensor para Raspberry Pi usando Simulink
Traga dados do sensor para Raspberry Pi usando Simulink

Para quem não está familiarizado com o Simulink, é um ambiente de programação gráfica usado para modelar e simular sistemas dinâmicos. Depois de projetar seu algoritmo no Simulink, você pode gerar código automaticamente e incorporá-lo a um Raspberry Pi ou outro hardware.

Digite o seguinte na janela de comando do MATLAB para abrir o primeiro modelo de exemplo. Usaremos este modelo para trazer dados de temperatura, pressão e umidade relativa para o Raspberry Pi.

> rpiSenseHatBringSensorData

Os blocos Sensor de pressão LPS25H e Sensor de umidade HTS221 são da biblioteca Sense HAT em Pacote de suporte Simulink para bibliotecas de hardware Raspberry Pi.

Os blocos de escopo são da biblioteca Sinks nas bibliotecas Simulink. Para garantir que seu modelo está configurado corretamente, clique no ícone de engrenagem em seu modelo Simulink. Navegue até Implementação de hardware> Configurações da placa de hardware> Recursos de hardware de destino.

Observação - Você não precisa configurar se seguiu as instruções de configuração ao instalar o Simulink Support Package para Raspberry Pi. O endereço do dispositivo é preenchido automaticamente com o do seu Pi.

Certifique-se de que o endereço do dispositivo aqui corresponda ao endereço IP que você ouve quando o seu Pi é inicializado. Você pode ter que religar seu Pi com um fone de ouvido conectado ao conector para ouvir o endereço do dispositivo.

Clique em OK e pressione o botão Executar conforme mostrado abaixo. Certifique-se de que o seu Pi esteja fisicamente conectado ao PC via cabo USB ou na mesma rede Wi-Fi que o seu PC.

Quando você pressiona o botão Executar no modo Externo, o Simulink gera automaticamente o código C equivalente ao seu modelo e baixa um executável para o Raspberry Pi. Ambos os blocos de escopo são configurados para abrir assim que o modelo começar a ser executado. Quando o Simulink terminar de implantar o código no Raspberry Pi, você verá os dados de pressão, temperatura e umidade relativa nos osciloscópios, conforme mostrado abaixo.

Observação - O código está sendo executado no Raspberry Pi e você está visualizando os sinais reais por meio dos blocos de escopo do Simulink, como faria se tivesse um osciloscópio conectado ao próprio hardware. O valor da temperatura dos dois sensores está ligeiramente diferente um do outro. Sinta-se à vontade para escolher aquele que reflete mais de perto a temperatura real da sua sala e usá-lo nas seções subsequentes. Em todos os testes com o Sense HAT que tínhamos, os valores de temperatura do Sensor de Umidade HTS221 estavam mais próximos da temperatura real da sala. Com isso, vimos os fundamentos de como trazer os dados do sensor do Sense HAT para o Raspberry Pi.

Etapa 3: Exibir dados do sensor na matriz de LED 8x8

Exibir dados do sensor na matriz de LED 8x8
Exibir dados do sensor na matriz de LED 8x8
Exibir dados do sensor na matriz de LED 8x8
Exibir dados do sensor na matriz de LED 8x8

Nesta seção, veremos como a parte de exibição visual deste projeto foi adicionada ao último modelo. Os elementos Sense HAT que estão sendo usados nesta seção são o sensor de umidade (para obter a umidade relativa e a temperatura), o sensor de pressão, a matriz de LED e o joystick. O joystick é usado para selecionar qual sensor queremos exibir.

Para abrir o próximo modelo de exemplo, digite o seguinte na janela de comando do MATLAB.

> rpiSenseHatDisplay

O bloco Joystick é da biblioteca Sense HAT. Isso nos ajuda a trazer os dados do joystick para o Raspberry Pi, assim como os blocos do sensor de pressão e umidade fizeram no exemplo anterior. Por enquanto, estamos usando o bloco Test Comfort para exibir 'bom' (quando o valor do bloco é 1) na matriz de LED. Ele exibirá 'ruim' quando o valor do bloco for 2 ou 'feio' quando o valor for 3 ou 4. Na próxima seção, veremos o algoritmo real que decide se a umidade interna é boa, ruim ou feia. Vamos explorar o bloco Seletor clicando duas vezes nele. Os blocos de função MATLAB são usados para integrar o código MATLAB em seu modelo Simulink. Neste caso, estamos trazendo SelectorFcn fornecido abaixo.

função [valor, estado] = SelectorFcn (JoyStickIn, pressão, umidade, temperatura, ihval)

JoyStickCount persistente

if isempty (JoyStickCount)

JoyStickCount = 1;

fim

se JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

se JoyStickCount == 6

JoyStickCount = 1;

fim

fim

mudar JoyStickCount

caso 1% Exibir temperatura em C

valor = temp;

Estado = 1;

caso 2% Exibir pressão em atm

valor = pressão / 1013,25;

Estado = 2;

case 3% Exibir umidade relativa em%

valor = umidade;

Estado = 3;

case 4% Exibir temperatura em F

valor = temp * (9/5) +32;

Estado = 4;

case 5% Display bom / ruim / feio

valor = ihval;

Estado = 5;

caso contrário,% não exibe / exibe 0

valor = 0;

Estado = 6;

fim

As declarações switch-case geralmente são usadas como um mecanismo de controle de seleção. Em nosso caso, queremos que a entrada do joystick seja o controle de seleção e selecione os próximos dados a serem exibidos sempre que o botão do joystick for pressionado. Para isso, configuramos um loop if que incrementa a variável JoyStickCount a cada pressionamento de botão (o valor de JoyStickIn é 1 se houver um pressionamento de botão). No mesmo loop, para garantir que estamos apenas alternando entre as cinco opções fornecidas acima, adicionamos outra condição que redefine o valor da variável para 1. Usando isso, selecionamos qual valor será exibido na matriz de LED. O caso 1 será o padrão, pois definimos JoyStickCount para começar em 1, e isso significa que a matriz de LED exibirá a temperatura em Celsius. A variável State é usada pelo bloco de dados Scroll para entender qual valor do sensor está sendo exibido no momento e qual unidade deve ser exibida. Agora que sabemos como selecionar o sensor certo para exibição, vamos ver como a exibição real funciona.

Exibindo caracteres e números

Para exibir na matriz Sense HAT LED, criamos matrizes 8x8 para:

1) todos os números (0-9)

2) todas as unidades (° C, A,% e ° F)

3) ponto decimal

4) alfabetos das palavras bom, ruim e feio.

Essas matrizes 8x8 foram usadas como entrada para o bloco 8x8 RGB LED Matrix. Este bloco acende os LEDs correspondentes aos elementos da matriz com valor 1, conforme mostrado abaixo.

Rolando o Texto

O bloco de dados Scroll em nosso modelo rola através de strings que podem ter até 6 caracteres de comprimento. O valor de 6 foi escolhido por ser a string mais longa que produziremos neste projeto, por exemplo 23,8 ° C ou 99,1 ° F. Observe que aqui ° C é considerado um caractere. A mesma ideia pode ser estendida para rolar strings de outros comprimentos também.

Aqui está um-g.webp

www.element14.com/community/videos/29400/l/gif

Para exibir uma sequência de 6 caracteres cada na matriz 8x8, precisamos de uma imagem de tamanho 8x48 no total. Para exibir uma string com no máximo 4 caracteres, precisaremos criar uma matriz 8x32. Agora vamos ver toda a inação pressionando o botão Executar. A exibição padrão na matriz de LED é o valor da temperatura em ° C. O bloco Scope mostrará o estado e o valor do bloco Seletor. Pressione o botão do joystick no Sense HAT e segure por um segundo para verificar se o valor muda para a próxima saída do sensor e repita esse processo até atingir o valor de estado 5. Para observar a mudança do algoritmo em todos os casos de categorização de umidade interna, altere o valor do bloco Test Comfort para qualquer número entre 1 e 4. Observe como alterar o valor de um bloco no modelo Simulink altera imediatamente a maneira como o código se comporta no hardware. Isso pode ser útil em situações em que se deseja alterar o comportamento do código a partir de um local remoto. Com isso, vimos os elementos-chave por trás do aspecto de visualização do sistema de monitoramento de clima. Na próxima seção, aprenderemos como completar nosso sistema de monitoramento de clima interno.

Etapa 4: Projete um algoritmo em Simulink para decidir se a umidade interna é 'boa', 'ruim' ou 'feia'

Projete um algoritmo em Simulink para decidir se a umidade interna é 'boa', 'ruim' ou 'feia'
Projete um algoritmo em Simulink para decidir se a umidade interna é 'boa', 'ruim' ou 'feia'

Para entender se sua sala é muito úmida / seca ou para saber qual nível de umidade interna é considerado confortável, existem vários métodos. Usando este artigo, estabelecemos uma curva de área para conectar a umidade relativa interna e as temperaturas externas conforme mostrado acima.

Qualquer valor de umidade relativa nesta área significa que sua sala está em um ambiente confortável. Por exemplo, se a temperatura externa for de -30 ° F, qualquer valor de umidade relativa abaixo de 15% é aceitável. Da mesma forma, se a temperatura externa for 60 ° F, qualquer umidade relativa abaixo de 50% é aceitável. Para categorizar a umidade interna em conforto máximo (bom), conforto médio (ruim) ou muito úmido / seco (feio), você precisa da temperatura externa e da umidade relativa. Vimos como trazer umidade relativa para o Raspberry Pi. Então, vamos nos concentrar em trazer a temperatura externa. Digite o seguinte na janela de comando do MATLAB para abrir o modelo:

> rpiOutdoorWeatherData

O bloco WeatherData é usado para trazer a temperatura externa de sua cidade (em K) usando https://openweathermap.org/. Para configurar este bloco, você precisa de uma chave de API do site. Depois de criar sua conta gratuita neste site, vá para a página de sua conta. A guia Chaves de API mostrada abaixo fornece a chave.

O bloco WeatherData precisa da entrada do nome da cidade em um formato específico. Visite esta página e insira o nome da sua cidade e, em seguida, o símbolo de vírgula seguido por 2 letras para indicar o país. Exemplos - Natick, US e Chennai, IN. Se a pesquisa retornar um resultado para sua cidade, use-o no bloco WeatherData nesse formato específico. Caso sua cidade não esteja disponível, use uma cidade vizinha cujas condições meteorológicas sejam mais próximas das suas. Agora clique duas vezes no bloco WeatherData e insira o nome da cidade e a chave API do site.

Pressione Executar neste modelo Simulink para verificar se o bloco pode trazer a temperatura da sua cidade para o Raspberry Pi. Agora vamos ver o algoritmo que decide se a umidade interna é boa, ruim ou feia. Digite o seguinte na janela de comando do MATLAB para abrir o próximo exemplo:

> rpisenseHatIHval

Você deve ter notado que o bloco Test Comfort do modelo anterior está faltando e um novo bloco chamado FindRoom Comfort está fornecendo o ihval para o bloco Seletor. Clique duas vezes neste bloco para abrir e explorar.

Estamos usando o bloco WeatherData para trazer a temperatura externa. O subsistema Limites de Umidade representa o gráfico Umidade Relativa vs. Temperatura Externa que vimos acima. Dependendo da temperatura externa, ele emitirá qual deve ser o valor limite máximo de umidade. Vamos abrir o bloco de funções DecideIH MATLAB clicando duas vezes nele.

Se o valor de umidade relativa ultrapassar o limite máximo de umidade, o sinal será positivo com base na forma como estamos subtraindo os dados, o que significa que a sala está muito úmida. Estamos gerando um 3 (feio) para este cenário. A razão por trás do uso de números em vez de strings é que é fácil exibi-los em gráficos e criar alertas. O resto das classificações na função MATLAB são baseadas em critérios arbitrários que criamos. Quando a diferença é inferior a 10 é categorizado como conforto máximo e quando é inferior a 20 é conforto médio e acima disso é muito seco. Sinta-se à vontade para rodar este modelo e verificar o nível de conforto do seu quarto.

Etapa 5: registrar os dados climáticos internos e os dados categorizados na nuvem

Registrar dados climáticos internos e dados categorizados na nuvem
Registrar dados climáticos internos e dados categorizados na nuvem

Nesta próxima seção, veremos como registrar dados na nuvem. Para abrir este exemplo, digite o seguinte na janela de comando do MATLAB.

> rpiSenseHatLogData

Neste modelo, a parte de exibição do modelo de exemplo anterior é removida propositalmente, pois não precisamos que o sistema de monitoramento mostre as estatísticas ao registrar dados e enviar alertas. Estamos usando o ThingSpeak, uma plataforma IoT de código aberto gratuito que inclui análises MATLAB, para o aspecto de registro de dados. Escolhemos ThingSpeak porque existem maneiras diretas de programar Raspberry Pi e outras placas de hardware de baixo custo para enviar dados para ThingSpeak usando Simulink. O bloco ThingSpeak Write é do Simulink Support Package para a biblioteca de Hardware Raspberry Pi e pode ser configurado usando a Write API Key do seu canal ThingSpeak. Instruções detalhadas sobre como criar o canal são fornecidas abaixo. Para registrar dados continuamente na nuvem, você deseja que seu Pi funcione independentemente do Simulink. Para isso, você pode pressionar o botão “Implementar no hardware” em seu modelo Simulink.

Crie seu próprio canal ThingSpeak

Aqueles que não possuem uma conta podem se inscrever no site ThingSpeak. Se você tiver uma conta do MathWorks, terá automaticamente uma conta do ThingSpeak.

  • Depois de fazer o login, você pode criar um canal acessando Canais> Meus canais e clicando em Novo canal.
  • Tudo que você precisa é um nome para o canal e nomes para os campos que você irá registrar como mostrado abaixo.
  • A opção Mostrar localização do canal precisa da latitude e longitude de sua cidade como entrada e pode mostrar a localização dentro do canal em um mapa. (Os valores de exemplo usados aqui são para Natick, MA)
  • Em seguida, pressione Salvar canal para terminar de criar seu canal.

4a. Alertar se os dados forem categorizados como 'feios'

Para completar nosso sistema de monitoramento de clima interno, devemos ver como receber alertas com base em dados de nuvem. Isso é fundamental porque, sem ele, você não será capaz de realizar as ações necessárias para alterar o nível de conforto na sala. Nesta seção, veremos como receber uma notificação em seu telefone sempre que os dados da nuvem indicarem que a sala está muito úmida ou seca. Faremos isso usando dois serviços: IFTTT Webhooks e ThingSpeak TimeControl. IFTTT (significa Se isso, então aquilo) é um serviço online que pode manipular eventos e disparar ações com base nos eventos.

Etapas para configurar webhooks IFTTT

Nota: experimente em um computador para obter melhores resultados.

1) Crie uma conta em ifttt.com (se você não tiver uma) e crie um Novo miniaplicativo na página Meus miniaplicativos.

2) Clique no botão azul "este" para selecionar o serviço de acionamento.

3) Pesquise e escolha Webhooks como o serviço.

4) Selecione Receber uma solicitação da Web e forneça um nome para o evento.

5) Selecione criar gatilho.

6) Selecione "aquele" na próxima página e pesquise por notificações.

7) Selecione enviar uma notificação do aplicativo IFTTT.

8) Insira o nome do evento que você criou na Etapa 2 do IFTTT e selecione criar ação.

9) Continue até chegar à última etapa, revise e pressione Concluir.

10) Vá para https://ifttt.com/maker_webhooks e clique no botão Configurações na parte superior da página.

11) Vá para o URL na seção Informações da conta.

12) Insira o nome do seu evento aqui e clique em ‘Testá-lo’.

13) Copie o URL na última linha para uso futuro (com a chave).

Passos para configurar o ThingSpeak TimeControl

1) Selecione Aplicativos> Análise MATLAB

2) Clique em Novo na próxima página e escolha Trigger Email do IFTTT e clique em Criar.

As peças importantes aqui no código do modelo são:

ID do canal - digite o canal ThingSpeak que contém as informações de “valor de umidade interna”.

IFTTTURL - Insira o URL copiado da seção anterior Etapa 13.

readAPIKey - tecla Enter da seção ThingSpeak Channel. Action - aquela que atua no último valor. Altere-o para o seguinte para disparar alertas.

3) No site do ThingSpeak, clique em Apps> TimeControl.

4) Selecione Recorrente e escolha uma frequência de tempo.

5) Clique em Salvar controle de tempo.

Agora o MATLAB Analysis é executado automaticamente a cada meia hora e envia um gatilho para o serviço IFTTT Webhooks se o valor for maior ou igual a 3. Em seguida, o aplicativo de telefone IFTTT alertará o usuário com uma notificação, conforme mostrado no início desta seção.

Etapa 6: Conclusão

Com isso, vimos todos os aspectos importantes de como construir seu próprio sistema de monitoramento climático. Neste projeto, vimos como o Simulink pode ser usado para -

  • programe um Raspberry Pi para trazer dados do Sense HAT. Destaque - Visualize os dados no Simulink enquanto o código ainda está sendo executado no Raspberry Pi.
  • construir a exibição visual do sistema de monitoramento de clima interno. Destaque - Altere a maneira como seu código se comporta no hardware do Simulink.
  • projetar o algoritmo do sistema de monitoramento de clima interno.
  • registre os dados do Raspberry Pi na nuvem e crie alertas a partir dos dados registrados.

Quais são algumas das mudanças que você faria neste sistema de monitoramento de clima interno? Por favor, compartilhe suas sugestões por meio de comentários.

Recomendado: