เริ่มต้นเนื้อหา
Dustation dev kit V1.4 | SET and RESET
SET
สามารถสลับการเข้าสู่โหมดพักและเริ่มใหม่ได้ ช่วยยืดอายุการใช้งาน และการประหยัดพลังงาน
RESET
เมื่อต้องการเริ่มเซ็นเซอร์ใหม่หรือแก้ปัญหาหลังจากทำงานผิดปกติ โดยใช้สัญญาณ LOW ชั่วคราวเพื่อรีเซ็ต ช่วยแก้ปัญหาการค้างให้กลับมาทำงานได้ตามปกติ
ตัวอย่างต่อไปนี้จะเป็นการสั่ง PMS7003 Wake Up / Sleep โดยใช้ SET [ESP32 pin18]
สำหรับ Dustation dev kit v1.4 : เมื่อบัดกรีเชื่อมต่อจุด SET , ขา set จะเชื่อมต่อกับขา D19 ของ ESP32
Set pin /TTL level@3.3V, high level คือ สถานะทำงานปกติ, low level คือโหมดหยุดการทำงาน
#include "PMS.h"
PMS pms(Serial2);
PMS::DATA data;
int set = 19;
void setup()
{
Serial2.begin(9600); // GPIO1, GPIO3 (TX/RX pin on ESP-12E Development Board)
Serial.begin(9600); // GPIO2 (D4 pin on ESP-12E Development Board)
pinMode(set, OUTPUT);
}
void loop()
{
Serial.println("Waking up, wait 30 seconds for stable readings...");
digitalWrite(set, HIGH); //Setting hardware Waking up
delay(30000);
Serial.println("Send read request...");
pms.requestRead();
Serial.println("Wait max. 1 second for read...");
if (pms.readUntil(data))
{
Serial.print("PM 1.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_1_0);
Serial.print("PM 2.5 (ug/m3): ");
Serial.println(data.PM_AE_UG_2_5);
Serial.print("PM 10.0 (ug/m3): ");
Serial.println(data.PM_AE_UG_10_0);
Serial.println();
}
else
{
Serial.println("No data.");
}
Serial.println("Going to sleep for 60 seconds.");
digitalWrite(set, LOW); //Setting hardware sleep
delay(60000);
}
Pin RESET
ของ PMS7003
ใช้สำหรับรีเซ็ตเซ็นเซอร์ฝุ่นให้กลับสู่สถานะเริ่มต้น
กรณีที่ควรใช้ Pin RESET
- เริ่มต้นการทำงานใหม่ → ใช้เพื่อให้เซ็นเซอร์กลับสู่สถานะเริ่มต้นเมื่อเริ่มต้นระบบใหม่
- รีเซ็ตหลังจากเกิดข้อผิดพลาด → หากเซ็นเซอร์ค้างหรืออ่านค่าไม่ได้ อาจใช้
RESET
เพื่อกู้คืนการทำงาน
แนวทางการใช้งาน
- Pin
RESET
เป็น Active Low (LOW = รีเซ็ต, HIGH = ทำงานปกติ) - ควรดึง
RESET
เป็น HIGH เป็นค่าเริ่มต้น - หากต้องการรีเซ็ต → ดึง LOW ค้าง 100ms แล้วปล่อย HIGH
ตัวอย่างโค้ด RESET
#define PMS7003_RESET_PIN 18 // กำหนดขารีเซ็ต (เลือกขาตามบอร์ดที่ใช้)
void setup() {
pinMode(PMS7003_RESET_PIN, OUTPUT);
digitalWrite(PMS7003_RESET_PIN, HIGH); // ให้เซ็นเซอร์ทำงานปกติ
Serial.begin(9600);
}
void resetPMS7003() {
Serial.println("Resetting PMS7003...");
digitalWrite(PMS7003_RESET_PIN, LOW); // ดึง LOW เพื่อรีเซ็ต
delay(100); // รอ 100ms
digitalWrite(PMS7003_RESET_PIN, HIGH); // ปล่อยให้เซ็นเซอร์กลับมาทำงาน
delay(1000); // รอให้เซ็นเซอร์พร้อมทำงานใหม่
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c == 'r') { // พิมพ์ 'r' เพื่อรีเซ็ตจาก Serial Monitor
resetPMS7003();
}
}
}
ผลการตอบสนองการตั้งค่าขา SET [ESP32 pin19] และ RESET [ ESP32 pin18]
ผลการตอบสนองของเซ็นเซอร์นี้ไม่ได้ระบุโดย Datasheet ของผู้ผลิตทั้งหมด แต่ตารางนี้แสดงให้เห็นถึงผลการตอบสนองจริงของเซ็นเซอร์ในสภาวะการตั้งค่าในแบบต่างๆ ที่เป็นไปได้ทั้งหมด เพื่อให้มองเห็นภาพง่ายขึ้น และเพื่อใช้ประกอบเป็นข้อมูลในการพัฒนา
การตั้งค่าสำหรับ Dustation Dev Kit V1.4
ใช้โค้ดเพื่อทดสอบและสังเกตการทำงานของเซ็นเซอร์ PMS7003
int set = 19;
int reset = 18;
void setup() {
pinMode(set, OUTPUT);
pinMode(reset, OUTPUT);
}
void loop() {
//digitalWrite(set, LOW);
//digitalWrite(reset, LOW);
//digitalWrite(set, HIGH);
//digitalWrite(reset, LOW);
//digitalWrite(set, LOW);
//digitalWrite(reset, HIGH);
digitalWrite(set, HIGH);
digitalWrite(reset, HIGH);
}