Nota

Ciao, benvenuto nella Comunità degli Appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci la tua conoscenza di Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Why Join?

  • Expert Support: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Learn & Share: Scambia consigli e tutorial per migliorare le tue competenze.

  • Exclusive Previews: Ottieni accesso anticipato alle nuove annunci di prodotti e anteprime esclusive.

  • Special Discounts: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Festive Promotions and Giveaways: Partecipa a giveaway e promozioni festive.

👉 Pronto per esplorare e creare con noi? Clicca [qui] e unisciti oggi!

Lezione 36: Allarme per Fuga di Gas

Questo progetto si basa sulla simulazione di un rilevamento di fuga di gas utilizzando una scheda ESP32. Integrando un sensore di gas MQ-2 e un LED RGB, questa dimostrazione legge continuamente la concentrazione di gas. Se questa concentrazione supera una soglia predefinita, viene attivato un allarme (buzzer) e il LED RGB si illumina di rosso. Al contrario, se la concentrazione rimane al di sotto di questa soglia, l’allarme rimane inattivo e il LED brilla di verde. È importante notare che questa dimostrazione è puramente illustrativa e non dovrebbe sostituire i veri sistemi di rilevamento delle fughe di gas.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Sensori per Maker Universali

94

Universal Maker Sensor Kit

Puoi anche acquistarli separatamente dai link qui sotto.

Introduzione al Componente

Link per l’Acquisto

ESP32 & Scheda di Sviluppo (ESP32 WROOM 32E)

ACQUISTA

Modulo Sensore Gas/Fumo (MQ2)

ACQUISTA

Modulo Buzzer Passivo

ACQUISTA

Modulo LED RGB

-

Breadboard

ACQUISTA

Cablaggio

../_images/Lesson_36_Gas_leak_alarm_esp32_bb.png

Codice

Analisi del Codice

Il principio fondamentale del progetto si basa sul monitoraggio continuo della concentrazione di gas. Quando la concentrazione di gas rilevata supera una certa soglia, scatta un allarme e cambia il colore del LED in rosso. Questo serve come meccanismo di avviso simulato, indicativo di condizioni potenzialmente pericolose. Se la concentrazione scende sotto la soglia, l’allarme viene disattivato e il LED passa al verde, indicando un ambiente sicuro.

  1. Definizione di Costanti e Variabili

    Queste righe dichiarano e inizializzano i numeri dei pin per vari componenti. Il sensorPin indica il pin analogico dove è collegato il sensore di gas MQ-2. sensorValue è una variabile intera che memorizza l’uscita analogica del sensore. Il buzzerPin indica il pin digitale a cui è collegato il buzzer. Infine, RPin e GPin sono i pin per i canali rosso e verde del LED RGB, rispettivamente.

    // Definire i numeri dei pin per il sensore di gas
    const int sensorPin = 35;
    int sensorValue;
    
    // Definire il numero del pin per il buzzer
    const int buzzerPin = 19;
    
    // Definire i numeri dei pin per il LED RGB
    const int RPin = 25;  // Canale R del LED RGB
    const int GPin = 26;  // Canale G del LED RGB
    
  2. Inizializzazione in setup()

    La funzione setup() inizializza le impostazioni necessarie. La comunicazione seriale inizia a una velocità di trasmissione di 9600, consentendoci di visualizzare le letture dei sensori sul Monitor Seriale. I pin per il buzzer e il LED RGB sono impostati come OUTPUT, il che significa che invieranno segnali agli componenti esterni.

    void setup() {
        Serial.begin(9600);  // Iniziare la comunicazione seriale a 9600 baud
    
        // Inizializzare i pin del buzzer e del LED RGB come output
        pinMode(buzzerPin, OUTPUT);
        pinMode(RPin, OUTPUT);
        pinMode(GPin, OUTPUT);
    }
    
  3. Loop Principale: Lettura del Sensore e Attivazione dell’Allarme

    La funzione loop() legge continuamente l’uscita del sensore di gas. La lettura viene poi visualizzata sul Monitor Seriale per l’osservazione. A seconda del valore del sensore, possono verificarsi due scenari:

    • Se il valore supera 300, il buzzer viene attivato usando tone(), e il LED RGB diventa rosso.

    • Se il valore è inferiore a 300, il buzzer viene silenziato usando noTone(), e il LED diventa verde.

    Infine, viene introdotto un ritardo di 50 millisecondi prima della prossima iterazione del loop per gestire la frequenza di lettura e ridurre il carico della CPU.

    void loop() {
        // Leggere il valore analogico del sensore di gas
        sensorValue = analogRead(sensorPin);
    
        // Stampare il valore del sensore sul monitor seriale
        Serial.print("Analog output: ");
        Serial.println(sensorValue);
    
        // Se il valore del sensore supera la soglia, attivare l'allarme e rendere il LED RGB rosso
        if (sensorValue > 3000) {
            tone(buzzerPin, 500, 300);
            digitalWrite(GPin, LOW);
            digitalWrite(RPin, HIGH);
            delay(500);
            // fermare la suoneria:
            noTone(buzzerPin);
        } else {
            // Se il valore del sensore è sotto la soglia, spegnere l'allarme e rendere il LED RGB verde
            noTone(buzzerPin);
            digitalWrite(RPin, LOW);
            digitalWrite(GPin, HIGH);
        }
    
        // Attendere 50 millisecondi prima della prossima iterazione del loop
        delay(50);
    }