- Điều kiện tiên quyết
- Sơ đồ mạch
- Quy trình xử lý cho chuột không khí
- Lập trình Arduino cho chuột không khí
- Tập lệnh trình điều khiển Python
- Kiểm tra chuột Arduino Air
Đã bao giờ tự hỏi làm thế nào thế giới của chúng ta đang tiến tới thực tế sống động. Chúng tôi liên tục tìm ra những cách thức và phương pháp mới để tương tác với xung quanh bằng cách sử dụng thực tế ảo, thực tế hỗn hợp, thực tế tăng cường, v.v. Các thiết bị mới đang ra đời hàng ngày với những công nghệ tốc độ nhanh này để gây ấn tượng với chúng tôi bằng công nghệ tương tác mới của chúng.
Những công nghệ nhập vai này được sử dụng trong chơi game, các hoạt động tương tác, giải trí và nhiều ứng dụng khác. Trong hướng dẫn này, chúng ta sẽ biết về một phương pháp tương tác như vậy mang đến cho bạn một cách mới để tương tác với hệ thống của bạn thay vì sử dụng một con chuột nhàm chán. Những người đam mê trò chơi của chúng ta chắc hẳn biết rằng vài năm trước Nintendo, một công ty trò chơi đã bán ra một ý tưởng về phương pháp tương tác 3D để tương tác với bảng điều khiển của họ với sự trợ giúp của bộ điều khiển cầm tay được gọi là bộ điều khiển Wii. Nó sử dụng gia tốc kế để xác định các cử chỉ của bạn cho một trò chơi và gửi nó đến hệ thống không dây. Nếu bạn muốn biết thêm về công nghệ này, bạn có thể xem bằng sáng chế EP1854518B1 của họ, điều này sẽ cung cấp cho bạn ý tưởng đầy đủ về cách hoạt động của công nghệ này.
Lấy cảm hứng từ ý tưởng này, chúng tôi sẽ tạo ra "Air mouse", để tương tác với các hệ thống chỉ bằng cách di chuyển bảng điều khiển trong không khí, nhưng thay vì sử dụng tham chiếu tọa độ 3 chiều, chúng tôi sẽ chỉ sử dụng tham chiếu tọa độ 2 chiều. chúng ta có thể bắt chước các hành động của chuột máy tính vì chuột hoạt động theo hai chiều X và Y.
Khái niệm đằng sau Chuột không dây 3D không dây này rất đơn giản, chúng tôi sẽ sử dụng gia tốc kế để nhận giá trị gia tốc của các hành động và chuyển động của "Chuột không" dọc theo trục x và y, sau đó dựa trên các giá trị của gia tốc kế, chúng tôi sẽ điều khiển con trỏ chuột và thực hiện các hành động nhất định với sự trợ giúp của trình điều khiển phần mềm python chạy trên máy tính.
Điều kiện tiên quyết
- Arduino Nano (bất kỳ kiểu máy nào)
- Mô-đun gia tốc kế ADXL335
- Mô-đun Bluetooth HC-05
- Nút ấn
- Máy tính đã cài đặt Python
Để tìm hiểu thêm về cách cài đặt python trong máy tính, hãy làm theo hướng dẫn trước về Điều khiển đèn LED Arduino-Python.
Sơ đồ mạch
Để điều khiển máy tính của bạn bằng chuyển động của bàn tay, bạn cần một gia tốc kế tạo ra gia tốc dọc theo trục X và Y và để làm cho toàn bộ hệ thống không dây, một mô-đun Bluetooth được sử dụng để truyền tín hiệu không dây đến hệ thống của bạn.
Ở đây, một gia tốc kế ADXL335 được sử dụng, đó là một mô-đun ba trục dựa trên MEMS tạo ra gia tốc dọc theo trục X, Y và Z nhưng như đã nói trước đây để điều khiển chuột, chúng ta sẽ chỉ cần gia tốc dọc theo trục X và Y. Tìm hiểu thêm về cách sử dụng gia tốc kế ADXL335 với Arduino với các dự án trước đây của chúng tôi:
- Hệ thống cảnh báo tai nạn xe dựa trên Arduino sử dụng GPS, GSM và Accelerometer
- Trò chơi Ping Pong sử dụng Arduino và Accelerometer
- Robot điều khiển bằng cử chỉ bằng tay dựa trên gia tốc kế sử dụng Arduino
- Báo động máy dò động đất sử dụng Arduino
Tại đây, chân Xout và Yout của máy đo gia tốc được kết nối với các chân Analog, A0 và A1 của Arduino và để truyền tín hiệu từ Arduino đến hệ thống, mô-đun Bluetooth HC-05 được sử dụng ở đây, vì Bluetooth hoạt động qua Tx và Rx kết nối chân, vì vậy chúng tôi sử dụng chân nối tiếp phần mềm D2 và D3. Nó được kết nối bằng cách sử dụng Phần mềm nối tiếp vì nếu chúng tôi kết nối Bluetooth với nối tiếp phần cứng và bắt đầu nhận các bài đọc qua bảng điều khiển python, nó sẽ hiển thị lỗi đối với tốc độ truyền không khớp vì Bluetooth sẽ giao tiếp với python theo tốc độ truyền của chính nó. Tìm hiểu thêm về cách sử dụng mô-đun Bluetooth bằng cách xem qua các dự án dựa trên Bluetooth khác nhau bằng các bộ vi điều khiển khác nhau bao gồm Arduino.
Ở đây chúng tôi đã sử dụng ba nút nhấn - một để kích hoạt chuột Không khí và hai nút khác để nhấp chuột trái và phải như thể hiện trong hình ảnh bên dưới:
Quy trình xử lý cho chuột không khí
Lưu đồ hiển thị quy trình của Chuột không khí dựa trên Arduino:
1. Hệ thống liên tục kiểm tra kích hoạt cơ học được nhấn cho đến khi nó không được nhấn, chúng ta có thể làm việc bình thường với chuột máy tính.
2. Khi hệ thống phát hiện nhấn nút, điều khiển chuột sẽ được chuyển sang chuột không khí.
3. Khi nhấn nút kích hoạt, hệ thống bắt đầu chuyển các kết quả đọc của chuột sang máy tính. Số đọc của hệ thống bao gồm số đọc gia tốc kế và số đọc khi nhấp chuột trái và phải.
4. Các bài đọc của hệ thống bao gồm dòng dữ liệu 1 byte hoặc 8 bit, trong đó ba bit đầu tiên bao gồm tọa độ X, ba bit thứ hai bao gồm tọa độ Y, bit cuối cùng thứ hai là bit trạng thái để lấy trạng thái của nhấp chuột trái của chuột và bit cuối cùng là bit trạng thái để nhận trạng thái của nhấp chuột phải.
5. Giá trị của ba bit đầu tiên tức là tọa độ X có thể nằm trong khoảng 100 <= Xcord <= 999, trong khi giá trị cho tọa độ Y có thể nằm trong khoảng 100 <= Ycord <= 800. Các giá trị cho nhấp chuột phải và nhấp chuột trái là các giá trị nhị phân 0 hoặc 1, trong đó 1 cho biết nhấp chuột được thực hiện và 0 nhấp chuột đó không phải do người dùng thực hiện.
6. Để không để cho việc nảy nút ảnh hưởng đến vị trí của con trỏ, hãy giữ độ trễ đã biết là 4 giây sau mỗi lần nhấp vào nút kích hoạt của chuột.
7. Để nhấp chuột phải và trái trong chuột không, trước tiên chúng ta phải nhấn nút trái hoặc phải, và sau đó, chúng ta phải nhấn nút kích hoạt để di chuyển đến vị trí của chuột không khí mà chúng ta muốn.
Lập trình Arduino cho chuột không khí
Arduino phải được lập trình để đọc các giá trị gia tốc trong trục X và Y. Các chương trình hoàn chỉnh được đưa ra ở cuối, dưới đây là những đoạn quan trọng từ mã.
Thiết lập các biến toàn cục
Như đã nói trước đây, chúng tôi sẽ kết nối mô-đun Bluetooth với các chân nối tiếp phần mềm. Vì vậy để thiết lập serial phần mềm chúng ta cần khai báo thư viện serial phần mềm và thiết lập các chân cho Tx và Rx. Trong Arduino Nano và Uno, Pin 2 và 3 có thể hoạt động như một phần mềm nối tiếp. Tiếp theo, chúng ta khai báo đối tượng Bluetooth từ thư viện nối tiếp phần mềm để thiết lập mã pin cho Tx và Rx.
#include
Thiết lập hư không ()
Trong hàm thiết lập , chúng ta sẽ thiết lập các biến để cho chương trình biết liệu chúng sẽ hoạt động như đầu vào hay đầu ra. Nút kích hoạt sẽ được thiết lập dưới dạng kéo đầu vào và các nhấp chuột trái và phải được khai báo là đầu vào và được thiết lập là Cao để làm cho chúng hoạt động như kéo đầu vào.
Đồng thời đặt tốc độ truyền cho giao tiếp nối tiếp và Bluetooth thành 9600.
void setup () { pinMode (x, INPUT); pinMode (y, INPUT); pinMode (kích hoạt, INPUT_PULLUP) pinMode (nhấp chuột, INPUT); pinMode (rclick, INPUT); pinMode (led, OUTPUT); digitalWrite (nhấp chuột, CAO); digitalWrite (rclick, HIGH); Serial.begin (9600); bluetooth.begin (9600); }
Vòng lặp rỗng ()
Vì chúng tôi cần nút kích hoạt để cho biết khi nào chúng tôi cần gửi luồng dữ liệu cho hệ thống, vì vậy chúng tôi thiết lập toàn bộ mã bên trong vòng lặp while sẽ liên tục theo dõi trạng thái kỹ thuật số của trình kích hoạt kéo lên, khi nó xuống thấp, nó sẽ vượt qua nó để xử lý.
Như chúng ta đã gắn một đèn LED để cho chúng tôi biết tình trạng của hệ thống để khi nút kích hoạt được nhấn, chúng tôi bước đầu thiết lập dẫn đến thấp bên ngoài trong khi vòng lặp vì nó của tình trạng mặc định và cao bên trong trong khi vòng lặp đó sẽ sáng lên các lãnh đạo bất cứ khi nào nút kích hoạt được nhấn.
Để đọc trạng thái của nút nhấp chuột trái và phải, chúng tôi đã khai báo toàn cục hai biến lclick và rclick có giá trị ban đầu được thiết lập bằng 0.
Và trong vòng lặp , hãy đặt giá trị của các biến đó theo trạng thái kỹ thuật số của nút nhấp chuột trái và phải để kiểm tra xem các nút có được nhấn hay không.
Chúng tôi sẽ đọc các giá trị của các chân X và Y của gia tốc kế bằng chức năng analogRead và sẽ ánh xạ các giá trị đó với kích thước màn hình để đưa con trỏ chuột di chuyển trên toàn màn hình. Vì kích thước màn hình là các pixel trên màn hình, chúng ta cần thiết lập nó cho phù hợp và vì chúng ta cần giá trị đầu ra là ba chữ số, chúng ta đã cố ý thiết lập phạm vi cho X là 100 <= X <= 999 và tương tự giá trị của Y là 100 <= Y <= 800. Hãy nhớ rằng, các pixel đang được đọc từ góc trên cùng bên trái tức là góc trên cùng bên trái có giá trị (0,0), nhưng vì chúng tôi đã khai báo ba chữ số cho x và y nên giá trị của chúng tôi sẽ được đọc từ điểm (100,100).
Hơn nữa, in giá trị của tọa độ và trạng thái của lần nhấp qua nối tiếp và Bluetooth với sự trợ giúp của các chức năng Serial.print và bluetooth.print, chúng giúp nhận các giá trị trên màn hình nối tiếp và qua hệ thống của bạn thông qua Bluetooth.
Cuối cùng, do sự nảy của một nút, một giá trị duy nhất có thể được lặp lại khiến con trỏ chuột di chuyển qua một vị trí, do đó, để loại bỏ điều này, chúng ta phải thêm độ trễ này.
void loop () { digitalWrite (led, LOW); while (digitalRead (trigger) == LOW) { digitalWrite (led, HIGH); lstate = digitalRead (lclick); rstate = digitalRead (rclick); xh = analogRead (x); yh = analogRead (y); xcord = bản đồ (xh, 286,429,100,999); ycord = bản đồ (yh, 282,427,100,800); Serial.print (xcord); Serial.print (ycord); if (lstate == LOW) Serial.print (1); else Serial.print (0); if (rstate == LOW) Serial.print (1); else Serial.print (0); bluetooth.print (xcord); bluetooth.print (ycord); if (lstate == LOW) bluetooth.print (1); khác bluetooth.print (0); if (rstate == LOW) bluetooth.print (1); khác bluetooth.print (0); chậm trễ (4000); }}
Tập lệnh trình điều khiển Python
Hiện tại, chúng tôi đã hoàn thành với phần cứng và phần sụn của nó, bây giờ để chuột không khí hoạt động, chúng tôi cần có một tập lệnh trình điều khiển có thể giải mã các tín hiệu từ chuột không khí thành các chuyển động của con trỏ, vì vậy đối với điều này, chúng tôi đã chọn Con trăn. Python là một ngôn ngữ kịch bản và bằng cách viết kịch bản ở đây, chúng ta có nghĩa là nó giúp chúng ta kiểm soát chương trình khác, vì ở đây chúng ta đang điều khiển con trỏ chuột.
Vì vậy, hãy mở trình bao python của bạn và cài đặt các thư viện sau bằng các lệnh dưới đây:
pip cài đặt pip nối tiếp cài đặt pyautogui
Các sê-ri là một thư viện cho python giúp chúng ta lấy dữ liệu từ các giao diện nối tiếp như cổng com và cũng cho phép chúng ta vận dụng nó trong khi pyautogui là thư viện cho python để có được quyền kiểm soát các tính năng giao diện, trong trường hợp này, con chuột.
Bây giờ chúng ta hãy lấy mã cho trình điều khiển, điều đầu tiên chúng ta cần làm là nhập các thư viện nối tiếp và pyautogui, sau đó từ thư viện nối tiếp, chúng ta phải đặt cổng com cho giao tiếp với tốc độ truyền là 9600, giống như Bluetooth.serial đang hoạt động tại. Đối với điều này, bạn phải kết nối mô-đun Bluetooth với hệ thống của mình và sau đó trong cài đặt hệ thống, bạn phải kiểm tra xem nó được kết nối với cổng com nào.
Điều tiếp theo là đọc thông tin liên lạc nối tiếp từ Bluetooth đến hệ thống và để nó liên tục giữ phần còn lại của mã trong một vòng lặp liên tục với sự trợ giúp của while 1.
Như đã nói trước đây rằng Arduino đang gửi 8 bit, 6 bit đầu tiên cho tọa độ và hai bit cuối cùng cho trạng thái của các nút bấm. Vì vậy, hãy đọc tất cả các bit với sự trợ giúp của ser.read và thiết lập độ dài của nó thành 8 bit.
Tiếp theo, chia các bit cho tọa độ con trỏ và các lần nhấp bằng cách cắt chúng lên, rồi tiếp tục chia nhỏ các bit con trỏ thành các tọa độ X và Y riêng biệt. Tương tự với nhấp chuột trái và phải.
Bây giờ từ giao tiếp, chúng tôi nhận được một chuỗi byte và chúng tôi cần chuyển đổi nó thành một số nguyên để chúng có thể phù hợp với các tọa độ, chúng tôi thực hiện điều này bằng cách giải mã chúng và sau đó nhập chúng thành số nguyên.
Bây giờ để di chuyển con trỏ, chúng ta sử dụng hàm moveto pyautogui, hàm này nhận các đối số là tọa độ số nguyên và di chuyển con trỏ đến vị trí đó.
Tiếp theo kiểm tra các nhấp chuột, chúng tôi thực hiện điều này bằng cách sử dụng hai bit cuối cùng và chức năng nhấp chuột của pyautogui, nhấp chuột mặc định của nó là nhấp chuột trái, tuy nhiên chúng ta có thể đặt nó thành phải bằng cách khai báo giá trị nút sang phải, chúng tôi cũng có thể xác định số nhấp chuột để đặt nó thành nhấp đúp bằng cách thiết lập thông số nhấp chuột thành 2.
Dưới đây là mã Python hoàn chỉnh để chạy trên máy tính:
import serial import pyautogui ser = serial.Serial ('com3', 9600) trong khi 1: k = ser.read (8) con trỏ = k click = k x = con trỏ y = con trỏ l = click r = click xcor = int (x.decode ('utf-8')) ycor = int (y.decode ('utf-8')) pyautogui.moveTo (xcor, ycor) if l == 49: pyautogui.click (click = 2) elif r = = 49: pyautogui.click (button = 'right', click = 2)
Kiểm tra chuột Arduino Air
Vì vậy, để vận hành Chuột Air, hãy gắn nguồn điện vào nó. Nó có thể là từ khe cắm Arduino Nano USB hoặc từ nguồn điện được điều chỉnh 5v sử dụng IC 7805. Sau đó, chạy tập lệnh trình điều khiển python bằng cách đặt cổng com mà Bluetooth của bạn được kết nối. Khi tập lệnh chạy, bạn sẽ thấy độ trễ thời gian trong nháy mắt của Bluetooth, điều đó có nghĩa là nó được kết nối với hệ thống của bạn. Sau đó, để vận hành, hãy nhấp vào nút kích hoạt và bạn sẽ thấy vị trí của tọa độ sẽ thay đổi và nếu bạn muốn nhấp chuột trái hoặc phải, thì trước tiên hãy nhấn nút nhấn trái hoặc phải và nút kích hoạt cùng nhau, bạn sẽ thấy hành động của nhấp chuột tại một vị trí đã thay đổi của con trỏ.
Kiểm tra video làm việc chi tiết bên dưới.