- Điều kiện tiên quyết:
- Khái niệm đằng sau dự án:
- Sơ đồ mạch:
- Lập trình Arduino của bạn:
- Lập trình Python của bạn:
- Máy tính điều khiển bằng cử chỉ đang hoạt động:
Gần đây Máy tính xách tay hoặc máy tính được điều khiển bằng cử chỉ đang rất nổi tiếng. Kỹ thuật này được gọi là chuyển động Leap cho phép chúng ta điều khiển các chức năng nhất định trên máy tính / Laptop của mình bằng cách chỉ cần vẫy tay trước mặt nó. Nó rất thú vị và thú vị để làm điều đó, nhưng những chiếc máy tính xách tay này thực sự có giá rất cao. Vì vậy, trong dự án này, chúng ta hãy thử xây dựng Máy tính xách tay / Máy tính điều khiển bằng cử chỉ của riêng mình bằng cách kết hợp Sức mạnh của Arduino và Python.
Chúng tôi sẽ sử dụng hai cảm biến siêu âm để xác định vị trí của bàn tay và điều khiển trình phát đa phương tiện (VLC) dựa trên vị trí. Tôi đã sử dụng điều này để trình diễn, nhưng khi bạn đã hiểu về dự án, bạn có thể làm bất cứ điều gì chỉ bằng cách thay đổi một vài dòng mã và điều khiển ứng dụng yêu thích của mình theo cách bạn yêu thích.
Điều kiện tiên quyết:
Chúng tôi đã đề cập đến một số dự án kết hợp Arduino với Python. Vì vậy, tôi giả sử rằng bạn đã cài đặt Python và thư viện nối tiếp của nó và đã thử thành công một số dự án cơ bản như đèn LED nhấp nháy. Nếu không, đừng lo lắng, bạn có thể quay lại hướng dẫn Điều khiển đèn Led Arduino-Python này và làm quen với nó. Vì vậy, hãy đảm bảo rằng bạn đã cài đặt Python và thư viện pyserial trước khi tiếp tục.
Khái niệm đằng sau dự án:
Khái niệm đằng sau dự án rất đơn giản. Chúng tôi sẽ đặt hai cảm biến Ultrasonic (Mỹ) lên trên màn hình và sẽ đọc khoảng cách giữa màn hình và tay của chúng tôi bằng Arduino, dựa trên giá trị khoảng cách này, chúng tôi sẽ thực hiện một số hành động nhất định. Để thực hiện các hành động trên máy tính của chúng tôi, chúng tôi sử dụng thư viện Python pyautogui. Các lệnh từ Arduino được gửi đến máy tính thông qua cổng nối tiếp (USB). Dữ liệu này sau đó sẽ được đọc bởi python đang chạy trên máy tính và dựa trên dữ liệu đã đọc, một hành động sẽ được thực hiện.
Sơ đồ mạch:
Để điều khiển PC bằng Cử chỉ tay, chỉ cần kết nối hai cảm biến Siêu âm với Arduino. Chúng tôi biết cảm biến của Hoa Kỳ hoạt động với 5V và do đó chúng được cung cấp bởi bộ điều chỉnh điện áp trên bo mạch của Arduino. Arduino có thể được kết nối với PC / Máy tính xách tay để cấp nguồn cho mô-đun và cũng để giao tiếp nối tiếp. Sau khi kết nối xong, hãy đặt chúng trên màn hình của bạn như hình dưới đây. Tôi đã sử dụng băng dính hai mặt để dán nó lên màn hình của mình nhưng bạn có thể sử dụng sự sáng tạo của riêng mình. Sau khi cố định nó ở một nơi, chúng ta có thể tiến hành Lập trình.
Lập trình Arduino của bạn:
Arduino phải được lập trình để đọc khoảng cách của bàn tay từ cảm biến của Hoa Kỳ. Các chương trình hoàn chỉnh được đưa ra ở cuối trang này; ngay dưới đây tôi đã đưa ra lời giải thích cho chương trình. Nếu bạn chưa quen với cảm biến siêu âm, chỉ cần xem qua Arduino & Đo khoảng cách dựa trên cảm biến siêu âm.
Bằng cách đọc giá trị của khoảng cách, chúng ta có thể đến một số hành động nhất định được điều khiển bằng cử chỉ, ví dụ trong chương trình này, tôi đã lập trình 5 hành động dưới dạng bản demo.
Hành động 1: Khi cả hai tay đặt lên trước cảm biến ở một khoảng cách xa cụ thể thì video trong trình phát VLC sẽ Phát / Tạm dừng.
Hành động 2: Khi đặt tay phải lên trước cảm biến ở một khoảng cách xa cụ thể thì video sẽ Tua nhanh một bước.
Hành động 3: Khi đặt tay trái lên trước cảm biến ở một khoảng cách xa cụ thể thì video sẽ Tua lại một bước.
Hành động 4: Khi đặt tay phải lên trước cảm biến ở một khoảng cách gần cụ thể và sau đó nếu di chuyển về phía cảm biến, video sẽ tua đi nhanh và nếu di chuyển ra xa, video sẽ Tua lại.
Hành động 5: Khi đặt tay trái lên trước cảm biến ở một khoảng cách gần cụ thể và sau đó nếu di chuyển về phía cảm biến, âm lượng của video sẽ tăng lên và nếu di chuyển ra xa, âm lượng sẽ giảm.
Chúng ta hãy xem chương trình được viết như thế nào để thực hiện các thao tác trên. Vì vậy, giống như tất cả các chương trình, chúng ta bắt đầu với việc xác định các chân I / O như hình dưới đây. Hai cảm biến của Mỹ được kết nối với chân Digital 2,3,4 và 5 và được cấp nguồn bằng chân + 5V. Các chân kích hoạt là chân đầu ra và chân Echo là chân đầu vào.
Giao tiếp nối tiếp giữa Arduino và python diễn ra ở tốc độ truyền là 9600.
const int trigger1 = 2; // Chân kích hoạt của Sesnor thứ nhất const int echo1 = 3; // Chân tiếng vọng của Sesnor thứ nhất const int trigger2 = 4; // Chân kích hoạt của Sesnor thứ 2 const int echo2 = 5; // Chân kích hoạt của Sesnor thứ 2 void setup () {Serial.begin (9600); pinMode (trigger1, OUTPUT); pinMode (echo1, INPUT); pinMode (trigger2, OUTPUT); pinMode (echo2, INPUT); }
Chúng ta cần tính toán khoảng cách giữa Cảm biến và bàn tay mỗi lần trước khi kết thúc bất kỳ hành động nào. Vì vậy, chúng tôi phải làm điều đó nhiều lần, có nghĩa là mã này nên được sử dụng như một hàm. Chúng tôi đã viết một hàm có tên Calcul_distance () sẽ trả về khoảng cách giữa cảm biến và bàn tay.
/ * ### Hàm tính khoảng cách ### * / void tính_distance (int trigger, int echo) {digitalWrite (trigger, LOW); delayMicroseconds (2); digitalWrite (kích hoạt, CAO); delayMicroseconds (10); digitalWrite (kích hoạt, THẤP); time_taken = xungIn (echo, HIGH); dist = time_taken * 0.034 / 2; nếu (dist> 50) dist = 50; }
Bên trong vòng lặp chính của chúng tôi, chúng tôi kiểm tra giá trị của khoảng cách và thực hiện các hành động được đề cập ở trên. Trước đó, chúng tôi sử dụng hai biến distL và distR được cập nhật với giá trị khoảng cách hiện tại.
tính_dạng (trigger1, echo1); distL = dist; // lấy khoảng cách cảm biến trái tính_dọc (trigger2, echo2); distR = dist; // lấy khoảng cách của cảm biến bên phải
Vì chúng tôi biết khoảng cách giữa cả hai cảm biến, giờ đây chúng tôi có thể so sánh nó với các giá trị được xác định trước và đi đến các hành động nhất định. Ví dụ: nếu cả hai tay được đặt ở khoảng cách 40 mc thì chúng tôi phát / tạm dừng video. Ở đây từ “Phát / Tạm dừng” sẽ được gửi qua cổng nối tiếp
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Phát hiện cả hai tay {Serial.println ("Play / Pause"); trì hoãn (500);}
Nếu chỉ có Tay phải được đặt trước mô-đun thì chúng tôi tua nhanh video một bước và nếu là tay trái, chúng tôi tua lại một bước. Dựa trên hành động, ở đây từ "Tua lại" hoặc "Chuyển tiếp" sẽ được gửi qua cổng nối tiếp
if ((distL> 40 && distL <50) && (distR == 50)) // Phát hiện Tay trái {Serial.println ("Tua lại"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Phát hiện Tay phải {Serial.println ("Chuyển tiếp"); trì hoãn (500);}
Để kiểm soát chi tiết âm lượng và bản nhạc, chúng tôi sử dụng một phương pháp khác để ngăn chặn việc kích hoạt sai. Để điều khiển âm lượng, chúng ta phải đặt tay trái khoảng. Ở khoảng cách 15 cm, sau đó bạn có thể di chuyển nó về phía cảm biến để giảm âm lượng và di chuyển nó ra xa cảm biến để tăng âm lượng. Mã cho cùng một được hiển thị bên dưới. Dựa trên hành động, ở đây từ "Vup" hoặc "Vdown" sẽ được gửi qua cổng nối tiếp
// Khóa bên trái - Chế độ điều khiển if (distL> = 13 && distL <= 17) {delay (100); // Thời gian giữ tay tính_distance (trigger1, echo1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Đã khóa bên trái"); while (distL <= 40) {Calcul_distance (trigger1, echo1); distL = dist; if (distL <10) // Tay đẩy vào {Serial.println ("Vup"); delay (300);} if (distL> 20) // Tay rút ra {Serial.println ("Vdown"); trì hoãn (300);}}}}
Chúng ta cũng có thể sử dụng phương pháp tương tự cho cảm biến bên phải để điều khiển theo dõi video. Tức là nếu chúng ta di chuyển tay phải về phía cảm biến, nó sẽ tua nhanh phim và nếu bạn di chuyển nó ra khỏi cảm biến, nó sẽ tua lại phim. Dựa trên hành động, ở đây từ "Tua lại" hoặc "Chuyển tiếp" sẽ được gửi qua cổng nối tiếp
Giờ đây, bạn có thể đọc toàn bộ mã cho PC được điều khiển bằng cử chỉ này được cung cấp ở cuối trang và thử trình bày lại toàn bộ rồi sao chép nó vào Arduino IDE của bạn.
Lập trình Python của bạn:
Chương trình python cho dự án này rất đơn giản. Chúng tôi chỉ cần thiết lập giao tiếp nối tiếp với Arduino thông qua tốc độ truyền chính xác và sau đó thực hiện một số thao tác bàn phím cơ bản. Bước đầu tiên với python sẽ là cài đặt mô-đun p yautogui . Đảm bảo bạn làm theo bước này vì chương trình sẽ không hoạt động nếu không có mô-đun pyautogui.
Cài đặt mô-đun pyautogui cho windows:
Làm theo các bước dưới đây để cài đặt pyautogui cho windows. Nếu bạn đang sử dụng các nền tảng khác, các bước cũng sẽ ít nhiều tương tự. Đảm bảo máy tính / Máy tính xách tay của bạn được kết nối với Internet và tiến hành các bước dưới đây
Bước 1: Mở Command prompt của Windows và thay đổi thư mục thành thư mục mà bạn đã cài đặt python. Theo mặc định, lệnh phải là
cd C: \ Python27
Bước 2: Bên trong thư mục python của bạn, sử dụng lệnh python –m pip install –upgrade pip để nâng cấp pip của bạn. Pip là một công cụ trong python giúp chúng ta cài đặt các mô-đun python một cách dễ dàng. Sau khi mô-đun này được nâng cấp (như trong hình bên dưới), hãy chuyển sang bước tiếp theo.
python –m pip cài đặt – nâng cấp pip
Bước 3: Sử dụng lệnh “ python –m pip install pyautogui ” để cài đặt mô-đun pyautogui. Khi quá trình thành công, bạn sẽ thấy một màn hình tương tự như bên dưới.
python –m pip cài đặt – nâng cấp pip
Bây giờ mô-đun pyautogui và mô-đun pyserial (được cài đặt trong hướng dẫn trước) đã được cài đặt thành công với python, chúng ta có thể tiếp tục với chương trình python. Các mã python hoàn chỉnh được đưa ra vào cuối của hướng dẫn nhưng lời giải thích cho cùng là như sau.
Hãy để chúng tôi nhập tất cả ba mô-đun bắt buộc cho dự án này. Chúng là pyautogui, trăn nối tiếp và thời gian.
nhập nối tiếp # Đã nhập nối tiếp cho thời gian nhập giao tiếp nối tiếp # Yêu cầu sử dụng các chức năng trì hoãn nhập pyautogui
Tiếp theo, chúng tôi thiết lập kết nối với Arduino thông qua cổng COM. Trong máy tính của tôi, Arduino được kết nối với COM 18. Sử dụng trình quản lý thiết bị để tìm cổng COM mà Arduino của bạn được kết nối với và sửa lại dòng sau cho phù hợp.
ArduinoSerial = serial.Serial ('com18', 9600) # Tạo đối tượng cổng nối tiếp được gọi là arduinoSerialData time.sleep (2) # Chờ 2 giây để kết nối được thiết lập
Bên trong vòng lặp while vô hạn, chúng tôi liên tục lắng nghe cổng COM và so sánh các từ khóa với bất kỳ tác phẩm nào đã được xác định trước và thực hiện nhấn bảng phím cho phù hợp.
while 1: incoming = str (ArduinoSerial.readline ()) # đọc dữ liệu nối tiếp và in nó dưới dạng in dòng đến nếu 'Phát / Tạm dừng' ở đến: pyautogui.typewrite (, 0.2) nếu 'Tua lại' trong đến: pyautogui. phím nóng ('ctrl', 'left') nếu 'Chuyển tiếp' khi đến: pyautogui.hotkey ('ctrl', 'phải') nếu 'Vup' khi đến: pyautogui.hotkey ('ctrl', 'xuống') nếu ' Vdown 'vào: pyautogui.hotkey (' ctrl ',' up ')
Như bạn thấy, để nhấn một phím, chúng ta chỉ cần sử dụng lệnh “pyautogui.typewrite (, 0.2)” sẽ nhấn phím cách trong 0,2 giây. Nếu bạn cần các phím nóng như ctrl + S thì bạn có thể sử dụng lệnh phím nóng “pyautogui.hotkey ('ctrl', 's')”.
Tôi đã sử dụng các kết hợp này vì chúng hoạt động trên trình phát phương tiện VLC, bạn có thể tinh chỉnh chúng theo bất kỳ cách nào bạn muốn để tạo các ứng dụng của riêng bạn để điều khiển mọi thứ trong máy tính bằng cử chỉ.
Máy tính điều khiển bằng cử chỉ đang hoạt động:
Thực hiện các kết nối như đã định nghĩa ở trên và tải mã Arduino lên bảng Arduino của bạn. Sau đó, sử dụng tập lệnh python bên dưới và khởi chạy chương trình trên máy tính xách tay / máy tính của bạn.
Giờ đây, bạn có thể phát bất kỳ bộ phim nào trên máy tính bằng trình phát phương tiện VLC và sử dụng tay để điều khiển bộ phim như trong video bên dưới.
Hy vọng bạn hiểu dự án và thích chơi với nó. Đây chỉ là một bản demo và bạn có thể sử dụng khả năng sáng tạo của mình để xây dựng nhiều nội dung điều khiển bằng cử chỉ thú vị hơn xung quanh vấn đề này. Hãy cho tôi biết nếu điều này hữu ích và những gì bạn sẽ tạo ra bằng cách sử dụng nó trong phần bình luận và tôi sẽ rất vui khi biết điều đó.