📳
เรียนรู้และใช้งานเซนเซอร์ตรวจจับการสั่นไหว
การใช้งานร่วมกับเซนเซอร์ตรวจจับการสั่นไหว

รูปที่ 4.1 เซนเซอร์ตรวจจับการสั่นไหวรุ่น 801S
สำหรับตรวจจับแรงสั่นสะเทือนหรือแรงกระแทกเบื้องต้น.
📳4.1 บทนำ
ในอาคารอัจฉริยะหรือระบบอัตโนมัติ
การตรวจจับแรงสั่นสะเทือนถือเป็นหนึ่งในฟังก์ชันสำคัญที่ช่วยเพิ่มความปลอดภัย
และการแจ้งเตือนเมื่อเกิดเหตุผิดปกติ เช่น การบุกรุก การสั่นจากเครื่องจักร
หรือแรงสั่นสะเทือนที่อาจบ่งชี้ถึงความเสียหายของโครงสร้างอาคาร
เซนเซอร์ตรวจจับแรงสั่นสะเทือน (Vibration Sensor)
เป็นอุปกรณ์ที่สามารถรับรู้แรงสั่นและเปลี่ยนเป็นสัญญาณไฟฟ้า
โดยสามารถประยุกต์ใช้งานร่วมกับระบบควบคุมต่าง ๆ ได้อย่างยืดหยุ่น เช่น ระบบกันขโมย
ระบบวิเคราะห์การทำงานของมอเตอร์ หรือแม้กระทั่งระบบแจ้งเตือนการเคลื่อนไหว
ในบทเรียนนี้ ผู้เรียนจะได้รู้จักกับหลักการทำงานของเซนเซอร์ 801S
ซึ่งเป็นเซนเซอร์ที่มีวงจรขยายในตัว พร้อมขาแสดงผลแบบดิจิทัลและอนาล็อก
รวมถึงการนำไปต่อร่วมกับโมดูลแปลงสัญญาณ ADS1115
เพื่อให้สามารถอ่านค่าแรงสั่นได้อย่างแม่นยำยิ่งขึ้นด้วย ESP32 ผ่านบอร์ด Smart Building 360
นอกจากนี้ยังได้ฝึกเขียนโปรแกรมเพื่อแสดงผลและวิเคราะห์ค่าที่วัดได้แบบ Real-Time ด้วย
Serial Monitor และ Serial Plotter
📳4.2 ทำความรู้จักเซนเซอร์ตรวจจับการสั่นไหว
เซนเซอร์ตรวจจับการสั่นไหวรุ่น 801S ใช้หลักการ Piezoelectric
ที่สามารถแปลงแรงสั่นสะเทือนเป็นสัญญาณไฟฟ้า โดยโมดูลมีวงจรขยาย, ตัวต้านทานปรับความไว
(Potentiometer), และวงจรแจ้งสถานะด้วย LED ซึ่งเหมาะกับงานหลากหลาย เช่น
ระบบกันขโมย, ตรวจสอบสภาพเครื่องจักร หรือเป็นเซนเซอร์หนึ่งในระบบ Smart
Building
ส่วนประกอบหลักของโมดูล:
-
Piezoelectric Sensor 801S: ตรวจจับแรงสั่นสะเทือน
-
Comparator (LM393): เปรียบเทียบสัญญาณกับค่าที่ตั้งไว้
-
Potentiometer: ปรับความไวในการตรวจจับ
-
Digital OUT / Analog OUT: ส่งค่าไปยังไมโครคอนโทรลเลอร์ (เช่น
ESP32)

รูปที่ 4.2 Block Diagram การทำงานของโมดูลเซนเซอร์ตรวจจับการสั่นไหว
📳4.3 หลักการทำงานของระบบ
1.เมื่อเซนเซอร์ได้รับแรงสั่น เช่น การเคาะ หรือการเขย่า
2.เซนเซอร์จะสร้างสัญญาณไฟฟ้าแบบแอนะล็อก (Analog Voltage)
จากแรงสั่นสะเทือนนั้น
3.วงจรภายในโมดูลจะเปรียบเทียบแรงสั่นกับค่า Threshold ที่ตั้งไว้ผ่าน
Potentiometer
กรณีแรงสั่นมากกว่าค่าที่ตั้งไว้:
-
ขา Digital OUT เปลี่ยนเป็น High
-
ขา Analog OUT ส่งแรงดันต่อเนื่อง
กรณีแรงสั่นต่ำกว่าค่าที่ตั้งไว้:
-
ขา Digital OUT= Low
-
ขา Analog OUT มีแรงดันต่ำ
การใช้งาน Analog OUT กับ ESP32 ผ่าน ADS1115
-
สัญญาณ Analog จากเซนเซอร์จะไม่สามารถต่อเข้า ESP32 ได้โดยตรง เพราะ ESP32
มีจำนวนขา Analog จำกัด และค่าความละเอียดไม่สูงพอ จึงใช้โมดูล ADS1115 ซึ่งเป็น ADC 16
บิต เพื่อแปลงแรงดันจากขา Analog OUT เป็นค่าดิจิทัล แล้วส่งต่อให้ ESP32 ผ่าน
I²C -
การใช้ Analog OUT ทำให้สามารถอ่าน “ระดับความแรงของแรงสั่น” ได้อย่างแม่นยำ
(ไม่ใช่แค่มีหรือไม่มีการสั่น)
ประโยชน์ของการใช้ Analog Output
-
เหมาะสำหรับวิเคราะห์แรงสั่นแบบ ต่อเนื่องและมีความละเอียด
-
สามารถนำข้อมูลไปทำกราฟหรือระบบแจ้งเตือนตามระดับแรงสั่นได้
-
ใช้ในการเรียนรู้เรื่องการแปลงสัญญาณ (ADC) และการประมวลผลข้อมูลจริง
📳4.4 อุปกรณ์ที่ใช้ในการทดลอง
| ลำดับ | รายละเอียด |
|---|---|
| 1 | เซนเซอร์ตรวจจับการสั่นไหว Vibration Sensor Module 801S (ใช้งานเฉพาะ Analog OUT เท่านั้น) |
| 2 | บอร์ด Smart Building IoT (Sensor Board) |
ตารางที่ 4.1 แสดงรายการอุปกรณ์ที่ใช้ในการทดลองเซนเซอร์ตรวจจับการสั่นไหว
📳4.5 การเชื่อมต่อ
เชื่อมต่อเซนเซอร์ตรวจจับการสั่นไหวเข้าที่คอนเนคเตอร์ AIN0 บนบอร์ดSmart Building
IoT (Sensor Board) โดยไอซี ADS1115 จะทำหน้าที่แปลงค่าสัญญาณจากแอนะล็อกเป็นดิจิทัล
เพื่อให้ ESP32 ประมวลผลได้อย่างแม่นยำ

รูปที่ 4.3 การเชื่อมต่อโมดูลเซนเซอร์ตรวจจับการสั่นไหว
📳4.6 การเขียนโปรแกรมเพื่ออ่านค่าจากเซนเซอร์
Example Code 4.1: ตัวอย่างโค้ดการอ่านค่าและแจ้งเตือน

รูปที่ 4.4 ตัวอย่างโค้ดเริ่มต้นสำหรับอ่านค่าเซนเซอร์สั่นไหวผ่าน ADS1115 พร้อมตั้งค่า
threshold
Note:
ค่า threshold ที่เหมาะสมควรทดลองปรับจนได้ผลลัพธ์ที่ไม่ไวเกินไปหรือล่าช้าเกินไป

อธิบายการทำงานของโค้ด:
-
ads.readADC_SingleEnded(0) อ่านค่าดิบจาก AIN0
-
threshold ใช้กำหนดขอบเขตการสั่นสะเทือนที่สนใจ
-
ถ้าค่าเกิน threshold ให้พิมพ์ข้อความแจ้งเตือน
Example Code 4.2: เขียนโค้ดโดยใช้ Smartbuilding360hub Library

รูปที่ 4.5 โค้ดเริ่มต้นโปรเจกต์ด้วยไลบรารี SmartBuilding360hub
สำหรับอ่านค่าเซนเซอร์

อธิบายการทำงานของโค้ด:
โค้ดนี้อ่านค่าสัญญาณจากเซนเซอร์สั่นสะเทือนผ่าน ADC ถ้าค่าที่อ่านได้เกิน threshold
จะขึ้นข้อความเตือนบน OLED และส่งเสียง buzzer 2 ครั้ง พร้อมแสดงค่าที่อ่านได้และ
threshold ทั้งทาง Serial และ OLED ถ้าไม่เกิน threshold จะแสดงค่าปกติบน OLED และ
Serial วนซ้ำทุกวินาที
📳4.7 การทดลองด้วย Serial Plotter
การใช้งานร่วมกับเซนเซอร์ตรวจจับการสั่นไหว โดยใช้ Extension “serial-plotter”
ใน VsCode โดย Serial Plotter จะช่วยให้สามารถดูข้อมูลจาก Serial Port
แบบกราฟเส้น (Line Chart) แบบ Real-Time ได้ สะดวกสำหรับวิเคราะห์ข้อมูลเซนเซอร์
เช่น สัญญาณแรงสั่นสะเทือนและค่า Threshold
ขั้นตอนที่ 1: ติดตั้ง Extension
-
เปิด VsCode แล้วไปที่ Extensions
-
ค้นหา serial-plotter โดย Mario Zechner

รูปที่ 4.6 ติดตั้งส่วนขยาย Serial Plotter บน VsCode เพื่อแสดงกราฟข้อมูลจาก
Serial Port
-
กด “Install”

รูปที่ 4.7 หน้ารายละเอียด Serial Plotter พร้อมปุ่ม “Install” บน VsCode.
ขั้นตอนที่ 2: เขียนโค้ดแสดงค่าบน Serial Plotter

รูปที่ 4.8 โค้ดเริ่มต้นแสดงค่าจากเซนเซอร์ผ่าน Serial Plotter

ขั้นตอนที่ 3: เปิดใช้งาน Plotter
-
ไปที่ View > Command Palette > Serial Plotter: Open
Plotter -
เลือกพอร์ตเชื่อมต่อ และตั้งค่า Baudrate = 115200

รูปที่ 4.9 แสดงค่าจากเซนเซอร์ผ่าน Serial Plotter
ขั้นตอนที่ 4: ทดลองจริง
-
เคาะหรือเขย่าเซนเซอร์
-
สังเกตค่ากราฟ Vib และ Thr เปลี่ยนแปลงแบบ Real-time
📳การประยุกต์ใช้งาน
-
ประยุกต์ใช้กับระบบกันขโมย: ติดตั้งกับประตู/หน้าต่าง ตรวจจับแรงทุบ
-
ประยุกต์ใช้กับระบบตรวจสอบเครื่องจักร:
วัดแรงสั่นผิดปกติจากมอเตอร์/ปั๊มน้ำ -
ประยุกต์ใช้กับระบบSmart Locker: ตรวจจับความเคลื่อนไหวตู้เก็บของ
📳สรุปผลการเรียนรู้
-
ผู้เรียนสามารถอ่านค่าแรงสั่นสะเทือนและตั้ง Threshold ด้วย
Potentiometer -
ฝึกใช้ ADC (ADS1115) เพื่อแปลงสัญญาณอนาล็อกเป็นดิจิทัล
-
เรียนรู้การแสดงผลข้อมูลแบบกราฟ Real-Time ด้วย Serial Plotter
-
สามารถนำไปประยุกต์ใช้กับงานแจ้งเตือนใน Smart Building ได้
✅ คำถามท้ายใบงาน 💡
1.เซนเซอร์ตรวจจับการสั่นไหวจะส่งสัญญาณออกมาในรูปแบบใดเมื่อมีแรงสั่นสะเทือน?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
2.ค่าที่อ่านจากขา Analog OUT ของเซนเซอร์สามารถนำไปใช้ประโยชน์อย่างไรในงาน
IoT?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
3.ถ้าต้องการให้โค้ดตรวจจับแรงสั่นไหวที่มีความแรงมากขึ้น ควรปรับเปลี่ยนเงื่อนไขในคำสั่ง
if() อย่างไร?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
📝 พื้นที่สรุปผลการเรียนรู้
🔹 หลังจากทำกิจกรรมและศึกษาข้อมูลจากชุดฝึกนี้ ฉันได้เรียนรู้ว่า…
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
🔹 ความเข้าใจเพิ่มเติมที่ได้รับจากใบงานนี้คือ…
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
🔹 ข้อเสนอแนะ/ข้อสงสัยเพิ่มเติม
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
“แม้แรงสั่นเพียงเล็กน้อย ก็เปลี่ยนระบบทั้งระบบได้”
“Even the slightest vibration can shift an entire
system.”




Leave a Reply