ガス漏れ警報器¶
このプロジェクトは、Arduino Unoボードを用いてガス漏れ検出のシミュレーションを行います。MQ-2ガスセンサーとRGB LEDを組み込むことで、ガス濃度を連続的に監視します。濃度があらかじめ設定した閾値を超えた場合、警報(ブザー)が鳴り、RGB LEDが赤く点灯します。逆に、濃度がこの閾値以下であれば、警報は作動せず、LEDは緑色に輝きます。このデモは純粋に説明的なものであり、実際のガス漏れ検出システムの代わりにはなりません。
1. 回路の作成¶
2. コード¶
ultimate-sensor-kit\fun_project\02-Gas_leak_alarm
のパスにある02-Gas_leak_alarm.ino
ファイルを開くか、このコードを Arduino IDE にコピーしてください。
3. コードの説明¶
このプロジェクトの核心は、ガス濃度を継続的に監視することです。検出されたガス濃度が特定の閾値を超えた場合、警報が作動し、LEDの色が赤に変わります。これは、危険な状況を示す模擬警報機構となります。濃度が閾値以下になった場合、警報は解除され、LEDは緑色に戻り、安全な環境であることを示します。
定数と変数の定義
この部分で、各コンポーネントのピン番号を宣言し、初期化します。
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
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); }
メインループ:センサーの読み取りと警報の作動
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); }