注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン38: ガス漏れアラーム

このプロジェクトでは、Arduino Unoボードを使用してガス漏れ検知シナリオをシミュレートします。MQ-2ガスセンサーとRGB LEDを組み込むことで、ガス濃度を継続的に読み取ります。この濃度が事前に設定された閾値を超えると、アラーム(ブザー)が作動し、RGB LEDが赤く点灯します。逆に、濃度がこの閾値以下にとどまる場合、アラームは作動せず、LEDは緑色に点灯します。このデモはあくまで例示的なものであり、実際のガス漏れ検知システムの代替として使用しないでください。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

一式キットを購入するのが便利です。こちらのリンクをご覧ください:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから別々に購入することもできます。

Component Introduction

Purchase Link

Arduino UNO R3 or R4

購入

ガス/煙センサーモジュール (MQ2)

購入

パッシブブザーモジュール

購入

RGB LEDモジュール

-

ブレッドボード

購入

配線

../_images/Lesson_38_Gas_leak_alarm_uno_bb.png

コード

コード解析

このプロジェクトの基本原理は、ガス濃度を継続的に監視することです。検出されたガス濃度が一定の閾値を超えると、アラームが鳴り、LEDの色が赤に変わります。これは潜在的に危険な状態を示す警告メカニズムとして機能します。濃度が閾値以下に下がると、アラームは解除され、LEDは緑に変わり、安全な環境を示します。

  1. 定数と変数の定義

    以下の行では、各コンポーネントのピン番号を宣言および初期化します。``sensorPin``はMQ-2ガスセンサーが接続されているアナログピンを示します。``sensorValue``はセンサーのアナログ出力を格納する整数変数です。``buzzerPin``はブザーが接続されているデジタルピンを示します。最後に、``RPin``と``GPin``はRGB LEDの赤と緑のチャンネルのピンです。

    // Define the pin numbers for the Gas Sensor
    const int sensorPin = A0;
    int sensorValue;
    
    // Define the pin number for the buzzer
    const int buzzerPin = 9;
    
    // Define pin numbers for the RGB LED
    const int RPin = 5;  // R channel of RGB LED
    const int GPin = 6;  // G channel of RGB LED
    
  2. ``setup()``での初期化

    setup()``関数は必要な設定を初期化します。シリアル通信はボーレート9600で開始され、シリアルモニタでセンサーの読み取り値を表示できるようになります。ブザーとRGB LEDのピンは ``OUTPUT として設定され、外部コンポーネントに信号を送るようになります。

    void setup() {
      Serial.begin(9600);  // Start serial communication at 9600 baud rate
    
      // Initialize the buzzer and RGB LED pins as output
      pinMode(buzzerPin, OUTPUT);
      pinMode(RPin, OUTPUT);
      pinMode(GPin, OUTPUT);
    }
    
  3. メインループ:センサーの読み取りとアラームのトリガー

    ``loop()``関数はガスセンサーの出力を継続的に読み取ります。この読み取り値はシリアルモニタに表示され、観察できます。センサー値に応じて、次の2つのシナリオが発生します:

    • 値が300を超えると、 tone() を使用してブザーが作動し、RGB LEDが赤くなります。

    • 値が300未満の場合、 noTone() を使用してブザーが停止し、LEDが緑になります。

    最後に、次のループ繰り返しまでの間に50ミリ秒の遅延が導入され、読み取り頻度を管理し、CPUの負荷を軽減します。

    void loop() {
      // Read the analog value of the gas sensor
      sensorValue = analogRead(sensorPin);
    
      // Print the sensor value to the serial monitor
      Serial.print("Analog output: ");
      Serial.println(sensorValue);
    
      // If the sensor value exceeds the threshold, trigger the alarm and make the RGB LED red
      if (sensorValue > 300) {
        tone(buzzerPin, 500, 300);
        digitalWrite(GPin, LOW);
        digitalWrite(RPin, HIGH);
      } else {
        // If the sensor value is below the threshold, turn off the alarm and make the RGB LED green
        noTone(buzzerPin);
        digitalWrite(RPin, LOW);
        digitalWrite(GPin, HIGH);
      }
    
      // Wait for 50 milliseconds before the next loop iteration
      delay(50);
    }