Field Log

การต่อ PMS7003 และ SHT31 กับ ESP32 ให้เสถียรและแม่นยำ

ต่อเซนเซอร์ PMS7003 และ SHT31 กับ ESP32 แบบมืออาชีพ เจาะลึกปัญหาอุณหภูมิเพี้ยน ค่าฝุ่นไม่อ่าน พร้อมเทคนิคการจัดการพลังงานและลดสัญญาณรบกวนให้ระบบเสถียรที่สุด

4 MIN READ
05/04/2026
การต่อ PMS7003 และ SHT31 กับ ESP32 ให้เสถียรและแม่นยำ

คู่มือการต่อ PMS7003 & SHT31 กับ ESP32 ให้เสถียรและแม่นยำ

การสร้างสถานีวัดอากาศที่เชื่อถือได้ ไม่ได้ขึ้นอยู่กับแค่การเขียน Code แต่เริ่มตั้งแต่ Physical Connection และ Data Logic บทความนี้จะเจาะลึกวิธีการต่อเซนเซอร์ยอดนิยมสองตัวนี้เข้ากับ ESP32 อย่างถูกวิธี


1. การเชื่อมต่อทางฮาร์ดแวร์ (Hardware Connection)

A. SHT31 (Temperature & Humidity) - การเชื่อมต่อ I2C

SHT31 ใช้การสื่อสารแบบ I2C ซึ่งต้องระวังเรื่องแรงดันและที่อยู่ (Address)

  • VCC: 3.3V (ห้ามต่อ 5V เพราะอาจทำให้เซนเซอร์พังในระยะยาว)
  • GND: กราวด์ร่วมกับ ESP32
  • SCL: ต่อเข้ากับ GPIO 22 (Default I2C SCL ของ ESP32)
  • SDA: ต่อเข้ากับ GPIO 21 (Default I2C SDA ของ ESP32)
  • คำแนะนำ: หากสายแพยาวเกิน 30 ซม. ควรต่อ Pull-up Resistor 4.7k ที่สาย SDA และ SCL เพื่อรักษาคุณภาพสัญญาณ

B. PMS7003 (Dust Sensor) - การเชื่อมต่อ UART

PMS7003 เป็นเซนเซอร์ที่มีพัดลมในตัว ต้องการกระแสไฟที่นิ่งและแรงดันที่ถูกต้อง

  • VCC: 5V (พัดลมต้องการ 5V เพื่อรอบหมุนที่คงที่ในการดึงอากาศเข้า)
  • GND: กราวด์ร่วมกับระบบ
  • TX (PMS): ต่อเข้ากับ RX2 (GPIO 16) ของ ESP32
  • RX (PMS): ต่อเข้ากับ TX2 (GPIO 17) ของ ESP32 (สำหรับส่งคำสั่ง Sleep/Wake)
  • SET: ต่อเข้ากับ GPIO (Optional) สำหรับสั่ง Sleep Mode เพื่อยืดอายุการใช้งานพัดลม

2. ปัญหาที่พบบ่อย (Common Issues) และวิธีแก้ไข

ปัญหาที่ 1: ค่า SHT31 สูงกว่าความเป็นจริง (Self-Heating)

อาการ: อุณหภูมิที่วัดได้สูงกว่าปรอทวัดจริง 2-3°C

  • สาเหตุ: เซนเซอร์ถูกวางใกล้ ESP32 มากเกินไป หรือเปิดใช้ Heater ในตัว SHT31 ตลอดเวลา
  • วิธีแก้: * แยกเซนเซอร์ออกมาห่างจากตัว MCU หรือแหล่งจ่ายไฟ
    • ตรวจสอบ Code ว่าไม่ได้เปิดคำสั่ง wire.write(0x306D); (Heater ON) ทิ้งไว้โดยไม่จำเป็น

ปัญหาที่ 2: PMS7003 อ่านค่าได้ 0 ตลอดเวลา หรือ Checksum Error

อาการ: มีข้อมูลส่งมาแต่เป็น 0 หรือข้อมูลไม่สมบูรณ์

  • สาเหตุ: 1. จ่ายไฟ 3.3V ให้ PMS7003 (พัดลมไม่หมุนหรือหมุนช้าเกินไป) 2. ต่อสาย TX/RX สลับกัน
  • วิธีแก้: ตรวจสอบให้แน่ใจว่าใช้ไฟจากขา VIN/5V และเช็คความเร็ว Baud rate ให้ตรงที่ 9600 bps

ปัญหาที่ 3: เซนเซอร์รวนเมื่อทำงานไปนานๆ (I2C Freeze)

อาการ: ระบบค้างที่หน้าดึงค่าจาก SHT31

  • สาเหตุ: สัญญาณรบกวนในสาย (Electrical Noise) ทำให้ I2C Bus ค้าง
  • วิธีแก้: * เพิ่ม Capacitor 0.1 uF คร่อม VCC/GND ใกล้ตัวเซนเซอร์
    • ใช้ Code ที่มีการจัดการ I2C Timeout หรือใช้คำสั่ง Wire.setClock(100000); เพื่อลดความเร็วลง

3. การทำ Power Management (หัวใจสำคัญ)

ในการใช้งานจริง หากต้องการให้เซนเซอร์อยู่ได้นานหลายปี ไม่ควรเปิดพัดลม PMS7003 ทิ้งไว้ตลอด 24 ชม.

  1. Sleep Mode: สั่งขา SET ให้เป็น LOW เพื่อหยุดพัดลมและเลเซอร์
  2. Warm-up: ก่อนอ่านค่าฝุ่น ควรปลุก (Wake) เซนเซอร์ล่วงหน้าอย่างน้อย 30 วินาที เพื่อให้พัดลมหมุนคงที่และลมในห้องเครื่องนิ่งพอที่จะวัดค่าได้แม่นยำ

สรุปบทความ

การต่อ PMS7003 และ SHT31 ที่ถูกต้องไม่ใช่แค่การเสียบสายให้ครบ แต่คือการเข้าใจ Power Domain (3.3V vs 5V) และการจัดการ Signal Integrity (Pull-up & Decoupling) หากทำตามขั้นตอนนี้ สถานีวัดฝุ่นจะทำงานได้เสถียรและให้ข้อมูลที่เชื่อถือได้ระดับ Professional

Share this log to social network