Índice:

Monitoramento de temperatura e umidade usando Raspberry Pi: 6 etapas (com fotos)
Monitoramento de temperatura e umidade usando Raspberry Pi: 6 etapas (com fotos)

Vídeo: Monitoramento de temperatura e umidade usando Raspberry Pi: 6 etapas (com fotos)

Vídeo: Monitoramento de temperatura e umidade usando Raspberry Pi: 6 etapas (com fotos)
Vídeo: 20 Sensores Analógicos para com Raspberry Pi (INCRÍVEIS!!!) - Desafio Maker 2024, Novembro
Anonim
Monitoramento de temperatura e umidade usando Raspberry Pi
Monitoramento de temperatura e umidade usando Raspberry Pi
Monitoramento de temperatura e umidade usando Raspberry Pi
Monitoramento de temperatura e umidade usando Raspberry Pi

O verão está chegando, e quem não tem ar-condicionado deve estar preparado para controlar a atmosfera dentro de casa manualmente. Neste post, estou descrevendo a forma moderna de medir os parâmetros mais importantes para o conforto humano: temperatura e umidade. Esses dados coletados são enviados para a nuvem e processados lá.

Estou usando uma placa Raspberry Pi 1 e o sensor DHT22. Você pode fazer o mesmo em qualquer computador que tenha Internet, GPIO e Python. O sensor DHT11 mais barato também funciona bem.

Etapa 1: Preparando o Hardware

Preparando Hardware
Preparando Hardware
Preparando Hardware
Preparando Hardware

Vamos começar do início, já que eu não usei meu Raspberry Pi por um longo tempo.

Nós vamos precisar:

  • Placa Raspberry Pi (ou outra plataforma orientada para IoT).
  • Cartão SD ou microSD (dependendo da plataforma).
  • 5V / 1A via micro-USB.
  • Cabo LAN, que fornece conexão com a Internet.
  • Monitor HDMI, monitor RCA ou porta UART (para habilitar SSH).

O primeiro passo é baixar o Raspbian. Escolhi a versão Lite, pois vou usar SSH em vez de display. As coisas mudaram desde a última vez que fiz isso: agora existe um ótimo software de gravação chamado Etcher, que funciona perfeitamente e tem um design impressionante.

Depois que a gravação da imagem foi concluída, inseri o cartão SD no meu Pi, conectei os cabos LAN e de alimentação e, depois de um tempo, meu roteador registrou o novo dispositivo.

Etapa 2: Habilitando SSH

Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH

SSH está desabilitado por padrão. Posso usar o conversor UART-USB ou apenas conectar um monitor para acessar o shell e habilitar o SSH.

Depois de reiniciar, finalmente estou dentro. Primeiro, vamos atualizar:

sudo apt update && sudo apt upgrade -y

Agora vamos conectar este novo dispositivo à nuvem.

Etapa 3: Instalando Cloud4RPi

Instalando Cloud4RPi
Instalando Cloud4RPi

Decidi experimentar a plataforma de nuvem chamada Cloud4RPi, que é projetada para IoT.

De acordo com a documentação, precisamos dos seguintes pacotes para fazê-lo funcionar:

sudo apt instalar git python python-pip -y

A biblioteca cliente pode ser instalada em um único comando:

sudo pip install cloud4rpi

Agora precisamos de algum código de amostra para garantir que funcione.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e / minimal.py minimal.py && rmdir -re

Decidi executar o minimal.py, mas não gosto dos dados falsos. Felizmente, percebi uma maneira fácil de tornar os dados de diagnóstico reais neste exemplo. Adicione mais uma importação à seção de importações:

da importação rpi *

Em seguida, exclua essas funções que fornecem dados falsos (o rpi.py os define agora):

def cpu_temp ():

return 70 def ip_address (): return '8.8.8.8' def host_name (): return 'hostname' def os_name (): return 'osx'

Agora precisamos de um token, que permite ao Cloud4RPi vincular os dispositivos às contas. Para obter um, crie uma conta em cloud4rpi.io e clique no botão Novo dispositivo nesta página. Substitua a string _YOUR_DEVICE_TOKEN_ no arquivo minimal.py pelo token do seu dispositivo e salve o arquivo. Agora estamos prontos para o primeiro lançamento.

python minimal.py

Abra a página do dispositivo e verifique se os dados estão lá.

Agora vamos passar para os dados do mundo real.

Etapa 4: Conectando o Sensor

Conectando o Sensor
Conectando o Sensor

Nós vamos precisar:

  • Sensor de umidade DHT22 ou DHT11
  • Resistência de pull-up (5-10 KΩ)
  • Fios

O sensor DHT22 mede temperatura e umidade simultaneamente. O protocolo de comunicação não é padronizado, então não precisamos habilitá-lo no raspi-config - um simples pino GPIO é mais do que suficiente.

Para adquirir os dados, usarei a ótima biblioteca da Adafruit para sensores DHT, mas pode não funcionar como está. Certa vez, encontrei um estranho atraso constante no código, que não funcionava para o meu hardware e, depois de dois anos, minha solicitação de pull ainda estava pendente. Também mudei as constantes de detecção de placa porque meu Raspberry Pi 1 com BCM2835 foi surpreendentemente detectado como Raspberry Pi 3. Gostaria que fosse verdade … Portanto, recomendo usar meu garfo. Se você tiver algum problema com ele, tente o repositório original, talvez funcione para alguém, mas eu não sou um deles.

git clone https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Como a biblioteca é escrita em C, ela requer compilação, então você precisa dos pacotes build-essential e python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Enquanto os pacotes estão sendo instalados, conecte o DHT22 conforme mostrado na imagem.

E teste:

cd ~ python -c "importar Adafruit_DHT como d; imprimir d.read_retry (d. DHT22, 4)"

Se você vir algo como (39.20000076293945, 22.600000381469727), você deve saber que esta é a umidade em porcentagens e a temperatura em Celsius.

Agora, vamos montar tudo!

Etapa 5: envio de leituras de sensor para a nuvem

Envio de leituras de sensor para nuvem
Envio de leituras de sensor para nuvem

Vou usar o minimal.py como base e adicionar a interação DHT22 nele.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~ / cloud_dht22.py cp rpi.py ~ / rpi.py cd vi cloud_dht22.py

Como o DHT22 retorna temperatura e umidade em uma única chamada, eu os armazeno globalmente e os atualizo apenas uma vez em uma solicitação, supondo que o atraso entre eles seja de mais de 10 segundos. Considere o seguinte código, que adquire os dados DHT22:

importar Adafruit_DHT

temp, hum = Nenhum, Nenhum last_update = time.time () - 20 def update_data (): last_update global, hum, temp if time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time () def get_t (): update_data () return round (temp, 2) se temp não for None else None def get_h (): update_data () return round (hum, 2) se hum não for Nenhum outro Nenhum

Insira este código após as importações existentes e edite a seção de variáveis para que ela use as novas funções:

variáveis = {

'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'type ':' numérico ',' vincular ': cpu_temp}}

Aperte o botão vermelho para iniciar a transferência de dados:

python cloud_dht22.py

Então você pode verificar a página do dispositivo.

Pode deixar como está, mas prefiro ter um serviço para tudo. Isso garante que o script esteja sempre em execução. Criação de um serviço com o script totalmente automatizado:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Iniciando o serviço:

sudo service cloud4rpi start

E verificando:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - Cloud4RPi daemon Carregado: carregado (/lib/systemd/system/cloud4rpi.service; habilitado) Ativo: ativo (em execução) desde Quarta 2016-05-17 20:22:48 UTC; 1min atrás PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.pyMay 17 20:22:51 raspberrypi python [560]: Publishing iot -hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]} 17 de maio 20:22:53 raspberrypi python [560]: Publicação iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 de maio 20:22:53 raspberrypi python [560]: Publicação iot-hub / messages: {'type': 'sistema', 'ts': '2017-05-17T20….4'}}

Se tudo funcionar como esperado, podemos continuar e usar os recursos da plataforma Cloud4RPi para manipular os dados.

Etapa 6: gráficos e alarmes

Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes
Gráficos e Alarmes

Em primeiro lugar, vamos representar graficamente as variáveis para ver como elas mudam. Isso pode ser feito adicionando um novo painel de controle e colocando nele os gráficos necessários.

Outra coisa que podemos fazer aqui é definir um Alerta. Este recurso permite que você configure o intervalo seguro para uma variável. Assim que o intervalo é ultrapassado, ele envia uma notificação por e-mail. Na página de edição do Painel de controle, você pode alternar para Alertas e configurar um.

Em seguida, a umidade do meu quarto começou a diminuir rapidamente sem nenhum motivo perceptível, e o alarme logo seguiu.

Você pode usar o Cloud4RPi gratuitamente com qualquer hardware capaz de executar Python. Quanto a mim, agora sempre sei quando devo ligar o umidificador de ar, e posso até conectá-lo a um relé para controle remoto via Cloud4RPi. Estou preparado para o calor! Bem-vindo verão!

Recomendado: