Outils pour utilisateurs

Outils du site


wiki:projet:cmi2022grb:gpb1

ETHYLOSTEST ELECTRONIQUE


Membres du groupe

Elias ROUSSSEAU (elias.rousseau@gmail.com)
Reda TAGHI (redataghi@icloud.com)
Tom DESCAT (tom.descat@orange.fr)
Elena MOCIK (elena.mocik@orange.fr)

Introduction

Bonjour, vous trouverez sur cette page l'ensemble du wiki (= étapes/remarques et conclusions) de notre projet d'éthylotest électronique dans la cadre de l'UE Fablab. En effet, cette UE nous a été proposée afin de découvrir l'univers du fablab, d'en comprendre simplement le concept mais aussi d'utiliser ses ressources, matériaux et outils. En effet, ces derniers nous ont permis de nous rapprocher le plus possible de notre idée initiale de projet, que nous allons détaillé par la suite, et qui est l'éthylotest électronique.

Idée et recherche de sujet

Lors de cette première séance (le 31/01/2022) de Fablab consacrée au projet, nous avons tout d'abord essayé de trouver un sujet réalisable au cours de cette UE dans le temps imparti.
Nos premières idées se dirigeaient vers la conception d'un drone ou d'un minirobot. Toutefois, les enseignants qui nous ont encadrés nous ont poussé à nous orienter vers des projets plus réalisables pour le temps dont nous disposions. Par ailleurs, nous devions également inclure un détecteur à notre projet. En effet, le but devait être de mesurer une grandeur.
Notre recherche s'est alors orienter vers le traitement d'eaux usées dans lequel un capteur mesurerait certaines propriétés de l'eau, puis nous indiqueraient ou pas si un traitement aurait été nécessaire via du chlore par exemple.
Cependant, nous voulions fabriquer un objet qui pourrait nous être utile et que nous pourrions pourquoi pas réutiliser même après la fin de cette UE.
Nous est alors venue l'idée de l'éthylotest électronique.
Nous nous sommes alors renseignés sur les différents types de capteurs présents au Fablab et à ceux que l'on pouvait éventuellement commander pour notre projet. Nous voulions aussi par cette occasion préciser le sujet de notre projet et en être pleinement convaincus.

Capteurs présents: Thermique, distance, sonore, chimique (acidité ou autre), sonar , plateau interactif ?

C'est aussi au cours de cette séance que l'on commencera notre journal de bord.


Le nécessaire pour le projet

Vous trouverez sur cette rubrique les infos, aides et liens utiles sous la forme d'un récapitulatif, pour pouvoir reproduire notre projet, s'en inspirer, ou tout simplement s'y intéresser.

- Fiche technique du capteur MQ-3 (avec courbes de valeurs): https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf

Programmation

- Le programme :
/* Change these values based on your calibration values */
#include <M5Stack.h>
#include <time.h>
#define SCREEN_W 320
#define SCREEN_H 240
#define TILE_SIZE 16
 #include "utility/MPU9250.h"
 #include "WiFi.h"
#define Sober 120   // Define max value that we consider sober
#define Drunk 400   // Define min value that we consider drunk

#define MQ3pin 36

float sensorValue;  //variable to store sensor value

void setup() {
  M5.begin();
  M5.Power.begin();
  Serial.begin(9600); // sets the serial port to 9600
  Serial.println("MQ3 warming up!");
  delay(20); // allow the MQ3 to warm up
}

void loop() {
   M5.Lcd.setTextColor(TFT_BLUE);
   M5.Lcd.print("         "); 
  sensorValue = analogRead(MQ3pin); // read analog input pin 0
  M5.Lcd.println(sensorValue);
  M5.Lcd.setTextSize(2);

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  
  // Determine the status
  if (sensorValue < Sober) {
    Serial.println("  |  Status: Stone Cold Sober");
  } else if (sensorValue >= Sober && sensorValue < Drunk) {
    Serial.println("  |  Status: Drinking but within legal limits");
  } else {
    Serial.println("  |  Status: DRUNK");
  }
  
  delay(2000); // wait 2s for next reading
}

Pièces

- Le boitier = assemblage de six faces pour constituer une boîte cubique ; conçue sur Inkscape (pour découpeuse laser)
- Le support capteur = pièce pour relier les des tuyaux et relier le capteur à l'arrivée d'air : conçu sur FreeCAD (pour imprimante 3D)
- Embout interchangeable pour souffler : conçu sur FreeCAD

Matériel

-Tuyau : diamètre intérieur : 12mm ; épaisseur : 1mm (les dimensions du tuyau n'ont pas beaucoup d'importance, mais il faut les connaître le plus tôt possible pour concevoir les autres pièces.
- Colle forte (car les créneaux de la boîte, censés la faire tenir, ne sont pas parfaitement emboîtés donc elle ne tient pas).

Etalonnage

- Protocole :

(à réaliser dans un labo de chimie de préférence)

-On allume notre alcootest 15 min avant de commencer les mesures, afin qu'il se stabilise correctement (avec l'humidité et le chaleur de la pièce le “0” change). On notera le 0 avant le début de chaque mesure.
-On introduit une volume précis d'alcool (de concentration connue) dans une fiole jaugée, peu importe le volume.La fiole doit être parfaitement propre et sèche. On mesure la quantité d'alcool à introduire avec une micropipette. Les quantités doivent être très petites pour être certain que tout l'alcool introduit s'évapore. On suppose aussi que si les concentrations sont trop grande, notre capteur va saturer.
-Juste après avoir introduit l'alcool, on rebouche la fiole et on attend quelques secondes afin que l'alcool s'évapore au mieux. L'étalonnage pourra être fait dans un environnement légèrement chauffé pour optimiser la vaporisation de l'alcool.
-On retire le bouchon et on place immédiatement l'embout de notre alcootest au niveau du goulot de la fiole (on l'insère un peu, il ne doit pas y avoir d'espace entre la fiole et le tuyau), évidemment à la verticale (voir schéma) afin de recevoir les vapeurs d'alcool.
-On attend que la valeur se stabilise (à plus ou moins 25), on retire l'alcootest et on attend que la valeur descende et revienne au zéro (également a plus ou moins 25, environ 1 min). On prend notre nouvelle valeur de 0 si elle a changé, mais il serait préférable de revenir au même zéro.
-On recommence ces étapes avec d'autres concentrations d'alcool. On peut soit changer la quantité d'alcool introduite soit changer le volume des fioles (à voir ce qui fonctionne le mieux).Si on choisit de garder le même volume pour la fiole, il serait quand même préférable de changer de fiole pour éviter d'avoir des résidus de la mesure précédente (et donc avoir un stock de plusieurs fioles propres de même volume).
-On commence avec de l'alcool pur, de pharmacie ou ménager ; on pourra finaliser l'étalonnage avec de l'alcool à boire (assez fort, type Vodka, Gin ou plus fort, et alcool blanc de préférence).
-On note enfin toutes les valeurs dans un tableau (Excel par exemple) puis on trace une courbe de la valeur affichée en fonction de la concentration d'alcool. On vérifie que cette courbe correspond à la courbe théorique puis si on y arrive on insère l'équation de la courbe dans le programme.
-Et on n'oublie pas de remercier le personnel de Chimie bien-sûr !

—-

Journal de bord

LE 31/01/2022

Durant la 2e séance, nous nous sommes familiarisés avec les logiciels Inkscape et FreeCAD.
Le premier est un logiciel de dessin à deux dimensions, utilisé notamment pour découper des formes ou graver des symboles/textes avec la découpeuse laser. On peut également réaliser des formes en 3D par assemblage de différents composées réalisés en 2D.
Le deuxième logiciel permet de créer des objet en trois dimensions. Cela peut-être tous types de formes mais il faudra faire attention a leurs dimensions afin qu'ils restent possibles à imprimer pour les imprimantes 3D du Fablab. Notons que si besoin, il existe une autre imprimante 3D plus volumineuse permettant d'obtenir des formes plus conséquentes.
Inskape
Freecade
Nous sommes également allés voir les projets des années précédentes en naviguant sur le wiki de l'université:

- Projet FABLAB CMI 2021 - Groupe A1 - DETECTEUR DE METAUX,

Notons que ce sont surtout des projets de L3 (à voir pour la difficulté car ils ont sans doute acquis plus de notions scientifiques que nous qui sommes en L1) mais ils nous ont permis de nous rendre compte de comment alimenter un wiki et aussi des différentes étapes qu'il sera nécessaire d'effectuer au cours de notre projet.

Par exemple, d'abord avoir une idée générale de ce que l'on veut faire puis ensuite l'adapter en fonction des obstacles qui s'offrent à nous.

Nous précisons également notre sujet. En effet, nous souhaiterions donner un aspect ludique à notre éthylotest. Par exemple, en faisant apparaître un bonhomme content quand on est en dessous du seuil limite et un autre mécontent lorsque ce seuil est dépassé.

LE 01/02/2022

Nous sommes retournés au fablab cet après-midi pour découper une première pièce à la découpeuse laser. Pièce que l'on avaient dessiné avec le logiciel Inskape le jour précédent.
Pour s'entraîner, nous avons donc réalisé un carré comprenant quatre cercles découpés sur la même face. Nous avons aussi gravé ce carré de nos initiales pour mettre également en application la gravure.
Son fonctionnement nous a été expliqué par des étudiants gérants le fablab:

- On commence par créer l'objet à découper via Inkscape (logiciel 2D). (Notons que les traits en rouge vont être découpés par le laser et que tout ce qui sera inscrit en couleur noir sera gravés.)

  1. Puis on enregistre le fichier sous format svg afin qu'il puisse être lu correctement par la découpeuse laser.
  2. On ouvre ensuite notre fichier sur l'ordinateur connecté à la découpeuse.
  3. Nous appuyons sur Imprimer.
  4. Un autre logiciel s'ouvre et nous permet de visualiser le dessin de notre objet.
  5. Il faut également régler la découpeuse en ajustant la hauteur du plan sur lequel on positionne le matériau qui sera découpé ainsi que l'endroit où on souhaite que le laser commence la découpe.

>Voici le travail obtenu en découpeuse laser:

Nous avons également créer un cube en 3D dont chaque face est percé d'un trou qui nous permet de voir à travers. >De même, des étudiants nous ont expliqués la démarche à suivre.
En effet avant de lancer l'expression, il faut:

- mettre le fichier sur une clé USB.

  1. régler l'épaisseur, le type de remplissage et la précision de l'impression.

Après ces quelques étapes, nous avons lancé l'impression (temps estimé=environ 2H).

LE 02/02/2022

Nous sommes allés chercher notre cube au Fablab.
Voici le résultat obtenu :

Notons qu'il a fallu grâce à des outils enlever ce qu'il y avait dans les cylindres puisqu'en effet avant d'imprimer la pièce, il faut enregistrer et vérifier certains paramètres sur un logiciel. Dans le cas du cube, comme il était percé, le logiciel insère un support dans certains endroits stratégiques afin que l'imprimante n'imprime pas dans le vide. L'imprimante va alors mettre de la matière facile à retirer là où des trous sont voulus. Pour avoir le résultat obtenu, il faut simplement retirer ce support se munissant d'un tournevis ou d'une perceuse et le tour est joué.

DEBUT OFFICIEL DU PROJET

LE 07/02/2022

Matériel à acheter

Pour tout matériel supplémentaire ou/et nécessaire, il faut demander par mail à Stephane.Muller@sorbonne-universite.fr, et mettre en copie Vincent Dupuis (Notre responsable au fablab). Nous avons rechercher un capteur d'alcool pour notre éthylotest sur le site de gotronic:

- https://www.gotronic.fr/art-capteur-de-gaz-mq3-grove-101020006-22958.htm

Nous avons également parler des différents étapes de notre projet ainsi que des différentes tâches que nous aurons à accomplir.
Ainsi, il faudra:

- s'occuper du programme permettant de transformer la détection d'alcool en une donnée affichée et exploitable sur un écran.

  1. fabriquer une boîte (de préférence en contre plaqué comme les nombreux exemples que l'on a pu voir au Fablab).
  2. étalonner le capteur, c'est à dire trouver une valeur seuil pour le capteur qui en affiche une en volt.
  3. alimenter le wiki à chaque nouvelle avancée ou étape du projet.

LE 14/02/2022

Aujourd'hui, grâce à notre précédente recherche, nous avons constaté que le capteur qui nous faut est le MQ-3. Par ailleurs, on n'a pas besoin de le commander puisque il y en a déjà au fablab. Ainsi, nous n'avons pas besoin de faire de commande.

Pour programmer le capteur, on pouvait soit utiliser un carte Arduino soit opter pour un appareil plus sophistiqué: le M5-STACK(=ensemble de modules constitués de cartes uniques, type de microcontrôleur).
Nous avons choisi le M5-STACK qui permet d'avoir un écran un peu plus grand et de simplifier les branchements puisque nous connectons directement la M5-STACK au capteur. Nous avons continué de découvrir le fonctionnement du M5 stack. En effet, nous cherchons surtout à le programmer pour pouvoir ainsi le connecter à notre détecteur d'alcool. Pour cela, on a effectué des recherches sur Internet, notamment dans le but de trouver un programme “copie” que l'on pourra modifier ou créer notre propre programme.

11H14: >Nous avons enfin réussi à installer le driver (qui permet la bonne liaison entre l'ordinateur et le périphérique).

Nous installons alors la bibliothèque du M5-STACK nécessaire pour “communiquer” avec ce dernier.
Rappelons que le but sera de programmer le capteur afin qu'il nous affiche soit les concentrations d'alcool soit un message par rapport au taux d'alcool détecté.

Nous utiliserons donc une boîte étanche.

Voici un lien tuto permettant de nous aider dans l'utilisation capteur du capteur gaz MQ-2: https://www.gotronic.fr/pj-2368.pdf
On parle bien ici du capteur MQ-2 et non MQ-3 car effectivement pour les essais de programmes il n'y a pas vraiment de différences entre ces capteurs mises à part que le capteur MQ-3 détecte plus précisément l'alcool.

D'autres liens nous ont aussi été utiles:

LE 21/02/2022:

Objectif du jour:

Nous avons rencontrer de nombreuses difficultés quant au programmation de la M5-STACK alors nous nous sommes dans un premier temps, rabattus sur la carte Arduino (nous avons en effet trouvé un modèle de branchement sur Internet dont nous pourrions nous inspirer).
Aujourd'hui, nous allons tester le capteur MQ-2. Pour ce faire, nous commençons par programmer la carte Arduino. Nous allons ensuite verser une concentration connue d’éthanol pour pouvoir étalonner notre capteur.
On réfléchit déjà aux contraintes qui permettront de façonner un modèle de boîte contenant notre capteur et le M5 stack. On réfléchit donc aux problématiques du boitier.

Répartition des taches

>Elena et Tom se chargent de faire le montage capteur/Arduino et cherche un programme pour la MQ-2.

Reda commence la maquette du boitier et tente de chercher parallèlement une solution pour pouvoir programmer avec la M5-Stack, qui serait tout de même bien plus avantageux que la carte arduino.
Elias s'occupe du wiki pour continuer la documentation.

Idées :

  • prendre 2 capteurs MQ-2 pour avoir plus de précision dans notre éthylotest final.
  • utiliser une LED qui s'allumera quand la limite en concentration d'alcool choisie est dépassée ou changer la couleur de l'écriture (passage du vert au rouge par exemple).

8h49: >Finalement après plusieurs essais en parallèles de continuer sur les cartes Arduino, nous avons réussi à faire fonctionner les M5-stack(il faut se connecter au wifi fablab su (sans proxy)). Nous allons essayer sur un ordinateur du fablab sur lequel la M5-STACK fonctionne.

Nous avons suivi la documentation ci-contre:

* https://phmarduino.wordpress.com/2017/09/03/station-de-mesure-les-capteurs-2/

Nous avons également réalisé le montage suivant:

D'après notre documentation, la LED rouge est un témoin du fonctionnement (mesure) du capteur. Par ailleurs, on s'en rend compte car le capteur chauffe et dégage un odeur (rien d'inquiétant car cet effet était indiqué sur le site du fabricant).
Il nous disent également que la LED verte s'allumerait lors du calibrage du capteur que nous n'avons pas effectué pour l'instant. C'est pourquoi elle est ici éteinte.
Notre éthylotest final pourrait allumer des LEDs de couleur différentes suivant le taux d'alcoolémie mesuré.
Par exemple :
  • verte de 0 à 0.29 g/L.
  • jaune de 0.30 à 0.49 g/L.
  • rouge au-delà.
Ces valeurs sont des exemples, nous les ajusterons le moment venu, pour qu'elles soient le plus intuitives et indicatives possibles.
Par rapport à l'unité de mesure, il s'agira également de choisir laquelle utiliser. Cela peut-être en mg/L d'air expiré, ou en g/L dans le sang. Il faudra ainsi adapter les valeurs limites dans le programme car les taux d'alcoolémie autorisées par la législation varient suivant l'unité.
Il y a un facteur 2 entre mg/L –> g/L
Il sera peut-être plus judicieux d'afficher à l'utilisateur une valeur en g/L car c'est sans doute la plus représentative pour la majorité des gens. Dans ce cas, nous devrons sûrement convertir les valeurs données par le capteur dans la bonne unité.
L'objectif est que la LED rouge s'allume quand le taux d'alcool limite est dépassé.
Nous avons également réalisé le montage avec la M5 Stack, le voici:

Les branchements ont été réalisé suivant ce modèle:

https://community.m5stack.com/topic/153/connecting-m5stack-to-an-mq-2-smoke-gas-sensor

Notons ici les dimensions du capteur MQ-2 afin de poursuivre le dessin du boîtier : 37x27x20 mm

Protocole étalonnage de notre capteur:

Nous devons insérer une quantité précise d'alcool dans une enceinte (avec le capteur à l'intérieur) étanche de volume connu. Nous en déduisons la concentration et on enregistre les mesures du capteur pour cette concentration. >On effectue cette manipulation pour différentes concentrations dans le but d'étalonner le capteur.
Pour que l'étalonnage soit le plus précis possible, il faut que l'enceinte soit parfaitement étanche pour éviter les fuites de gaz d'alcool. Le capteur fonctionnant sur les gazs, nous devons également nous assurer que l'éthanol que nous introduisons soit dans cette phase. Nous avons donc pensé à chauffer le milieu pour vaporiser intégralement l'éthanol introduit.
Il faut également trouver un moyen de “réinitialiser” la valeur, pour ne pas que l'alcool introduit pour la mesure précédente soit encore présent pour les autres mesures: cela rendrait nos calculs de concentrations erronés.
Le même problème se posera pour l'utilisation de l'éthylotest final, afin d'avoir des mesures fiables.
Il faut donc penser à une sortie par laquelle le gaz pourra s'échapper.
Nous avons trouvé sur Internet un programme qui pourrait convenir, du moins, on peut s'en inspirer.
/*
*******************************************************************************
* Copyright (c) 2021 by  M5Stack
*                 Equipped with M5Core sample source code
*                          配套  M5Core 示例源代码
* Visit the website for more information:https://docs.m5stack.com/en/core/gray
* 获取更多资料请访问:https://docs.m5stack.com/zh_CN/core/gray
*
* describe:Hello World
* date:2021/7/15
*******************************************************************************
*/
#include <M5Stack.h>

/* After M5Core is started or reset
the program in the setUp () function will be run, and this part will only be run once.
在 M5Core 启动或者复位后,即会开始执行setup()函数中的程序,该部分只会执行一次。 */
void setup(){
  M5.begin();  //Init M5Core.  初始化 M5Core
  M5.Power.begin(); //Init Power module.  初始化电源模块
                    /* Power chip connected to gpio21, gpio22, I2C device
                      Set battery charging voltage and current
                      If used battery, please call this function in your project */
  M5.Lcd.setTextSize (3);
   M5.Lcd.setTextColor(TFT_BLUE);
  M5.Lcd.print("Taux d'alchool:  ");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  pinMode(36, INPUT);

}

/* After the program in setup() runs, it runs the program in loop()
The loop() function is an infinite loop in which the program runs repeatedly
在setup()函数中的程序执行完后,会接着执行loop()函数中的程序
loop()函数是一个死循环,其中的程序会不断的重复运行 */
void  loop() { 
  M5.Lcd.println(analogRead(36));
delay(2000);

}
  
  

LE 07/03/2022

>Après avoir pris en main le capteur MQ-2 nous avons compris qu'il ne pourrait pas répondre correctement à nos attentes étant donné qu'il est sensible à plusieurs gazs mais qu'il ne peut faire de distinctions entre eux.

Nous nous sommes ainsi rabattus sur le capteur MQ-3 qui lui, est spécifique à l'éthanol.
Le fonctionnement et la prise en main sont relativement similaire au premier capteur (le MQ-3).

Voici les liens des programmes MQ-3:

* https://lastminuteengineers.com/mq3-alcohol-sensor-arduino-tutorial/

>Désormais, grâce au programme ci-dessus, des valeurs s'affichent environ toutes les deux secondes sur l'écran du M5-stack.

Seulement, nous ne savons pas réellement comment interpréter ces valeurs. Notons tout de même, que lorsque l'on approche un papier imbibé d'éthanol près du capteur, les valeurs indiquées augmentent. Ce qui indiquent ainsi une mesure de ces vapeurs d'éthanol.

Répartition des tâches:

Tom, Reda et Elena essayent désormais de modifier le programme trouvé ou d'en créer un autre permettant d'obtenir sur l'écran du M5stack les valeurs de la concentration en éthanol ainsi qu'un message indiquant :

- Vous avez trop bu.

  1. Vous avez bu dans des proportions légales.
  2. Vous êtes parfaitement sobre.

>Il est plus qu'urgent d'avancer sur le programme qui est la partie la plus importante de notre projet d'où cette répartition des tâches.

Nous avons fini de modéliser la boite pour contenir notre alcootest.

LE 14/03/2022:

Aujourd'hui nous avons créé notre boite à la découpeuse laser :

Nous avons choisi un contour en forme de créneaux (nous avons pris un modèle qui permet de créer ces créneaux sur Internet et nous l'avons utilisé sur Inkscape) pour pouvoir assembler et démonter simplement notre éthylotest (celui ci ressemblera donc à une sorte de boîtier).
Remarque: Malheureusement, les créneaux ne sont pas parfaitement uniformes et donc la boîte ne tient pas parfaitement bien. Or nous avons besoin d'un appareil rigide (dans le sens de non déformable) et bien assemblé puisqu'il ne devra pas se défaire ou se casser à chaque fois qu'on le prend en main pour l'utiliser. Nous avons pensé a de la colle sur la boîte déjà imprimée pour tenir les faces entre elles, seule la face supérieure ne sera pas collée pour pouvoir accéder aisément à l'intérieur de l'appareil.
Des modifications ont été apportés au programme inséré plus haut:

* M5.Lcd.print(“Hello World”); devient M5.Lcd.print(“Taux d'alcool: ”);

  • M5.Lcd.setTextSize (2)est ajouté afin de modifier la taille des valeurs affichées (les valeurs inscrites peuvent aller de 2 à 5) ce qui les rends plus visible.
Nous venons de lancer l'impression de l'embout (dans lequel on va souffler), on va le disposer sur le tuyau qui restera sur notre capteur, à chaque fois que quelqu'un voudra faire le test il prendra un nouvel embout.

LE 21/03/2022: Objectif du jour :

  1. Finir la programmation de la M5-STACK.
  2. Ecrire et éventuellement commencer à appliquer le protocole d’étalonnage.
  3. Mettre bien en forme le wiki et le compléter.
  4. Refaire notre boite en un peu plus grand (0,5-1cm), peut-être en plus épais. Il faudra trouver un moyen pour que l'écran de la M5-STACK ne bougent pas et soit caler dans le devant de la boîte.

Répartition des tâches :

Comme il est urgent d'avancer et de finir la programmation pour s'occuper ensuite des autres tâches (étalonnage); Elias, Reda et Elena s'occupent du programme. Tom s'occupe pour commencer d'actualiser le wiki.
Nous avons tout d'abord trouvé un moyen de convertir les valeurs que le capteur nous donne en volt.
Nouvelle grande avancée, nous avons notre programme de base.
Nous allons changer le système de tuyaux qui ne fonctionnait pas (car il n'y avait pas d'évacuation d'air)
Nous allons donc changer notre boite en mettant cette fois 2 ouvertures pour le tuyaux et en rajoutant plusieurs pièces à l’intérieur.
Voici le programme:
/* Change these values based on your calibration values */
#define Sober 120   // Define max value that we consider sober
#define Drunk 400   // Define min value that we consider drunk

#define MQ3pin 36

float sensorValue;  //variable to store sensor value

void setup() {
	Serial.begin(9600); // sets the serial port to 9600
	Serial.println("MQ3 warming up!");
	delay(20000); // allow the MQ3 to warm up
}

void loop() {
	sensorValue = analogRead(MQ3pin); // read analog input pin 0

	Serial.print("Sensor Value: ");
	Serial.print(sensorValue);
	
	// Determine the status
	if (sensorValue < Sober) {
		Serial.println("  |  Status: Stone Cold Sober");
	} else if (sensorValue >= Sober && sensorValue < Drunk) {
		Serial.println("  |  Status: Drinking but within legal limits");
	} else {
		Serial.println("  |  Status: DRUNK");
	}
	
	delay(2000); // wait 2s for next reading
}
Attention, il faut modifier ce code pour que les valeurs soit converties en taux d'alcool dans le sang par exemple

et afficher les valeurs.

Voici alors un autre code:
/* Change these values based on your calibration values */
#include <M5Stack.h>
#include <time.h>
#define SCREEN_W 320
#define SCREEN_H 240
#define TILE_SIZE 16
 #include "utility/MPU9250.h"
 #include "WiFi.h"
#define Sober 120   // Define max value that we consider sober
#define Drunk 400   // Define min value that we consider drunk

#define MQ3pin 36

float sensorValue;  //variable to store sensor value

void setup() {
  M5.begin();
  M5.Power.begin();
  Serial.begin(9600); // sets the serial port to 9600
  Serial.println("MQ3 warming up!");
  delay(20); // allow the MQ3 to warm up
}

void loop() {
   M5.Lcd.setTextColor(TFT_BLUE);
   M5.Lcd.print("         "); 
  sensorValue = analogRead(MQ3pin); // read analog input pin 0
  M5.Lcd.println(sensorValue);
  M5.Lcd.setTextSize(2);

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  
  // Determine the status
  if (sensorValue < Sober) {
    Serial.println("  |  Status: Stone Cold Sober");
  } else if (sensorValue >= Sober && sensorValue < Drunk) {
    Serial.println("  |  Status: Drinking but within legal limits");
  } else {
    Serial.println("  |  Status: DRUNK");
  }
  
  delay(2000); // wait 2s for next reading
}

28/03

DERNIERE SEANCE

Objectif de la séance:

  1. finaliser le programme.
  2. refaire la boite.
  3. étalonner.
  4. finir le wiki.

>Concernant le boîtier ou d'un autre nom la structure de l'éthylotest, on a modifié les longueurs et on a personnalisé notre boitier en mettant sur une face les différents types d'alcool, sur une autre le logo de notre cursus avec l'inscription Cursus Murge Intensive. Nous avons également signé avec nos initiales. Ces dernières permettent d'obtenir E.T.R.E , que l'on assimilera au nom de notre éthylotest. Voici encore un bout du code finalisé par Reda.

Pour l'évacuation de l'air, nous avons repensé notre boitier. Une pièce centrale à l'intérieur de laquelle on insère le capteur, permet de le relier à deux bouts de tuyaux : l'un pour l'arrivée et l'autre pour la sortie d'air.

Nous avons conçu la pièce sur Freecad puis l'avons imprimé sur les imprimantes 3D.

La voici en cours d'impression :

#include <M5Stack.h>

/* After M5Core is started or reset
the program in the setUp () function will be run, and this part will only be run once.
在 M5Core 启动或者复位后,即会开始执行setup()函数中的程序,该部分只会执行一次。 */
void setup(){
  M5.begin();  //Init M5Core.  初始化 M5Core
  M5.Power.begin(); //Init Power module.  初始化电源模块
                    /* Power chip connected to gpio21, gpio22, I2C device
                      Set battery charging voltage and current
                      If used battery, please call this function in your project */
  M5.Lcd.setTextColor(TFT_GREEN);

  M5.Lcd.setTextSize (9);
  pinMode(36, INPUT);
}
/* After the program in setup() runs, it runs the program in loop()
The loop() function is an infinite loop in which the program runs repeatedly
在setup()函数中的程序执行完后,会接着执行loop()函数中的程序
loop()函数是一个死循环,其中的程序会不断的重复运行 */
void  loop(){
   M5.Lcd.setCursor(1,1);
  M5.Lcd.setTextSize (3);
 M5.Lcd.print(" Taux d'alchool:  ");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  M5.Lcd.setCursor(1,5);
  M5.Lcd.setTextSize (3);
 M5.Lcd.print(" ______________");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
     if (analogRead(36)<300)  { M5.Lcd.setTextColor(TFT_GREEN); 
        // instruction(s) exécutée(s) si la condition est vraie
  M5.Lcd.setCursor(100,100);
  M5.Lcd.setTextSize (10);
  M5.Lcd.print(analogRead(36));
M5.Lcd.setCursor(200,150);
  M5.Lcd.setTextSize (2);
 M5.Lcd.print("    (((");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
 M5.Lcd.setCursor(200,170);
  M5.Lcd.print("   c'',)");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  M5.Lcd.setCursor(200,190);
  M5.Lcd.print("    <|>");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  M5.Lcd.setCursor(200,210);
  M5.Lcd.print("    _/\_");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  }
    else (analogRead(36)>=300)  { M5.Lcd.setTextColor(TFT_RED);
        // instruction(s) exécutée(s) si la condition est fausse
         M5.Lcd.setCursor(100,100);
  M5.Lcd.setTextSize (10);
  M5.Lcd.print(analogRead(36));
M5.Lcd.setCursor(200,150);
  M5.Lcd.setTextSize (2);
 M5.Lcd.print("    (((");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
 M5.Lcd.setCursor(200,170);
  M5.Lcd.print("   c''_)");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  M5.Lcd.setCursor(200,190);
  M5.Lcd.print("    <|>");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  M5.Lcd.setCursor(200,210);
  M5.Lcd.print("    _/\_");  // Print text on the screen (string) 在屏幕上打印文本(字符串)
  }
    }
delay(2000);
M5.Lcd.fillScreen(BLACK);
}

LE 02/04/2022:

Protocoles d'étalonnage

*1e étalonnage*

Nous l'avons effectué à l'occasion d'une soirée.
-Nous avons calculé le volume de sang des cobayes ; masse (en kg) x 0.075 L/kg = Volume sanguin total (en L)
-Nous avons relevé la quantité d'alcool ingérée (en fonction du degré d'alcool et de la quantité).
-Les cobayes boivent tous une quantité d'alcool différente.
-On attend environ 1h que l'alcool descende dans le sang, puis on fait souffler les cobayes dans l'alcootest. On relève la valeur indiquée.
-On trace enfin une courbe de la valeur en fonction de l'alcool dans le sang. Le temps nous a manqué, mais nous sommes censé convertir les valeurs directement dans notre programme. Au lieu de ça, on constate bien une augmentation des valeurs (passage de 800 à environ 2000) mais nous ne savons pas dans quelle unité elles nous sont fournies (probablement en volt) et il est difficile d'obtenir une relation valeurs/alcoolémie cohérente avec ce protocole.

*2e étalonnage* Plus sérieux cette fois-ci (à réaliser dans un labo de chimie de préférence)

-On allume notre alcootest 15 min avant de commencer les mesures, afin qu'il se stabilise correctement (avec l'humidité et le chaleur de la pièce le “0” change). On notera le 0 avant le début de chaque mesure.
-On introduit une volume précis d'alcool (de concentration connue) dans une fiole jaugée, peu importe le volume.La fiole doit être parfaitement propre et sèche. On mesure la quantité d'alcool à introduire avec une micropipette. Les quantités doivent être très petites pour être certain que tout l'alcool introduit s'évapore. On suppose aussi que si les concentrations sont trop grande, notre capteur va saturer.
-Juste après avoir introduit l'alcool, on rebouche la fiole et on attend quelques secondes afin que l'alcool s'évapore au mieux. L'étalonnage pourra être fait dans un environnement légèrement chauffé pour optimiser la vaporisation de l'alcool.
-On retire le bouchon et on place immédiatement l'embout de notre alcootest au niveau du goulot de la fiole (on l'insère un peu, il ne doit pas y avoir d'espace entre la fiole et le tuyau), évidemment à la verticale (voir schéma) afin de recevoir les vapeurs d'alcool.
-On attend que la valeur se stabilise (à plus ou moins 25), on retire l'alcootest et on attend que la valeur descende et revienne au zéro (également a plus ou moins 25, environ 1 min). On prend notre nouvelle valeur de 0 si elle a changé, mais il serait préférable de revenir au même zéro.
-On recommence ces étapes avec d'autres concentrations d'alcool. On peut soit changer la quantité d'alcool introduite soit changer le volume des fioles (à voir ce qui fonctionne le mieux).Si on choisit de garder le même volume pour la fiole, il serait quand même préférable de changer de fiole pour éviter d'avoir des résidus de la mesure précédente (et donc avoir un stock de plusieurs fioles propres de même volume).
-On commence avec de l'alcool pur, de pharmacie ou ménager ; on pourra finaliser l'étalonnage avec de l'alcool à boire (assez fort, type Vodka, Gin ou plus fort, et alcool blanc de préférence).
-On note enfin toutes les valeurs dans un tableau (Excel par exemple) puis on trace une courbe de la valeur affichée en fonction de la concentration d'alcool. On vérifie que cette courbe correspond à la courbe théorique puis si on y arrive on insère l'équation de la courbe dans le programme.
-Et on n'oublie pas de remercier le personnel de Chimie bien-sûr !

Erreur :

Nous avons commis une erreur dans l'assemblage de notre projet. Nous avons collé deux pièces ensemble avec de la colle qui contenait du butanol, donc le capteur montait en flèche au moment du montage.

Nous attendons que cette dernière sèche.

Observations:

On a pu observer que notre “0” était à 400+-25 dans le Fablab.

Quand nous l'avons mis dehors, le “0” tournait aux alentours de 200+-25. Et dans un salle de fête assez petite, il montait à 1000+-25.

Le capteur renvoie des valeurs entre 0 et 4095 (qui correspond à 12 bits).
Tout ceci montre la forte sensibilité du capteur et entraîne de très grandes imprécisions sur les valeurs trouvées. Toutefois, nous pourrons garder la tendance qui elle est correcte (augmentation ou diminution).Il faudrait initialiser le “0” à chaque allumage.
Nous avons tout de même pu récupérer quelques mesures.

Capteur :

https://www.sparkfun.com/datasheets/Sensors/MQ-3.pdf (fiche technique)

La courbe théorique du capteur est censée ressembler à:

On peut voir que se sont des courbes en échelle log-log de RS/RO (résistance ratio) en fonction de la concentration d'alcool. Nous avons pu vérifier nos résultats grâce a une étalonnage fait un autre groupe

https://wiki.fablab.sorbonne-universite.fr/wiki/doku.php?id=wiki:projets:ethylometre21.7&s[]=are&s[]=dossier&s[]=ecrit

Cette courbe nous montre que la température et l'humidité font varier le capteur de façon significative. La température doit être comprise entre 18°C et 22°C et l'humidité entre 60% et 70%.

Notre code rêvé :)

- On allume l'alcootest.

- On appuie sur un des bouton pour établir le 0 (réinitialisation de la valeur pour avoir des valeurs cohérentes en fonction de l'environnement) dans la pièce avant de souffler dedans.

- Nous renvoie le taux d'alcool que l'on a dans le sang.

- Les valeur deviennent rouge et un smiley s'affiche quand on dépasse le taux d'alcool autorisé pour conduire.

Notre code actuel :/

- Affiche les valeurs non convertie (celle du ratio des résistance comprise entre 0 et 4095) ; nécessite l'étalonnage.

- Affiche un smiley.

- changement de couleur pas au point (superposition de couleur).


Avancement du projet

Il nous reste à finaliser tous les détails de notre éthylotest. En effet, certains paramètres restent encore à voir comme l'affichage de valeurs directement exploitables, c'est à dire en grammes d'éthanol dans le sang par exemple.
Toutefois, nous avons quand même obtenu un résultat assez satisfaisant qui donne déjà une idée du projet tel qu'il devrait être abouti.
La principale étape qu'il nous reste à réaliser est celle de l'étalonnage : le projet sera alors quasiment abouti


                                            ==== MERCI A VOUS ====
wiki/projet/cmi2022grb/gpb1.txt · Dernière modification: 2022/04/11 14:20 de 21113609