FAVORITAR
FecharPlease login

Estação meteorológica com a Franzininho WiFi Lab01

Introdução

Unindo todo o conhecimento em MicroPython Franzininho WiFi Lab01 que foi construído até agora, criaremos uma estação meteorológica personalizada utilizando toda a variedade de sensores que já vínhamos utilizando: 

  • O DHT11 para medir temperatura e umidade, 
  • O BMP180 para medir pressão atmosférica e altitude, 
  • O MQ135 para avaliar a qualidade do ar,
  • O sensor de chuva para monitorar as condições climáticas.

Essa estação permitirá a coleta de dados meteorológicos em tempo real e exibi-los no display OLED.

Recursos necessários

Para iniciar o trabalho com os GPIOs, é essencial possuir o diagrama de pinos da placa à disposição, pois isso vai permitir que você identifique tanto os nomes quanto as funções associadas a cada um deles.

PinoRecurso
IO1LDR
IO2BT6
IO3BT5
IO4BT4
IO5BT3
IO6BT2
IO7BT1
IO8OLED_SDA
IO9OLED_SCL
IO10TFT_DC
IO11TFT_RES
IO12LED AZUL
IO13LED VERDE
IO14LED VERMELHO
IO15DHT11
IO17BUZZER
IO35TFT_SDA
IO36TFT_SCL
Tabela 1 – Franzininho WiFi Lab01 pinout

Usando os GPIOS para Conexão Externa

Para esse projeto precisaremos utilizar uma protoboard, pois os sensores MQ135, BMP180 e o sensor de chuva não estão integrados a Franzininho WiFi Lab01. Portanto, será necessário realizar a conexão por meio dos pinos GPIOs disponíveis na placa.

Começando pelo MQ135, este sensor possui 4 pinos: VCC, GND, A0 (saída analógica) e D0 (saída digital).  A identificação de cada um deles está impressa na parte inferior do sensor. Assim:

  • Os pinos VCC e GND devem ser conectados ao 3,3 V e GND da Franzininho WiFi Lab01, respectivamente;
  • O pino A0 do sensor MQ135 não será utilizado nesta aplicação;
  • O pino D0 do sensor MQ135 deve ser conectado a uma das entradas digitais da Franzininho WiFi Lab01.

O sensor de chuva possui 4 pinos: VCC, GND, A0 (saída analógica) e D0 (saída digital).  A identificação de cada um deles está impressa na parte inferior do sensor. Assim:

  • Os pinos VCC e GND devem ser conectados ao 3,3 V e GND da Franzininho WiFi Lab01, respectivamente;
  • O pino A0 do sensor de chuva não será utilizado nesta aplicação;
  • O pino D0 do sensor MQ135 deve ser conectado a uma das entradas digitais da Franzininho WiFi Lab01.

O BMP180 possui 4 pinos: VCC, GND, SCL (Serial Clock) e SDA (Dados seriais), em que os dois últimos são utilizados na comunicação I2C. A identificação de cada um deles está impressa na parte inferior do sensor. Assim:

  • Os pinos VCC e GND devem ser conectados ao 3,3 V e GND da Franzininho WiFi Lab01, respectivamente;
  • O pino SCL do sensor BMP180 deve ser conectado a um dos 5 pinos SCL da Franzininho WiFi Lab01;
  • O SDA deve ser conectado  a um dos 5 pinos SDA da Franzininho WiFi Lab01.

Ao terminar a montagem sua placa deverá ficar conforme mostra a figura abaixo. Na protoboard temos o sensor MQ135, o sensor de chuva e o BPM180, respectivamente.

Figura 1 – Montagem da placa – Sensores
Figura 2 – Montagem da placa – Destaque Franzininho WiFi LAB01

Código

Com a Franzininho WiFi Lab01 conectada ao seu computador, abra o Thonny e crie um novo arquivo contendo o código a seguir:

Vamos começar o código com “from machine import I2C, Pin“. Para poder acessar os pinos da placa e utilizar a comunicação I2C. A biblioteca “time” foi utilizada para adicionar pausas no código. Para utilizar o display OLED, importe a biblioteca “ssd1306”, que foi previamente instalada na sua placa, e a biblioteca “framebuf”. 

Também é preciso importar a biblioteca “dht” para trabalhar com o sensor DHT11 e a biblioteca BMP180 precisa ser instalada para ler os dados do sensor.

Conforme a tabela de pinagem, os pinos SCL e SDA da Franzininho WiFi Lab01 são os pinos 9 e 8, respectivamente. Assim, o I2C é configurado. Além disso, configuramos o display OLED, definindo a largura e altura do display, que são 128×64, e realizamos a associação ao I2C.

O display será utilizado para exibir, dentre outras coisas, a temperatura medida pelo sensor DHT11. No entanto, o display não é compatível com o símbolo de grau (º) de temperatura, por essa razão foi preciso criar o símbolo utilizando um bitmap:

Em seguida é feita as configurações do sensores. O sensor de chuva, conectado ao GPIO 2, foi devidamente configurado como entrada, enquanto o sensor DHT11, nativamente integrado à placa e associado ao pino 15, teve suas configurações ajustadas.

Para o BMP180, que utiliza a comunicação I2C para aquisição de dados, conectamos os pinos correspondentes e definimos parâmetros cruciais, como a precisão do dado lido (oversample_sett) e a referência da pressão ao nível do mar (baseline). 

Por fim, o sensor MQ135, vinculado ao GPIO 5, foi configurado como entrada, finalizando a preparação dos sensores para a coleta de dados:

Observe que não é problema o sensor e o display dividirem os mesmo pinos I2C, pois o protocolo I2C permite a comunicação de vários dispositivos em um mesmo barramento.

No loop principal, chamamos as funções dos sensores para obter as informações necessárias para a estação meteorológica. O sensor DHT11 é consultado para obter as leituras de temperatura e umidade, enquanto o BMP180 fornece os dados de pressão atmosférica e altitude.  Os valores obtidos pelo sensor BMP180 são arredondados para duas casas decimais, para permitir a exibição adequada no display. Posteriormente, os valores medidos são convertidos em string para ser possível exibir no display.

Com relação ao sensor de chuva e de gases, estabelecemos condições para as mensagens exibidas no display. No caso do MQ135, ao detectar um sinal, a mensagem “odor: detectado” é apresentada, indicando uma possível presença de substâncias gasosas específicas. Na ausência de sinal, a mensagem “odor: ausente” sinaliza a normalidade do ar.

Para o sensor de chuva, ao identificar um sinal, a mensagem “chuva: detectada” é exibida, informando a ocorrência de precipitação. Na ausência de sinal, a mensagem “chuva: ausente” é apresentada. 

Essas mensagens proporcionam uma visualização rápida e intuitiva das condições ambientais.

A verificação será feita a cada 5 segundos. Vale ressaltar que a configuração padrão do sensor é de nível lógico alto. Em outras palavras, quando não há detecção, a saída do sensor é 1 e, ao detectar algo, sua saída é alterada para 0.

A seguir, apresentamos o resultado dos testes realizados.

Figura 3 – Teste 1
Figura 4 – Teste 2
Figura 3 – Teste 3

Conclusão

Neste artigo, apresentamos em MicroPython estação meteorológica personalizada que nos permitiu integrar os sensores DHT11, BMP180, MQ135 e o sensor de chuva. Algo que nos possibilitou capturar uma gama abrangente de dados meteorológicos em tempo real.

Além disso, foi possível estabelecer mensagens claras no display OLED proporcionando alertas imediatos em relação a odores, chuva e condições de umidade, pressão e temperatura.

Outros artigos da série

<< Web Server com a Franzininho WiFi Lab01 e MicroPythonConstruindo um Servidor Web para sua Estação Meteorológica com a Franzininho WiFi Lab01 >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Software » Estação meteorológica com a Franzininho WiFi Lab01

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS