Índice:
- Etapa 1: Materiais Usados
- Etapa 2: Montagem
- Etapa 3: usando o dispositivo
- Etapa 4: O Script BME280
- Etapa 5: o script BMP280
Vídeo: Estação meteorológica Inky_pHAT: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Gostaria de descrever aqui uma estação meteorológica baseada em Raspberry Pi Zero muito simples e compacta, que exibe os valores medidos por um sensor de temperatura / pressão / umidade BME280 em um visor de papel eletrônico / tinta eletrônica Pimoroni Inky pHAT. Para permitir a conexão dos sensores e do pHAT ao GPIO do Pi, coloquei um hacker Pimorini Pico HAT com dois headers fêmeas presos entre o GPIO e a tela. O dispositivo foi usado para conectar vários sensores, portanto, a versão BME280 descrita aqui é apenas um exemplo.
Ao contrário dos visores LCD, os visores e-ink mantêm a imagem mesmo se a alimentação for desligada. Portanto, eles são uma solução muito boa se você deseja exibir informações que são atualizadas apenas de vez em quando, especialmente para construir dispositivos de baixo consumo de energia. O principal benefício da versão monocromática / preta do Inky pHAT é que a atualização do visor leva apenas cerca de um segundo, em vez dos dez a quinze segundos exigidos pelas versões de três cores. Veja o filme.
A biblioteca Blinka da Adafruit permite executar o código do Circuit Python no Raspberry Pi, e as amostras do Circuit Python para uma ampla variedade de sensores estão disponíveis na Adafruit. Uma descrição detalhada de como instalar o Blinka e os códigos Circuit Python pode ser encontrada no site da Adafruit. As bibliotecas que testei até agora (BMP280, BME280, TSL2591, TCS34785, VEML7065, …) estavam funcionando muito bem, embora houvesse pequenos problemas em alguns dos códigos de exemplo.
BME280 é um sensor para medir temperatura, umidade e pressão atmosférica. Os breakouts do BMP280 estão disponíveis em muitos fornecedores, incluindo Adafruit, mas eu aqui estava usando uma versão chinesa barata. Esteja ciente de que eles estão usando endereços i2c diferentes (Adafruit: 0x77, outros: 0x76).
O breakout é conectado ao Pi por i2c, e a leitura do sensor é muito simples usando a biblioteca e o código de exemplo.
Etapa 1: Materiais Usados
Um Raspberry Pi Zero, com um cabeçalho masculino anexado. Mas qualquer versão do Raspberry Pi serviria.
Um Pimoroni Inky pHAT, versão preto / monocromático, 25 € | 22 £ | 20US $, na Pimoroni.
Um hacker Pimoroni Pico HAT, 2,50 € | 2 £, com dois cabeçalhos fêmeas anexados, um deles um cabeçalho de reforço com pinos mais longos. Eu construí duas versões diferentes, veja a descrição abaixo.
A breakout BME280, entrega AZ via Amazon.de @ 7,50 €, com cabeçalho anexado.
Cabos de jumper de alongamento
Opcional:
Um power pack USB, para aplicativos móveis
Uma caixa para o Pi ou o dispositivo (não mostrado aqui)
Etapa 2: Montagem
- Solda os cabeçalhos femininos para o hacker Pico HAT. Antes de soldar, verifique a orientação correta. Criei duas versões disso, para finalidades diferentes. Uma com a plataforma de reforço voltada para baixo colocada na linha da frente e uma plataforma normal, para cima / voltada para a linha de trás, e uma versão com a plataforma de reforço voltada para baixo na linha de trás, e uma plataforma de ângulo reto feminino na linha da frente. Veja as imagens. A primeira versão permite anexar e trocar sensores e cabos muito facilmente, enquanto a versão com o cabeçalho voltado para dentro permite encerrar Pi, sensor e Inky pHAT em um invólucro. Alternativamente, você pode soldar os cabos conectando GPIO e sensor diretamente ao hacker Pico HAT e / ou soldar o hacker Pico HAT diretamente aos pinos GPIO. Em qualquer caso, use a quantidade mínima de solda necessária.
- Solde a plataforma ao sensor, se necessário.
- Empilhe a unidade de hacker Pico HAT modificada no Pi e, em seguida, adicione o Inky pHAT. Se necessário, insira algum suporte, por exemplo Um bloco de espuma ou isolantes, para o Inky pHAT.
- Conecte os cabos e o sensor, usando as portas 3V, GND, SDA e SCL. Nem todos os sensores sobreviverão a 5V, portanto, verifique antes de conectá-los às portas de 5V.
- Instale a biblioteca Blinka e, em seguida, instale a biblioteca Circuit Python BME280 da Adafruit.
- Instale a biblioteca Inky pHAT da Pimoroni.
- Instale o código Python de exemplo descrito em uma etapa posterior e anexado a este instrutível.
- Execute o código.
Etapa 3: usando o dispositivo
Existem duas opções de uso do dispositivo.
O código mostrado aqui deve ser iniciado usando uma tela anexada, mas pode ser executado sem.
Com pequenas modificações no código, você pode usar o crontab para realizar medições em pontos de tempo definidos. Isso permitiria reduzir ainda mais o consumo de energia. Excelentes descrições de como usar o crontab podem ser encontradas em outros lugares.
Em conjunto com um pacote de energia, você pode construir um dispositivo móvel e usá-lo para medir as condições internas ou externas, na geladeira, na sauna, no umidificador, na adega, em um avião,….
Usando um Zero W, você pode não apenas exibir os valores na tela, mas também enviá-los a um servidor ou ao seu site via WLAN, conforme descrito em outro lugar.
Etapa 4: O Script BME280
Como mencionado antes, você precisa instalar as bibliotecas Adafruit Blinka e Circuit Python BME280, bem como a biblioteca Pimoroni Inky pHAT.
O código inicializa primeiro o sensor e o Inky pHAT, depois lê os valores de temperatura, pressão e umidade do sensor e os exibe na tela e no visor do e-ink. Usando o comando time.sleep (), as medições são feitas a cada minuto. Ajuste conforme necessário. Ao definir um parâmetro de idioma, você pode alterar o idioma usado para exibir os resultados.
Usando o visor Inky pHAT e-ink, você primeiro constrói a imagem a ser exibida na memória antes de finalmente ser transferida para a tela usando o comando inkyphat.show (). A biblioteca Inky pHAT está simplificando o processo, oferecendo comandos para desenhar e formatar texto, linhas, retângulos, círculos ou usar imagens de fundo.
Além dos valores medidos, o tempo de medição também é exibido.
Lembre-se de que o script, assim como as bibliotecas, são escritos em Python 3, portanto, abra e execute usando Py3 IDLE ou equivalente.
# Um script para o sensor de temperatura / pressão / umidade bme280 (versão não Adafruit) # e o pHAT inky - versão preta # # versão 01 de dezembro de 2018, Dr H # # Requer as bibliotecas Adafruit Blinka e Circuit Python BME280 # e Pimoroni Inky pHAT library import time import datetime import board import busio from adafruit_bme280 import Adafruit_BME280 from adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys from PIL import ImageFont inkyphat.set_colour ('black') # for b / w inky phat inky display 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Selecione a fonte padrão font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Selecione os dados da fonte padrão # lang = "DE" # definir o parâmetro de idioma, default ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, endereço = 0x76) # endereço i2c padrão (para Adafruit BMP280) 0x77 (padrão), 0x76 para fuga chinesa) # definir pressão de referência # necessária para al cálculo tituto, por favor ajuste. Valor padrão 1013,25 hPa # entrada manual: #reference_hPa = input ("Insira a pressão de referência em hPa:") # ou # definir a pressão no momento inicial como referência, por exemplo, para medições de altura relativa time.sleep (1) # espere um segundo antes da 1ª medição j = 0 pres_norm_sum = 0 enquanto j no intervalo (5): # faça cinco medições para definir o valor de referência pres_norm_sum = pres_norm_sum + bmp.pressure j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # define medição inicial como ponto de referência para habilitar medições de altura bmp.sea_level_pressure = float (reference_hPa) print () while True: # executa para sempre, modifique para versão crontab # medido valores t = bmp.temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # calculado pela biblioteca adafruit da pressão #timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # timestamp - data, formato EN ts0_DE =' {:% d.% m.% Y} '. format (ts) # timestamp - data, formato alemão ts1 =' {: % H:% M:% S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hig = "{0: 0.1f}". Format (h) alt="{0: 0.1f}". Format (a) tText = "Temp.:" pText_EN = "Pressão:" pText_DE = "Luftdruck:" h Text_EN = "Umidade:" hText_DE = "rel. LF: "aText_EN =" Altitude: "aText_DE =" Höhe üNN: "# exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = hText_DE: # padrão inglês ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # imprime valores para exibir print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hig, "%") print (aText, alt, "m") print () # imprime valores para Inky pHAT t1 = 5 # tab 1, primeira coluna, simplifica a otimização do layout t2 = 110 # tab 2, segunda coluna inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # write timestamp date inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # write timestamp time inkyphat.line ((t1, 25, 207, 25), 1, 3) # desenha uma linha inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + "° C"), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + "hPa"), inkyphat. PRETO, fonte2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hig + "%"), inkyphat. BLACK, font2) # exibir alternativamente a altura calculada # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # aguarde alguns segundos antes das próximas medições, +19 segundos por ciclo inkyphat.clear () # vazio Procedimento de exibição Inky pHAT, inkyphat.show () # silêncio para a versão crontab
Etapa 5: o script BMP280
O BMP280 é muito semelhante ao sensor BME280, mas mede apenas temperatura e pressão. Os scripts são muito semelhantes, mas você precisa de diferentes bibliotecas Circuit Python. Aqui, em vez da umidade, uma altura calculada, com base em uma pressão de referência, é exibida.
Em anexo você encontra o script.
Recomendado:
Estação meteorológica profissional usando ESP8266 e ESP32 DIY: 9 etapas (com imagens)
Estação meteorológica profissional usando ESP8266 e ESP32 DIY: LineaMeteoStazione é uma estação meteorológica completa que pode ter interface com sensores profissionais da Sensirion, bem como alguns componentes do instrumento Davis (pluviômetro, anemômetro). O projeto é destinado a uma estação meteorológica DIY, mas requer apenas o
Estação de Trabalho Eletrônica para Hobbyist - Estação De Trabalho Para Entusiastas Em Eletrônica: 10 etapas
Estação de Trabalho Eletrônica para Hobbyist - Estação De Trabalho Para Entusiastas Em Eletrônica: Atenciosamente Leitor e Hobbyist Eletrônica Nestas instruções apresento a construção de uma estação de trabalho para amadores eletrônicos, A estação contém as ferramentas e suportes comuns para trabalhar com circuitos eletrônicos: suporte giratório para ci impresso
Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)
Estação meteorológica de NaTaLia: Estação meteorológica com energia solar Arduino feito da maneira certa: após 1 ano de operação bem-sucedida em 2 locais diferentes, estou compartilhando meus planos de projeto de estação meteorológica movida a energia solar e explicando como ela evoluiu para um sistema que pode realmente sobreviver por muito tempo períodos de energia solar. Se você seguir
Estação meteorológica DIY e estação de sensor WiFi: 7 etapas (com fotos)
Estação meteorológica DIY e estação de sensor WiFi: Neste projeto, vou mostrar como criar uma estação meteorológica juntamente com uma estação de sensor WiFi. A estação sensora mede os dados locais de temperatura e umidade e os envia, via WiFi, para a estação meteorológica. A estação meteorológica exibe então t
Estação de energia do dormitório / Estação de carregamento de NiMH amplificado: 3 etapas
Central Elétrica do Dormitório / Estação de Carregamento de NiMH Souped Up: Eu tenho uma estação de energia uma bagunça. Eu queria condensar tudo o que é carregado em uma bancada e ter espaço para soldar / etc. Lista de coisas de poder: telefone celular (quebrado, mas carrega as baterias do meu telefone, então está sempre conectado e goteja chargi