Índice:

Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4: 15 etapas (com imagens)
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4: 15 etapas (com imagens)

Vídeo: Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4: 15 etapas (com imagens)

Vídeo: Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4: 15 etapas (com imagens)
Vídeo: IoT Based Air Pollution Detecting System in Vehicles using Raspberry Pi Pico 2024, Dezembro
Anonim
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4
Um monitor de qualidade do ar IoT de baixo custo baseado no RaspberryPi 4

Santiago, Chile durante uma emergência ambiental de inverno tem o privilégio de morar em um dos países mais bonitos do mundo, mas infelizmente nem tudo são rosas. O Chile durante o inverno sofre muito com a contaminação do ar, principalmente devido a materiais particulados como poeira e smog.

Por causa do frio, no sul a contaminação do ar se deve principalmente a calefatores de madeira e em Santiago (a principal capital do centro do país) misto de indústrias, automóveis e sua situação geográfica única entre 2 enormes cadeias de montanhas.

Hoje em dia, a poluição do ar é um grande problema em todo o mundo e neste artigo iremos explorar como desenvolver um monitor de qualidade do ar caseiro barato, baseado em um Raspberry Pi. Se você estiver interessado em entender mais sobre a qualidade do ar, visite o projeto “Índice Mundial de Qualidade do Ar”.

Suprimentos

  • Raspberry Pi 4
  • 1SDS011 - Sensor de detecção de qualidade do ar a laser pm2.5 de alta precisão
  • Caixa de plástico

Etapa 1: Material Particulado (PM): O que é? Como ele entra no ar?

Matéria particulada (PM): o que é? Como ele entra no ar?
Matéria particulada (PM): o que é? Como ele entra no ar?

Então, para entender a poluição ou contaminação do ar, devemos estudar as partículas que estão relacionadas a isso, que também é conhecido como material particulado. Observando os gráficos da seção anterior, podemos observar que eles mencionaram PM2.5 e PM10. Vamos dar uma rápida visão geral disso.

PM significa material particulado (também chamado de poluição por partículas): o termo para uma mistura de partículas sólidas e gotículas líquidas encontradas no ar. Algumas partículas, como poeira, sujeira, fuligem ou fumaça, são grandes ou escuras o suficiente para serem vistas a olho nu. Outros são tão pequenos que só podem ser detectados com um microscópio eletrônico. As partículas vêm em uma ampla variedade de tamanhos. Partículas menores ou iguais a 10 micrômetros de diâmetro são tão pequenas que podem entrar nos pulmões, podendo causar sérios problemas de saúde. Dez micrômetros é menos do que a largura de um único fio de cabelo humano.

A poluição por partículas inclui partículas grossas de poeira (PM10): partículas inaláveis, com diâmetros que são geralmente de 10 micrômetros e menores. As fontes incluem operações de trituração ou trituração e poeira levantada por veículos nas estradas. Partículas finas (PM2,5): partículas finas inaláveis, com diâmetros que geralmente são 2,5 micrômetros e menores. Partículas finas são produzidas a partir de todos os tipos de combustão, incluindo veículos motorizados, usinas de energia, queima de lenha residencial, incêndios florestais, queima agrícola e alguns processos industriais. Você pode encontrar mais informações sobre o material particulado no site da EPA: Agência de Proteção Ambiental dos Estados Unidos

Etapa 2: Por que é importante se preocupar com essas partículas?

Por que é importante se preocupar com essas partículas?
Por que é importante se preocupar com essas partículas?

Conforme descrito por GERARDO ALVARADO Z. em seu trabalho na Universidade do Chile, estudos de episódios de alta poluição do ar no Vale do Meuse (Bélgica) em 1930, Donora (Pensilvânia) em 1948 e Londres em 1952 foram as primeiras fontes documentadas que relacionaram a mortalidade com contaminação por partículas (Préndez, 1993). Avanços na investigação dos efeitos da poluição do ar na saúde das pessoas determinaram que os riscos à saúde são causados por partículas inaláveis, dependendo de sua penetração e deposição em diferentes seções do sistema respiratório e da resposta biológica aos materiais depositados.

