เคยไหมเวลาทำงานไม้ ก่อสร้าง หรือตั้งศูนย์เครื่องจักร แล้วต้องมานั่งเพ่ง "หลอดระดับน้ำ (Spirit Level)" แบบเดิมๆ ว่าฟองอากาศมันอยู่ตรงกลางเป๊ะหรือยัง? การใช้สายตากะระยะมักจะมาพร้อมกับความคลาดเคลื่อน (Human Error) ซึ่งในงานที่ต้องการความแม่นยำสูง แค่คลาดเคลื่อนไปเศษเสี้ยวองศาก็อาจทำให้งานพังได้เลย!
ขอแนะนำโปรเจกต์ "IncliSense" เครื่องวัดระดับน้ำดิจิทัลแบบ 2 แกน ที่เปลี่ยนจากการกะด้วยสายตา มาเป็นการคำนวณทางคณิตศาสตร์ที่แม่นยำเป๊ะๆ! โดยใช้เซ็นเซอร์ MPU6050 (เซ็นเซอร์วัดการเอียงแบบเดียวกับในมือถือ) มาประมวลผลผ่านบอร์ด Arduino อุปกรณ์ชิ้นนี้จะโชว์ระดับความเอียงผ่านไฟ LED และมีเสียงเตือนเมื่อได้ระดับ 0 องศาพอดี มาดูกันว่าเขาสร้างมันขึ้นมาได้อย่างไรครับ!

อุปกรณ์ที่ใช้ในโปรเจกต์ (Supplies)
ระบบนี้ใช้การต่อวงจรแบบตรง (Point-to-Point) เพื่อให้เครื่องบางและเบาที่สุด โดยมีหัวใจหลักคือ:
-
สมองกลและเซ็นเซอร์: บอร์ด Arduino Nano และ เซ็นเซอร์ MPU6050 (6-Axis Accelerometer & Gyroscope) สำหรับวัดแรงโน้มถ่วง
-
ระบบแสดงผลและเสียง: หลอดไฟ LED ความสว่างสูง 11 ดวง และ ลำโพง Active Piezo Buzzer 5V สำหรับเตือน "Level-Lock" (ได้ระดับ 0 องศา)
-
ระบบไฟ: แบตเตอรี่ลิเธียม 3.7V จำนวน 2 ก้อน (ต่ออนุกรมเป็น 7.4V) พร้อมสวิตช์ปุ่มกด
-
โครงสร้าง: เคส 3D Print เกรดอุตสาหกรรม, สายไฟ, ท่อหด และกาวติดแน่นสูง
Step 1-2: การออกแบบและพิมพ์ 3D (CAD & 3D Printing)
การจะวัดระดับให้แม่นยำ "ฐาน" ของเครื่องต้องเรียบสนิท! ผู้สร้างออกแบบเคสผ่านโปรแกรม Fusion 360 โดยใช้รูปทรงยาวคล้ายไม้บรรทัดระดับน้ำของช่างไม้ เจาะรูสำหรับฝัง LED 11 ดวงให้ได้ระยะห่างเป๊ะๆ ด้วยคำสั่ง Rectangular Pattern
ในการพิมพ์ 3D เขาเลือกใช้เส้นพลาสติก ABS แทน PLA เพราะ ABS ทนทานต่อแรงกระแทกและความร้อนได้ดีกว่า (ทิ้งไว้ในรถร้อนๆ ก็ไม่เบี้ยว) โดยพิมพ์ด้วย Infill ลาย Gyroid ที่ 40% เพื่อให้ฐานแข็งแรง ไม่โก่งงอ
คลิกเพื่อดาวน์โหลดไฟล์ 3D Print (View More)
Step 3-4: การต่อวงจรและประกอบร่าง (Electronic Integration)
โปรเจกต์นี้ไม่ใช้แผ่น PCB เพื่อประหยัดพื้นที่ โดยใช้การบัดกรีสายไฟเชื่อมกันโดยตรง (Point-to-Point):
-
เซ็นเซอร์ MPU6050: ต่อผ่านโปรโตคอล I2C (ขา SDA และ SCL) และ ต้องใช้กาวติดเซ็นเซอร์ให้ขนานกับฐานเคสแบบเป๊ะๆ ห้ามขยับเด็ดขาด!
-
ไฟ LED 11 ดวง: เสียบเข้าช่องด้านหน้าเคสให้แน่น ขั้วบวก (Anode) ต่อเข้าพิน D2-D12 ของ Arduino แยกกันอิสระ ส่วนขั้วลบจับรวบเป็นสายกราว (Ground Rail) เส้นเดียว
-
ระบบไฟและเสียง: ลำโพง Buzzer บัดกรีเข้าพินดิจิทัล ส่วนแบตเตอรี่ 7.4V ต่อผ่านสวิตช์เข้าพิน VIN ของบอร์ด Nano
คลิกเพื่อดูรูปภาพการบัดกรีภายใน (View More)
Step 5-6: โค้ดดิ้งและสมการคณิตศาสตร์ (Programming & Logic)
การจะแปลงค่าแรงโน้มถ่วงให้กลายเป็น "องศาความเอียง" ต้องพึ่งวิชาตรีโกณมิติครับ โดยโค้ดจะดึงค่าแกน X, Y, Z จากเซ็นเซอร์ แล้วใช้ฟังก์ชัน atan2 เพื่อหาค่าองศา:
Pitch (แกน X) = atan2(X, Z) * 180 / PI
Roll (แกน Y) = atan2(Y, Z) * 180 / PI
การทำงานของไฟ LED 2 แกน:
- ถ้าองศาแกน X และ Y เอียงอยู่ในช่วง ± 5° (ได้ระดับศูนย์) ไฟ LED ตรงกลางจะติดพร้อมเสียง Buzzer ดังขึ้น
- ไฟ 6 ดวงใช้บอกระดับเอียงซ้าย-ขวา (X-Axis) ถ้าเอียงน้อยไฟในจะติด ถ้าเอียงมากไฟรอบนอกจะติด
- ไฟที่เหลือใช้บอกระดับหน้า-หลัง (Y-Axis) ทำให้เราวัดระดับได้ทั้ง 2 มิติพร้อมกัน!
คลิกเพื่อดูและคัดลอกโครงสร้างโค้ด (View More)
// โครงสร้างโค้ดการทำงานของ IncliSense
#include <Wire.h>
const int buzzerPin = 13; // กำหนดขา Buzzer
// กำหนดขา LED D2 ถึง D12
void setup() {
Serial.begin(9600);
Wire.begin();
// Init MPU6050
// Set pinMode for LEDs and Buzzer
}
void loop() {
clearAllLEDs(); // ดับไฟทั้งหมดก่อนเพื่อป้องกัน Ghosting
delay(100); // หน่วงเวลาให้ค่าคงที่
// อ่านค่า Raw จาก MPU6050 (ax, ay, az)
float ax, ay, az;
// (ฟังก์ชันอ่านค่า MPU6050)
// คำนวณหาองศา Pitch และ Roll
float pitch_X = atan2(ax, az) * 180.0 / PI;
float roll_Y = atan2(ay, az) * 180.0 / PI;
// ตรวจสอบ Level-Lock (0 องศา ± 5°)
if (abs(pitch_X) <= 5.0 && abs(roll_Y) <= 5.0) {
digitalWrite(CENTER_LED, HIGH);
tone(buzzerPin, 1000); // ส่งเสียงเตือน
} else {
noTone(buzzerPin);
// ลอจิกเปิดไฟ LED แกน X (ซ้าย-ขวา)
if (pitch_X > 5.0 && pitch_X <= 20.0) { /* เปิดไฟ LED ขวาใน */ }
else if (pitch_X > 20.0) { /* เปิดไฟ LED ขวานอก */ }
else if (pitch_X < -5.0 && pitch_X >= -20.0) { /* เปิดไฟ LED ซ้ายใน */ }
else if (pitch_X < -20.0) { /* เปิดไฟ LED ซ้ายนอก */ }
// ลอจิกเปิดไฟ LED แกน Y (หน้า-หลัง)
// ...
}
}
void clearAllLEDs() {
// สั่งปิด LED ทุกดวง
}
💻 ดาวน์โหลดไฟล์ Arduino Code (.ino) ฉบับเต็ม
Step 7: การทดสอบและบทสรุป (Testing & Results)
เมื่อประกอบและลงโค้ดเสร็จ ผู้สร้างได้นำไปทดสอบเทียบกับไม้ระดับน้ำของช่างมืออาชีพ พบว่าหลอดไฟ LED วิ่งไปมาสอดคล้องกับฟองอากาศเป๊ะ! เซ็นเซอร์ MPU6050 ให้ความแม่นยำสูงถึง ± 0.5 องศา และด้วยความหนาของเคสพลาสติก ABS ทำให้ตัวเครื่องนิ่ง แม้จะวางอยู่บนโต๊ะทำงานหรือเครื่องจักรที่กำลังสั่นสะเทือนอยู่ก็ตาม
คลิกเพื่อดูวิดีโอสาธิตการใช้งานจริง (View More)
สรุป: IncliSense เป็นเครื่องพิสูจน์ให้เห็นว่า เทคโนโลยี MEMS และ Arduino สามารถยกระดับเครื่องมือช่างธรรมดาๆ ให้กลายเป็นเครื่องมือวัดความแม่นยำสูงระดับมืออาชีพได้ ใครที่ต้องทำงานเน้นความเป๊ะ ลองเอาโปรเจกต์นี้ไปทำตามดูครับ แบตเตอรี่ 7.4V ที่ให้มาใช้งานต่อเนื่องได้นานกว่า 5 ชั่วโมงเลยทีเดียว!
สนใจบอร์ด Arduino และเซ็นเซอร์วัดความเอียง (MPU6050) ไหม?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา