กลับไปหน้ารวมไฟล์
tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468.md

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

  1. HC-SR04 VCC - Arduino 5v
  2. HC-SR04 GND - Arduino GND
  3. HC-SR04 TRIG - Arduino Pin 6
  4. 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 < threshold

void 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) -&gt; return -1 to indicate invalid
       return -1.0;
     }
     // Distance in cm: sound speed ~ 343 m/s -&gt; 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: เลือกวัสดุ &amp; ผิว 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>

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE 2.0 (beta)"
author: "rohan_barnwal"
category: "Sensors & Environment"
components:
  - "1x Arduino Leonardo"
  - "1x jumper wires for arduino"
  - "1x Ultrasonic Sensor - HC-SR04"
description: "มาสร้างแกดเจ็ต Arduino เทพๆ ที่เปลี่ยนแท็บให้เราเองเมื่อมีคนเดินมาใกล้เซนเซอร์! งานง่ายแต่หล่อ ได้เรียนรู้เรื่อง Interrupt และมอเตอร์ แล้วก็หัวเราะไปกับความเฮี้ยนของมันด้วย วัยรุ่นจัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX19Kaf6QSt5d5zEwSmUdnKcVYTMG99yj77Ru8D4niGxVXfm+aJVDzYNOFQZoduESg2uKusqgiXEcL4h1eB8JenGJmYJ6/+aEIdI="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/tabescaper-3000-the-parent-proximity-auto-tab-switcher-757468_cover.jpg"
lang: "en"
likes: 2
passwordHash: "b0b219635fb78bd73c9961166d9d97598e899baaeb576d547375d0ee3ba8ea7a"
price: 299
seoDescription: "TabEscaper 3000: An Arduino project that auto-switches tabs when someone's near. Learn to hide your screen with this proximity Sensor gadget."
tags:
  - "Smart appliances"
title: "TabEscaper 3000: เกมส์หลบพ่อแม่ ตึงๆ เปลี่ยนแท็บอัตโนมัติ"
tools: []
videoLinks: []
views: 109