As partículas mais espessas, cerca de 5 µm, são filtradas pela ação conjunta dos cílios da passagem nasal e da mucosa que recobre a cavidade nasal e a traquéia. Partículas com diâmetro entre 0,5 e 5 µm podem ser depositadas nos brônquios e até mesmo nos alvéolos pulmonares, porém são eliminadas pelos cílios dos brônquios e bronquíolos após algumas horas. Partículas menores que 0,5 µm podem penetrar profundamente até se depositarem nos alvéolos pulmonares, permanecendo por semanas a anos, já que não há mecanismo de transporte mucociliar que facilite a eliminação. A figura a seguir mostra a penetração das partículas no sistema respiratório em função de seu tamanho.

Portanto, localizar os dois tipos de partículas (PM2,5 e PM10) são muito importantes e a boa notícia é que ambas são legíveis por um sensor simples e de custo acessível, o SDS011.

Etapa 3: O Sensor de Partículas - SDS011

O Sensor de Partículas - SDS011
O Sensor de Partículas - SDS011
O Sensor de Partículas - SDS011
O Sensor de Partículas - SDS011

O monitoramento da qualidade do ar é uma ciência bem conhecida e estabelecida, que começou na década de 80. Naquela época, a tecnologia era bastante limitada, e a solução utilizada para quantificar a poluição do ar era complexa e muito cara.

Felizmente, hoje em dia, com as tecnologias mais recentes e modernas, as soluções utilizadas para o monitoramento da Qualidade do Ar estão se tornando não só mais precisas, mas também mais rápidas na medição. Os dispositivos estão se tornando menores e custam muito mais acessíveis do que nunca.

Neste artigo, vamos nos concentrar em um sensor de partículas, que pode detectar a quantidade de poeira no ar. Enquanto a primeira geração foi capaz de detectar apenas a quantidade de opacidade, os sensores mais recentes como o SDS011 da INOVAFIT, um spin-off da Universidade de Jinan (em Shandong), agora podem detectar PM2.5 e PM10.

Com seu tamanho, o SDS011 é provavelmente um dos melhores sensores em termos de precisão e preço (menos de US $ 40,00). Especificações

  • Valores medidos: PM2.5, PM10
  • Faixa: 0-999,9 μg / m³
  • Tensão de alimentação: 5V (4,7-5,3V)
  • Consumo de energia (trabalho): 70mA ± 10mA
  • Consumo de energia (laser e ventilador em modo de espera): <4mA
  • Temperatura de armazenamento: -20 a + 60C
  • Temperatura de trabalho: -10 a + 50C
  • Umidade (armazenamento): máx. 90%
  • Umidade (trabalho): máx. 70% (condensação de vapor de água falsifica leituras)
  • Precisão: 70% para 0,3 μm e 98% para 0,5 μm
  • Tamanho: 71x70x23 mm
  • Certificação: CE, FCC, RoHS

O SD011 usa a placa de circuito impresso como uma das laterais do invólucro, permitindo reduzir seu custo. O diodo receptor é montado no lado do PCB (isto é obrigatório, pois qualquer ruído entre o diodo e o LNA deve ser evitado). O laser emissor é montado na caixa de plástico e conectado ao PCB por meio de um fio flexível.

Resumindo, o Nova Fitness SDS011 é um sensor de poeira a laser profissional. O ventilador montado no sensor suga o ar automaticamente. O sensor usa um princípio de dispersão de luz laser * para medir o valor das partículas de poeira suspensas no ar. O sensor fornece alta precisão e leituras confiáveis dos valores PM2.5 e PM10. Qualquer mudança no ambiente pode ser observada quase instantaneamente, tempo de resposta curto abaixo de 10 segundos. O sensor no modo padrão relata a leitura com um intervalo de 1 segundo.

