Índice:

Estação meteorológica usando Raspberry Pi com BME280 em Python: 6 etapas
Estação meteorológica usando Raspberry Pi com BME280 em Python: 6 etapas

Vídeo: Estação meteorológica usando Raspberry Pi com BME280 em Python: 6 etapas

Vídeo: Estação meteorológica usando Raspberry Pi com BME280 em Python: 6 etapas
Vídeo: Raspberry Pi BME280 Weather Station Using Python and Flask 2024, Novembro
Anonim
Image
Image
Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo

é maith an scéalaí an aimir (O tempo é um bom contador de histórias)

Com o aquecimento global e os problemas de mudança climática, o padrão climático global está se tornando errático em nosso mundo, levando a uma série de desastres naturais relacionados ao clima (secas, temperaturas extremas, inundações, tempestades e incêndios florestais), uma estação meteorológica parece ser necessária mal em casa. Você aprende muito sobre eletrônica básica em um projeto de estação meteorológica usando um monte de peças e sensores baratos. É muito fácil de configurar e em nenhum momento você pode tê-lo.

Etapa 1: Conta de equipamento imperativo

Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo
Projeto de lei de equipamento imperativo

1. Um Raspberry Pi

Ponha as mãos em uma placa de Raspberry Pi. Raspberry Pi é um computador de placa única com Linux. O Raspberry Pi é realmente barato, pequeno e versátil, construído com um computador acessível e funcional para os alunos exercitarem noções básicas de programação e desenvolvimento de software.

2. Escudo I2C para Raspberry Pi

O INPI2 (adaptador I2C) fornece ao Raspberry Pi 2/3 uma porta I²C para uso com vários dispositivos I2C. Ele está disponível na DCUBE Store.

3. Sensor digital de umidade, pressão e temperatura, BME280

O BME280 é um sensor de umidade, pressão e temperatura com rápido tempo de resposta e alta precisão geral. Adquirimos este sensor na DCUBE Store.

4. Cabo de conexão I2C

Usamos o cabo I²C disponível aqui DCUBE Store.

5. Cabo micro USB

A fonte de alimentação do cabo micro USB é a escolha ideal para alimentar o Raspberry Pi.

6 Interpretar o acesso à Internet via EthernetCable / adaptador WiFi

O acesso à Internet pode ser habilitado por meio de um cabo Ethernet conectado a uma rede local e à Internet. Como alternativa, você pode se conectar a uma rede sem fio usando um dongle sem fio USB, que exigirá configuração.

7. Cabo HDMI (monitor e cabo de conectividade)

Qualquer monitor HDMI / DVI e qualquer TV devem funcionar como uma exibição para o Pi. Como alternativa, você pode acessar remotamente o Pi por meio de SSH, negando a necessidade de um monitor (somente para usuários avançados).

Etapa 2: Conexões de Hardware para Circuito

Conexões de Hardware para Circuito
Conexões de Hardware para Circuito
Conexões de Hardware para Circuito
Conexões de Hardware para Circuito

Faça o circuito de acordo com o esquema mostrado. Em geral, as conexões são muito simples. Mantenha a calma e siga as instruções e imagens acima, e você não terá problemas. Enquanto aprendíamos, nos aprofundamos no básico de eletrônica em relação ao conhecimento de hardware e software. Queríamos desenhar um esquema eletrônico simples para este projeto. Os esquemas eletrônicos são como projetos. Faça uma planta e siga o desenho cuidadosamente. Alguns conceitos básicos de eletrônica podem ser úteis aqui!

Conexão do Raspberry Pi e Escudo I2C

Primeiro, pegue o Raspberry Pi e coloque o escudo I²C nele. Pressione o escudo suavemente e concluímos esta etapa tão fácil quanto uma torta (veja a foto).

Conexão do Sensor e Raspberry Pi

Pegue o sensor e conecte o cabo I²C com ele. Certifique-se de que a saída I²C SEMPRE se conecte à entrada I²C. O mesmo deve ser seguido para o Raspberry Pi com a blindagem I²C montada sobre os pinos GPIO. Recomendamos o uso de cabos I²C, uma vez que elimina a necessidade de leitura de pinagens, soldas e mal-estar causado pelo menor deslize. Com este simples cabo plug and play, você pode instalar, trocar placas ou adicionar mais placas a um aplicativo com facilidade.

Nota: O fio marrom deve sempre seguir a conexão Terra (GND) entre a saída de um dispositivo e a entrada de outro dispositivo

Conectividade com a Internet é fundamental

