- Funcionament i configuració de ThingSpeak:
- Esquema de connexions:
- Configuració de Raspberry Pi i programa Python:
La humitat, la temperatura i la pressió són tres paràmetres bàsics per construir qualsevol estació meteorològica i mesurar les condicions ambientals. Anteriorment hem creat una mini estació meteorològica amb Arduino i, aquesta vegada, ampliem l’ estació meteorològica amb Raspberry Pi. Aquest projecte basat en IoT té com a objectiu mostrar els paràmetres actuals d’ humitat, temperatura i pressió a la pantalla LCD també al servidor d’Internet que utilitza Raspberry Pi, cosa que el converteix en una estació meteorològica de Raspberry Pi. Podeu instal·lar aquesta configuració a qualsevol lloc i controlar les condicions meteorològiques d’aquest lloc des de qualsevol lloc del món a través d’Internet, no només mostrarà les dades actuals, sinó que també mostrarà els valors passats en forma de gràfics.
Hem utilitzat un sensor d’humitat i temperatura DHT11 per detectar la temperatura i un mòdul de sensor de pressió BM180 per mesurar la pressió baromètrica. Aquest termòmetre a escala Celsius i el percentatge de mesurador d’humitat mostren la temperatura i la humitat ambientals mitjançant una pantalla LCD i la pressió baromètrica es mostra en mil·libres o hPa (hectopascal). Totes aquestes dades s’envien al servidor de ThingSpeak per a la supervisió en directe des de qualsevol lloc del món a través d’Internet. Comproveu el programa de demostració de vídeo i Python que es dóna al final d’aquest tutorial.

Funcionament i configuració de ThingSpeak:
Aquest projecte basat en l'IoT té quatre seccions. En primer lloc, el sensor DHT11 detecta les dades d’humitat i temperatura i el sensor BM180 mesura la pressió atmosfèrica. En segon lloc, Raspberry Pi llegeix la sortida del mòdul del sensor DHT11 mitjançant un protocol de cable únic i la sortida del sensor de pressió BM180 mitjançant el protocol I2C i extreu els dos valors dels sensors en un nombre adequat en percentatge (humitat), escala Celsius (temperatura), hectoPascal o millibar (pressió). En tercer lloc, aquests valors s’envien al servidor ThingSpeak mitjançant l’ús de Wi-Fi incorporat de Raspberry Pi 3. I finalment ThingSpeak analitza les dades i les mostra en forma de gràfic. També s’utilitza una pantalla LCD per mostrar aquests valors localment.

ThingSpeak proporciona una molt bona eina per a projectes basats en IoT. En utilitzar el lloc web de ThingSpeak, podem controlar les nostres dades i controlar el nostre sistema a través d’Internet, mitjançant els canals i les pàgines web de ThingSpeak. ThingSpeak "Recopila" les dades dels sensors, "Analitza i visualitza" les dades i "Actua" desencadenant una reacció. Anteriorment hem explicat detalladament l’enviament de dades a ThingSpeak, allà podeu comprovar-ho. Aquí expliquem breument com utilitzar ThingSpeak per a aquesta estació meteorològica de Raspberry Pi.
Primer heu de crear un compte al lloc web de ThingSpeak i crear-hi un "canal nou". Al nou canal heu de definir alguns camps per a les dades que voleu controlar, com en aquest projecte crearem tres camps per a les dades d’humitat, temperatura i pressió.
Ara feu clic a la pestanya "claus de l'API" i deseu les claus de l'API d'escriptura i lectura, aquí només estem fent servir la tecla d'escriptura. Heu de copiar aquesta clau a la variable "clau" del codi.

Després, feu clic a "Importació / Exportació de dades" i copieu l'URL de sol·licitud GET del canal d'actualització del feed, que és:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0

Ara necessitem aquest "URL de sol·licitud de feeds" al nostre codi Python per obrir "api.thingspeak.com" i, a continuació, enviar dades mitjançant aquesta petició de feeds com a cadena de consulta. I abans d’enviar dades, l’usuari ha d’introduir les dades de temperatura, humitat i pressió en aquesta consulta Cadena mitjançant variables del programa, consulteu el codi al final d’aquest article.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressió)
El funcionament de DHT11 es basa en la comunicació en sèrie d'un sol fil per obtenir dades de DHT11. Aquí hem utilitzat la biblioteca AdaFruit DHT11 per a la interfície de DHT11 amb Raspberry Pi. Raspberry Pi aquí recopila les dades d’humitat i temperatura de DHT11 i la pressió atmosfèrica del sensor BMP180 i les envia al servidor LCD ThingSpeak de 16 x 2. ThingSpeak mostra les dades en forma de gràfic de la manera següent:


Podeu obtenir més informació sobre el sensor DHT11 i la seva interfície amb Arduino aquí.
Esquema de connexions:

Configuració de Raspberry Pi i programa Python:
Aquí fem servir el llenguatge Python per al programa. Abans de codificar, l'usuari ha de configurar Raspberry Pi. Podeu consultar els nostres tutorials anteriors per a Introducció a Raspberry Pi i Instal·lació i configuració de Raspbian Jessie OS a Pi.
Primer de tot, hem d’instal·lar fitxers Adafruit Python DHT Sensor Library per executar aquest projecte a Raspberry Pi. Per fer-ho, hem de seguir les ordres donades:
sudo apt-get install git-core sudo apt-get update git clon 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

Després d'això, l'usuari ha d' habilitar Raspberry Pi I2C accedint a la configuració del programari RPi:
sudo raspi-config
A continuació, aneu a "Opcions avançades", seleccioneu "I2C" i "Activa-ho".


La programació d’una part d’aquest projecte té un paper molt important per realitzar totes les operacions. Primer de tot, incloem totes les biblioteques necessàries, iniciem variables i definim pins per a LCD i DHT11.
import sys import RPi.GPIO as GPIO import os import Adafruit_DHT import urllib2 import smbus time import from ctypes import c_short #Register Address regCall = 0xAA……………..
En def main) (: funció, per sota de codi s'utilitza per enviar les dades a l'servidor i mostrar-ho a través de la pantalla LCD, de forma contínua en el temps de bucle.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (pressure) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressure) print finalURL s = urllib2.urlopen (finalURL); imprimir humi + "" + temp + "" + pressió s.close () time.sleep (10)
Per a la pantalla LCD, la funció def lcd_init () s’utilitza per inicialitzar la pantalla LCD en mode de quatre bits, la funció def lcdcmd (ch) s’utilitza per enviar comandes a LCD, la funció def lcddata (ch) s’utilitza per enviar dades a la pantalla LCD i def lcdstring ) s'utilitza per enviar una cadena de dades a la pantalla LCD. Podeu comprovar totes aquestes funcions al codi donat després.
La funció readDHT () definida s'utilitza per llegir el sensor DHT11:
read readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
La funció def readBmp180 s'utilitza per llegir la pressió del sensor BM180. El sensor BM180 també pot donar temperatura, però aquí només l’hem utilitzat per calcular la pressió.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Llegir dades de calibratge # Convertir dades de bytes en valors de paraules AC1 = convertir1 (valor, 0) AC2 = convertir1 (valor, 2) AC3 = convertir1 (valor, 4) AC4 = convertir2 (valor, 6)……………………..
Per tant, aquesta és l’ estació meteorològica bàsica de Raspberry Pi, podeu ampliar-la encara més per mesurar diversos paràmetres relacionats amb el temps, com ara la velocitat del vent, la temperatura del sòl, la il·luminació (lux), les precipitacions, la qualitat de l’aire, etc.