* Princípio de dispersão a laser: A dispersão de luz pode ser induzida quando as partículas passam pela área de detecção. A luz espalhada é transformada em sinais elétricos e esses sinais serão amplificados e processados. O número e o diâmetro das partículas podem ser obtidos por análise porque a forma de onda do sinal tem certas relações com o diâmetro das partículas.

Etapa 4: Mas como o SDS011 pode capturar essas partículas?

Mas como o SDS011 pode capturar essas partículas?
Mas como o SDS011 pode capturar essas partículas?
Mas como o SDS011 pode capturar essas partículas?
Mas como o SDS011 pode capturar essas partículas?

Conforme comentado anteriormente, o princípio usado pelo SDS011 é o espalhamento de luz ou melhor, Dynamic Light Scattering (DLS), que é uma técnica em física que pode ser usada para determinar o perfil de distribuição de tamanho de pequenas partículas em suspensão ou polímeros em solução. No âmbito do DLS, as flutuações temporais são geralmente analisadas por meio da função de autocorrelação de fótons ou intensidade (também conhecida como espectroscopia de correlação de fótons ou espalhamento de luz quase elástica). Na análise no domínio do tempo, a função de autocorrelação (ACF) geralmente decai a partir do tempo de atraso zero, e dinâmicas mais rápidas devido a partículas menores levam a uma decorrelação mais rápida do traço de intensidade espalhada. Foi demonstrado que a intensidade ACF é a transformada de Fourier do espectro de potência e, portanto, as medições DLS podem ser igualmente bem realizadas no domínio espectral.

Acima, um hipotético espalhamento de luz dinâmico de duas amostras: partículas maiores (como PM10) na parte superior e partículas menores (como PM2.5) na parte inferior. E olhando dentro de nosso sensor, podemos ver como o princípio de dispersão de luz é implementado.

O sinal elétrico captado no diodo vai para o Amplificador de Baixo Ruído e daí é convertido em sinal digital por meio de um ADC e para fora por meio de um UART.

Para saber mais sobre o SDS011 em uma experiência científica real, dê uma olhada no trabalho de 2018 de Konstantinos et al, Desenvolvimento e Teste em Campo de Sistema Portátil de Baixo Custo para Monitoramento de Concentrações de PM2.5.

Etapa 5: Showtime

Altura de começar!
Altura de começar!
Altura de começar!
Altura de começar!

Vamos fazer uma pausa em toda essa teoria e nos concentrar em como medir partículas usando um Raspberry Pi e o sensor SDS011

A conexão HW é de fato muito simples. O sensor é vendido com um adaptador USB para fazer a interface dos dados de saída de seu UART de 7 pinos com um dos conectores USB padrão do RPi.

Pinagem SDS011:

  • Pino 1 - não conectado
  • Pino 2 - PM2.5: 0–999μg / m³; Saída PWM
  • Pino 3–5 V
  • Pino 4 - PM10: 0–999 μg / m³; Saída PWM
  • Pino 5 - GND
  • Pino 6 - RX UART (TTL) 3,3 V
  • Pino 7 - TX UART (TTL) 3,3 V

Para este tutorial, estou usando pela primeira vez, um Raspberry-Pi 4 novo em folha. Mas é claro, qualquer modelo anterior também funcionará bem.

Assim que você conectar o sensor em uma das portas USB RPi, automaticamente começará a ouvir o som de sua ventoinha. O ruído é um pouco irritante, então talvez você deva desconectá-lo e esperar até que tenha configurado o SW.

A comunicação entre o sensor e o RPi será por meio de um protocolo serial. Os detalhes sobre este protocolo podem ser encontrados aqui: Protocolo de controle do sensor de poeira a laser V1.3. Mas para este projeto, o melhor é usar uma interface python para simplificar o código a ser desenvolvido. Você pode criar sua própria interface ou usar algumas que estão disponíveis na internet, como a de Frank Heuer ou Ivan Kalchev. Usaremos o último, que é muito simples e funciona bem (você pode baixar o script sds011.py de seu GitHub ou meu).

