注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。
なぜ参加するのか?
専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。
学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。
限定プレビュー:新製品発表や予告編に早期アクセス。
特別割引:最新製品の特別割引を楽しむ。
フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。
👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
レッスン36: ガス漏れ警報
このプロジェクトは、ESP32ボードを使用したガス漏れ検知シナリオのシミュレーションに関するものです。 MQ-2ガスセンサーとRGB LEDを組み込むことで、このデモはガス濃度を継続的に読み取ります。 もしこの濃度があらかじめ設定された閾値を超えた場合、 アラーム(ブザー)を作動させ、RGB LEDを赤色に点灯させます。 逆に、濃度がこの閾値を下回った場合、 アラームは作動せず、LEDは緑色に点灯します。 このデモはあくまで参考用であり、実際のガス漏れ検知システムの代わりにはなりません。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
すべてのキットを購入するのが便利です、こちらのリンクからどうぞ:
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
以下のリンクから個別に購入することもできます。
Component Introduction |
Purchase Link |
---|---|
ESP32 & Development Board |
|
- |
|
配線
Code
Code Analysis
このプロジェクトの核心は、ガス濃度を継続的に監視することです。検出されたガス濃度が一定の閾値を超えると、アラームが鳴り、LEDの色が赤に変わります。これは潜在的に危険な状態を示す警告メカニズムのシミュレーションです。濃度が閾値を下回ると、アラームは解除され、LEDは緑色に変わり、安全な環境を示します。
定数と変数の定義
これらの行は、さまざまなコンポーネントのピン番号を宣言し、初期化します。
sensorPin
は、MQ-2ガスセンサーが接続されているアナログピンを示します。sensorValue
は、センサーのアナログ出力を格納する整数変数です。buzzerPin
は、ブザーが接続されているデジタルピンを示します。最後に、RPin
とGPin
は、RGB LEDの赤と緑のチャンネルのピン番号です。// Define the pin numbers for the Gas Sensor const int sensorPin = 35; int sensorValue; // Define the pin number for the buzzer const int buzzerPin = 19; // Define pin numbers for the RGB LED const int RPin = 25; // R channel of RGB LED const int GPin = 26; // 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つのシナリオが発生します:
値が3000を超えると、
tone()
を使用してブザーが作動し、RGB LEDが赤に点灯します。値が3000未満の場合、
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 > 3000) { tone(buzzerPin, 500, 300); digitalWrite(GPin, LOW); digitalWrite(RPin, HIGH); delay(500); // stop the tone playing: noTone(buzzerPin); } 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); }