Partie XIV
Ajout de la sonde d’humidité du sol aux scripts
Modification du script station.py
# Importation des bibliothèques relatives aux sondes
import adafruit_dht
import adafruit_bmp280
# Importations des bibliothèques relatives à la puce MCP3008
import adafruit_mcp3xxx.mcp3008 as MCP
from adafruit_mcp3xxx.analog_in import AnalogIn
# Importation de la bibliothèque permettant la gestion des E/S numérique de la puce MCP3008
import digitalio
# Importation de la bibliothèque permettant d'initialiser et utiiliser le bus i2c et spi
import busio
# Importation de la bibliothèque permettant un accès simple et moderne aux broches GPIO
import board
# Importation des bibliothèques permettant de gérer couleurs et mise en page
from rich.console import Console
from rich.text import Text
# Autres importations
import time
import math
from datetime import datetime
# Déclaration des capteurs :
# DHT22
dhtDevice = adafruit_dht.DHT22(board.D4)
# BMP280
i2c = busio.I2C(board.SCL, board.SDA)
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c, address=0x76)
# Déclaration de la puce MCP3008
spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)
cs = digitalio.DigitalInOut(board.D5)
mcp = MCP.MCP3008(spi, cs)
#Calcul du point de rosée
def calculer_point_de_rosee(temperature, humidity):
# Formule pour calculer le point de rosée
alpha = 17.27
beta = 237.7
gamma = (alpha * temperature) / (beta + temperature) + math.log(humidity / 100.0)
point_de_rosee = (beta * gamma) / (alpha - gamma)
return point_de_rosee
#Calcul de l'humidex
def calculer_humidex(temperature, point_de_rosee):
# Formule pour calculer l'humidex
humidex = temperature + (5/9) * (6.11 * math.exp(5417.7530 * ((1/273.16) - (1/273.15 + point_de_rosee))) - 10)
return humidex
# Déclaration de l'objet console pour gérer les couleurs et mise en page
console = Console()
#Boucle et affichage
while True:
humidity = dhtDevice.humidity
temperature = dhtDevice.temperature
capteur_humidite_1 = AnalogIn(mcp, MCP.P0)
pression = bmp280.pressure
if humidity is not None and temperature is not None:
now = datetime.now()
date_heure = now.strftime("%d-%m-%Y %H:%M:%S")
point_de_rosee = calculer_point_de_rosee(temperature, humidity)
humidex = calculer_humidex(temperature, point_de_rosee)
console.print(f"\U0001f4c5 [bold cyan]Date et heure :[/bold cyan] {date_heure}")
console.print(f"\U0001f321 [bold red]Température :[/bold red] {round(temperature, 1)}°C")
console.print(f"\U0001f4a7 [bold blue]Humidité :[/bold blue] {round(humidity, 1)}%")
console.print(f"\U00002746 [bold magenta]Point de rosée :[/bold magenta] {round(point_de_rosee, 1)}°C")
console.print(f"\U0001f525 [bold yellow]Humidex :[/bold yellow] {round(humidex, 1)}")
console.print(f"\U0001f32c [bold green]Pression atmosphérique :[/bold green] {round(pression, 2)} hPa")
console.print(f"\U0001f331 [bold navajo_white1]Capteur d'humidité du sol 1 (tension) :[/bold navajo_white1] {round(capteur_humidite_1.voltage, 2)} V")
console.print(f"\U0001f9ea [bold gold3]Capteur d'humidité du sol 1 (valeur brute) :[/bold gold3] {round(capteur_humidite_1.value, 2)}")
print("----")
else:
print("Échec de la lecture du capteur")
#Pause de 20 secondes
time.sleep(20)
Modification du script capteur.py