O arquivo sds011.py deve estar no mesmo diretório onde você criou o seu script.

Durante a fase de desenvolvimento, usarei um Jupyter Notebook, mas você pode usar qualquer IDE que desejar (Thonny ou Geany, por exemplo, que fazem parte do pacote Raspberry Pi Debian são ambos muito bons).

Comece importando sds011 e criando sua instância de sensor. SDS011 fornece um método para ler do sensor usando um UART.

de importação sds011 *

sensor = SDS011 ("/ dev / ttyUSB0")

Você pode ligar ou desligar o sensor com o comando sleep:

pmt_2_5, pmt_10 = sensor.query ()

Aguarde pelo menos 10 segundos para estabilização antes das medições e pelo menos 2 segundos para iniciar uma nova (veja o código acima).

E isso é tudo que você precisa saber em termos de SW para usar o sensor. Mas vamos aprofundar no controle de qualidade do ar! No início deste artigo, se você já explorou os sites que fornecem informações sobre o quão bom ou ruim é o ar, você deve perceber que as cores estão associadas a esses valores. Cada cor é um índice. O mais conhecido deles é o AQI (Índice de Qualidade do Ar), usado nos Estados Unidos e em vários outros países.

Etapa 6: Índice de qualidade do ar - AQI

Índice de qualidade do ar - AQI
Índice de qualidade do ar - AQI
Índice de qualidade do ar - AQI
Índice de qualidade do ar - AQI
Índice de qualidade do ar - AQI
Índice de qualidade do ar - AQI

O AQI é um índice para relatar a qualidade do ar diária. Ele informa se o ar está limpo ou poluído e quais efeitos associados à saúde podem ser uma preocupação para você. O AQI enfoca os efeitos à saúde que você pode sentir dentro de algumas horas ou dias após respirar o ar poluído.

A EPA (Agência de Proteção Ambiental dos Estados Unidos), por exemplo, calcula o AQI não apenas para a poluição por partículas (PM2.5 e PM10), mas também para os outros poluentes do ar regulamentados pela Lei do Ar Limpo: ozônio no nível do solo, monóxido de carbono, dióxido de enxofre e dióxido de nitrogênio. Para cada um desses poluentes, a EPA estabeleceu padrões nacionais de qualidade do ar para proteger a saúde pública. Veja a imagem acima com os valores AQI, cores e mensagens de saúde associadas.

Como comentado antes esses valores e cores de AQI estão relacionados a cada um dos agentes poluentes, mas como associar os valores gerados pelos sensores a eles? Uma tabela adicional conecta todos como mostrado acima.

Mas é claro que não faz sentido usar tal mesa. No final, é um algoritmo matemático simples que faz o cálculo. Para isso, importaremos a biblioteca para conversão entre o valor AQI e a concentração do poluente (µg / m³): python-aqi.

Instale a biblioteca usando PIP e faça um teste (veja o código acima)

pip install python-aqi

E quanto ao Chile?

No Chile, um índice semelhante é usado, o ICAP: Índice de Qualidade do Ar para Partículas Respiráveis. O Decreto Supremo 59, de 16 de março de 1998, do Ministério da Secretaria Geral da Presidência da República, estabelece em seu art. 1º, alínea g), os níveis que definem o ICA para Material Particulado Respirável, ICAP.

Os valores irão variar linearmente entre as seções, o valor 500 corresponderia ao valor limite sobre o qual haveria risco para a população quando exposta a essas concentrações. De acordo com os valores do ICAP, foram estabelecidas categorias que qualificam os níveis de concentração de MP10 a que as pessoas foram expostas.

Etapa 7: Registro de dados localmente

Registro de dados localmente
Registro de dados localmente
Registro de dados localmente
Registro de dados localmente
Registro de dados localmente
Registro de dados localmente

