- Configurazione di lavoro e ThingSpeak:
- Schema elettrico:
- Configurazione Raspberry Pi e programma Python:
Umidità, temperatura e pressione sono tre parametri fondamentali per costruire qualsiasi stazione meteorologica e per misurare le condizioni ambientali. Abbiamo già costruito una mini stazione meteorologica utilizzando Arduino e questa volta estendiamo la stazione meteorologica con Raspberry Pi. Questo progetto basato su IoT mira a mostrare gli attuali parametri di umidità, temperatura e pressione sul display LCD e sul server Internet utilizzando Raspberry Pi, il che lo rende una stazione meteorologica Raspberry Pi. È possibile installare questa configurazione ovunque e monitorare le condizioni meteorologiche di quel luogo da qualsiasi parte del mondo su Internet, non solo mostrerà i dati correnti ma può anche mostrare i valori passati sotto forma di grafici.
Abbiamo utilizzato il sensore di temperatura e umidità DHT11 per rilevare la temperatura e il modulo sensore di pressione BM180 per misurare la pressione barometrica. Questo termometro scala Celsius e misuratore di umidità scala percentuale visualizza la temperatura ambiente e l'umidità attraverso un display LCD e la pressione barometrica viene visualizzata in millibar o hPa (ettopascal). Tutti questi dati vengono inviati al server ThingSpeak per il monitoraggio in tempo reale da qualsiasi parte del mondo su Internet. Controlla il video dimostrativo e il programma Python, fornito alla fine di questo tutorial.
Configurazione di lavoro e ThingSpeak:
Questo progetto basato su IoT ha quattro sezioni. Innanzitutto il sensore DHT11 rileva i dati di umidità e temperatura e il sensore BM180 misura la pressione atmosferica. In secondo luogo, Raspberry Pi legge l'uscita del modulo sensore DHT11 utilizzando il protocollo a filo singolo e l'uscita del sensore di pressione BM180 utilizzando il protocollo I2C ed estrae i valori di entrambi i sensori in un numero adeguato in percentuale (umidità), scala Celsius (temperatura), ettopascal o millibar (pressione). In terzo luogo, questi valori vengono inviati al server ThingSpeak utilizzando il Wi-Fi integrato di Raspberry Pi 3. Infine, ThingSpeak analizza i dati e li mostra in forma di grafico. Un display LCD viene utilizzato anche per visualizzare questi valori localmente.
ThingSpeak fornisce un ottimo strumento per i progetti basati su IoT. Utilizzando il sito web di ThingSpeak, possiamo monitorare i nostri dati e controllare il nostro sistema su Internet, utilizzando i canali e le pagine web fornite da ThingSpeak. ThingSpeak "raccoglie" i dati dai sensori, "analizza e visualizza" i dati e "agisce" innescando una reazione. In precedenza abbiamo spiegato in dettaglio come inviare dati a ThingSpeak, puoi controllare lì. Qui stiamo spiegando brevemente come utilizzare ThingSpeak per questa stazione meteorologica Raspberry Pi.
Per prima cosa devi creare un account sul sito web di ThingSpeak e creare un "Nuovo canale" al suo interno. Nel nuovo canale devi definire alcuni campi per i dati che vuoi monitorare, come in questo progetto creeremo tre campi per i dati di Umidità, Temperatura e Pressione.
Ora fai clic sulla scheda "Chiavi API" e salva le chiavi API di scrittura e lettura, qui stiamo usando solo la chiave di scrittura. È necessario copiare questa chiave nella variabile "chiave" nel codice.
Successivamente, fai clic su "Importazione / esportazione dati" e copia l'URL della richiesta GET del feed del canale di aggiornamento, che è:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Ora abbiamo bisogno di questo 'Feed Get Request URL' nel nostro codice Python per aprire "api.thingspeak.com" e quindi inviare i dati utilizzando questa Feed Request come stringa di query. E prima di inviare i dati, l'utente deve inserire i dati di temperatura, umidità e pressione in questa stringa di query utilizzando le variabili nel programma, controllare il codice alla fine di questo articolo.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pressione)
Il funzionamento di DHT11 si basa sulla comunicazione seriale a filo singolo per il recupero dei dati da DHT11. Qui abbiamo utilizzato la libreria DHT11 di AdaFruit per interfacciare DHT11 con Raspberry Pi. Raspberry Pi qui raccoglie i dati di umidità e temperatura da DHT11 e pressione atmosferica dal sensore BMP180 e quindi li invia a LCD 16x2 e al server ThingSpeak. ThingSpeak visualizza i dati sotto forma di grafico come di seguito:
Puoi saperne di più sul sensore DHT11 e sulla sua interfaccia con Arduino qui.
Schema elettrico:
Configurazione Raspberry Pi e programma Python:
Stiamo usando il linguaggio Python qui per il programma. Prima della codifica, l'utente deve configurare Raspberry Pi. Puoi controllare i nostri tutorial precedenti per Introduzione a Raspberry Pi e Installazione e configurazione del sistema operativo Raspbian Jessie in Pi.
Prima di tutto dobbiamo installare i file della libreria di sensori DHT Python di Adafruit per eseguire questo progetto su Raspberry Pi. Per fare questo dobbiamo seguire i comandi dati:
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
Successivamente, l'utente deve abilitare Raspberry Pi I2C accedendo anche alla configurazione del software RPi:
sudo raspi-config
Quindi vai su "Opzioni avanzate", seleziona "I2C" e "Abilita".
La parte di programmazione di questo progetto gioca un ruolo molto importante per eseguire tutte le operazioni. Prima di tutto includiamo tutte le librerie richieste, iniziamo le variabili e definiamo i pin per LCD e DHT11.
import sys import RPi.GPIO come GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA……………..
In def main (): funzione, il codice sottostante viene utilizzato per inviare i dati al server e visualizzarli sull'LCD, continuamente in ciclo while .
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." mentre 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"% (pressione) print finalURL s = urllib2.urlopen (finalURL); print humi + "" + temp + "" + pressione s.close () time.sleep (10)
Per LCD, la funzione def lcd_init () viene utilizzata per inizializzare LCD in modalità a quattro bit, la funzione def lcdcmd (ch) viene utilizzata per inviare comandi a LCD, la funzione def lcddata (ch) viene utilizzata per inviare dati a LCD e def lcdstring ) viene utilizzata per inviare una stringa di dati all'LCD. Puoi controllare tutte queste funzioni nel codice fornito in seguito.
Data la funzione def readDHT () viene utilizzata per leggere il sensore DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
La funzione def readBmp180 viene utilizzata per leggere la pressione dal sensore BM180. Il sensore BM180 può anche fornire la temperatura ma qui l'abbiamo usato solo per il calcolo della pressione.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Leggi i dati di calibrazione # Converti i dati byte in valori di parola AC1 = convert1 (value, 0) AC2 = convert1 (value, 2) AC3 = convert1 (valore, 4) AC4 = convert2 (valore, 6)……………………..
Quindi questa è la stazione meteorologica Raspberry Pi di base, puoi estenderla ulteriormente per misurare vari parametri relativi alle condizioni meteorologiche come velocità del vento, temperatura del suolo, illuminamento (lux), precipitazioni, qualità dell'aria ecc.