- Configuración de trabajo y ThingSpeak:
- Diagrama de circuito:
- Configuración de Raspberry Pi y programa Python:
La humedad, la temperatura y la presión son tres parámetros básicos para construir cualquier estación meteorológica y medir las condiciones ambientales. Anteriormente hemos construido una mini estación meteorológica usando Arduino y esta vez estamos ampliando la estación meteorológica con Raspberry Pi. Este proyecto basado en IoT tiene como objetivo mostrar los parámetros actuales de humedad, temperatura y presión en la pantalla LCD y en el servidor de Internet utilizando Raspberry Pi, lo que la convierte en una estación meteorológica Raspberry Pi. Puede instalar esta configuración en cualquier lugar y puede monitorear las condiciones climáticas de ese lugar desde cualquier parte del mundo a través de Internet, no solo mostrará los datos actuales sino que también puede mostrar los valores pasados en forma de gráficos.
Hemos utilizado el sensor de humedad y temperatura DHT11 para detectar la temperatura y el módulo de sensor de presión BM180 para medir la presión barométrica. Este termómetro en escala Celsius y medidor de humedad en escala de porcentaje muestra la temperatura ambiente y la humedad a través de una pantalla LCD y la presión barométrica se muestra en milibares o hPa (hectopascal). Todos estos datos se envían al servidor ThingSpeak para su monitoreo en vivo desde cualquier parte del mundo a través de Internet. Verifique el video de demostración y el programa Python, que se encuentran al final de este tutorial.
Configuración de trabajo y ThingSpeak:
Este proyecto basado en IoT tiene cuatro secciones. En primer lugar, el sensor DHT11 detecta los datos de humedad y temperatura y el sensor BM180 mide la presión atmosférica. En segundo lugar, Raspberry Pi lee la salida del módulo sensor DHT11 utilizando el protocolo de un solo cable y la salida del sensor de presión BM180 utilizando el protocolo I2C y extrae los valores de ambos sensores en un número adecuado en porcentaje (humedad), escala Celsius (temperatura), hectoPascal o milibar (presión). En tercer lugar, estos valores se envían al servidor ThingSpeak mediante el uso de Wi-Fi incorporado de Raspberry Pi 3. Y finalmente ThingSpeak analiza los datos y los muestra en forma de gráfico. También se utiliza una pantalla LCD para mostrar estos valores localmente.
ThingSpeak proporciona una muy buena herramienta para proyectos basados en IoT. Al utilizar el sitio web de ThingSpeak, podemos monitorear nuestros datos y controlar nuestro sistema a través de Internet, utilizando los canales y páginas web proporcionados por ThingSpeak. ThingSpeak 'recopila' los datos de los sensores, 'analiza y visualiza' los datos y 'actúa' desencadenando una reacción. Ya hemos explicado en detalle cómo enviar datos a ThingSpeak, puede consultar allí. Aquí explicamos brevemente cómo utilizar ThingSpeak para esta estación meteorológica Raspberry Pi.
Primero debe crear una cuenta en el sitio web de ThingSpeak y crear un 'Nuevo canal' en ella. En el nuevo canal debe definir algunos campos para los datos que desea monitorear, como en este proyecto crearemos tres campos para los datos de Humedad, Temperatura y Presión.
Ahora haga clic en la pestaña 'Claves API' y guarde las claves API de escritura y lectura, aquí solo estamos usando la clave de escritura. Debe copiar esta clave en la variable 'clave' en el Código.
Después, haga clic en 'Importar / Exportar datos' y copie la URL de solicitud GET de actualización de canal de información, que es:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Ahora necesitamos esta 'URL de solicitud de obtención de feeds' en nuestro código Python para abrir "api.thingspeak.com" y luego enviar datos usando esta solicitud de feeds como cadena de consulta. Y antes de enviar datos, el usuario debe ingresar los datos de temperatura, humedad y presión en esta cadena de consulta utilizando variables en el programa, verifique el Código al final de este artículo.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (presión)
El funcionamiento de DHT11 se basa en una comunicación en serie de un solo cable para obtener datos de DHT11. Aquí hemos utilizado la biblioteca AdaFruit DHT11 para interconectar DHT11 con Raspberry Pi. Aquí, Raspberry Pi recopila los datos de humedad y temperatura de DHT11 y la presión atmosférica del sensor BMP180 y luego los envía a una pantalla LCD de 16x2 y al servidor ThingSpeak. ThingSpeak muestra los datos en forma de gráfico como se muestra a continuación:
Puede obtener más información sobre el sensor DHT11 y su interfaz con Arduino aquí.
Diagrama de circuito:
Configuración de Raspberry Pi y programa Python:
Estamos usando el lenguaje Python aquí para el Programa. Antes de codificar, el usuario debe configurar Raspberry Pi. Puede consultar nuestros tutoriales anteriores para Comenzar con Raspberry Pi e Instalar y configurar Raspbian Jessie OS en Pi.
En primer lugar, necesitamos instalar los archivos de la biblioteca de sensores Adafruit Python DHT para ejecutar este proyecto en Raspberry Pi. Para hacer esto, debemos seguir los 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
Después de esto, el usuario debe habilitar Raspberry Pi I2C ingresando a la configuración del software RPi también:
sudo raspi-config
Luego vaya a 'Opciones avanzadas', seleccione 'I2C' y 'Habilitarlo'.
La programación parte de este proyecto juega un papel muy importante para realizar todas las operaciones. En primer lugar, incluimos todas las bibliotecas necesarias, iniciamos variables y definimos pines para LCD y DHT11.
import sys import RPi.GPIO como GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA……………..
En def main) (: función, por debajo de código se utiliza para enviar los datos al servidor y mostrarlo a través de la pantalla LCD, de forma continua en el tiempo de bucle.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (presión) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (presión) print finalURL s = urllib2.urlopen (finalURL); imprimir humi + "" + temp + "" + presionar sobre () tiempo.sueño (10)
Para LCD, la función def lcd_init () se usa para inicializar LCD en modo de cuatro bits, la función def lcdcmd (ch) se usa para enviar comandos a LCD, la función def lcddata (ch) se usa para enviar datos a LCD y def lcdstring ) se utiliza para enviar una cadena de datos a la pantalla LCD. Puede verificar todas estas funciones en el Código que se proporciona a continuación.
La función def readDHT () dada se utiliza para leer el sensor DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
def readBmp180 La función se utiliza para leer la presión del sensor BM180. El sensor BM180 también puede dar temperatura, pero aquí solo lo hemos usado para calcular la presión.
def readBmp180 (addr = deviceAdd): valor = bus.read_i2c_block_data (addr, regCall, 22) # Leer datos de calibración # Convertir datos de bytes a valores de palabra AC1 = convert1 (valor, 0) AC2 = convert1 (valor, 2) AC3 = convert1 (valor, 4) AC4 = convert2 (valor, 6)……………………..
Entonces, esta es la estación meteorológica básica de Raspberry Pi, puede extenderla aún más para medir varios parámetros relacionados con el clima, como la velocidad del viento, la temperatura del suelo, la iluminancia (lux), la lluvia, la calidad del aire, etc.