Arduino : Détecteur de Gaz + buzzer
Dans ce chapitre sur l’arduino nous verrons deux choses, le fonctionnement d’un détecteur de Gaz (CO2, propane, butane, etc) et le buzzer.
Le projet est disponible sur le hackPoint ici.
Table of Contents
Le matériel
Vous trouverez la page ici avec le matériel, pour cela il vous faut
- Un arduino (logique :p )
- Un détecteur de Gaz
- Un buzzer
- Une breadBoard
- Une résistance de 120Hom
- Environs 15 minutes
Schéma :
On branche donc le +5 sur le VCC du sensor, le GND sur le GND et le A0 sur A0 du sensor
Version A : Le détecteur de Gaz
Le détecteur de gaz s’utilise avec une alimentation 5V, on peut le brancher directement sur l’arduino. Ne vous inquiétez pas, il y a 4 broches mais on en utilise seulement 3 (ça ma perturbé aussi au début :p).
Le code ci-dessus est assez simple.
[highlighter]
const int gasSensor = 0; void setup() { Serial.begin(9600); // sets the serial port to 9600 } void loop() { float voltage; voltage = getVoltage(gasSensor); Serial.println(voltage); delay(500); // wait a bit between buzzes } float getVoltage(int pin) { return (analogRead(pin) * 0.004882814); // This equation converts the 0 to 1023 value that analogRead() // returns, into a 0.0 to 5.0 value that is the true voltage // being read at that pin. }
On récupère la tension que le capteur de gaz émet puis on l’affiche sur dans la console avec le port série (la qui est l’USB).
La fonction getVoltage permet de lire la tension sur le pin gasSensor qui est le 0.
Version B : Le détecteur de Gaz + le buzzer
A quoi sert un détecteur s’il ne peut vous avertir du danger ??!
Le buzzer permet d’émettre un bruit suivant la fréquence que l’on lui passe. Il est existe deux types le passive et l’actif.
[highlighter]
const int gasSensor =0; void setup() { Serial.begin(9600); // sets the serial port to 9600 pinMode(4, OUTPUT); // set a pin for buzzer output } void loop() { float voltage; voltage = getVoltage(gasSensor); Serial.println(voltage); if( voltage > 1 ) buzz(4, 2500, 500); // buzz the buzzer on pin 4 at 2500Hz for 1000 milliseconds delay(500); // wait a bit between buzzes } float getVoltage(int pin) { return (analogRead(pin) * 0.004882814); // This equation converts the 0 to 1023 value that analogRead() // returns, into a 0.0 to 5.0 value that is the true voltage // being read at that pin. } void buzz(int targetPin, long frequency, long length) { long delayValue = 1000000/frequency/2; // calculate the delay value between transitions //// 1 second's worth of microseconds, divided by the frequency, then split in half since //// there are two phases to each cycle long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing //// multiply frequency, which is really cycles per second, by the number of seconds to //// get the total number of cycles to produce for (long i=0; i < numCycles; i++){ // for the calculated length of time... digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphram delayMicroseconds(delayValue); // wait for the calculated delay value digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphram delayMicroseconds(delayValue); // wait againf or the calculated delay value } }
Pour intégrer le buzzer, nous avons juste repris le code précédent et intégrés une nouvelle fonction buzz qui génère le signal. Dans la fonction principale loop, j’ai rajouter un if qui permet de comparer si la tension dépasse 1V nous activons le buzzer.
Sommaire
est ce que le code est le meme pour tous les capteurs de gaz de la meme categorie (capteur monoxyde par exemple)
merci
Si il est basé sur la même architecture oui.
plus d’informations svp
Dite-moi ce que vous voulez savoir ?