Nesse ponto, temos todas as ferramentas para capturar os dados do sensor e também convertê-los para um “valor mais legível”, que é o índice AQI.

Vamos criar uma função para capturar esses valores. Capturaremos 3 valores em sequência tomando a média entre eles:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) para i no intervalo (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = round (pmt_2_5 / n, 1) pmt_10 = round (pmt_10 / n, 1) sensor.sleep (sleep = True) time.sleep (2) return pmt_2_5, pmt_10 Acima você pode ver o resultado do teste. Vamos também fazer uma função para converter os valores numéricos de PM no índice AQI

def conv_aqi (pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) retornar aqi_2_5, aqi_10 acima o resultado de um teste com ambas as funções. Mas o que fazer com eles? A resposta mais simples é criar uma função para salvar os dados capturados, salvando-os em um arquivo local

def save_log ():

com open ("SEU CAMINHO AQUI / air_quality.csv", "a") como log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". formato (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Com um único loop, você pode registrar dados em bases regulares em seu arquivo local, por exemplo, a cada minuto

enquanto (verdadeiro):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) try: save_log () exceto: print ("[INFO] Falha no registro de dados") time.sleep (60) A cada 60 segundos, o timestamp mais os dados serão “anexados” a este arquivo, como podemos ver acima.

Etapa 8: Enviando dados para um serviço em nuvem

Envio de dados para um serviço em nuvem
Envio de dados para um serviço em nuvem

Neste ponto, aprendemos como capturar dados do sensor, salvando-os em um arquivo CSV local. Agora, é hora de ver como enviar esses dados para uma plataforma IoT. Neste tutorial, usaremos ThingSpeak.com.

“ThingSpeak é um aplicativo de código aberto da Internet das Coisas (IoT) para armazenar e recuperar dados de coisas, usando APIs REST e MQTT. ThingSpeak permite a criação de aplicativos de registro de sensor, aplicativos de rastreamento de localização e uma rede social de coisas com atualizações de status.”

Primeiro, você deve ter uma conta no ThinkSpeak.com. Em seguida, siga as instruções para criar um canal, anotando o ID do canal e a chave de API de gravação.

Ao criar o canal, você também deve definir quais informações serão enviadas para cada um dos 8 campos, conforme mostrado acima (no nosso caso apenas 4 deles serão utilizados).

Etapa 9: Protocolo MQTT e conexão ThingSpeak

Protocolo MQTT e conexão ThingSpeak
Protocolo MQTT e conexão ThingSpeak

MQTT é uma arquitetura de publicação / assinatura desenvolvida principalmente para conectar largura de banda e dispositivos com restrição de energia em redes sem fio. É um protocolo simples e leve que roda em soquetes TCP / IP ou WebSockets. MQTT sobre WebSockets pode ser protegido com SSL. A arquitetura publicar / assinar permite que as mensagens sejam enviadas por push para os dispositivos clientes sem que o dispositivo precise consultar continuamente o servidor.

O broker MQTT é o ponto central de comunicação e é responsável por despachar todas as mensagens entre os remetentes e os destinatários legítimos. Um cliente é qualquer dispositivo que se conecta ao broker e pode publicar ou assinar tópicos para acessar as informações. Um tópico contém informações de roteamento para o broker. Cada cliente que deseja enviar mensagens as publica em um determinado tópico, e cada cliente que deseja receber mensagens se inscreve em um determinado tópico. O corretor entrega todas as mensagens com o tópico correspondente aos clientes apropriados.

ThingSpeak ™ tem um broker MQTT no URL mqtt.thingspeak.com e porta 1883. O broker ThingSpeak suporta publicação MQTT e assinatura MQTT.

Em nosso caso, usaremos o MQTT Publish.

Etapa 10: Publicação MQTT

Publicação MQTT
Publicação MQTT

Para começar, vamos instalar a biblioteca cliente Eclipse Paho MQTT Python, que implementa as versões 3.1 e 3.1.1 do protocolo MQTT

sudo pip install paho-mqtt

A seguir, vamos importar a biblioteca paho:

importar paho.mqtt.publish como publicar

e iniciar o canal Thingspeak e o protocolo MQTT. Este método de conexão é o mais simples e requer menos recursos do sistema:

channelID = "SEU ID DO CANAL"

apiKey = "SUA CHAVE DE ESCRITA" topic = "channels /" + channelID + "/ publish /" + apiKey mqttHost = "mqtt.thingspeak.com" Agora devemos definir nossa "carga útil"

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

E é isso! estamos prontos para começar a enviar dados para a nuvem! Vamos reescrever a função de loop anterior para incluir também a parte ThingSpeak dela.

# Enviando todos os dados para ThingSpeak a cada 1 minuto

while (True): pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" str (aqi_2_5) + "& field3 =" str (aqi_2_5) (pmt_10) + "& field4 =" + str (aqi_10) try: publish.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () exceto: print ("[INFO] Falha no envio de dados ") time.sleep (60) Se tudo estiver ok, você deve ver os dados também aparecem em seu canal em thingspeak.com conforme mostrado acima.

Etapa 11: o roteiro final

É importante ressaltar que o Jupyter Notebook é uma ferramenta muito boa para desenvolvimento e relatório, mas não para criar um código para colocar em produção. O que você deve fazer agora é pegar a parte relevante do código e criar um script.py e executá-lo em seu terminal.

Por exemplo, “ts_air_quality_logger.py”, que você deve executar com o comando:

python 3 ts_air_quality_logger.py

Este script, bem como o Jupyter Notebook e o sds011.py, podem ser encontrados em meu repositório em RPi_Air_Quality_Sensor.

Observe que este script é viável apenas para teste. O melhor é não usar atrasos dentro do loop final (que colocam o código em "pausa"), em vez de usar temporizadores. Ou para uma aplicação real, o melhor é não usar o loop, tendo o Linux programado para executar o script regularmente com o crontab.

Etapa 12: Levando o monitor para fora

Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora
Levando o monitor para fora

Depois que meu monitor de qualidade do ar Raspberry Pi estava funcionando, montei o RPi dentro de uma caixa de plástico, mantendo o sensor do lado de fora e o coloquei do lado de fora da minha casa.

Duas experiências foram feitas.

Etapa 13: Combustão de motor a gasolina

Combustão de motor a gasolina
Combustão de motor a gasolina
Combustão de motor a gasolina
Combustão de motor a gasolina

O sensor foi colocado a cerca de 1m do escapamento de gás da Lambretta e seu motor foi ligado. O motor funcionou por alguns minutos e desligou. Do arquivo de log acima, o resultado que obtive. Interessante confirmar que PM2.5 foi o particulado mais perigoso que resultou do motor.

Etapa 14: queima de madeira

Madeira queimando
Madeira queimando
Madeira queimando
Madeira queimando

Olhando para o arquivo de log, percebemos que os dados do sensor foram momentâneos "fora do intervalo" e não foram bem capturados pela biblioteca de conversão AQI, então eu mudo o código anterior para lidar com isso:

def conv_aqi (pmt_2_5, pmt_10):

try: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) retornar aqi_2_5, aqi_10 exceto: return 600, 600 Essa situação pode acontecer em campo, o que é normal. Lembre-se de que, na verdade, você deve usar a média móvel para realmente obter o AQI (pelo menos por hora, mas geralmente diariamente).

Etapa 15: Conclusão

Conclusão
Conclusão

Como sempre, espero que este projeto possa ajudar outras pessoas a encontrar seu caminho para o emocionante mundo da Eletrônica e da Ciência de Dados!

Para obter detalhes e o código final, visite meu depositário no GitHub: RPi_Air_Quality_Sensor.

Saludos do sul do mundo!

Vejo você no meu próximo instrutível!

Obrigado, Marcelo

Recomendado: