Introdução
Unindo todo o conhecimento em Micropython que foi construído até agora, podemos criar 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 o fornecimento de informações precisas sobre as condições climáticas em locais específicos.
Estação Meteorológica
Montagem da placa
Para esse projeto vamos precisar de:
- 1 x Raspberry Pi Pico
- 1 x Protoboard
- 1 x Cabo micro USB
- 1 x Sensor DHT11
- 1 x Sensor BMP180
- 1 x Sensor MQ-135
- 1 x Sensor de chuva
- 1 x Protoboard
- 1 x Resistor de 10 kΩ
- Jumpers
Utilizando a protoboard, conecte o pino GND do Raspberry Pi Pico à linha de terra da protoboard usando um jumper a partir do pino 38 da placa Pico. Da mesma forma, alimente a proto conectando o pino VCC do Pico à linha de alimentação da protoboard através de um jumper a partir do pino 36.
Para realizar a montagem correta, confira o mapa de pinos da Pico na Figura 2.
Figura 2 – Raspberry Pi Pico pinout.
Após isso, um a um conecte os sensores ao Raspberry Pi Pico.
Assim, pegue o DHT11 e insira-o na protoboard. Ele possui quatro terminais:
- O terminal 1 será conectado a linha de alimentação da protoboard
- O terminal 2 deve ser conectado a uma entrada digital, nós escolhemos o pino 6 (GP4). Além disso, um resistor de 10 kΩ deve ser inserido no pino 2 e também deve ser conectado ao VCC
- O terminal 3 não será utilizado
- E o terminal 4 deve ser conectado a linha do GND (terra) da protoboard
Já 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 protoboard, respectivamente;
- O pino SCL do sensor BMP180 deve ser conectado ao pino SCL da Raspberry Pi Pico, aqui optamos por utilizar o GP1;
- O SDA deve ser conectado ao pino SDA da Raspberry Pi Pico, aqui optamos por utilizar o GP0.
O MQ135 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 protoboard, 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 Raspberry Pi Pico, aqui optamos por utilizar o GP22.
Por fim, 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 protoboard, respectivamente;
- O pino A0 do sensor de chuva não será utilizado nesta aplicação;
- O pino D0 do sensor deve ser conectado a uma das entradas digitais da Raspberry Pi Pico, aqui optamos por utilizar o GP15.
Figura 3 – Montagem do projeto com componentes físicos.
Programa
Utilizando o Thonny IDE, vamos iniciar importando as bibliotecas “machine” e “utime” para poder acessar os pinos da placa e para adicionar atrasos ao programa. Não há necessidade de importar toda a biblioteca “machine”, então dela vamos importar apenas o I2C e o Pin. Além disso, importamos a biblioteca dht e bmp180 para utilizar os sensores de mesmo nome.
Neste primeiro momento vamos indicar a que pinos os sensores estão conectados e os demais detalhes para que eles operem corretamente.
from machine import I2C, Pin
import utime
import dht
from bmp180 import BMP180
#configuração do sensor DHT11
dht = dht.DHT11(machine.Pin(4))
#configuração do sensor mq135
mq135= Pin(22,Pin.IN)
#configuração do sensor BMP180
i2c =I2C(id=0, scl=Pin(1), sda=Pin(0), freq=10000)
bmp180 = BMP180(i2c)
bmp180.oversample = 2
bmp180.sealevel = 101325
#configuração do sensor de chuva
sensor_chuva= Pin(15,Pin.IN)Em seguida, no loop principal, Primeiro chamamos a função “.measure()” para realizar a leitura do sensor, depois atribuímos às variáveis “h” e “t” os valores de umidade e temperatura lidos, respectivamente. Onde a temperatura é coletada em Celsius e a umidade em porcentual.
De maneira análoga, chame as funções do sensor bmp180 para obter a pressão e altitude do local. Em seguida, definimos que quando o sensor detectar algo uma mensagem será exibida no shell informando que algum gás foi detectado, do contrário uma mensagem certificando a normalidade do ar será mostrada.
Por último, definimos que se o valor lido pelo sensor for 1 significa que não está chovendo (lembrando que esse sensor considera a ausência de chuva em nível lógico alto) e o led deve ficar apagado. Por outro lado, se o valor lido indicar presença de chuva, o LED é aceso e uma mensagem é exibida, informando que está chovendo.
A verificação dos sensores será feita a cada 5 segundos. Abaixo temos o código completo utilizado:
from machine import I2C, Pin
import utime
import dht
from bmp180 import BMP180
#configuração do sensor DHT11
dht = dht.DHT11(machine.Pin(4))
#configuração do sensor mq135
mq135= Pin(22,Pin.IN)
#configuração do sensor BMP180
i2c =I2C(id=0, scl=Pin(1), sda=Pin(0), freq=10000)
bmp180 = BMP180(i2c)
bmp180.oversample = 2
bmp180.sealevel = 101325
#configuração do sensor de chuva
sensor_chuva= Pin(15,Pin.IN)
while True:
dht.measure()
h = dht.humidity()
t = dht.temperature()
p = bmp180.pressure
altitude = bmp180.altitude
print("----- Dados coletados -----")
print("Umidade: ")
print(h)
print("Temperatura: ")
print(t)
print("Pressão: ")
print(p)
print("Altitude: ")
print(altitude)
if mq135.value() == 1:
print("Não foi detectada a presença de gases incomuns")
else:
print("Foi detectada a presença de gases incomuns")
if sensor_chuva.value():
print("Não está chovendo")
else:
print("Está chovendo")
print("-------------------------")
utime.sleep(5)Conclusão
Utilizando componentes acessíveis e facilmente disponíveis, como o DHT11, BMP180, MQ135 e um sensor de chuva, foi possível criar nossa própria estação meteorológica caseira.
Através da conexão e configuração desses sensores, fomos capazes de medir temperatura, umidade, pressão atmosférica, qualidade do ar e detectar chuva. A programação do microcontrolador nos permitiu coletar, processar e exibir esses dados de maneira organizada e compreensível.
É importante lembrar que este projeto pode ser expandido e personalizado ainda mais, adicionando mais sensores, conectando-se à Internet das Coisas (IoT) ou criando alertas personalizados com base nas condições climáticas. As possibilidades são infinitas.










