- Configuração do Working e do ThingSpeak:
- Diagrama de circuito:
- Configuração do Raspberry Pi e programa Python:
Umidade, temperatura e pressão são três parâmetros básicos para construir qualquer estação meteorológica e medir as condições ambientais. Nós construímos anteriormente uma mini estação meteorológica usando Arduino e desta vez estamos estendendo a estação meteorológica com Raspberry Pi. Este projeto baseado em IoT visa mostrar os parâmetros atuais de umidade, temperatura e pressão no LCD, bem como no servidor de Internet usando Raspberry Pi, o que o torna uma estação meteorológica Raspberry Pi. Você pode instalar esta configuração em qualquer lugar e pode monitorar as condições meteorológicas daquele lugar de qualquer lugar do mundo através da internet, não só irá mostrar os dados atuais, mas também pode mostrar os valores anteriores na forma de gráficos.
Usamos o sensor de umidade e temperatura DHT11 para detectar a temperatura e o módulo sensor de pressão BM180 para medir a pressão barométrica. Este termômetro em escala Celsius e medidor de umidade em escala percentual exibe a temperatura ambiente e a umidade por meio de um display LCD e a pressão barométrica é exibida em milibar ou hPa (hectopascal). Todos esses dados são enviados ao servidor ThingSpeak para monitoramento ao vivo de qualquer lugar do mundo pela internet. Verifique o Vídeo de Demonstração e o Programa Python, fornecidos no final deste tutorial.
Configuração do Working e do ThingSpeak:
Este projeto baseado em IoT tem quatro seções. Em primeiro lugar, o sensor DHT11 detecta os dados de umidade e temperatura e o sensor BM180 mede a pressão atmosférica. Em segundo lugar, Raspberry Pi lê a saída do módulo do sensor DHT11 usando o protocolo de fio único e a saída do sensor de pressão BM180 usando o protocolo I2C e extrai os valores de ambos os sensores em um número adequado em porcentagem (umidade), escala Celsius (temperatura), hectoPascal ou milibar (pressão). Em terceiro lugar, esses valores são enviados para o servidor ThingSpeak usando o Wi-Fi embutido do Raspberry Pi 3. E, finalmente, o ThingSpeak analisa os dados e os mostra em forma de gráfico. Um LCD também é usado para exibir esses valores localmente.
ThingSpeak fornece uma ferramenta muito boa para projetos baseados em IoT. Ao usar o site ThingSpeak, podemos monitorar nossos dados e controlar nosso sistema pela Internet, usando os canais e páginas da Web fornecidos por ThingSpeak. ThingSpeak 'coleta' os dados dos sensores, 'analisa e visualiza' os dados e 'age' ao disparar uma reação. Nós explicamos anteriormente sobre como enviar dados para ThingSpeak em detalhes, você pode verificar aqui. Aqui, estamos explicando resumidamente como usar o ThingSpeak para esta estação meteorológica Raspberry Pi.
Primeiro você precisa criar uma conta no site ThingSpeak e criar um 'Novo canal' nele. No novo canal você deve definir alguns campos para os dados que deseja monitorar, como neste projeto vamos criar três campos para os dados de Umidade, Temperatura e Pressão.
Agora clique na guia 'Chaves de API' e salve as chaves de API Write e Read, aqui estamos apenas usando a chave Write. Você precisa copiar esta chave na variável 'chave' no Código.
Em seguida, clique em 'Importar / Exportar Dados' e copie o URL de Solicitação GET do Feed do Canal de Atualização, que é:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Agora precisamos deste 'Feed Get Request URL' em nosso código Python para abrir “api.thingspeak.com” e, em seguida, enviar dados usando este Feed Request como string de consulta. E antes de enviar os dados o usuário precisa inserir os dados de temperatura, umidade e pressão nesta consulta String usando variáveis no programa, verifique no Código ao final deste artigo.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressão)
O funcionamento do DHT11 é baseado na comunicação serial de fio único para buscar dados do DHT11. Aqui, usamos a biblioteca AdaFruit DHT11 para fazer a interface do DHT11 com o Raspberry Pi. Raspberry Pi aqui coleta os dados de umidade e temperatura do DHT11 e pressão atmosférica do sensor BMP180 e os envia para o LCD 16x2 e o servidor ThingSpeak. ThingSpeak exibe os dados na forma de gráfico como abaixo:
Você pode aprender mais sobre o sensor DHT11 e sua interface com o Arduino aqui.
Diagrama de circuito:
Configuração do Raspberry Pi e programa Python:
Estamos usando a linguagem Python aqui para o Programa. Antes de codificar, o usuário precisa configurar o Raspberry Pi. Você pode verificar nossos tutoriais anteriores de Introdução ao Raspberry Pi e Instalação e configuração do Raspbian Jessie OS no Pi.
Em primeiro lugar, precisamos instalar os arquivos da biblioteca de sensores DHT Adafruit Python para executar este projeto no Raspberry Pi. Para fazer isso, precisamos seguir os comandos dados:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Depois disso, o usuário precisa ativar o Raspberry Pi I2C acessando a configuração do software RPi também:
sudo raspi-config
Em seguida, vá para 'Opções avançadas', selecione 'I2C' e 'Ativar'.
A parte de programação deste projeto desempenha um papel muito importante para realizar todas as operações. Em primeiro lugar, incluímos todas as bibliotecas necessárias, inicializar variáveis e definir pinos para LCD e DHT11.
import sys import RPi.GPIO as GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA……………..
Em def main (): função, o código abaixo é usado para enviar os dados para o servidor e exibi-lo sobre o LCD, continuamente enquanto loop.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." enquanto True: (humi, temp) = readDHT () (pressão) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temperatura, pressão)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressão) imprimir finalURL s = urllib2.urlopen (finalURL); imprimir humi + "" + temp + "" + pressão s.close () tempo.sono (10)
Para LCD, a função def lcd_init () é usada para inicializar LCD no modo de quatro bits, a função def lcdcmd (ch) é usada para enviar comandos para LCD, a função def lcddata (ch) é usada para enviar dados para LCD e def lcdstring (Str ) A função é usada para enviar string de dados ao LCD. Você pode verificar todas essas funções em Código fornecido a seguir.
Dado def, a função readDHT () é usada para ler o Sensor DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
A função def readBmp180 é usada para ler a pressão do sensor BM180. O sensor BM180 também pode fornecer a temperatura, mas aqui nós o usamos apenas para calcular a pressão.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Ler dados de calibração # Converter dados de byte em valores de palavra AC1 = convert1 (valor, 0) AC2 = convert1 (valor, 2) AC3 = convert1 (valor, 4) AC4 = convert2 (valor, 6)……………………..
Portanto, esta é a Estação Meteorológica Raspberry Pi básica, você pode estendê-la ainda mais para medir vários parâmetros relacionados ao clima, como velocidade do vento, temperatura do solo, iluminância (lux), precipitação, qualidade do ar, etc.