Você tem duas opções aqui. Você pode conectar o Raspberry Pi à rede usando um cabo Ethernet ou usar um adaptador USB para WiFi para conectividade WIFI. De qualquer forma, desde que esteja conectado à internet você estará coberto.

Ligando o circuito

Conecte o cabo Micro USB ao conector de alimentação do Raspberry Pi. Dê um soco e voila! Nosso time é informação.

Conexão com a tela

Podemos ter o cabo HDMI conectado a um monitor ou a uma TV. Além disso, podemos acessar um Raspberry Pi sem conectá-lo a um monitor usando o acesso remoto. SSH é uma ferramenta útil para acesso remoto seguro. Você também pode usar o software PUTTY para isso. Esta opção é para usuários avançados, portanto, não a cobriremos em detalhes aqui.

É um método econômico se você não quiser gastar muito

Etapa 3: Programação Raspberry Pi em Python

Programação Raspberry Pi em Python
Programação Raspberry Pi em Python

O código Python para o sensor Raspberry Pi e BME280. Ele está disponível em nosso repositório Github.

Antes de prosseguir com o código, certifique-se de ler as instruções fornecidas no arquivo Leiame e configure seu Raspberry Pi de acordo com ele. Em pouco tempo você estará pronto para a configuração. Uma estação meteorológica é uma instalação, seja em terra ou no mar, com instrumentos e equipamentos de medição das condições atmosféricas para fornecer informações sobre as previsões do tempo e estudar o tempo e o clima.

O código está claramente à sua frente e da forma mais simples que você pode imaginar e você não deve ter problemas. Ainda pergunte se houver (mesmo que você saiba mil coisas, pergunte a alguém que sabe).

Você também pode copiar o código Python de trabalho para este sensor aqui.

# Distribuído com licença de livre arbítrio. # Use-o da maneira que quiser, com ou sem lucro, desde que se enquadre nas licenças das obras associadas. # BME280 # Este código foi desenvolvido para funcionar com o Mini Módulo BME280_I2CS I2C disponível em ControlEverything.com. #

import smbus

tempo de importação

# Pegue o ônibus I2C

bus = smbus. SMBus (1)

Endereço # BME280, 0x76 (118)

# Leia os dados de 0x88 (136), 24 bytes b1 = bus.read_i2c_block_data (0x76, 0x88, 24)

# Converta os dados

# Coeficientes temporais dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] se dig_T2> 32767: dig_T2 - = 65536 dig_T3 = b1 [5] * 256 + b1 [4] se dig_T3> 32767: dig_T3 - = 65536

# Coeficientes de pressão

dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] se dig_P2> 32767: dig_P2 - = 65536 dig_P3 = b1 [11] * 256 + b1 [10] se dig_P3 > 32767: dig_P3 - = 65536 dig_P4 = b1 [13] * 256 + b1 [12] se dig_P4> 32767: dig_P4 - = 65536 dig_P5 = b1 [15] * 256 + b1 [14] se dig_P5> 32767: dig_P5 - = 65536 dig_P6 = b1 [17] * 256 + b1 [16] se dig_P6> 32767: dig_P6 - = 65536 dig_P7 = b1 [19] * 256 + b1 [18] se dig_P7> 32767: dig_P7 - = 65536 dig_P8 = b1 [21] * 256 + b1 [20] se dig_P8> 32767: dig_P8 - = 65536 dig_P9 = b1 [23] * 256 + b1 [22] se dig_P9> 32767: dig_P9 - = 65536

Endereço # BME280, 0x76 (118)

# Leia os dados de 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1)

Endereço # BME280, 0x76 (118)

# Leia os dados de 0xE1 (225), 7 bytes b1 = bus.read_i2c_block_data (0x76, 0xE1, 7)

# Converta os dados

# Coeficientes de umidade dig_H2 = b1 [1] * 256 + b1 [0] se dig_H2> 32767: dig_H2 - = 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) se dig_H4> 32767: dig_H4 - = 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) se dig_H5> 32767: dig_H5 - = 65536 dig_H6 = b1 [6] se dig_H6> 127: dig_H6 - = 256

Endereço # BME280, 0x76 (118)

# Selecione o registro de controle de umidade, 0xF2 (242) # 0x01 (01) Umidade Oversampling = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # Endereço BME280, 0x76 (118) # Selecione o registro de medição de controle, 0xF4 (244) # 0x27 (39) Taxa de sobreamostragem de pressão e temperatura = 1 # Modo normal bus.write_byte_data (0x76, 0xF4, 0x27) # endereço BME280, 0x76 (118) # Selecione o registro de configuração, 0xF5 (245) # 0xA0 (00) Tempo de espera = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

