L'humidité, la température et la pression sont trois paramètres de base pour construire une station météo et pour mesurer les conditions environnementales. Nous avons déjà construit une mini station météo en utilisant Arduino et cette fois nous étendons la station météo avec Raspberry Pi. Ce projet basé sur l'IoT vise à afficher les paramètres actuels d' humidité, de température et de pression sur l'écran LCD ainsi que sur le serveur Internet à l'aide de Raspberry Pi, ce qui en fait une station météo Raspberry Pi. Vous pouvez installer cette configuration n'importe où et surveiller les conditions météorologiques de cet endroit de n'importe où dans le monde sur Internet, cela affichera non seulement les données actuelles, mais pourra également afficher les valeurs passées sous forme de graphiques.
Nous avons utilisé le capteur d'humidité et de température DHT11 pour détecter la température et le module de capteur de pression BM180 pour mesurer la pression barométrique. Ce thermomètre à échelle Celsius et l'humidimètre en pourcentage affichent la température et l'humidité ambiantes à travers un écran LCD et la pression barométrique est affichée en millibar ou hPa (hectopascal). Toutes ces données sont envoyées au serveur ThingSpeak pour une surveillance en direct de n'importe où dans le monde sur Internet. Vérifiez la vidéo de démonstration et le programme Python, donnés à la fin de ce didacticiel.
Configuration de travail et de ThingSpeak:
Ce projet basé sur l'IoT comprend quatre sections. Tout d'abord, le capteur DHT11 détecte les données d'humidité et de température et le capteur BM180 mesure la pression atmosphérique. Deuxièmement, Raspberry Pi lit la sortie du module de capteur DHT11 en utilisant le protocole monofilaire et la sortie du capteur de pression BM180 en utilisant le protocole I2C et extrait les valeurs des deux capteurs dans un nombre approprié en pourcentage (humidité), échelle Celsius (température), hectoPascal ou millibar (pression). Troisièmement, ces valeurs sont envoyées au serveur ThingSpeak en utilisant le Wi-Fi intégré de Raspberry Pi 3. Et enfin ThingSpeak analyse les données et les affiche sous forme de graphique. Un écran LCD est également utilisé pour afficher ces valeurs localement.
ThingSpeak fournit un très bon outil pour les projets basés sur l'IoT. En utilisant le site Web de ThingSpeak, nous pouvons surveiller nos données et contrôler notre système sur Internet, en utilisant les canaux et les pages Web fournis par ThingSpeak. ThingSpeak «collecte» les données des capteurs, «analyse et visualise» les données et «agit» en déclenchant une réaction. Nous avons déjà expliqué en détail l'envoi de données à ThingSpeak, vous pouvez y vérifier. Ici, nous expliquons brièvement comment utiliser ThingSpeak pour cette station météo Raspberry Pi.
Vous devez d'abord créer un compte sur le site Web de ThingSpeak et y créer un `` nouveau canal ''. Dans un nouveau canal, vous devez définir certains champs pour les données que vous souhaitez surveiller, comme dans ce projet, nous allons créer trois champs pour les données d'humidité, de température et de pression.
Cliquez maintenant sur l'onglet 'Clés API' et enregistrez les clés API d'écriture et de lecture, ici nous n'utilisons que la clé d'écriture. Vous devez copier cette clé dans la variable «clé» du code.
Ensuite, cliquez sur `` Importation / exportation de données '' et copiez l'URL de demande de mise à jour du flux de canal GET, qui est:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Nous avons maintenant besoin de cette «URL de demande de flux» dans notre code Python pour ouvrir «api.thingspeak.com», puis envoyer des données en utilisant cette demande de flux comme chaîne de requête. Et avant d'envoyer des données, l'utilisateur doit entrer les données de température, d'humidité et de pression dans cette chaîne de requête à l'aide de variables dans le programme, vérifiez le code à la fin de cet article.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pression)
Le fonctionnement du DHT11 est basé sur une communication série à un seul fil pour extraire les données du DHT11. Ici, nous avons utilisé la bibliothèque AdaFruit DHT11 pour interfacer DHT11 avec Raspberry Pi. Raspberry Pi collecte ici les données d'humidité et de température du DHT11 et de la pression atmosphérique du capteur BMP180, puis les envoie au serveur LCD 16x2 et ThingSpeak. ThingSpeak affiche les données sous forme de graphique comme ci-dessous:
Vous pouvez en savoir plus sur le capteur DHT11 et son interface avec Arduino ici.
Schéma:
Configuration Raspberry Pi et programme Python:
Nous utilisons le langage Python ici pour le programme. Avant de coder, l'utilisateur doit configurer Raspberry Pi. Vous pouvez consulter nos tutoriels précédents pour démarrer avec Raspberry Pi et installer et configurer le système d'exploitation Raspbian Jessie dans Pi.
Tout d'abord, nous devons installer les fichiers de la bibliothèque de capteurs Adafruit Python DHT pour exécuter ce projet sur Raspberry Pi. Pour ce faire, nous devons suivre les commandes données:
sudo apt-get install git-core sudo apt-get mise à jour 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
Après cela, l'utilisateur doit activer Raspberry Pi I2C en accédant également à la configuration du logiciel RPi:
sudo raspi-config
Ensuite, allez dans «Options avancées», sélectionnez «I2C» et «Activer».
La programmation d'une partie de ce projet joue un rôle très important pour effectuer toutes les opérations. Tout d'abord, nous incluons toutes les bibliothèques requises, initialisons les variables et définissons les broches pour LCD et DHT11.
import sys import RPi.GPIO comme importation GPIO importation os importation Adafruit_DHT importation urllib2 importation smbus importation depuis ctypes import c_short #Register Address regCall = 0xAA……………..
Dans def main (): fonction, en dessous de code est utilisé pour envoyer les données vers le serveur et les afficher sur l'écran LCD, de manière continue dans tout en boucle.
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érature, pression)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pression) print finalURL s = urllib2.urlopen (finalURL); print humi + "" + temp + "" + pression s.close () time.sleep (10)
Pour l'écran LCD, la fonction def lcd_init () est utilisée pour initialiser l'écran LCD en mode quatre bits, la fonction def lcdcmd (ch) est utilisée pour envoyer la commande à l'écran LCD, la fonction def lcddata (ch) est utilisée pour envoyer des données à l'écran LCD et def lcdstring (Str ) est utilisée pour envoyer une chaîne de données à l'écran LCD. Vous pouvez vérifier toutes ces fonctions dans le code donné par la suite.
La fonction def readDHT () est utilisée pour lire le capteur DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
def read La fonction Bmp180 est utilisée pour lire la pression du capteur BM180. Le capteur BM180 peut également donner la température mais ici nous ne l'avons utilisé que pour le calcul de la pression.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Lire les données d'étalonnage # Convertir les données d'octet en valeurs de mot AC1 = convertir1 (valeur, 0) AC2 = convertir1 (valeur, 2) AC3 = convertir1 (valeur, 4) AC4 = convert2 (valeur, 6)……………………..
Il s'agit donc de la station météo de base Raspberry Pi, vous pouvez l'étendre davantage pour mesurer divers paramètres liés à la météo tels que la vitesse du vent, la température du sol, l'éclairement (lux), les précipitations, la qualité de l'air, etc.