Disclaimer: โปรเจกต์นี้ทำเพื่อความสนุกเท่านั้นนะจ๊ะ ไม่ได้สนับสนุนให้โกงข้อสอบ ซ่อนเรื่องร้ายแรง หรือทำอะไรไม่ดีทั้งนั้น จงคิดซะว่าเป็นของเล่นชิ้นนึงไว้ขำๆ ไว้แกล้งเพื่อน หรือเอาไว้โชว์ฝีมือ Arduino ของตัวเองเฉยๆ
Introduction

ลองนึกภาพตามนะน้อง: น้องกำลังสู้กับบอสอยู่ สมาธิพุ่งเป้าไปที่เกมเต็มที่ ทันใดนั้น... ก็ได้ยินเสียงฝีเท้า ประตูเปิดเสียงดังเอี๊ยดอ๊าด พ่อแม่เดินเข้ามาในห้อง
เกมของน้อง? ถูกจับได้ซะแล้ว ชื่อเสียง? ดับอนาถ
เว้นแต่ว่า... คอมพิวเตอร์ของน้องจะสลับแท็บได้อย่างน่าอัศจรรย์ทันทีที่มีใครเข้ามาใกล้
นั่นแหละคือสิ่งที่ TabEscaper 3000 ทำได้ - โปรเจกต์ Arduino Leonardo + เซ็นเซอร์อัลตราโซนิก ที่จะส่งสัญญาณกดปุ่ม Ctrl+Tab อัตโนมัติเมื่อภัยคุกคาม (หรือก็คือพ่อแม่) เข้ามาใกล้ ทั้งตลก ทั้งดูเทพ และมีประโยชน์อย่างน่าประหลาดใจ
Component and Description


1. Arduino Leonardo: บอร์ด Leonardo นี้พิเศษกว่าบอร์ด Arduino ทั่วไปหน่อยนะ มันเลียนแบบเป็นคีย์บอร์ดหรือเมาส์ USB ได้เลย ทำให้มันสามารถส่งสัญญาณการกดปุ่ม (เช่น Ctrl+Tab) ตรงไปที่คอมพิวเตอร์ของเราได้ ถ้าไม่มีฟีเจอร์นี้ ก็ไม่มีเวทมนตร์หรอกจ้า Leonardo (ATmega32U4) ทำหน้าที่เป็นคีย์บอร์ด USB ส่งคำสั่งเร็วๆ ผ่าน USB เพื่อควบคุม PC ของเรา
2. HC-SR04 Ultrasonic Sensor: เซ็นเซอร์วัดระยะที่ทำงานเหมือนโซนาร์เลย มันส่งคลื่นเสียงอัลตราโซนิกออกไป แล้วฟังเสียงสะท้อนกลับมาคำนวณว่าวัตถุอยู่ห่างเท่าไหร่
- ระยะวัด: 2-400 ซม.
- ความแม่นยำ: ~ 3 มม.
- ขา: TRIG (ส่งสัญญาณ), ECHO (รับสัญญาณ), VCC, GND
3. Jumper Wires: เส้นเลือดใหญ่ของโปรเจกต์อิเล็กทรอนิกส์ ใช้เชื่อมต่อเซ็นเซอร์อัลตราโซนิกเข้ากับ Arduino
อุปกรณ์ที่ต้องมี:
- Arduino Leonardo หรือ Arduino Micro: จำเป็นมากสำหรับฟังก์ชัน HID keyboard
- HC-SR04 Ultrasonic Sensor หรือ Foot Pedal สปริงแรงๆ
- สาย Micro-USB Data Cable
Circuit Wiring

- HC-SR04 VCC - Arduino 5v
- HC-SR04 GND - Arduino GND
- HC-SR04 TRIG - Arduino Pin 6
- HC-SR04 ECHO - Arduino Pin 7
The Code
// Arduino Leonardo: HC-SR04 on pins 6 (TRIG) and 7 (ECHO). // Send Ctrl+Tab once when distance < 10 cm (will not repeat continuously). #include <Keyboard.h> const uint8_t TRIG_PIN = 6; const uint8_t ECHO_PIN = 7; const float THRESHOLD_CM = 30.0; // trigger threshold const unsigned long PULSE_TIMEOUT = 30000UL; // microseconds (30 ms) timeout bool sentOnce = false; // ensures single send while object stays < thresholdvoid setup() { pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); digitalWrite(TRIG_PIN, LOW); Serial.begin(9600); // Allow the USB stack to settle before sending HID events delay(1000); Keyboard.begin(); }
void loop() { float distance = readDistanceCM(); Serial.print("Distance (cm): "); if (distance >= 0) { Serial.println(distance, 2); } else { Serial.println("timeout"); } if (distance >= 0 && distance < THRESHOLD_CM) { if (!sentOnce) { sendCtrlTab(); sentOnce = true;
Serial.println("Sent Ctrl+Tab"); } } else { // reset flag when object moves away (allows next Ctrl+Tab when it comes close again) sentOnce = false; } delay(100); // modest sampling interval (10 Hz) } float readDistanceCM() { // Trigger the sensor: a 10µs HIGH on TRIG digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // Read echo pulse (microseconds) with timeout unsigned long duration = pulseIn(ECHO_PIN, HIGH, PULSE_TIMEOUT); if (duration == 0) { // timeout (no echo) -> return -1 to indicate invalid return -1.0; } // Distance in cm: sound speed ~ 343 m/s -> 29.1 µs per cm round-trip // distance = (duration / 2) / 29.1 float distanceCm = (duration / 2.0) / 29.1; return distanceCm; } void sendCtrlTab() { // Press modifier (left ctrl) + tab, hold briefly, then release Keyboard.press(KEY_LEFT_CTRL); Keyboard.press(KEY_TAB); delay(100); // hold for 100 ms Keyboard.releaseAll(); } </pre> <h3>มันทำงานยังไงล่ะ?</h3> <ol> <li>เซ็นเซอร์ HC-SR04 วัดระยะทางด้านหน้า</li> <li>ถ้ามีวัตถุ (เช่น พ่อแม่ น้อง หรือสัตว์เลี้ยงขี้สงสัย) เข้ามาใกล้ในระยะ 30 ซม. มันจะส่งสัญญาณไปหา Arduino</li> <li>Arduino Leonardo จะแกล้งเป็นคีย์บอร์ดแล้วกด Ctrl+Tab</li> <li>คอมพิวเตอร์ของน้องจะสลับแท็บไปแท็บถัดไปทันที – ซึ่งมักจะเป็นอะไรที่ "ดูบริสุทธิ์" เช่น การบ้านหรือวิกิพีเดีย</li> </ol> <h3>สองวิธีในการเรียกใช้งาน (Trigger)</h3> <p>โปรเจคนี้สามารถทำได้สองวิธีหลักๆ:</p> <ul> <li><strong>วิธีเรดาร์ (HC-SR04)</strong>: ตามที่เห็นในแผนภาพด้านบนเลย น้องจะติดเซ็นเซอร์อัลตราโซนิกไว้ที่ประตูห้อง Arduino จะคอยตรวจสอบระยะทางตลอดเวลา ถ้ามีใครเดินผ่านประตู (เช่น `if (distance < 150cm)`), มันจะส่งคำสั่ง Ctrl+Tab อัตโนมัติโดยที่น้องไม่ต้องขยับตัวเลย!</li> <li><strong>วิธีกายภาพ (ปุ่มเหยียบ)</strong>: น้องสามารถต่อปุ่มอาร์เคดหรือปุ่มเหยียบแบบหนักๆ เข้ากับขา Arduino (เช่น Pin 2 พร้อม `INPUT_PULLUP`) แล้วซ่อนไว้ใต้โต๊ะ แค่เหยียบปุ่มเดียวก็สั่งงานได้ทันที ควบคุมเองแบบแมนนวล</li> </ul> <h3>การส่งสัญญาณคีย์บอร์ด (HID Keystroke)</h3> <p>เมื่อถึงสภาวะ "ฉุกเฉิน" Arduino จะส่งลำดับคำสั่งเร็วๆ ผ่าน USB ไปยังคอมพิวเตอร์ ในโค้ดที่ให้มา ฟังก์ชัน `sendCtrlTab()` จะทำงานตามนี้:</p> <ol> <li>`Keyboard.press(KEY_LEFT_CTRL);`</li> <li>`Keyboard.press(KEY_TAB);` (สั่งให้สลับแท็บด้วย Ctrl+Tab)</li> <li>`delay(100);`</li> <li>`Keyboard.releaseAll();`</li> </ol> <p>ทันใดนั้น หน้าจอของน้องก็จะสลับจากเกมหรือวิดีโอ ไปเป็นหน้าต่างที่ดู "เรียบร้อย" ขึ้นมาทันที!</p> <p>โปรเจคนี้ไม่ใช่แค่ฮาๆ แต่ยังเป็นพื้นฐานสำคัญสำหรับการสร้างแมโครแพดสำหรับโปรแกรมตัดต่อวิดีโอหรือโปรแกรมออกแบบ 3D อีกด้วยนะ เอาไปประยุกต์ต่อได้อีกเพียบ</p> <h3>อัพเกรดโปรเจคให้เทพขึ้นไปอีก</h3> <figure><img src="https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_content_5.png"/><figcaption></figcaption></figure> <p>บอกตรงๆ เลยว่า การมีสายพันกันยุ่งเหยิงกับแผ่น PCB โป๊ๆ วางอยู่บนโต๊ะ มันอาจจะใช้งานได้ แต่ถ้าน้องอยากเอาไปโชว์ในงานเทคแฟร์ ประกวดโครงงาน หรือพรีเซนต์ให้ใครดู การจัดหน้าตาให้ดูดีก็สำคัญนะ</p> <p>นี่แหละคือจุดที่การเลือกวัสดุและกระบวนการผลิตเข้ามามีบทบาท</p> <p>การเลือกใช้บริการผลิตชิ้นส่วนที่มีคุณภาพ จะช่วยเปลี่ยน TabEscaper 3000 ของน้องจากชิ้นงานทดลอง ให้กลายเป็นผลงานระดับมืออาชีพที่ดูดี แข็งแรง และพร้อมโชว์ได้ทุกที่</p> <h3>ทำไมการเลือกผู้ผลิตที่ดีถึงสำคัญ</h3> <ol> <li>การสร้างต้นแบบเร็ว: ส่งงานได้ภายใน 24 ชั่วโมง มีระบบติดตามงานแบบเรียลไทม์</li> <li>เครื่องจักรซีเอ็นซี: ความแม่นยำสูง ด้วยวัสดุอย่างอลูมิเนียม 6061 หรือสแตนเลส 304</li> <li>งานโลหะแผ่น: ตัดด้วยเลเซอร์และดัดด้วยซีเอ็นซี พร้อมให้เลือกสีเคลือบผงได้</li> </ol> <li>**Injection Molding (การฉีดพลาสติก):** จากแม่พิมพ์ต้นแบบ สู่เครื่องมือผลิตระดับอุตสาหกรรมเลยจ้า</li> <li>**Urethane Casting (การหล่อยูรีเทน):** ผลิตปริมาณน้อย แต่ได้เคสคุณภาพระดับสายผลิตจริงจริ้ง</li> <li>**3D Printing (การพิมพ์สามมิติ):** ใช้เรซิน SLA สำหรับงานสวยๆ ใช้ไนลอน HP-PA12 สำหรับงานทนๆ</li> </ol> <h3>สั่งงานง่ายๆ แค่ 4 ขั้นตอน วัยรุ่น!</h3> <h4>ขั้นตอนที่ 1: อัพโหลดไฟล์ CAD ของคุณ</h4> <figure><img src="https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_content_6.png"/><figcaption></figcaption></figure> <h4>ขั้นตอนที่ 2: เลือกวัสดุ & ผิว Finish</h4> <figure><img src="https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_content_7.png"/><figcaption></figcaption></figure> <h4>ขั้นตอนที่ 3: ดูตัวอย่างโมเดล 3D พร้อมเช็คข้อผิดพลาดสดๆ</h4> <figure><img src="https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_content_8.png"/><figcaption></figcaption></figure> <h4>ขั้นตอนที่ 4: กดสั่งงานได้เลย!</h4> <figure><img src="https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_content_9.png"/><figcaption></figcaption></figure> <p>**ทิปจากรุ่นพี่:** เรซินใสโชว์วงจรได้สวยมาก ส่วนสีดำด้านให้อารมณ์ลึกลับสายสปาย เอาไปเลือกใช้กันได้ตามสไตล์น้า</p> <h3>สรุปปิดท้าย</h3> <p>เจ้า TabEscaper 3000 นี่เป็นโปรเจกต์สนุกๆ ที่พิสูจน์ว่า Arduino ทำได้มากกว่าแค่ให้ไฟกระพริบ มันผสมความฮากับความใช้งานได้จริง แสดงให้เห็นว่า Hardware ง่ายๆ + Coding แบบสร้างสรรค์ = สิ่งที่ลืมไม่ลงแน่นอน</p> <p>และด้วยเคสจากผู้ให้บริการ คุณจะเปลี่ยนโปรเจกต์จากต้นแบบรกๆ ให้กลายเป็นแกดเจ็ตพร้อมวางขายได้เลย</p> <p>จำไว้ให้ดี: โปรเจกต์นี้มีไว้เพื่อความสนุกเท่านั้น ใช้มันเพื่อเรียนรู้ หัวเราะ และอวดเพื่อนได้เต็มที่ สู้งานนะน้อง!</p>