Créer une station météo avec un Raspberry Pi

Station météo Raspberry Pi

Construire une station météo avec un Raspberry Pi est un projet passionnant et éducatif. Vous pouvez mesurer la température, l’humidité, la pression atmosphérique et plus encore. Voici un guide détaillé pour vous aider à réaliser ce projet.

Sommaire

  1. Introduction
  2. Matériel Nécessaire
  3. Configuration du Raspberry Pi
  4. Installation des Capteurs
  5. Programmation du Raspberry Pi
  6. Création de l’Interface Web
  7. Stockage des Données
  8. Tests et Ajustements
  9. Conclusion

1. Introduction

Une station météo personnelle vous permet de suivre les conditions météorologiques locales en temps réel. En utilisant un Raspberry Pi et divers capteurs, vous pouvez recueillir et afficher des données météorologiques de manière précise et fiable.

2. Matériel nécessaire

  • Raspberry Pi (modèle 3 ou supérieur)
  • Carte microSD (minimum 16 Go) avec Raspbian installé
  • Capteur de température et d’humidité (DHT11 ou DHT22)
  • Capteur de pression atmosphérique (BMP180 ou BMP280)
  • Fils de connexion
  • Breadboard
  • Accès à Internet (Wi-Fi ou Ethernet)

3. Configuration du Raspberry Pi

  1. Installer Raspbian :
    • Téléchargez l’image de Raspbian depuis le site officiel.
    • Utilisez un outil comme balenaEtcher pour graver l’image sur la carte microSD.
    • Insérez la carte microSD dans le Raspberry Pi et démarrez-le.
  2. Configurer le Raspberry Pi :
    • Connectez-vous avec les identifiants par défaut (utilisateur : pi, mot de passe : raspberry).
    • Mettez à jour le système avec les commandes suivantes :
      • sudo apt update
      • sudo apt upgrade
  3. Installer les bibliothèques nécessaires :
    • Installez les bibliothèques pour les capteurs :
      • sudo apt install python3-pip
      • pip3 install Adafruit_DHT Adafruit_BMP

4. Installation des capteurs

  1. Connecter le capteur de température et d’humidité (DHT11/DHT22) :
    • Branchez le capteur à la breadboard.
    • Connectez les fils : le VCC au 3.3V, le GND au GND, et la sortie de signal à un GPIO (par exemple GPIO4).
  2. Connecter le capteur de pression atmosphérique (BMP180/BMP280) :
    • Connectez les fils du capteur : le VCC au 3.3V, le GND au GND, SDA au GPIO2 (SDA) et SCL au GPIO3 (SCL).

5. Programmation du Raspberry Pi

  1. Lire les données des capteurs :
    • Créez un script Python pour lire les données des capteurs. Voici un exemple de code :
import Adafruit_DHT
import Adafruit_BMP.BMP085 as BMP085
import time

# Configuration des capteurs
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
bmp = BMP085.BMP085()

def read_sensors():
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    pressure = bmp.read_pressure()
    return humidity, temperature, pressure

while True:
    humidity, temperature, pressure = read_sensors()
    print(f"Temp: {temperature}°C  Humidity: {humidity}%  Pressure: {pressure} Pa")
    time.sleep(2)

6. Création de l’interface Web

  1. Installer Flask :
    • Utilisez Flask pour créer une interface web simple :
      • pip3 install flask
  2. Créer un script Flask :
from flask import Flask, render_template
import Adafruit_DHT
import Adafruit_BMP.BMP085 as BMP085

app = Flask(__name__)

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
bmp = BMP085.BMP085()

def read_sensors():
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    pressure = bmp.read_pressure()
    return humidity, temperature, pressure

@app.route('/')
def index():
    humidity, temperature, pressure = read_sensors()
    return render_template('index.html', temperature=temperature, humidity=humidity, pressure=pressure)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

3. Créer le template HTML :

  • Créez un fichier templates/index.html :
<!DOCTYPE html>
<html>
<head>
    <title>Station Météo</title>
</head>
<body>
    <h1>Conditions Météorologiques Actuelles</h1>
    <p>Température : {{ temperature }}°C</p>
    <p>Humidité : {{ humidity }}%</p>
    <p>Pression Atmosphérique : {{ pressure }} Pa</p>
</body>
</html>

7. Stockage des données

  1. Utiliser une base de données SQLite (optionnel) :
    • Pour enregistrer les données météorologiques, vous pouvez utiliser SQLite :
      • sudo apt install sqlite3
      • pip3 install flask-sqlalchemy
  2. Modifier le script Flask pour enregistrer les données :
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
import Adafruit_DHT
import Adafruit_BMP.BMP085 as BMP085
import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///weather.db'
db = SQLAlchemy(app)

class WeatherData(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    timestamp = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    temperature = db.Column(db.Float)
    humidity = db.Column(db.Float)
    pressure = db.Column(db.Float)

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
bmp = BMP085.BMP085()

def read_sensors():
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    pressure = bmp.read_pressure()
    return humidity, temperature, pressure

@app.route('/')
def index():
    humidity, temperature, pressure = read_sensors()
    weather_data = WeatherData(temperature=temperature, humidity=humidity, pressure=pressure)
    db.session.add(weather_data)
    db.session.commit()
    return render_template('index.html', temperature=temperature, humidity=humidity, pressure=pressure)

if __name__ == '__main__':
    db.create_all()
    app.run(host='0.0.0.0', port=5000)

8. Tests et ajustements

  1. Tester le système :
    • Assurez-vous que tous les capteurs fonctionnent correctement.
    • Testez l’interface web et vérifiez que les données s’affichent correctement.
  2. Ajuster les paramètres :
    • Ajustez les intervalles de lecture des capteurs et la mise à jour de l’interface web selon vos besoins.

9. Conclusion

En suivant ce guide, vous avez maintenant une station météo fonctionnelle avec un Raspberry Pi. Vous pouvez surveiller les conditions météorologiques locales en temps réel et stocker les données pour une analyse ultérieure. Profitez de votre station météo et n’hésitez pas à ajouter des fonctionnalités supplémentaires pour la rendre encore plus performante !