ESP32 - Capteur d'alcool MQ3

Ce tutoriel vous guide pour interfacer le capteur d’alcool MQ3 avec l’ESP32 afin de détecter et de mesurer les concentrations d’éthanol et de vapeurs d’alcool dans l’air ambiant. Le capteur MQ3 constitue un composant fondamental pour les projets d’éthylotest, les systèmes de détection d’alcool et les applications de surveillance de la qualité de l’air.

Dans ce guide, nous allons couvrir :

ESP32 avec module capteur de gaz d'alcool MQ-3

Préparation du matériel

1×Module de développement ESP32 ESP-WROOM-32
1×Alternativement: ESP32 Uno-form board
1×Alternativement: ESP32 S3 Uno-form board
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×MQ3 Alcohol Sensor
1×Plaque d'essai
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP32
1×Recommandé: Breakout Expansion Board for ESP32
1×Recommandé: Répartiteur d'alimentation pour ESP32

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 (ESP32 inclus)
1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur d'alcool MQ3

Classé comme un Chemiresistor, le MQ3 utilise une technologie MOS (semi-conducteurs à oxyde métallique) pour détecter l’alcool par des variations de résistance dans sa couche de détection. Ce capteur démontre une sensibilité exceptionnelle à la vapeur d’éthanol sur des niveaux de concentration variables.

Le cœur du capteur est constitué d'oxyde d'étain (SnO2) déposé sur un substrat céramique en oxyde d'aluminium. Le chauffage de ce matériau lui permet d'interagir avec les molécules d'alcool. Une grille protectrice en acier inoxydable (écran anti-explosion) entoure l'élément du capteur, protégeant le composant de chauffage tout en permettant la diffusion des gaz dans la chambre de détection.

Des applications courantes comprennent des éthylotests, des équipements de détection de la conduite en état d'ébriété, des systèmes d'alarme liés à l'alcool et la surveillance des vapeurs d'alcool ambiantes.

Spécifications techniques

  • Tension d'alimentation : 5 V CC
  • Résistance de charge : 200 kΩ
  • Résistance du chauffage : 33 Ω ± 5 %
  • Consommation de chauffage : < 800 mW
  • Résistance de détection : 1 MΩ – 8 MΩ
  • Gamme de détection : 25 – 500 ppm (parties par million)
  • Temps de préchauffage : 24–48 heures pour la première utilisation

À propos des ppm : Les parties par million (ppm) expriment le rapport de concentration des molécules cibles par rapport au nombre total de molécules de gaz. Par exemple, une mesure de 500 ppm signifie que 500 molécules d'alcool existent pour 1 000 000 de molécules totales, les 999 500 restants étant d'autres composants atmosphériques.

Schéma de brochage

Le module capteur MQ-3 comporte quatre broches de connexion :

  • Broche VCC : Connectez-la à l'alimentation +5 V.
  • Broche GND : Connectez-la à la masse (0 V).
  • Broche DO : Sortie numérique — passe à BAS lorsque le seuil d'alcool est dépassé, et à HAUT sinon. Ajustez le seuil via le potentiomètre intégré.
  • Broche AO : Sortie analogique — la tension varie avec la concentration d'alcool. Une concentration d'alcool plus élevée produit une tension plus élevée.
Diagramme de brochage du module de capteur d'alcool MQ-3

Les indicateurs visuels comprennent deux diodes électroluminescentes:

  • PWR-LED: S'allume lorsque le module est alimenté.
  • DO-LED: Reflète l'état de la sortie numérique — s'allume lors de la détection d'alcool, reste éteinte sinon.

Comment ça marche

Le MQ3 fonctionne grâce à des variations de résistance dans son matériau semi-conducteur en dioxyde d'étain (SnO2) :

État d'air pur : Le chauffage du SnO2 provoque l’adsorption des molécules d’oxygène sur sa surface, captant des électrons et formant une couche de déplétion. Cette capture d’électrons crée une barrière de conductivité, maintenant une résistance élevée.

Présence d'alcool : Les molécules d'alcool réagissent avec l'oxygène de surface, rompant les liaisons et libérant les électrons piégés dans le dioxyde d'étain. Cela augmente la conductivité — des teneurs en alcool plus élevées signifient une résistance plus faible.

Le capteur offre deux modes de sortie :

Sortie numérique (broche DO):

  • Réglage du seuil via le potentiomètre intégré.
  • Les sorties DO fournissent un niveau bas (LED allumée) lorsque l’alcool dépasse le seuil.
  • Les sorties DO fournissent un niveau haut (LED éteinte) lorsque l’alcool reste en dessous du seuil.

Sortie analogique (broche AO):

  • Sortie de tension proportionnelle à la concentration d'alcool.
  • Plus d'alcool = tension de sortie plus élevée.
  • Moins d'alcool = tension de sortie plus faible.
  • Note : le potentiomètre n'affecte que la sortie numérique, et non les lectures analogiques.

Échauffement et calibration

Exigences de préchauffage

Le MQ-3 nécessite un préchauffage avant de produire des mesures précises:

  • Première utilisation ou stockage prolongé (30+ jours) : Maintenir l'alimentation pendant 24 à 48 heures pour la stabilisation du capteur et la précision des mesures.
  • Utilisation fréquente : Un préchauffage de 5 à 10 minutes suffit. Les premières lectures peuvent présenter des pics, mais se stabiliseront.

Il suffit de brancher VCC et GND sur une alimentation de 5 V ou sur les broches d'alimentation de votre ESP32 pendant la période de préchauffage.

Détermination des valeurs seuils

Les capteurs chauffés, comme le MQ-3, peuvent dériver pendant le stockage. Établissez des seuils d'éthylotest précis grâce à cette calibration :

  • I. Ligne de base de l'air propre : Faites fonctionner le capteur dans l'air propre et enregistrez les valeurs analogiques (généralement 100-150).
  • I. Exposition à l’alcool : Placez de l’alcool isopropylique ou du gel hydroalcoolique près du capteur (sans le toucher), en ne laissant atteindre que les vapeurs. Notez les lectures élevées (généralement 400-900 selon la force des vapeurs).
  • I. Établir les plages : Utilisez les valeurs enregistrées pour définir les zones :
  • État de sobriété : Inférieur à la ligne de base + 20 (par exemple < 120)
  • Conso légère : Valeurs de milieu (par exemple 120-400)
  • Conso élevée : Au-dessus du seuil modéré (par exemple > 400)

Critique : Les caractéristiques des capteurs varient entre les unités et les environnements. Calibrez toujours votre matériel spécifique avant utilisation.

Réglage du seuil numérique

Réglez le niveau de déclenchement de la broche DO à l'aide du potentiomètre de trim :

  1. Exposez le capteur à la vapeur d’alcool.
  2. Tournez le potentiomètre dans le sens des aiguilles d'une montre jusqu'à ce que le voyant LED s'allume.
  3. Tournez lentement le potentiomètre dans le sens inverse des aiguilles d'une montre jusqu'à ce que le voyant LED se désactive.
  4. Le seuil est maintenant calibré.

Diagramme de câblage

Le module MQ-3 offre les deux broches de sortie. Utilisez-en une ou les deux selon les besoins de votre projet.

MQ3 Alcohol SensorESP32
VCC3.3V
GNDGND
DOGPIO 19
AOGPIO 36 (ADC0)
Schéma de câblage ESP32 et capteur d’alcool MQ-3 montrant les connexions des broches

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..

Code ESP32 - Lecture de la sortie numérique

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for digital output from the sensor #define PIN_DO 14 // ESP32 pin GPIO14 connected to DO pin of MQ3 sensor void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Set the DO pin as an input pinMode(PIN_DO, INPUT); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); } void loop() { // Read the digital output from the sensor int alcoholState = digitalRead(PIN_DO); // Check if alcohol is detected if (alcoholState == LOW) { Serial.println("Alcohol is detected"); } else { Serial.println("Alcohol is NOT detected"); } delay(1000); // Wait 1 second before next reading }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'ESP32, consultez Installation du logiciel ESP32..
  • Copiez le code ci-dessus et ouvrez-le dans l’IDE Arduino
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'ESP32
  • Placez une source de vapeur d’alcool près du capteur MQ3 (du gel hydroalcoolique sur coton fonctionne bien ou de l’alcool isopropylique sur coton).
  • Voir le résultat dans le moniteur série.
COM6
Send
Alcohol is NOT detected Alcohol is NOT detected Alcohol is NOT detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is detected Alcohol is NOT detected Alcohol is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Note : Si les lectures ne correspondent pas à la réalité (faux déclenchements ou détections manquées), ajustez le potentiomètre du module. Dans le sens des aiguilles d'une montre, la sensibilité augmente ; dans le sens inverse des aiguilles d'une montre, elle diminue. Affinez le réglage jusqu'à ce que la précision s'améliore.

Code ESP32 - Lecture de la sortie analogique

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for analog output from the sensor #define PIN_AO 36 // ESP32 pin GPIO36 (ADC0) connected to AO pin of MQ3 sensor void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); } void loop() { // Read the analog output from the sensor int alcoholValue = analogRead(PIN_AO); // Print the analog value to Serial Monitor Serial.print("MQ3 sensor AO value: "); Serial.println(alcoholValue); delay(1000); // Wait 1 second before next reading }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'ESP32
  • Exposez le capteur à la vapeur d'alcool (gel désinfectant pour les mains ou alcool isopropylique)
  • Vérifiez le résultat dans le moniteur série
COM6
Send
MQ3 sensor AO value: 120 MQ3 sensor AO value: 125 MQ3 sensor AO value: 128 MQ3 sensor AO value: 450 MQ3 sensor AO value: 620 MQ3 sensor AO value: 850 MQ3 sensor AO value: 920 MQ3 sensor AO value: 980 MQ3 sensor AO value: 950 MQ3 sensor AO value: 680 MQ3 sensor AO value: 420
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Avec une sortie numérique ou analogique, vous pouvez mettre en œuvre une logique de seuil pour déclencher des alarmes, activer des voyants d'alerte ou enregistrer des données pour des applications d'éthylotest.

※ Note:

Ce tutoriel utilise la fonction analogRead() pour lire les valeurs d'un ADC (convertisseur analogique-numérique) connecté à un capteur ou à un composant. L'ADC de l'ESP32 convient aux projets qui n'exigent pas une grande précision. Cependant, pour les projets nécessitant des mesures précises, gardez à l'esprit ce qui suit:

  • L'ADC de l'ESP32 n'est pas parfaitement précis et peut nécessiter un calibrage pour obtenir des résultats corrects. Chaque carte ESP32 peut varier légèrement, donc un calibrage est nécessaire pour chaque carte individuelle.
  • Le calibrage peut s'avérer difficile, surtout pour les débutants, et peut ne pas toujours produire les résultats exacts que vous souhaitez.

Pour les projets nécessitant une grande précision, envisagez d'utiliser un ADC externe (par exemple ADS1115) avec l'ESP32 ou d'utiliser un autre Arduino, comme l'Arduino Uno R4 WiFi, qui dispose d'un ADC plus fiable. Si vous souhaitez tout de même calibrer l'ADC de l'ESP32, reportez-vous au Pilote de calibration ADC ESP32.

Code ESP32 - Éthylotest avec détection de seuil

Cet exemple montre comment interpréter la sortie analogique à travers des seuils calibrés pour estimer les niveaux d’ivresse.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-mq3-alcohol-sensor */ // Define the pin for analog output from the sensor #define PIN_AO 36 // ESP32 pin GPIO36 (ADC0) connected to AO pin of MQ3 sensor // Define threshold values (calibrate these based on your sensor and environment) const int SOBER_THRESHOLD = 120; // Below this value = sober const int DRUNK_THRESHOLD = 400; // Above this value = drunk void setup() { // Initialize serial communication at 9600 baud rate Serial.begin(9600); // Give the MQ3 sensor time to warm up (20 seconds) Serial.println("Warming up the MQ3 sensor..."); delay(20000); // Wait 20 seconds for sensor warm-up Serial.println("MQ3 sensor is ready!"); Serial.println("=== Breathalyzer Test ==="); } void loop() { // Read the analog output from the sensor int alcoholValue = analogRead(PIN_AO); // Print the sensor value Serial.print("Sensor Value: "); Serial.print(alcoholValue); Serial.print(" | Status: "); // Determine intoxication level based on thresholds if (alcoholValue < SOBER_THRESHOLD) { Serial.println("Stone Cold Sober"); } else if (alcoholValue < DRUNK_THRESHOLD) { Serial.println("Drinking but within limits"); } else { Serial.println("DRUNK"); } delay(2000); // Wait 2 seconds before next reading }

Étapes rapides

  • Important : Calibrez votre capteur d'abord en utilisant l'exemple de lecture analogique pour trouver les valeurs de seuil appropriées pour votre configuration.
  • Modifiez les constantes SOBER_THRESHOLD et DRUNK_THRESHOLD avec vos valeurs calibrées.
  • Copiez le code modifié et ouvrez-le avec l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'ESP32.
  • Testez avec une vapeur d'alcool (alcool isopropylique ou vapeur de gel hydroalcoolique).
  • Vérifiez les messages d'état sur le Moniteur série.
COM6
Send
Sensor Value: 115 | Status: Stone Cold Sober Sensor Value: 118 | Status: Stone Cold Sober Sensor Value: 350 | Status: Drinking but within limits Sensor Value: 480 | Status: DRUNK Sensor Value: 520 | Status: DRUNK Sensor Value: 290 | Status: Drinking but within limits Sensor Value: 125 | Status: Stone Cold Sober
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Avertissement : Ce projet est à des fins éducatives uniquement. N'utilisez jamais cet appareil à des fins d'alcootest légal ou d'évaluations de la sécurité routière.

Vidéo

Références des fonctions

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !