Làm thế nào để Điều khiển bằng cử chỉ tay dựa trên Arduino của máy tính của bạn?
Điều khiển bằng cử chỉ tay không phải là một điều mới. Chúng tôi đã thấy nhiều robot được điều khiển bằng cử chỉ tay. Công nghệ đang phát triển rất nhanh đến nỗi bất cứ thứ gì chúng ta nghĩ đến đều đã có mặt trên thị trường. Một dự án rất thú vị là điều khiển Máy tính Cá nhân hoặc Máy tính xách tay của bạn bằng một bảng Vi điều khiển nhỏ có tên là Arduino Uno. Bằng cách sử dụng An Arduino, chúng ta có thể thực hiện một số chức năng đơn giản chỉ bằng cách vẫy tay thay vì sử dụng chuột hoặc bàn phím. Các chức năng này bao gồm Trượt ảnh, Cuộn lên và xuống trong các trang, chuyển đổi giữa các tab của trình duyệt web, phát hoặc tạm dừng video, chuyển đổi giữa các ứng dụng máy tính để bàn, v.v.
Làm thế nào để thực hiện các thao tác khác nhau trên PC bằng cử chỉ tay?
Bây giờ khi chúng ta biết phần tóm tắt của dự án, chúng ta hãy tiếp tục và thu thập các thông tin khác nhau để bắt đầu làm việc. Đầu tiên chúng ta sẽ lập danh sách các thành phần, sau đó nghiên cứu sơ qua về chúng, sau đó lắp ráp tất cả các thành phần để tạo thành một hệ thống hoạt động.
Bước 1: Thu thập các thành phần
Cách tiếp cận tốt nhất để bắt đầu bất kỳ dự án nào là lập danh sách các thành phần và nghiên cứu ngắn gọn về các thành phần này vì sẽ không ai muốn mắc kẹt ở giữa dự án chỉ vì thiếu một thành phần. Dưới đây là danh sách các thành phần mà chúng tôi sẽ sử dụng trong dự án này:
Bước 2: Nghiên cứu các thành phần
Vì chúng tôi có một danh sách đầy đủ của tất cả các thành phần. Hãy tiếp tục và xem qua một nghiên cứu ngắn gọn về hoạt động của tất cả các thành phần.
Arduino Nano là một bảng vi điều khiển thực hiện các hoạt động khác nhau trong các mạch khác nhau. Nó yêu cầu một Mã C điều đó cho hội đồng quản trị biết những công việc cần thực hiện và cách thức thực hiện. Nó có 13 chân I / O kỹ thuật số có nghĩa là chúng ta có thể vận hành 13 thiết bị khác nhau. Arduino Nano có chức năng chính xác như Arduino Uno nhưng với kích thước khá nhỏ. Bộ vi điều khiển trên bảng Arduino Nano là ATmega328p.Nếu bạn muốn điều khiển nhiều hơn 13 thiết bị, hãy sử dụng Arduino Mega.
Bảng HC-SR04 là một cảm biến siêu âm được sử dụng để xác định khoảng cách giữa hai đối tượng. Nó bao gồm một máy phát và một máy thu. Bộ phát chuyển đổi tín hiệu điện thành tín hiệu siêu âm và bộ thu chuyển đổi tín hiệu siêu âm trở lại tín hiệu điện. Khi máy phát gửi một sóng siêu âm, nó sẽ phản xạ lại sau khi va chạm với một vật thể nhất định. Khoảng cách được tính bằng cách sử dụng thời gian, tín hiệu siêu âm đó đi từ máy phát và quay trở lại máy thu.
Bước 3: Lắp ráp các thành phần
Bây giờ chúng ta đã biết hoạt động chính của các thành phần mà chúng ta sẽ sử dụng. Hãy để chúng tôi bắt đầu lắp ráp các thành phần để tạo ra một sản phẩm hoạt động cuối cùng.
- Kết nối Vcc và chân nối đất của cả cảm biến siêu âm với nguồn 5V và tiếp đất của bảng Arduino Nano. Chân trig và chân echo của cảm biến siêu âm đầu tiên được kết nối tương ứng với chân 11 và chân10 của Arduino Nano. Chân trig và chân echo của cảm biến siêu âm thứ hai được kết nối tương ứng với chân 6 và chân5 của Arduino nano.
- Gắn bảng Arduino nano vào mặt sau của băng keo dán màn hình máy tính xách tay. Cả hai cảm biến siêu âm sẽ được gắn vào cả hai góc trên của máy tính xách tay.
Bước 4: Bắt đầu với Arduino
Nếu bạn chưa quen với Arduino IDE, đừng lo lắng vì quy trình từng bước để thiết lập và sử dụng Arduino IDE với bảng vi điều khiển được giải thích dưới đây.
- Tải xuống phiên bản Arduino IDE mới nhất từ Arduino.
- Kết nối bảng Arduino Nano với máy tính xách tay của bạn và mở bảng điều khiển. Sau đó, nhấp vào Phần cứng và Âm thanh. Bây giờ, hãy nhấp vào Các thiết bị và máy in.Tại đây, hãy tìm cổng mà bảng vi điều khiển của bạn được kết nối. Trong trường hợp của tôi, nó là COM14nhưng nó khác nhau trên các máy tính khác nhau.
- Nhấp vào menu Công cụ và đặt bảng thành Arduino Nano từ menu thả xuống.
- Trong cùng một menu Công cụ, hãy đặt cổng thành số cổng mà bạn đã quan sát trước đó trong Các thiết bị và máy in.
- Trong cùng một menu Công cụ, Đặt Bộ xử lý thành ATmega328P (Bộ nạp khởi động cũ).
- Tải xuống mã được đính kèm bên dưới và dán nó vào IDE Arduino của bạn. Bấm vào tải lên để ghi mã trên bảng vi điều khiển của bạn.
Để tải xuống mã, bấm vào đây.
Bước 5: Cài đặt cử chỉ
Chúng tôi muốn viết một đoạn mã sẽ phát hiện và chuyển đổi khoảng cách thành một lệnh thích hợp để thực hiện một tác vụ.
Trước tiên, chúng ta hãy lập danh sách tất cả các tác vụ mà chúng ta muốn thực hiện bằng cử chỉ. Sau đây là danh sách tất cả các nhiệm vụ đó.
- Chuyển sang tab tiếp theo hoặc tab trước đó trong Trình duyệt web.
- Cuộn lên và xuống trên Trang Web.
- Phát và Tạm dừng video trong VLC Player.
- Tăng và giảm âm lượng.
- Chuyển đổi giữa hai tác vụ.
Bây giờ chúng ta sẽ thiết lập các cử chỉ để thực hiện tất cả các thao tác này.
- Cử chỉ 1: Đặt tay của bạn trước cảm biến siêu âm bên phải trong khoảng từ 15cm-30cm. Sau một khoảng thời gian nhỏ, rút tay ra. Thao tác này sẽ cuộn xuống trang web và giảm âm lượng.
- Cử chỉ 2: Đặt tay của bạn trước cảm biến siêu âm bên phải trong khoảng từ 15cm-30cm. Sau một khoảng thời gian nhỏ, đẩy tay về phía cảm biến siêu âm. Thao tác này sẽ cuộn trang web lên và tăng âm lượng.
- Cử chỉ 3: Để chuyển sang tab tiếp theo, hãy vuốt tay của bạn về phía trước của cảm biến siêu âm bên phải.
- Cử chỉ 4: Để di chuyển đến tab trước, hãy vuốt tay của bạn về phía trước của cảm biến siêu âm bên trái. Thao tác này cũng sẽ phát / tạm dừng video của bạn trên trình phát VLC.
- Cử chỉ 5: Để chuyển đổi giữa hai tác vụ, hãy vuốt tay qua cả hai cảm biến.
Chúng tôi đã viết mã và thực hiện tất cả các điều kiện dựa trên các cử chỉ trên. Và cần lưu ý rằng chúng tôi đang sử dụng Google Chrome với tư cách là Trình duyệt web của chúng tôi và VLC Media Player như ứng dụng phương tiện của chúng tôi.
Bước 6: Tìm hiểu mã Arduino
Chúng tôi đã viết một đoạn mã chuyển đổi 5 cử chỉ thành một lệnh kỹ thuật số. lệnh này được gửi đến cổng nối tiếp. Chúng tôi sẽ viết một chương trình python để diễn giải các lệnh này và thực hiện một số chức năng bàn phím để hoàn thành các tác vụ khác nhau.
1. Khi bắt đầu, tất cả các chân được khởi tạo mà chúng ta muốn kết nối với các cảm biến. Các biến khác nhau cũng được khởi tạo để lưu trữ dữ liệu cho việc tính toán thời gian và khoảng cách.
const int trigPin1 = 11; // chân đầu ra kích hoạt (cảm biến 1) const int echoPin1 = 10; // chân đầu vào echo (cảm biến 1) const int trigPin2 = 6; // chân đầu ra kích hoạt (cảm biến 2) const int echoPin2 = 5; // chân đầu vào echo (cảm biến 2) // các biến được sử dụng để tính toán khoảng cách thời gian dài; int distance1, distance2; phao r; unsigned long temp = 0; int temp1 = 0; int l = 0;
2. Chúng tôi đã viết một hàm, void find_distance (void) để tính toán khoảng cách của cả hai cảm biến siêu âm. Tốt hơn là không nên kích hoạt cả hai cảm biến siêu âm cùng một lúc vì nó có thể gây ra một số nhiễu. Hàm này sẽ trả về khoảng cách tính bằng cm.
void find_distance (void) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); thời lượng = xungIn (echoPin1, HIGH, 5000); r = 3,4 * thời lượng / 2; // phép tính để lấy số đo bằng cm sử dụng thời gian được trả về bởi hàm pulsein. khoảng cách1 = r / 100,00; digitalWrite (trigPin2, LOW); delayMicroseconds (2); digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); thời lượng = xungIn (echoPin2, HIGH, 5000); r = 3,4 * thời lượng / 2; khoảng cách2 = r / 100,00; chậm trễ (100); }
3. void setup () là một chức năng khởi tạo tất cả các chân được sử dụng như INPUT hoặc OUTPUT. Tốc độ Baud cũng được đặt trong chức năng này. Tốc độ Baud là tốc độ mà bo mạch vi điều khiển giao tiếp với các cảm biến được gắn vào.
void setup () {Serial.begin (9600); pinMode (trigPin1, OUTPUT); // khởi tạo chân kích hoạt và chân echo của cả cảm biến như đầu vào và đầu ra: pinMode (echoPin1, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); chậm trễ (1000); }
4. void loop ()là một hàm chạy lặp đi lặp lại trong vòng lặp ina. Trong vòng lặp này, chúng tôi đang tính toán khoảng cách trong nhiều trường hợp và áp dụng các điều kiện để phát hiện cử chỉ.
void loop () {find_distance (); if (distance2 <= 35 && distance2> = 15) {temp = millis (); while (millis () <= (temp + 300)) find_distance (); if (distance2 <= 35 && distance2> = 15) {temp = distance2; while (distance2 <= 50 || distance2 == 0) {find_distance (); if ((temp + 6)khoảng cách2) {Serial.println ("lên"); }}} else {Serial.println ("tiếp theo"); }} else if (distance1 <= 35 && distance1> = 15) {temp = millis (); while (millis () <= (temp + 300)) {find_distance (); if (distance2 <= 35 && distance2> = 15) {Serial.println ("thay đổi"); l = 1; phá vỡ; }} if (l == 0) {Serial.println ("trước"); while (distance1 <= 35 && distance1> = 15) find_distance (); } l = 0; }}
Bước 7: Lập trình Python
Chúng tôi sẽ cài đặt PyAutoGUIvà gọi các lệnh bàn phím khác nhau bằng cách đọc dữ liệu nối tiếp đến. Với chương trình này, chúng ta có thể bắt chước nhiều thao tác chuột và thao tác bàn phím như nhấp chuột trái hoặc phải vào chuột hoặc bất kỳ thao tác nhấn phím nào trên bàn phím.
Đầu tiên, chúng tôi sẽ cài đặt PIP trên các cửa sổ của mình. Đó là một thủ tục đơn giản. Nhấp vào đây để mở video hướng dẫn cài đặt pip trên máy tính của bạn. Sau khi cài đặt PIP trên máy tính của chúng tôi, chúng tôi sẽ tiếp tục và cài đặt pyAutoGUI. Để làm như vậy, hãy nhập lệnh sau vào dấu nhắc lệnh
python -m pip cài đặt pyautogui
Lệnh này sẽ cài đặt puAutoGUI trên máy tính của bạn. Nếu mọi thứ diễn ra tốt đẹp cho đến bây giờ, chúng ta hãy tiếp tục và viết một chương trình python để gọi các lệnh bàn phím khác nhau. Vì chúng ta đang nhận 5 lệnh khác nhau trong đầu vào nối tiếp bằng mã Arduino, mã Python có thể chuyển đổi các lệnh này thành các lệnh bàn phím nhất định như sau.
- Dữ liệu: “tiếp theo” —–> Hành động: “Ctrl + PgDn”
- Dữ liệu: “trước đó” —–> Hành động: “Ctrl + PgUp”
- Dữ liệu: “xuống” —–> Hành động: “Mũi tên xuống”
- Dữ liệu: “up” —–> Hành động: “Mũi tên lên”
- Dữ liệu: “change” —–> Action: “Alt + Tab”
Python có thể được sử dụng để lập trình mộtArduino, đơn giản bằng cách nhập pyfirmata, có thể giao diện Arduino với Python. Sau đây là mã Python sẽ được yêu cầu để chạy dự án:
nhập nối tiếp # thêm thư viện nối tiếp cho giao tiếp nối tiếp nhập pyautogui # thêm thư viện pyautogui để điều khiển chuột và bàn phím theo chương trình. Arduino_Serial = serial.Serial ('com12', 9600) # Khởi tạo nối tiếp và tạo đối tượng cổng nối tiếp được gọi là Arduino_Serial trong khi 1: incoming_data = str (Arduino_Serial.readline ()) # đọc dữ liệu nối tiếp và in nó dưới dạng dòng in incoming_data #print the dữ liệu nối tiếp đến nếu 'tiếp theo' trong incoming_data: # nếu dữ liệu đến là 'tiếp theo' pyautogui.hotkey ('ctrl', 'pgdn') # thực hiện thao tác "ctrl + pgdn" để chuyển sang tab tiếp theo nếu 'trước' trong incoming_data : # nếu dữ liệu đến là 'trước đó' pyautogui.hotkey ('ctrl', 'pgup') # thực hiện thao tác "ctrl + pgup" để di chuyển đến tab trước nếu 'xuống' trong incoming_data: # nếu dữ liệu đến là 'xuống' # pyautogui.press ('down') # thực hiện thao tác "mũi tên xuống" cuộn xuống trang pyautogui.scroll (-100) nếu 'up' trong incoming_data: # if incoming dat a là 'up' # pyautogui.press ('up') # thực hiện thao tác "mũi tên lên" cuộn lên trang pyautogui.scroll (100) nếu 'thay đổi' trong incoming_data: # nếu dữ liệu đến là 'thay đổi' pyautogui.keyDown ('alt') # thực hiện thao tác "alt + tab" chuyển đổi tab pyautogui.press ('tab') pyautogui.keyUp ('alt') incoming_data = ""; # xóa dữ liệu
Đó là cách đơn giản nhất để điều khiển PC của bạn bằng cử chỉ tay. Làm theo tất cả các bước được đề cập ở trên và tận hưởng điều khiển PC bằng tay thay vì bàn phím và chuột.