tempo.sono (0,5)

Endereço # BME280, 0x76 (118)

# Leia os dados de 0xF7 (247), 8 bytes # Pressão MSB, Pressão LSB, Pressão xLSB, Temperatura MSB, Temperatura LSB # Temperatura xLSB, Umidade MSB, Umidade LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Converta os dados de pressão e temperatura em 19 bits

adc_p = ((dados [0] * 65536) + (dados [1] * 256) + (dados [2] e 0xF0)) / 16 adc_t = ((dados [3] * 65536) + (dados [4] * 256) + (dados [5] e 0xF0)) / 16

# Converta os dados de umidade

adc_h = dados [6] * 256 + dados [7]

# Cálculos de compensação de temperatura

var1 = ((adc_t) / 16384,0 - (dig_T1) / 1024,0) * (dig_T2) var2 = (((adc_t) / 131072,0 - (dig_T1) / 8192,0) * ((adc_t) /131072,0 - (dig_T1) / 8192,0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32

# Cálculos de compensação de pressão

var1 = (t_fino / 2,0) - 64000,0 var2 = var1 * var1 * (dig_P6) / 32768,0 var2 = var2 + var1 * (dig_P5) * 2,0 var2 = (var2 / 4,0) + ((dig_P4) * 65536,0) var1 = ((dig_P3) * var1 * var1 / 524288,0 + (dig_P2) * var1) / 524288,0 var1 = (1,0 + var1 / 32768,0) * (dig_P1) p = 1048576,0 - adc_p p = (p - (var2 / 4096,0)) * 6250,0 / var1 var1 = (dig_P9) * p * p / 2147483648,0 var2 = p * (dig_P8) / 32768,0 pressão = (p + (var1 + var2 + (dig_P7)) / 16,0) / 100

# Cálculos de compensação de umidade

var_H = ((t_fine) - 76800,0) var_H = (adc_h - (dig_H4 * 64,0 + dig_H5 / 16384,0 * var_H)) * (dig_H2 / 65536,0 * (1,0 + dig_H6 / 67108864,0 * var_H * (1,0 + dig_H3 / 67108864,0) * (1,0 + dig_H3 / 67108864,0))) umidade = var_H * (1,0 - dig_H1 * var_H / 524288,0) se umidade> 100,0: umidade = 100,0 umidade elif <0,0: umidade = 0,0

# Dados de saída para a tela

print "Temperatura em Celsius:%.2f C"% cTemp print "Temperatura em Fahrenheit:%.2f F"% fTemp print "Pressão:%.2f hPa"% pressure print "Umidade Relativa:%.2f %%"% umidade

Etapa 4: O Código de Execução

O Código de Execução
O Código de Execução

Agora, baixe (ou git pull) o código e abra-o no Raspberry Pi.

Execute os comandos para Compilar e Carregar o código no terminal e veja a saída no Display. Após alguns segundos, ele exibirá todos os parâmetros. Depois de se certificar de que tudo funciona bem, você pode desenvolver alguns mais interessantes.

Etapa 5: Utilização no mundo prático

O BME280 atinge alto desempenho em todas as aplicações que requerem medição de umidade e pressão. Essas aplicações emergentes são consciência de contexto, por exemplo, Detecção de pele, detecção de mudança de quarto, monitoramento de condicionamento físico / bem-estar, aviso sobre secura ou altas temperaturas, medição de volume e fluxo de ar, controle de automação residencial, controle de aquecimento, ventilação, ar condicionado (HVAC), Internet das coisas (IoT), Aprimoramento de GPS (por exemplo, Melhoria de tempo para a primeira correção, cálculo morto, detecção de declive), navegação interna (detecção de mudança de piso, detecção de elevador), navegação externa, aplicativos de lazer e esportes, previsão do tempo e indicação de velocidade vertical (aumento / redução Velocidade).

Etapa 6: Conclusão

Espero que este projeto inspire mais experimentação. Fazer uma estação meteorológica mais sofisticada pode envolver mais alguns sensores como pluviômetro, sensor de luz, anemômetro (velocidade do vento) etc. Você pode adicioná-los e alterar o código. Temos um vídeo tutorial no YouTube com o funcionamento básico do sensor I²C com Rasp Pi. É realmente incrível ver os resultados e o funcionamento das comunicações I²C. Verifique também. Divirta-se construindo e aprendendo! Por favor, deixe-nos saber o que você acha deste instrutível. Adoraríamos fazer algumas melhorias, se necessário.

Recomendado: