วิธีการควบคุมด้วยท่าทางมือด้วย Arduino ของคอมพิวเตอร์ของคุณ?
การควบคุมด้วยท่าทางมือไม่ใช่สิ่งใหม่ เราได้เห็นหุ่นยนต์มากมายที่ควบคุมด้วยท่าทางมือ เทคโนโลยีก้าวไปอย่างรวดเร็วจนทุกสิ่งที่เราคิดว่ามีอยู่แล้วในตลาด โครงการที่น่าสนใจมากคือการควบคุมคอมพิวเตอร์ส่วนบุคคลหรือแล็ปท็อปของคุณโดยใช้บอร์ดไมโครคอนโทรลเลอร์ขนาดเล็กที่เรียกว่า Arduino Uno ด้วยการใช้ Arduino เราสามารถใช้งานฟังก์ชั่นง่ายๆเพียงแค่โบกมือแทนการใช้เมาส์หรือแป้นพิมพ์ ฟังก์ชั่นเหล่านี้ ได้แก่ การเลื่อนรูปภาพเลื่อนขึ้นและลงในหน้าการสลับระหว่างแท็บของเว็บเบราว์เซอร์เล่นหรือหยุดวิดีโอชั่วคราวสลับระหว่างแอปพลิเคชันเดสก์ท็อปเป็นต้น
วิธีดำเนินการต่างๆบนพีซีโดยใช้ท่าทางมือ?
เมื่อเราทราบบทคัดย่อของโครงการแล้วให้เราก้าวไปข้างหน้าและรวบรวมข้อมูลต่างๆเพื่อเริ่มทำงาน ก่อนอื่นเราจะจัดทำรายการส่วนประกอบจากนั้นศึกษาสั้น ๆ จากนั้นรวบรวมส่วนประกอบทั้งหมดเพื่อสร้างระบบการทำงาน
ขั้นตอนที่ 1: รวบรวมส่วนประกอบ
แนวทางที่ดีที่สุดในการเริ่มต้นโครงการคือการจัดทำรายการส่วนประกอบและทำการศึกษาส่วนประกอบเหล่านี้โดยสังเขปเนื่องจากไม่มีใครต้องการยึดติดอยู่ตรงกลางของโครงการเพียงเพราะส่วนประกอบที่ขาดหายไป รายการส่วนประกอบที่เราจะใช้ในโครงการนี้มีดังต่อไปนี้:
ขั้นตอนที่ 2: ศึกษาส่วนประกอบ
เนื่องจากเรามีรายการส่วนประกอบทั้งหมด เรามาดูการศึกษาสั้น ๆ เกี่ยวกับการทำงานของส่วนประกอบทั้งหมดกันดีกว่า
Arduino Nano เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ดำเนินการต่างๆในวงจรต่างๆ ต้องใช้ไฟล์ รหัส C ที่บอกคณะกรรมการว่าต้องปฏิบัติงานอะไรและทำอย่างไร มีพิน I / O ดิจิทัล 13 พินซึ่งหมายความว่าเราสามารถใช้งานอุปกรณ์ต่างๆได้ 13 เครื่อง Arduino Nano มีฟังก์ชันการทำงานเหมือนกับ Arduino Uno แต่มีขนาดค่อนข้างเล็ก ไมโครคอนโทรลเลอร์บนบอร์ด Arduino Nano คือ ATmega328p.หากคุณต้องการควบคุมอุปกรณ์มากกว่า 13 เครื่องให้ใช้ Arduino Mega
บอร์ด HC-SR04 เป็นเซ็นเซอร์อัลตราโซนิกซึ่งใช้เพื่อกำหนดระยะห่างระหว่างวัตถุสองชิ้น ประกอบด้วยเครื่องส่งและเครื่องรับ เครื่องส่งแปลงสัญญาณไฟฟ้าเป็นสัญญาณอัลตราโซนิกและเครื่องรับแปลงสัญญาณอัลตราโซนิกกลับไปเป็นสัญญาณไฟฟ้า เมื่อเครื่องส่งส่งคลื่นอัลตร้าโซนิคจะสะท้อนหลังจากชนกับวัตถุบางอย่าง ระยะทางคำนวณโดยใช้เวลาสัญญาณอัลตร้าโซนิคนั้นจะไปจากเครื่องส่งและกลับมาที่เครื่องรับ
ขั้นตอนที่ 3: การประกอบส่วนประกอบ
เมื่อเราทราบถึงการทำงานหลักของส่วนประกอบที่เราจะใช้งานแล้ว ให้เราเริ่มประกอบส่วนประกอบเพื่อสร้างผลิตภัณฑ์ที่ใช้งานได้ขั้นสุดท้าย
- เชื่อมต่อ Vcc และพินกราวด์ของทั้งเซ็นเซอร์อัลตราโซนิกกับ 5V และกราวด์ของบอร์ด Arduino Nano ขา Trig และ echo ของเซ็นเซอร์อัลตราโซนิกตัวแรกเชื่อมต่อกับ pin11 และ pin10 ของ Arduino Nano ตามลำดับ Trig และ echo pin ของเซ็นเซอร์อัลตราโซนิกตัวที่สองเชื่อมต่อกับ pin6 และ pin5 ของ Arduino nano ตามลำดับ
- ติดบอร์ด Arduino nano ที่ด้านหลังของสก๊อตเทปหน้าจอแล็ปท็อป เซ็นเซอร์อัลตราโซนิกทั้งสองจะติดอยู่ที่มุมด้านบนของแล็ปท็อปทั้งสอง
ขั้นตอนที่ 4: เริ่มต้นใช้งาน Arduino
หากคุณยังไม่คุ้นเคยกับ Arduino IDE ไม่ต้องกังวลเพราะขั้นตอนทีละขั้นตอนในการตั้งค่าและใช้ Arduino IDE กับบอร์ดไมโครคอนโทรลเลอร์มีคำอธิบายด้านล่าง
- ดาวน์โหลด Arduino IDE เวอร์ชันล่าสุดจาก Arduino
- เชื่อมต่อบอร์ด Arduino Nano เข้ากับแล็ปท็อปของคุณและเปิดแผงควบคุม จากนั้นคลิกที่ ฮาร์ดแวร์และเสียง. ตอนนี้คลิกที่ อุปกรณ์และเครื่องพิมพ์ค้นหาพอร์ตที่บอร์ดไมโครคอนโทรลเลอร์ของคุณเชื่อมต่ออยู่ที่นี่ ในกรณีของฉันมันคือ COM14แต่จะแตกต่างกันในคอมพิวเตอร์เครื่องอื่น
- คลิกที่เมนูเครื่องมือและตั้งค่าบอร์ดเป็น Arduino นาโน จากเมนูแบบเลื่อนลง
- ในเมนูเครื่องมือเดียวกันตั้งค่าพอร์ตเป็นหมายเลขพอร์ตที่คุณสังเกตเห็นก่อนหน้านี้ในไฟล์ อุปกรณ์และเครื่องพิมพ์.
- ในเมนูเครื่องมือเดียวกันตั้งค่าโปรเซสเซอร์เป็น ATmega328P (Bootloader เก่า)
- ดาวน์โหลดโค้ดที่แนบด้านล่างและวางลงใน Arduino IDE ของคุณ คลิกที่ ที่อัพโหลด ปุ่มเพื่อเบิร์นโค้ดบนบอร์ดไมโครคอนโทรลเลอร์ของคุณ
ดาวน์โหลดรหัสคลิกที่นี่
ขั้นตอนที่ 5: การตั้งค่าท่าทางสัมผัส
เราต้องการเขียนโค้ดที่จะตรวจจับและแปลงระยะทางเป็นคำสั่งที่เหมาะสมในการทำงาน
ก่อนอื่นให้เราเขียนรายการงานทั้งหมดที่เราต้องการดำเนินการโดยใช้ท่าทางสัมผัส ต่อไปนี้คือรายการของงานเหล่านั้นทั้งหมด
- สลับไปที่แท็บถัดไปหรือแท็บก่อนหน้าในเว็บเบราว์เซอร์
- เลื่อนขึ้นและลงบนหน้าเว็บ
- เล่นและหยุดวิดีโอชั่วคราวใน VLC Player
- เพิ่มและลดระดับเสียง
- สลับไปมาระหว่างสองงาน
ตอนนี้เราจะตั้งค่าท่าทางเพื่อดำเนินการทั้งหมดเหล่านี้
- ท่าทางที่ 1: วางมือของคุณไว้ด้านหน้าของเซ็นเซอร์อัลตราโซนิกด้านขวาระหว่างประมาณ 15 ซม. - 30 ซม. หลังจากผ่านไปครู่หนึ่งให้ดึงมือของคุณออกไป เพื่อเลื่อนหน้าเว็บลงและลดระดับเสียง
- ท่าทาง 2: วางมือของคุณไว้ข้างหน้าเซ็นเซอร์อัลตราโซนิกด้านขวาระหว่างประมาณ 15 ซม.-30 ซม. หลังจากผ่านไปครู่หนึ่งให้ดันมือไปทางเซ็นเซอร์อัลตราโซนิก เพื่อเลื่อนหน้าเว็บขึ้นและเพิ่มระดับเสียง
- ท่าทาง 3: หากต้องการย้ายไปที่แท็บถัดไปให้ปัดมือของคุณไปด้านหน้าเซ็นเซอร์อัลตราโซนิกด้านขวา
- ท่าทางที่ 4: หากต้องการย้ายไปที่แท็บก่อนหน้าให้ปัดมือของคุณไปด้านหน้าเซ็นเซอร์อัลตราโซนิกด้านซ้าย นอกจากนี้ยังจะเล่น / หยุดวิดีโอของคุณชั่วคราวบนเครื่องเล่น VLC
- ท่าทางที่ 5: หากต้องการสลับระหว่างสองงานให้ปัดมือของคุณผ่านเซ็นเซอร์ทั้งสอง
เราได้เขียนโค้ดและทำเงื่อนไขทั้งหมดตามท่าทางข้างต้น และควรสังเกตว่าเรากำลังใช้ Google Chrome เป็นเว็บเบราว์เซอร์และ VLC Media Player เป็นแอปพลิเคชันสื่อของเรา
ขั้นตอนที่ 6: ทำความเข้าใจกับ Arduino Code
เราได้เขียนโค้ดที่แปลงท่าทางสัมผัส 5 แบบให้เป็นคำสั่งดิจิทัล คำสั่งนี้ถูกส่งไปยังพอร์ตอนุกรม เราจะเขียนโปรแกรม python เพื่อตีความคำสั่งเหล่านี้และทำหน้าที่แป้นพิมพ์บางอย่างเพื่อทำงานต่างๆให้สำเร็จ
1. เมื่อเริ่มต้นหมุดทั้งหมดจะเริ่มต้นที่เราต้องการเชื่อมต่อกับเซ็นเซอร์ ตัวแปรที่แตกต่างกันจะเริ่มต้นเพื่อจัดเก็บข้อมูลสำหรับการคำนวณเวลาและระยะทาง
const int trigPin1 = 11; // ขาออกทริกเกอร์ (เซ็นเซอร์ 1) const int echoPin1 = 10; // ขาอินพุต echo (เซ็นเซอร์ 1) const int trigPin2 = 6; // ขาออกทริกเกอร์ (เซ็นเซอร์ 2) const int echoPin2 = 5; // echo input pin (เซ็นเซอร์ 2) // ตัวแปรที่ใช้สำหรับการคำนวณระยะทางระยะยาว; int ระยะทาง 1 ระยะทาง 2; ลอย r; unsigned long temp=0; int temp1 = 0; int l = 0;
2. เราได้เขียนฟังก์ชัน โมฆะ find_distance (โมฆะ) เพื่อคำนวณระยะทางของเซ็นเซอร์อัลตราโซนิกทั้งสอง จะเป็นการดีกว่าที่จะไม่เรียกใช้เซ็นเซอร์อัลตราโซนิกทั้งสองพร้อมกันเพราะอาจทำให้เกิดสัญญาณรบกวนได้ ฟังก์ชันนี้จะคืนระยะทางเป็นซม.
โมฆะ find_distance (โมฆะ) {digitalWrite (trigPin1, LOW); ล่าช้าไมโครวินาที (2); digitalWrite (trigPin1, สูง); ล่าช้าไมโครวินาที (10); digitalWrite (trigPin1, LOW); ระยะเวลา = pulseIn (echoPin1, สูง, 5000); r = 3.4 * ระยะเวลา / 2; // การคำนวณเพื่อรับการวัดเป็นซม. โดยใช้เวลาที่ส่งคืนโดยฟังก์ชันพัลซิน ระยะทาง 1 = r / 100.00; digitalWrite (trigPin2, LOW); ล่าช้าไมโครวินาที (2); digitalWrite (trigPin2, สูง); ล่าช้าไมโครวินาที (10); digitalWrite (trigPin2, LOW); ระยะเวลา = pulseIn (echoPin2, สูง, 5000); r = 3.4 * ระยะเวลา / 2; ระยะทาง 2 = r / 100.00; ล่าช้า (100); }
3. การตั้งค่าเป็นโมฆะ () เป็นฟังก์ชันที่เริ่มต้นพินทั้งหมดที่จะใช้เป็น INPUT หรือ OUTPUT อัตราบอดยังถูกตั้งค่าในฟังก์ชันนี้ Baud Rate คือความเร็วที่บอร์ดไมโครคอนโทรลเลอร์สื่อสารกับเซ็นเซอร์ที่ติดอยู่
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); pinMode (trigPin1, เอาท์พุท); // เริ่มต้นทริกเกอร์และพินก้องของเซ็นเซอร์ทั้งสองเป็นอินพุตและเอาต์พุต: pinMode (echoPin1, INPUT); pinMode (trigPin2, เอาท์พุท); pinMode (echoPin2, อินพุต); ล่าช้า (1,000); }
4. ห่วงเป็นโมฆะ ()เป็นฟังก์ชันที่ทำงานซ้ำ ๆ ในลูป ในลูปนี้เรากำลังคำนวณระยะทางในหลาย ๆ กรณีและใช้เงื่อนไขในการตรวจจับท่าทาง
ห่วงเป็นโมฆะ () {find_distance (); ถ้า (distance2 <= 35 && distance2> = 15) {temp = millis (); ในขณะที่ (มิลลิวินาที () <= (อุณหภูมิ + 300)) find_distance (); ถ้า (distance2 <= 35 && distance2> = 15) {temp = distance2; ในขณะที่ (distance2 <= 50 || distance2 == 0) {find_distance (); ถ้า ((อุณหภูมิ + 6)distance2) {Serial.println ("ขึ้น"); }}} else {Serial.println ("next"); }} else if (distance1 <= 35 && distance1> = 15) {temp = millis (); ในขณะที่(มิลลิวินาที()<=(อุณหภูมิ+300)) { find_distance(); ถ้า (distance2 <= 35 && distance2> = 15) {Serial.println ("change"); ล. = 1; หยุดพัก; } } if(l==0) { Serial.println("ก่อนหน้า"); ในขณะที่ (distance1 <= 35 && distance1> = 15) find_distance (); } ล. = 0; }}
ขั้นตอนที่ 7: การเขียนโปรแกรม Python
เราจะติดตั้ง PyAutoGUIและเรียกใช้คำสั่งแป้นพิมพ์ต่างๆเพียงแค่อ่านข้อมูลอนุกรมที่เข้ามา ด้วยโปรแกรมนี้เราสามารถเลียนแบบการทำงานของเมาส์และการทำงานของแป้นพิมพ์เช่นคลิกซ้ายหรือขวาบนเมาส์หรือการกดแป้นคีย์บอร์ดใด ๆ
ขั้นแรกเราจะติดตั้ง PIP บน windows ของเรา เป็นขั้นตอนง่ายๆ คลิกที่นี่เพื่อเปิดวิดีโอแนะนำการติดตั้ง pip บนคอมพิวเตอร์ของคุณ หลังจากติดตั้ง PIP บนคอมพิวเตอร์ของเราเราจะดำเนินการต่อและติดตั้ง pyAutoGUI โดยพิมพ์คำสั่งต่อไปนี้ในพรอมต์คำสั่ง
python -m pip ติดตั้ง pyautogui
คำสั่งนี้จะติดตั้ง puAutoGUI บนคอมพิวเตอร์ของคุณ หากทุกอย่างเป็นไปด้วยดีให้เราเขียนโปรแกรม python เพื่อเรียกใช้คำสั่งแป้นพิมพ์ต่างๆ เนื่องจากเราได้รับคำสั่งที่แตกต่างกัน 5 คำสั่งในอินพุตแบบอนุกรมโดยโค้ด Arduino โค้ด Python สามารถแปลงคำสั่งเหล่านี้เป็นคำสั่งบนแป้นพิมพ์ได้ดังนี้
- ข้อมูล:“ next” —–> Action:“ Ctrl + PgDn”
- ข้อมูล:“ ก่อนหน้า” —–> การดำเนินการ:“ Ctrl + PgUp”
- ข้อมูล:“ ลง” —–> การดำเนินการ:“ ลูกศรลง”
- ข้อมูล:“ ขึ้น” —–> การดำเนินการ:“ ลูกศรขึ้น”
- ข้อมูล:“ เปลี่ยน” —–> การดำเนินการ:“ Alt + Tab”
Python สามารถใช้เขียนโปรแกรม anArduinoเพียงแค่นำเข้า pyfirmata ซึ่งสามารถเชื่อมต่อ Arduino กับ Python ได้ ต่อไปนี้เป็นรหัส Python ซึ่งจะต้องใช้ในการเรียกใช้โครงการ:
นำเข้าอนุกรม # เพิ่มไลบรารีอนุกรมสำหรับการนำเข้าการสื่อสารแบบอนุกรม pyautogui # เพิ่มไลบรารี pyautogui สำหรับการควบคุมเมาส์และคีย์บอร์ดโดยใช้โปรแกรม Arduino_Serial = serial.Serial ('com12',9600) # เริ่มต้นซีเรียลและสร้างวัตถุพอร์ตอนุกรมที่เรียกว่า Arduino_Serial ในขณะที่ 1: incoming_data = str (Arduino_Serial.readline ()) # อ่านข้อมูลอนุกรมและพิมพ์เป็นบรรทัดพิมพ์ incoming_data #print the ข้อมูลอนุกรมขาเข้าถ้า 'ถัดไป' ในข้อมูลขาเข้า: # ถ้าข้อมูลขาเข้าเป็น 'ถัดไป' pyautogui.hotkey ('ctrl', 'pgdn') # ดำเนินการ "ctrl + pgdn" ซึ่งจะย้ายไปยังแท็บถัดไปหาก 'ก่อนหน้า' ในข้อมูลขาเข้า : # ถ้าข้อมูลขาเข้าคือ 'ก่อนหน้า' pyautogui.hotkey('ctrl', 'pgup') # ดำเนินการ "ctrl+pgup" ซึ่งจะย้ายไปยังแท็บก่อนหน้าหาก 'ลง' ใน incoming_data: # ถ้าข้อมูลที่เข้ามาคือ 'ลง' # pyautogui.press ('down') # ดำเนินการ "ลูกศรลง" ซึ่งจะเลื่อนหน้าลง pyautogui.scroll (-100) ถ้า 'up' ใน incoming_data: # ถ้าข้อมูลขาเข้า a คือ 'up' # pyautogui.press ('up') # ดำเนินการ "ลูกศรขึ้น" ซึ่งจะเลื่อนหน้าขึ้น pyautogui.scroll (100) ถ้า 'เปลี่ยน' ใน incoming_data: # ถ้าข้อมูลขาเข้าคือ 'เปลี่ยน' pyautogui.keyDown ('alt') # ดำเนินการ "alt+tab" ซึ่งเปลี่ยนแท็บ pyautogui.press('tab') pyautogui.keyUp('alt') incoming_data = ""; # ล้างข้อมูล
นั่นเป็นวิธีที่ง่ายที่สุดในการควบคุมพีซีของคุณโดยใช้ท่าทางมือ ทำตามขั้นตอนทั้งหมดที่กล่าวมาข้างต้นและสนุกกับการควบคุมพีซีของคุณด้วยมือของคุณแทนแป้นพิมพ์และเมาส์