Índice:

Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem: 10 etapas
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem: 10 etapas

Vídeo: Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem: 10 etapas

Vídeo: Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem: 10 etapas
Vídeo: Webinar: Da concepção de um projeto IoT a nuvem utilizando a metodologia das 3 fases 2024, Novembro
Anonim
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem
Construir um sensor interno de qualidade do ar IoT, sem necessidade de nuvem

A qualidade do ar interno ou externo depende de muitas fontes de poluição e também do clima.

Este dispositivo captura alguns dos parâmetros comuns e alguns dos mais interessantes usando 2 chips de sensor.

  • Temperatura
  • Umidade
  • Pressão
  • Gás Orgânico
  • Micro-Partículas

Os sensores usados aqui são o BME680 para obter os valores de temperatura, umidade, pressão e gases orgânicos e o PMS5003 para obter a densidade das micropartículas.

Ao usar a biblioteca HomeDing, é fácil construir um dispositivo que esteja conectado apenas à sua rede doméstica e que possa ser acessado e controlado por qualquer navegador da rede. Ele vem com uma seleção de Elementos que permitem usar os chips sensores mais comuns, dispositivos e outros serviços.

Ele também traz uma solução completa para hospedar um dispositivo interno do lado da web em vez de usar uma solução baseada em nuvem para exibir os dados do sensor e interagir com o dispositivo.

Suprimentos

Tudo que você precisa para construir este projeto é uma placa baseada em ESP8266 como a placa nodemcu e um conjunto de sensores para medir a qualidade do ar. A biblioteca HomeDing usada neste projeto suporta alguns dos chips sensores comuns para temperatura, umidade, pressão e qualidade. Aqui, o chip BMP680 é usado.

  • Um plugue USB e um cabo micro-usb para fonte de alimentação.
  • 1 placa nodemcu com a CPU ESP8266.
  • 1 placa de fuga do sensor BME680.
  • 1 sensor a laser de partículas de ar PM2,5 tipo PMS5003

É fácil trocar o sensor BME680 por um sensor DHT22, pois eles também são suportados pela biblioteca, entre muitos outros.

Etapa 1: preparar o ambiente Arduino para ESP8266

Prepare o ambiente Arduino para ESP8266
Prepare o ambiente Arduino para ESP8266
  1. Instale a versão mais recente do Arduino IDE (atualmente versão 1.8.2).
  2. Use o Board Manager para instalar o suporte esp8266. Uma instrução detalhada pode ser encontrada aqui:
  3. Configure as opções da placa para um NodeMCU 1.0 com sistema de arquivos SPIFFS de 1 MByte, conforme mostrado na captura de tela

Etapa 2: Incluir Bibliotecas Obrigatórias

Incluir Bibliotecas Necessárias
Incluir Bibliotecas Necessárias

A biblioteca HomeDing depende de algumas bibliotecas extras comuns para sensores e monitores funcionarem.

Ao instalar a biblioteca HomeDing, você verá um pop-up com essas bibliotecas necessárias que podem ser instaladas automaticamente conforme mostrado na imagem e é fácil instalar todas elas.

Às vezes (por motivos desconhecidos) a instalação das bibliotecas falha, então todas as bibliotecas necessárias precisam ser instaladas manualmente.

Mais detalhes sobre as bibliotecas necessárias podem ser encontrados no site de documentação em

Esta é a lista das bibliotecas necessárias atualmente:

  • Adafruit NeoPixel
  • LiquidCrystal_PCF8574.h
  • ESP8266 e ESP32 Oled Driver para exibição SSD1306
  • Codificador rotativo
  • Biblioteca de sensores DHT para ESPx
  • OneWire

O sensor a laser de partículas de ar PMS5003 se comunica usando um sinal de linha serial de 9600 baud. Este sinal é capturado usando a biblioteca SoftwareSerial que vem com a instalação das ferramentas ESP8266. Certifique-se de não ter uma versão mais antiga instalada como biblioteca.

Etapa 3: personalizar o esboço de exemplo padrão

Personalize o esboço de exemplo padrão
Personalize o esboço de exemplo padrão

O exemplo padrão já inclui alguns dos sensores mais comuns como elementos, portanto, apenas algumas configurações serão necessárias.

Isso se aplica ao sensor BME680 que é compatível com o Elemento BME680.

O sensor PMS5003 é menos comum e precisa ser ativado incluindo o elemento PMS no firmware. Isso é feito definindo #define HOMEDING_INCLUDE_PMS na seção de registro de elemento do esboço

#define HOMEDING_INCLUDE_BME680 # define HOMEDING_INCLUDE_PMS

Para simplificar a adição do novo dispositivo à rede, você pode adicionar o SSID e a frase secreta do WiFi doméstico no arquivo secrets.h próximo ao arquivo de esboço standard.ino. Mas você também pode usar o WiFi Manager integrado para adicionar o dispositivo à rede sem esta configuração codificada.

Agora tudo relacionado à implementação do esboço está feito e o firmware pode ser compilado e carregado.

Etapa 4: Faça o upload da IU da web

O exemplo padrão vem com uma pasta de dados que contém todos os arquivos da IU da web.

Antes de fazer upload desses arquivos, você pode adicionar os arquivos env.json e config.json que podem ser encontrados neste artigo, pois isso tornará as coisas mais fáceis.

O conteúdo desses arquivos é o que torna o dispositivo IoT especial e se comportando como um sensor de qualidade do ar. É explicado em detalhes nesta história.

Use o utilitário de upload de arquivo ESP8266 e faça upload de todos os arquivos. É necessário reinicializar para ativar a configuração.

Etapa 5: adicionar o sensor BME680

Adicione o sensor BME680
Adicione o sensor BME680
Adicione o sensor BME680
Adicione o sensor BME680
Adicione o sensor BME680
Adicione o sensor BME680

O sensor BME680 está se comunicando com a placa usando o barramento I2C.

Como isso é possivelmente compartilhado com outras extensões, como outros sensores ou monitores, é configurado no nível do dispositivo em env.json junto com o nome da rede do dispositivo. Aqui está uma amostra extraída das configurações do dispositivo e I2C:

"dispositivo": {

"0": {"name": "airding", "description": "Air Quality Sensor",… "i2c-scl": "D2", "i2c-sda": "D1"}}

Na placa de ensaio você pode ver os cabos de conexão ao sensor: 3,3V = vermelho, GND = preto, SCL = amarelo, SDA = azul

A configuração para BME680 pode ser usada em config.json:

"bme680": {

"bd": {"endereço": "0x77", "tempo de leitura": "10s"}}

Adicionaremos as ações mais tarde.

Para testar a configuração, basta usar um navegador e abrir https://airding/board.htm e você verá os valores reais do sensor exibidos e eles serão atualizados a cada 10 segundos:

Etapa 6: adicionar o sensor PMS5003

Adicione o Sensor PMS5003
Adicione o Sensor PMS5003

Eu não tenho um sensor com um conector amigável para protoboard, então eu tive que cortar um dos conectores no cabo usando meu ferro de solda para conectá-lo diretamente à placa nodemcu. Você pode ver ainda nas fotos finais.

A energia para este sensor deve ser retirada do Vin, que normalmente é alimentado pelo barramento USB. GND é o mesmo, mas também está disponível ao lado do pino Vin.

Os dados do sensor são transferidos em um formato serial padrão de 9600 baud, de modo que os pinos rx e tx e o tempo de leitura precisam ser configurados:

"pms": {

"pm25": {"descrição": "sensor de partículas pm25", "pinrx": "D6", "pintx": "D5", "tempo de leitura": "10s"}}

Adicionaremos as ações mais tarde.

Para testar a configuração novamente, basta reiniciar o dispositivo e usar um navegador e abrir https://airding/board.htm e você verá o valor pm35 real do sensor exibido e eles serão atualizados a cada 10 segundos, mas este valor é normalmente não mudando com freqüência.

Você pode obter valores mais altos colocando uma luz de vela ao lado do sensor, pois uma vela produz muitas dessas partículas.

Agora você pode colocar tudo em uma boa caixa porque todas as outras configurações e até mesmo atualizações de software podem ser feitas remotamente.

Etapa 7: Adicionar alguns recursos de rede

A seguinte extração de configuração em env.json está permitindo

  • atualizando o firmware pelo ar
  • permite detectar a rede usando o protocolo de rede SSDP e recupera a hora atual de um servidor ntp.

{

… "Ota": {"0": {"port": 8266, "passwd": "123", "description": "Ouça atualizações OTA 'over the air'"}}, "ssdp": {"0 ": {" Fabricante ":" seunome "}}," ntptime ": {" 0 ": {" readtime ":" 36h "," zona ": 2}}}

Você deve ajustar o fuso horário de acordo com sua localização. Em caso de dúvida, você pode usar o site https://www.timeanddate.com/ para obter a compensação do UTC / GMT. "2" é ideal para o verão na Alemanha.

Você também pode ajustar a senha do ota depois de ler as instruções sobre o modo de salvar na documentação em

Após uma reinicialização, você pode encontrar o dispositivo de transmissão na rede e, após obter uma resposta do servidor ntp, a hora local estará disponível.

Etapa 8: Adicionando alguns registros

Apenas os valores reais podem não ser suficientes para que mais alguns elementos possam ser usados.

Para esta história, o elemento Log e o Elemento NPTTime são usados para registrar o histórico dos valores do sensor em um arquivo de log e o cartão de IU da Web para esse elemento pode exibi-lo como um gráfico.

A configuração a seguir cria os 2 elementos de log para gás e partículas:

{

"log": {"pm": {"descrição": "Log de pm25", "nome do arquivo": "/pmlog.txt", "tamanho do arquivo": "10000"}, "aq": {"descrição": " Registro da qualidade do gás "," nome do arquivo ":" /aqlog.txt "," tamanho do arquivo ":" 10000 "}}}

Etapa 9: Ações

Ações
Ações

Agora precisamos transferir os valores reais para os elementos de log usando ações. As ações estão usando uma notação de URL para passar um kay e um valor para o elemento de destino. Muitos elementos suportam ações de emissão em certos eventos que acontecem, como a captura de um novo valor de sensor.

As ações são configuradas no elemento que emite ações 2 entradas são necessárias:

  • O evento pms / p25 onvalue envia o valor real para o elemento log / pm usando uma ação de valor.
  • O evento bme680 / bd ongas envia o valor real para o elemento log / pm usando uma ação de valor.

{

"pms": {"pm25": {… "onvalue": "log / pm? value = $ v"}}, "bme680": {"bd": {… "ongas": "log / aq? value = $ v "}}}

Agora todos os elementos estão configurados.

Etapa 10: Imagens e arquivos de configuração

Imagens e arquivos de configuração
Imagens e arquivos de configuração
Imagens e arquivos de configuração
Imagens e arquivos de configuração
Imagens e arquivos de configuração
Imagens e arquivos de configuração

Aqui estão algumas fotos do meu sensor de qualidade do ar IoT final.

Os arquivos de configuração para download precisam ser renomeados para *.json (não.txt) antes de serem carregados.

Links e referências

  • Repositório de código-fonte do HomeDing:
  • Documentação:
  • Exemplo padrão:
  • Elemento BME680:
  • Elemento PMS:
  • Elemento de registro:
  • Elemento NtpTime:

Recomendado: