๐ ้กน็ฎๆฆ่ฟฐ
ๆฌ้กน็ฎๅฎ็ฐไบไธไธชๅไผ ๆๅจๆบ่ฝ็ซ็พๆฅ่ญฆ็ณป็ป๏ผ้็จESP32-C6ไฝไธบไธปๆง่ฏ็๏ผ็ปๅ็ซ็ฐไผ ๆๅจๅMQ-2ๆฐไฝไผ ๆๅจ๏ผๅฎ็ฐไปๆฉๆ็้พ้ข่ญฆๅฐๆ็ซๆฅ่ญฆ็ๅ จๆนไฝไฟๆคใ
๐ฏ ๆ ธๅฟ็นๆง
โ ๅไผ ๆๅจ่ๅ๏ผ็ซ็ฐไผ ๆๅจ๏ผๆ็ซๆฃๆต๏ผ + MQ-2๏ผ็้พ/ๆฐไฝๆฃๆต๏ผ
โ ๅ็บงๆฅ่ญฆ๏ผๅฎๅ จ โ ๆฐไฝ้ข่ญฆ โ ็ซ็พ่ญฆๆฅไธ็บง็ถๆ
โ ๆฉๆ้ข่ญฆ๏ผMQ-2ๅฏๅจ่ตท็ซๅๆฃๆตๅฐ็้พๅๅฏ็ๆฐไฝ
โ ๆๆบ่้ธฃๅจ๏ผ85dB+ๅคง้ณ้๏ผๆฅไฟ/็ผๆ ขๅๆจกๅผๆฅ่ญฆ
โ ๅ่ฒLEDๆ็คบ๏ผ็บข่ฒ๏ผ็ซ็พ๏ผ+ ้ป่ฒ๏ผ้ข่ญฆ๏ผ็ด่งๆพ็คบ
โ ๆบ่ฝ่ชๆฃ๏ผๅผๆบ่ชๅจๆฃๆตๆๆ็ปไปถๆฏๅฆๆญฃๅธธ
โ
ไฝ่ฏฏๆฅ็๏ผๅไผ ๆๅจไบคๅ้ช่ฏ๏ผๆ้ซๅฏ้ ๆง
๐ ๏ธ ็กฌไปถๆธ ๅ
| ็ปไปถ | ๅๅท/่งๆ ผ | ๆฐ้ | ไฝ็จ | ๅ่ไปทๆ ผ |
|------|-----------|------|------|----------|
| ไธปๆงๆฟ | ESP32-C6-WROOM-1 | 1 | ๆ ธๅฟๆงๅถๅจ๏ผๆฏๆWiFi/Thread/Zigbee | ยฅ25 |
| ็ซ็ฐไผ ๆๅจ | ็บขๅค็ซ็ฐไผ ๆๅจๆจกๅ | 1-2 | ๆฃๆตๆ็ซ๏ผ760-1100nm็บขๅคๅ
๏ผ | ยฅ4 |
| ๆฐไฝไผ ๆๅจ | MQ-2ไผ ๆๅจๆจกๅ | 1 | ๆฃๆต็้พ/ๆถฒๅๆฐ/็ฒ็ท็ญๅฏ็ๆฐไฝ | ยฅ5 |
| ๆๆบ่้ธฃๅจ | 5V 85dB+ | 1 | ๅฃฐ้ณๆฅ่ญฆ๏ผๆจ่ๆๆบ๏ผ | ยฅ3 |
| ็บข่ฒLED | 5mm้ซไบฎLED | 1 | ็ซ็พ่ญฆๆฅๆ็คบ | ยฅ0.5 |
| ้ป่ฒLED | 5mm LED | 1 | ๆฐไฝ้ข่ญฆๆ็คบ | ยฅ0.5 |
| NPNไธๆ็ฎก | 8050ๆS8050 | 1 | ่้ธฃๅจ้ฉฑๅจๆพๅคง | ยฅ0.5 |
| ็ต้ป | 220ฮฉ ร 2๏ผLED้ๆต๏ผ | 2 | LED้ๆตไฟๆค | ยฅ0.2 |
| ็ต้ป | 1kฮฉ ร 1๏ผไธๆ็ฎกๅบๆ๏ผ | 1 | ไธๆ็ฎกๅบๆ้ๆต | ยฅ0.2 |
| ้ขๅ
ๆฟ | ๆ ๅ้ขๅ
ๆฟ | 1 | ็ต่ทฏๆญๅปบ | ยฅ3 |
| ๆ้ฆ็บฟ | ๅ
ฌๅฏนๅ
ฌ/ๅ
ฌๅฏนๆฏ | ่ฅๅนฒ | ็ต่ทฏ่ฟๆฅ | ยฅ2 |
| ๆปๆๆฌ | - | - | - | ็บฆยฅ44 |
๐ก ไธบไปไน้ๆฉๆๆบ่้ธฃๅจ๏ผ
| ๅฏนๆฏ้กน | ๆๆบ่้ธฃๅจ โ
| ๆ ๆบ่้ธฃๅจ |
|--------|--------------|-----------|
| ๆงๅถๆนๅผ | ็ฎๅ๏ผๆฐๅญIOๅผๅ
ณ๏ผ | ๅคๆ๏ผ้่ฆPWM้ข็๏ผ |
| ้ณ้ | 85-95dB๏ผๅคง๏ผ | 60-80dB๏ผๅฐ๏ผ |
| ไปฃ็ | `digitalWrite(pin, HIGH)` | `tone(pin, 2000)` |
| ็จณๅฎๆง | ๅบๅฎ้ณ่ฐ๏ผ็จณๅฎ | ้ณ่ฐๅฏ่ฝไธ็จณๅฎ |
| ้็จๅบๆฏ*| โ
็ซ็พๆฅ่ญฆ | ้ณไนๆญๆพใๆ็คบ้ณ |
๐ ๆฅ็บฟ่ฏดๆ
ๅผ่ๅ้ ่กจ
| ESP32-C6ๅผ่ | ่ฟๆฅ่ฎพๅค | ๅ่ฝ่ฏดๆ |
|-------------|---------|---------|
| GPIO2 | ็ซ็ฐไผ ๆๅจ DO | ๆฐๅญ่พๅบ๏ผLOW=ๆฃๆตๅฐ็ซ็ฐ๏ผ |
| GPIO3 | MQ-2 AO | ๆจกๆ่พๅบ๏ผ0-4095๏ผๆตๅบฆๅผ๏ผ |
| GPIO4 | MQ-2 DO | ๆฐๅญ่พๅบ๏ผLOW=่ถ
้ๅผ๏ผ |
| GPIO5 | ไธๆ็ฎกๅบๆ | ๆงๅถ่้ธฃๅจๅผๅ
ณ |
| GPIO6 | ็บข่ฒLEDๆญฃๆ | ็ซ็พ่ญฆๆฅๆ็คบ |
| GPIO7 | ้ป่ฒLEDๆญฃๆ | ๆฐไฝ้ข่ญฆๆ็คบ |
| 3.3V | ็ซ็ฐไผ ๆๅจVCC | ไพ็ต |
| 5V | MQ-2 VCC, ่้ธฃๅจ+ | ไพ็ต๏ผMQ-2้ๅ ็ญ๏ผ |
| GND | ๆๆ่ฎพๅคGND | ๅ
ฌๅ
ฑๅฐ |
่ฏฆ็ปๆฅ็บฟๅพ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ESP32-C6 ็ซ็พๆฅ่ญฆ็ณป็ปๆฅ็บฟๅพ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ใ็ซ็ฐไผ ๆๅจใ
โโโโโโโโโโโโโโโ
โ ็ซ็ฐไผ ๆๅจ โ
โ โ
โ VCC GND DO AO โ
โโโโโฌโโโโฌโโโโฌโโโโโ
โ โ โ
โ โ โโโโโโโ ESP32-C6 GPIO2
โ โโโโโโโโโโโ ESP32-C6 GND
โโโโโโโโโโโโโโโ ESP32-C6 3.3V
ใMQ-2ๆฐไฝไผ ๆๅจใ
โโโโโโโโโโโโโโโ
โ MQ-2ๆจกๅ โ
โ (้้ข็ญ) โ
โ VCC GND AO DO โ
โโโโฌโโโฌโโโฌโโโฌโโ
โ โ โ โ
โ โ โ โโโโ ESP32-C6 GPIO4 (ๆฐๅญ่พๅบ)
โ โ โโโโโโโ ESP32-C6 GPIO3 (ๆจกๆ่พๅบ)
โ โโโโโโโโโโ ESP32-C6 GND
โโโโโโโโโโโโโ ESP32-C6 5V (โ ๏ธๆณจๆ๏ผMQ-2้5Vไพ็ต)
ใๆๆบ่้ธฃๅจ + ไธๆ็ฎก้ฉฑๅจใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 5V โ
โ โ โ
โ โโโโ ่้ธฃๅจ+ โ
โ ่้ธฃๅจ- โ
โ โ โ
โ โโโโ 8050้็ตๆ(C) โ
โ 8050ๅๅฐๆ(E) โ GND โ
โ 8050ๅบๆ(B) โ
โ โ โ
โ 1kฮฉ โ
โ โ โ
โ ESP32-C6 GPIO5 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ใLEDๆ็คบ็ฏใ
็บข่ฒLED๏ผ็ซ็พ่ญฆๆฅ๏ผ:
ๆญฃๆ โ 220ฮฉ โ ESP32-C6 GPIO6
่ดๆ โ GND
้ป่ฒLED๏ผๆฐไฝ้ข่ญฆ๏ผ:
ๆญฃๆ โ 220ฮฉ โ ESP32-C6 GPIO7
่ดๆ โ GND
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ ๏ธ ้่ฆๆ็คบ๏ผ โ
โ 1. MQ-2ไผ ๆๅจ้่ฆ5Vไพ็ตไปฅไฟ่ฏๅ ็ญๅ
ไปถๆญฃๅธธๅทฅไฝ โ
โ 2. ็ซ็ฐไผ ๆๅจไฝฟ็จ3.3Vไพ็ตๅณๅฏ โ
โ 3. ไธๆ็ฎก8050็ๅผ่๏ผE(ๅๅฐๆ) C(้็ตๆ) B(ๅบๆ) โ
โ 4. LEDๅกๅฟ
ไธฒ่220ฮฉ็ต้ป๏ผๅฆๅไผ็งๆฏ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ป ๅฎๆดArduinoไปฃ็
ไธป็จๅบ๏ผFire_Alarm_System.ino๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ESP32-C6 ๆบ่ฝ็ซ็พๆฅ่ญฆ็ณป็ป v2.0
// ไฝ่
: XIUYUAN
// ๅ่ฝ: ็ซ็ฐๆฃๆต + ๆฐไฝๆฃๆต + ๅ็บงๆฅ่ญฆ
// ็กฌไปถ: ESP32-C6 + ็ซ็ฐไผ ๆๅจ + MQ-2 + ๆๆบ่้ธฃๅจ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๅผ่ๅฎไน
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
#define FLAME_SENSOR_PIN 2 // ็ซ็ฐไผ ๆๅจๆฐๅญ่พๅบ (LOW=ๆฃๆตๅฐ็ซ็ฐ)
#define MQ2_ANALOG_PIN 3 // MQ-2ๆจกๆ่พๅบ (0-4095)
#define MQ2_DIGITAL_PIN 4 // MQ-2ๆฐๅญ่พๅบ (LOW=่ถ
้ๅผ)
#define BUZZER_PIN 5 // ๆๆบ่้ธฃๅจๆงๅถๅผ่
#define LED_FIRE 6 // ็บข่ฒLED๏ผ็ซ็พ่ญฆๆฅ๏ผ
#define LED_GAS 7 // ้ป่ฒLED๏ผๆฐไฝ้ข่ญฆ๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ็ณป็ปๅๆฐ้
็ฝฎ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
#define GAS_THRESHOLD 1500 // MQ-2ๆฐไฝๆตๅบฆ้ๅผ (0-4095)
#define PREHEATING_TIME 30000 // MQ-2้ข็ญๆถ้ด๏ผ30็ง๏ผ
#define SCAN_INTERVAL 200 // ไผ ๆๅจๆซๆ้ด้๏ผ200ms๏ผ
#define STATUS_PRINT_INTERVAL 5000 // ็ถๆๆๅฐ้ด้๏ผ5็ง๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๆฅ่ญฆ็บงๅซๆไธพ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
enum AlarmLevel {
SAFE, // ๐ข ๅฎๅ
จ็ถๆ
GAS_WARNING, // ๐ก ๆฐไฝ้ข่ญฆ๏ผๆฃๆตๅฐ็้พ/ๅฏ็ๆฐไฝ๏ผ
FIRE_ALARM // ๐ด ็ซ็พ่ญฆๆฅ๏ผๆฃๆตๅฐๆ็ซ๏ผ
};
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๅ
จๅฑๅ้
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
AlarmLevel currentLevel = SAFE; // ๅฝๅๆฅ่ญฆ็บงๅซ
unsigned long lastPrintTime = 0; // ไธๆฌกๆๅฐๆถ้ด
unsigned long systemStartTime = 0; // ็ณป็ปๅฏๅจๆถ้ด
unsigned int alarmCount = 0; // ๆฅ่ญฆๆฌกๆฐ็ป่ฎก
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๅๅงๅๅฝๆฐ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void setup() {
// ๅๅงๅไธฒๅฃ๏ผ็จไบ่ฐ่ฏ๏ผ
Serial.begin(115200);
delay(1000);
// ๆๅฐๅฏๅจไฟกๆฏ
printWelcome();
// ้
็ฝฎGPIOๅผ่
initPins();
// MQ-2ไผ ๆๅจ้ข็ญ
preheatingMQ2();
// ็ณป็ป่ชๆฃ
selfTest();
// ่ฎฐๅฝๅฏๅจๆถ้ด
systemStartTime = millis();
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
Serial.println("๐ก๏ธ ็ณป็ป็ๆงๅทฒๅฏๅจ...\n");
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ไธปๅพช็ฏ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void loop() {
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// 1. ่ฏปๅไผ ๆๅจๆฐๆฎ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
bool flameDetected = (digitalRead(FLAME_SENSOR_PIN) == LOW); // LOW=ๆฃๆตๅฐ็ซ็ฐ
int gasValue = analogRead(MQ2_ANALOG_PIN); // ๆฐไฝๆตๅบฆๅผ (0-4095)
bool gasAlert = (digitalRead(MQ2_DIGITAL_PIN) == LOW); // LOW=่ถ
้ๅผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// 2. ๅคๆญๆฅ่ญฆ็บงๅซ๏ผไผๅ
็บง๏ผ็ซ็ฐ > ๆฐไฝ๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
AlarmLevel previousLevel = currentLevel;
if (flameDetected) {
// ๐ด ๆ้ซไผๅ
็บง๏ผๆฃๆตๅฐๆ็ซ
currentLevel = FIRE_ALARM;
} else if (gasAlert || gasValue > GAS_THRESHOLD) {
// ๐ก ๆฌกไผๅ
็บง๏ผๆฃๆตๅฐๆฐไฝ/็้พ
currentLevel = GAS_WARNING;
} else {
// ๐ข ๅฎๅ
จ็ถๆ
currentLevel = SAFE;
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// 3. ็ถๆๆนๅๆถๆๅฐ่ฏฆ็ปไฟกๆฏๅนถ่ฎกๆฐ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
if (currentLevel != previousLevel) {
if (currentLevel != SAFE) {
alarmCount++; // ๆฅ่ญฆๆฌกๆฐ+1
}
printDetailedStatus(flameDetected, gasValue, gasAlert);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// 4. ๆง่กๅฏนๅบ็ๆฅ่ญฆๅจไฝ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
switch(currentLevel) {
case FIRE_ALARM:
executeFireAlarm();
break;
case GAS_WARNING:
executeGasWarning();
break;
case SAFE:
executeAllClear();
break;
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// 5. ๅฎๆๆๅฐ็ๆงๆฐๆฎ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
if (millis() - lastPrintTime > STATUS_PRINT_INTERVAL) {
lastPrintTime = millis();
printMonitoringData(flameDetected, gasValue);
}
// ็ญๆๅปถ่ฟ
delay(SCAN_INTERVAL);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๅๅงๅๅผ่
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void initPins() {
Serial.println("๐ ้
็ฝฎGPIOๅผ่...");
// ่พๅ
ฅๅผ่
pinMode(FLAME_SENSOR_PIN, INPUT);
pinMode(MQ2_DIGITAL_PIN, INPUT);
// MQ2_ANALOG_PIN ไธ้่ฆpinMode๏ผ่ชๅจ้
็ฝฎไธบๆจกๆ่พๅ
ฅ๏ผ
// ่พๅบๅผ่
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_FIRE, OUTPUT);
pinMode(LED_GAS, OUTPUT);
// ๅๅง็ถๆ๏ผๅ
จ้จๅ
ณ้ญ
digitalWrite(BUZZER_PIN, HIGH); // ไฝ็ตๅนณ่งฆๅ่้ธฃๅจ๏ผHIGH=ๅ
ณ้ญ
digitalWrite(LED_FIRE, LOW);
digitalWrite(LED_GAS, LOW);
Serial.printf(" ็ซ็ฐไผ ๆๅจ: GPIO%d\n", FLAME_SENSOR_PIN);
Serial.printf(" MQ-2ๆจกๆ: GPIO%d (ADC)\n", MQ2_ANALOG_PIN);
Serial.printf(" MQ-2ๆฐๅญ: GPIO%d\n", MQ2_DIGITAL_PIN);
Serial.printf(" ่้ธฃๅจ: GPIO%d\n", BUZZER_PIN);
Serial.printf(" ็บข่ฒLED: GPIO%d (็ซ็พ)\n", LED_FIRE);
Serial.printf(" ้ป่ฒLED: GPIO%d (้ข่ญฆ)\n\n", LED_GAS);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// MQ-2ไผ ๆๅจ้ข็ญ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void preheatingMQ2() {
Serial.println("๐ฅ MQ-2ไผ ๆๅจ้ข็ญไธญ...");
Serial.println(" (ๅปบ่ฎฎ้ข็ญ30็งไปฅ็กฎไฟ่ฏปๆฐๅ็กฎ)");
Serial.println(" ๆ็คบ๏ผ้ข็ญๆ้ด้ป่ฒLEDไผ้ช็\n");
int totalSeconds = PREHEATING_TIME / 1000;
for(int i = totalSeconds; i > 0; i--) {
Serial.printf(" โณ ๅ่ฎกๆถ: %2d ็ง | ๅฝๅMQ-2ๅผ: %4d\r",
i, analogRead(MQ2_ANALOG_PIN));
// ้ป่ฒLED้ช็ๆ็คบ้ข็ญไธญ
digitalWrite(LED_GAS, i % 2);
delay(1000);
}
digitalWrite(LED_GAS, LOW);
Serial.println("\nโ
้ข็ญๅฎๆ๏ผ");
// ๆพ็คบ้ข็ญๅ็ๅบๅๅผ
int baselineValue = 0;
for(int i = 0; i < 10; i++) {
baselineValue += analogRead(MQ2_ANALOG_PIN);
delay(50);
}
baselineValue /= 10;
Serial.printf(" ๐ MQ-2ๅบๅๅผ: %d (้ๅผ: %d)\n\n", baselineValue, GAS_THRESHOLD);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ็ณป็ป่ชๆฃ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void selfTest() {
Serial.println("๐ง ็ณป็ป่ชๆฃไธญ...\n");
// โโโ ๆต่ฏLED โโโ
Serial.println(" [1/3] ๆต่ฏLEDๆ็คบ็ฏ...");
Serial.print(" ็บข่ฒLED: ");
digitalWrite(LED_FIRE, HIGH);
delay(300);
Serial.print("โ ");
digitalWrite(LED_FIRE, LOW);
Serial.print("้ป่ฒLED: ");
digitalWrite(LED_GAS, HIGH);
delay(300);
Serial.println("โ");
digitalWrite(LED_GAS, LOW);
delay(200);
// โโโ ๆต่ฏ่้ธฃๅจ โโโ
Serial.println(" [2/3] ๆต่ฏๆๆบ่้ธฃๅจ...");
Serial.print(" ่้ธฃๅจ: ");
digitalWrite(BUZZER_PIN, LOW); // ไฝ็ตๅนณ่งฆๅ
delay(200);
digitalWrite(BUZZER_PIN, HIGH); // ้ซ็ตๅนณๅ
ณ้ญ
Serial.println("โ (ๅบ่ฏฅๅฌๅฐไธๅฃฐ\"ๆปด\")\n");
delay(300);
// โโโ ่ฏปๅไผ ๆๅจๅๅงๅผ โโโ
Serial.println(" [3/3] ่ฏปๅไผ ๆๅจๅๅง็ถๆ...");
bool flameStatus = digitalRead(FLAME_SENSOR_PIN);
int gasValue = analogRead(MQ2_ANALOG_PIN);
bool gasDigital = digitalRead(MQ2_DIGITAL_PIN);
Serial.printf(" ็ซ็ฐไผ ๆๅจ: %s\n",
flameStatus == HIGH ? "โ ๆ ็ซ็ฐ" : "โ ๏ธ ๆฃๆตๅฐ็ซ็ฐ!");
Serial.printf(" MQ-2ๆจกๆๅผ: %d\n", gasValue);
Serial.printf(" MQ-2ๆฐๅญๅผ: %s\n",
gasDigital == HIGH ? "โ ๆญฃๅธธ" : "โ ๏ธ ่ถ
้ๅผ!");
Serial.println("\nโ
่ชๆฃๅฎๆ๏ผๆๆ็ปไปถๆญฃๅธธ\n");
delay(1000);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๐ด ็ซ็พ่ญฆๆฅๅจไฝ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void executeFireAlarm() {
// ็บข่ฒๅ้ป่ฒLEDๅ
จ้จ็นไบฎ
digitalWrite(LED_FIRE, HIGH);
digitalWrite(LED_GAS, HIGH);
// ๆฅไฟๆฅ่ญฆๅฃฐ๏ผๆๆบ่้ธฃๅจ๏ผๅฟซ้ๅผๅ
ณ๏ผ
// ๆจกๅผ๏ผๆปดๆปดๆปด-ๅ-ๆปดๆปดๆปด-ๅ
for(int i = 0; i < 3; i++) {
digitalWrite(BUZZER_PIN, LOW); // ไฝ็ตๅนณ่งฆๅ=ๅ
delay(100);
digitalWrite(BUZZER_PIN, HIGH); // ้ซ็ตๅนณ=ๅ
delay(100);
}
delay(300); // ็ญๆๅ้กฟ
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๐ก ๆฐไฝ้ข่ญฆๅจไฝ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void executeGasWarning() {
// ไป
้ป่ฒLED็นไบฎ
digitalWrite(LED_FIRE, LOW);
digitalWrite(LED_GAS, HIGH);
// ็ผๆ
ขๆฅ่ญฆๅฃฐ๏ผๆๆบ่้ธฃๅจ๏ผ้ฟๅ-้ฟๅ๏ผ
// ๆจกๅผ๏ผๆปด~~~-ๅ-ๆปด~~~-ๅ
digitalWrite(BUZZER_PIN, LOW); // ไฝ็ตๅนณ่งฆๅ=ๅ
delay(200);
digitalWrite(BUZZER_PIN, HIGH); // ้ซ็ตๅนณ=ๅ
delay(800); // ่พ้ฟๅ้กฟ
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๐ข ๅฎๅ
จ็ถๆ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void executeAllClear() {
// ๅ
จ้จๅ
ณ้ญ
digitalWrite(LED_FIRE, LOW);
digitalWrite(LED_GAS, LOW);
digitalWrite(BUZZER_PIN, HIGH); // ไฝ็ตๅนณ่งฆๅ่้ธฃๅจ๏ผHIGH=ๅ
ณ้ญ
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๆๅฐๆฌข่ฟไฟกๆฏ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void printWelcome() {
Serial.println("\n");
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
Serial.println("โ โ");
Serial.println("โ ๐จ ESP32-C6 ๆบ่ฝ็ซ็พๆฅ่ญฆ็ณป็ป v2.0 ๐จ โ");
Serial.println("โ โ");
Serial.println("โ ๅ่ฝ๏ผ็ซ็ฐๆฃๆต + ๆฐไฝๆฃๆต + ๅ็บงๆฅ่ญฆ โ");
Serial.println("โ ไฝ่
๏ผiCEasy IoT Lab โ");
Serial.println("โ ๆฅๆ๏ผ2025-10-15 โ");
Serial.println("โ โ");
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
Serial.println();
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๆๅฐ่ฏฆ็ป็ถๆ๏ผ็ถๆๆนๅๆถ๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void printDetailedStatus(bool flame, int gas, bool gasAlert) {
Serial.println("\nโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
Serial.println("โ โ ๏ธ ่ญฆๆฅ็ถๆๅๆด โ ๏ธ โ");
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
// ๆถ้ดไฟกๆฏ
unsigned long runTime = (millis() - systemStartTime) / 1000;
Serial.printf("โฐ ่ฟ่กๆถ้ด: %lu ็ง | ๆฅ่ญฆๆฌกๆฐ: %u\n", runTime, alarmCount);
Serial.printf("๐
ๅฝๅๆถ้ด: %lu ms\n", millis());
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
// ไผ ๆๅจ็ถๆ
Serial.println("๐ ไผ ๆๅจ็ถๆ:");
Serial.printf(" ๐ฅ ็ซ็ฐไผ ๆๅจ: %s\n",
flame ? "๐ด ๆฃๆตๅฐ็ซ็ฐ!" : "โ
ๆญฃๅธธ");
Serial.printf(" ๐จ MQ-2ๆฐไฝๅผ: %d (้ๅผ:%d) %s\n",
gas, GAS_THRESHOLD,
gas > GAS_THRESHOLD ? "๐ก ่ถ
้ๅผ!" : "โ
");
Serial.printf(" ๐จ MQ-2ๆฐๅญ่พๅบ: %s\n",
gasAlert ? "๐ก ๆฅ่ญฆ!" : "โ
ๆญฃๅธธ");
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ");
// ๅฝๅ็บงๅซๅๅจไฝ
Serial.println("๐ฆ ็ณป็ป็ถๆ:");
switch(currentLevel) {
case FIRE_ALARM:
Serial.println(" ็บงๅซ: ๐ด๐ด๐ด ใ็ซ็พ่ญฆๆฅใ ๐ด๐ด๐ด");
Serial.println(" ๅจไฝ:");
Serial.println(" โ ็บข่ฒLEDๅธธไบฎ");
Serial.println(" โ ้ป่ฒLEDๅธธไบฎ");
Serial.println(" โ ่้ธฃๅจๆฅไฟๆฅ่ญฆ (ๆปดๆปดๆปด-ๅ-ๆปดๆปดๆปด)");
Serial.println(" ๅปบ่ฎฎ:");
Serial.println(" โ ๏ธ ็ซๅณ็ๆฃไบบๅ๏ผ");
Serial.println(" โ ๏ธ ๆจๆ็ซ่ญฆ็ต่ฏ119๏ผ");
Serial.println(" โ ๏ธ ไฝฟ็จ็ญ็ซๅจ็ญ็ซ๏ผๅฐ็ซๆ
ๅตไธ๏ผ๏ผ");
break;
case GAS_WARNING:
Serial.println(" ็บงๅซ: ๐ก๐ก ใๆฐไฝ้ข่ญฆใ ๐ก๐ก");
Serial.println(" ๅจไฝ:");
Serial.println(" โ ้ป่ฒLEDๅธธไบฎ");
Serial.println(" โ ่้ธฃๅจ็ผๆ
ขๆฅ่ญฆ (ๆปด~ๅ~ๆปด~ๅ)");
Serial.println(" ๅฏ่ฝๅๅ :");
Serial.println(" โข ๆฃๆตๅฐ็้พ๏ผๅฏ่ฝๆฏๆฉๆ็ซ็พ๏ผ");
Serial.println(" โข ๆฃๆตๅฐๅฏ็ๆฐไฝ๏ผ็
คๆฐ/ๅคฉ็ถๆฐๆณๆผ๏ผ");
Serial.println(" ๅปบ่ฎฎ:");
Serial.println(" โ ๏ธ ็ซๅณๆฃๆฅๅจๅด็ฏๅข");
Serial.println(" โ ๏ธ ๆๅผ้จ็ช้้ฃ");
Serial.println(" โ ๏ธ ๆฃๆฅ็ๆฐ้้จๆฏๅฆๅ
ณ้ญ");
break;
case SAFE:
Serial.println(" ็บงๅซ: ๐ข ใๅฎๅ
จใ");
Serial.println(" ๅจไฝ:");
Serial.println(" โ ๆๆLED็็ญ");
Serial.println(" โ ่้ธฃๅจ้้ณ");
Serial.println(" โ ็ปง็ปญ็ๆงไธญ...");
break;
}
Serial.println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n");
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ๆๅฐ็ๆงๆฐๆฎ๏ผๅฎๆ๏ผ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
void printMonitoringData(bool flame, int gas) {
Serial.printf("๐ [็ๆง] ็ถๆ:%s | ็ซ็ฐ:%s | ๆฐไฝ:%4d | ่ฟ่ก:%lu็ง | ๆฅ่ญฆ:%uๆฌก\n",
getLevelIcon(currentLevel),
flame ? "๐ดๆฃๆต" : "โชๆ ",
gas,
(millis() - systemStartTime) / 1000,
alarmCount);
}
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// ่ทๅ็บงๅซๅพๆ
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
const char* getLevelIcon(AlarmLevel level) {
switch(level) {
case FIRE_ALARM: return "๐ด็ซ็พ";
case GAS_WARNING: return "๐ก้ข่ญฆ";
case SAFE: return "๐ขๅฎๅ
จ";
default: return "โๆช็ฅ";
}
}
๐ง ๅทฅไฝๅ็่ฏฆ่งฃ
1๏ธโฃ ไผ ๆๅจๆฃๆตๅ็
๐ฅ ็ซ็ฐไผ ๆๅจ
ๆฃๆตๅ็๏ผ็บขๅคๅ ๆไธๆ็ฎก๏ผๆฃๆต760-1100nmๆณข้ฟ็็บขๅคๅ
็ซ็ฐ็นๅพ๏ผ็็งไบง็็็ซ็ฐไผๅๅบ็นๅฎๆณข้ฟ็็บขๅค่พๅฐ
่พๅบๆนๅผ๏ผ
`DO`๏ผๆฐๅญ่พๅบ๏ผ๏ผๆฃๆตๅฐ็ซ็ฐๆถ่พๅบLOW๏ผๅฆๅHIGH
`AO`๏ผๆจกๆ่พๅบ๏ผ๏ผ่พๅบ็ซ็ฐๅผบๅบฆๅผ๏ผๅฏ้๏ผ
ๆฃๆต่ท็ฆป๏ผ0.8-3็ฑณ๏ผๅฏ้่ฟๆฟ่ฝฝ็ตไฝๅจ่ฐ่็ตๆๅบฆ๏ผ
๐จ MQ-2ๆฐไฝไผ ๆๅจ
ๆฃๆตๅ็๏ผSnOโๅๅฏผไฝ๏ผ้ๅฏ็ๆฐไฝ็ต้ป้ไฝ
ๅฏๆฃๆตๆฐไฝ๏ผ
ๆถฒๅๆฐ๏ผLPG๏ผ
ไธ็ทใไธ็ทใ็ฒ็ท
ๆฐขๆฐใ้ ็ฒพใ็้พ
้ข็ญ่ฆๆฑ๏ผ้ๅ ็ญ20-30็งๆ่ฝๅ็กฎๆฃๆต
่พๅบๆนๅผ๏ผ
`AO`๏ผๆจกๆ่พๅบ๏ผ๏ผ0-4095๏ผESP32-C6็12ไฝADC๏ผ
` DO`๏ผๆฐๅญ่พๅบ๏ผ๏ผ่ถ ่ฟ้ๅผๆถ่พๅบLOW
2๏ธโฃ ๅ็บงๆฅ่ญฆ้ป่พ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅณ็ญๆ ๏ผไผๅ
็บงๆๅบ๏ผ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
START
โ
โโโ ็ซ็ฐไผ ๆๅจๆฃๆตๅฐ็ซ็ฐ๏ผ
โ โโ YES โ ๐ด FIRE_ALARM๏ผๆ้ซไผๅ
็บง๏ผ
โ โ โโ ็บข่ฒLED + ้ป่ฒLEDๅ
จไบฎ
โ โ โโ ่้ธฃๅจๆฅไฟๆฅ่ญฆ๏ผ100msๅ-100msๅ ร 3๏ผ
โ โ โโ ไธฒๅฃ่พๅบ่ฏฆ็ป่ญฆๆฅไฟกๆฏ
โ โ
โ โโ NO โ MQ-2ๆฐไฝๆตๅบฆ > ้ๅผ ๆ MQ-2 DO = LOW๏ผ
โ โโ YES โ ๐ก GAS_WARNING
โ โ โโ ้ป่ฒLEDไบฎ
โ โ โโ ่้ธฃๅจ็ผๆ
ขๆฅ่ญฆ๏ผ200msๅ-800msๅ๏ผ
โ โ โโ ไธฒๅฃ่พๅบ้ข่ญฆไฟกๆฏ
โ โ
โ โโ NO โ ๐ข SAFE
โ โโ ๆๆLED็็ญ
โ โโ ่้ธฃๅจ้้ณ
โ โโ ๆฏ5็งๆๅฐ็ๆงๆฐๆฎ
โ
END
3๏ธโฃ ๆๆบ่้ธฃๅจๆงๅถๆนๅผ
// ๆๆบ่้ธฃๅจ๏ผๅ
็ฝฎๆฏ่กๅจ๏ผๅช้ๅผๅ
ณๆงๅถ
// ๆณจๆ๏ผๆฌ้กน็ฎไฝฟ็จไฝ็ตๅนณ่งฆๅ่้ธฃๅจ
// ๆฅไฟๆฅ่ญฆ๏ผ็ซ็พ๏ผ
for(int i = 0; i < 3; i++) {
digitalWrite(BUZZER_PIN, LOW); // ไฝ็ตๅนณ่งฆๅ=ๅ
delay(100);
digitalWrite(BUZZER_PIN, HIGH); // ้ซ็ตๅนณ=ๅ
delay(100);
}
// ๆๆ๏ผๆปด-ๆปด-ๆปด-(ๅ)-ๆปด-ๆปด-ๆปด-(ๅ)...
// ็ผๆ
ขๆฅ่ญฆ๏ผๆฐไฝ้ข่ญฆ๏ผ
digitalWrite(BUZZER_PIN, LOW); // ไฝ็ตๅนณ่งฆๅ=ๅ
delay(200);
digitalWrite(BUZZER_PIN, HIGH); // ้ซ็ตๅนณ=ๅ
delay(800);
// ๆๆ๏ผๆปด~~~-(้ฟๅ)-ๆปด~~~-(้ฟๅ)...
๐จ ็ณป็ป็ถๆๆ็คบ
| ็ถๆ | ็บข่ฒLED | ้ป่ฒLED | ่้ธฃๅจ | ๅซไน |
|------|---------|---------|--------|------|
| ๐ข ๅฎๅ
จ | โซ ็็ญ | โซ ็็ญ | ๐ ้้ณ | ๆญฃๅธธ็ๆงไธญ |
| ๐ก ๆฐไฝ้ข่ญฆ | โซ ็็ญ | ๐ก ๅธธไบฎ | ๐ ๆปด~ๅ~ๆปด | ๆฃๆตๅฐ็้พ/ๅฏ็ๆฐไฝ |
| ๐ด ็ซ็พ่ญฆๆฅ | ๐ด ๅธธไบฎ | ๐ก ๅธธไบฎ | ๐ ๆปดๆปดๆปดๅ | ๆฃๆตๅฐๆ็ซ๏ผ |
| ๐ง ้ข็ญไธญ | โซ ็็ญ | ๐ก ้ช็ | ๐ ้้ณ | MQ-2ไผ ๆๅจ้ข็ญ |
| ๐งช ่ชๆฃ | ๐ด/๐ก ไพๆฌก | ๐ด/๐ก ไพๆฌก | ๐ ็ญ้ธฃ | ็ณป็ป่ชๆฃ |
๐ ่ฐ่ฏไธๆ ้ๆ้ค
ๅธธ่ง้ฎ้ขๆๆฅ่กจ
| ้ฎ้ข็ฐ่ฑก | ๅฏ่ฝๅๅ | ่งฃๅณๆนๆก |
|---------|---------|---------|
| MQ-2่ฏปๆฐไธ็ดๅพไฝ | ๆช้ข็ญๆไพ็ตไธ่ถณ | ็กฎไฟ5Vไพ็ต๏ผ้ข็ญ30็งไปฅไธ |
| ็ซ็ฐไผ ๆๅจไธ็ดLOW | ็ฏๅขๅ
ๅคชๅผบๆๆ
้ | ่ฐ่ๆฟ่ฝฝ็ตไฝๅจ้ไฝ็ตๆๅบฆ |
| ่้ธฃๅจไธๅ | ไธๆ็ฎกๆฅ็บฟ้่ฏฏ | ๆฃๆฅE/B/Cๅผ่๏ผๅ่ๆฅ็บฟๅพ |
| LEDไธไบฎ | ๆชไธฒ่้ๆต็ต้ป | ๅฟ
้กปไธฒ่220ฮฉ็ต้ป๏ผ |
| MQ-2ๅผไธ็จณๅฎ | ้ข็ญๆถ้ดไธ่ถณ | ๅปถ้ฟ้ข็ญๆถ้ด่ณ60็ง |
| ้ข็น่ฏฏๆฅ | ้ๅผ่ฎพ็ฝฎ่ฟไฝ | ่ฐ้ซ`GAS_THRESHOLD`ๅผ๏ผๅฆ2000๏ผ |
| ็ผ่ฏ้่ฏฏ | ๅผๅๆฟ้ๆฉ้่ฏฏ | ็กฎไฟ้ๆฉ"ESP32C6 Dev Module" |
๐ ๅ่ฝๆฉๅฑๅปบ่ฎฎ
WiFi่ฟ็จ็ๆง๏ผๆทปๅ Webๆๅกๅจ๏ผๆๆบๆต่งๅจๆฅ็็ถๆ
ๆๆบๆจ้๏ผไฝฟ็จBlynk/ๅทดๆณไบๅฎ็ฐ็ซ่ญฆๆจ้้็ฅ
OLEDๆพ็คบๅฑ๏ผๅฎๆถๆพ็คบไผ ๆๅจๆฐๆฎๅๆฅ่ญฆ็ถๆ
ๅค่็น็ป็ฝ๏ผESP-NOWๆZigbeeๅ่ฎฎ๏ผๅคๆฟ้ด่ๅจๆฅ่ญฆ
ๆบ่ฝๅฎถๅฑ ่ๅจ๏ผ่ชๅจๅ ณ้ญ็ๆฐ้ใๅๆญ็ตๆบใ่งฃ้้จ้
โ ๏ธ ๅฎๅ จๆ็คบ
โ ๏ธ ๆฌ้กน็ฎไป ไพๅญฆไน ๅDIYๅฎ้ชไฝฟ็จ๏ผไธ่ฝๆฟไปฃๅ็จ็ซ็พๆฅ่ญฆๅจ
โ ๏ธ ๅฎ้ ๅบ็จ่ฏท่ดญไนฐๅฝๅฎถ3C่ฎค่ฏ็ๆถ้ฒไบงๅ
โ ๏ธ ไผ ๆๅจๅญๅจๆผๆฃ้ฃ้ฉ๏ผๅปบ่ฎฎ้ ๅไผ ็ป็้พๆฅ่ญฆๅจไฝฟ็จ
โ ๏ธ ๅฎๆๆฃๆฅไผ ๆๅจๅทฅไฝ็ถๆ๏ผๅปบ่ฎฎๆฏๆไธๆฌก๏ผ
๐ ๆป็ป
ๆฌ้กน็ฎไฝฟ็จESP32-C6 + ็ซ็ฐไผ ๆๅจ + MQ-2ๅฎ็ฐไบๅไผ ๆๅจๆบ่ฝ็ซ็พๆฅ่ญฆ็ณป็ป๏ผ้่ฟๅ็บงๆฅ่ญฆๆบๅถ๏ผไปๆฉๆ็้พ้ข่ญฆๅฐๆ็ซ่ญฆๆฅ๏ผๆไพๅ จๆนไฝไฟๆคใๆปๆๆฌ็บฆยฅ44๏ผ้ๅๅญฆไน ไผ ๆๅจๅบ็จใ็ถๆๆบ่ฎพ่ฎกๅ็ฉ่็ฝๅผๅใ
๐ฅ ๆถ้ฒๅฎๅ
จ๏ผไบบไบบๆ่ดฃ๏ผ๐จ

