====== À quoi sert un convertisseur analogique-numérique (ADC) ? ====== {{ :raspberry:mcp3008-ip-convertisseur-analogique-numerique.jpg?200|}} ### **Le Raspberry Pi**, contrairement à un Arduino, **n’a pas d’entrée analogique**. Il ne peut lire que **des valeurs numériques** (0 ou 1, HIGH ou LOW). Or, certains capteurs — comme la **sonde d’humidité du sol Gravity SEN0193** — peuvent envoyer une **tension variabl**e représentant un niveau d’humidité, et non un simple "sec" ou "humide". ### 👉 C’est là qu’intervient le **convertisseur analogique-numérique (ADC)**, comme le **MCP3008**. ===== Pourquoi préférer une lecture analogique pour la sonde SEN0193 ? ===== La sonde Gravity SEN0193, selon sa version, peut fonctionner en deux modes : * **Numérique** : elle renvoie simplement 1 (sol sec) ou 0 (sol humide). C’est tout. * **Analogique** : elle renvoie une **valeur continue** entre 0 et 3.3V, que le MCP3008 convertit en une valeur entre **0 et 1023**. ==== Avantages de l’analogique : ==== * Permet un **suivi plus fin et progressif de l’humidité** (utile pour déclencher l’arrosage à un seuil précis). * Donne la **possibilité de créer des graphiques, des seuils personnalisés**, des alertes... * Ouvre la voie à une gestion **intelligente et économe de l’eau**. ===== Présentation du MCP3008 ===== ### Le **MCP3008** est une petite puce qui permet de convertir jusqu’à **8 signaux analogiques** en valeurs numériques que le Raspberry Pi peut comprendre, via le protocole **SPI**. ### Il se connecte au Raspberry Pi **via la breadboard** pour simplifier les branchements. ===== Branchement du MCP3008 ===== ### La **puce MCP3008** doit être connectée au breadboard **à cheval sur la "tranchée centrale"**, tu assures que **chaque broche du MCP3008 est sur une rangée indépendante**, ce qui permet de câbler proprement ### {{ :raspberry:mcp3008.webp |}} | MCP3008 | Fonction | Branche sur la breadboard | | --------- | ------------------ | ---------------------------------------- | | 16 (VDD) | Alimentation | Un jumper vers la ligne rouge (3.3V) | | 15 (VREF) | Référence | Ligne rouge aussi | | 14 (AGND) | Masse analogique | Ligne bleue (GND) | | 9 (DGND) | Masse numérique | Ligne bleue (GND) | | 13 (CLK) | Horloge SPI | Vers GPIO11 du Pi | | 12 (DOUT) | Données vers Pi | GPIO9 | | 11 (DIN) | Données du Pi | GPIO10 | | 10 (CS) | Chip Select | GPIO5 | | 1 (CH0) | Canal analogique 0 | Vers la sortie AO de ta sonde analogique | | Broche | Nom | Rôle / Explication | | --------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | **16** | **VDD** | Tension d’alimentation **du circuit numérique** (généralement **3,3V ou 5V**). | | **15** | **VREF** | Tension de **référence** pour la conversion analogique. En général, **on la relie à VDD**. La précision des mesures dépend de cette valeur. | | **14** | **AGND** | **Masse (GND)** pour la partie **analogique** (capteurs). À relier au GND du circuit. | | **13** | **CLK** | **Horloge SPI**. Le Raspberry Pi envoie un signal ici pour cadencer les échanges de données. | | **12** | **DOUT** | **Data OUT** : les données **numériques sortent** du MCP3008 vers le Raspberry Pi. | | **11** | **DIN** | **Data IN** : le Raspberry Pi envoie des commandes **vers le MCP3008** (ex : "lis le canal 0"). | | **10** | **CS** | **Chip Select** (ou CE = Chip Enable). Sert à dire "je parle maintenant à ce composant SPI". | | **9** | **DGND** | **Masse (GND)** pour la partie **numérique** (Raspberry Pi). À relier au GND général. | | **1 à 8** | **CH0 à CH7** | **Canaux analogiques d’entrée** (pour capteurs). Le MCP3008 peut lire **jusqu’à 8 capteurs analogiques**. CH0 est le plus utilisé. | * 🟥 VDD + VREF = alimentent la puce et définissent la précision. * 🟦 AGND + DGND = masses nécessaires pour les parties analogiques et numériques. * 📡 CLK, DOUT, DIN, CS = communication SPI avec le Raspberry Pi. * 🌱 CH0 à CH7 = brancher ici les capteurs analogiques, comme l’humidité du sol SEN0193. ===== Le protocole SPI ===== ### C’est un **protocole de communication** utilisé pour faire dialoguer un microcontrôleur (comme le Raspberry Pi) avec des composants externes ### Le protocole SPI utilise 4 fils : | Nom du fil | Fonction | Correspondance sur le Raspberry Pi | | --------------- | -------------------------------------------------------------- | ---------------------------------- | | `MOSI` | Master Out Slave In : le Pi envoie les données vers le capteur | GPIO10 (Pin 19) | | `MISO` | Master In Slave Out : le Pi lit les données du capteur | GPIO9 (Pin 21) | | `SCLK` ou `CLK` | Clock : le signal d’horloge synchronise les échanges | GPIO11 (Pin 23) | | `CS` ou `CE` | Chip Select : active le capteur concerné | Par exemple GPIO5 (Pin 29) | C’est un **bus rapide**, synchrone (horloge partagée), **plein-duplex** (on peut envoyer et recevoir en même temps). ===== Activer le protocole SPI ===== Aller dans l'interface d'administration du Raspberry Pi : sudo raspi-config * Aller dans Interfaces * Activer SPI * Redémarrer ===== Installation de la bibliothèque =====