Ứng dụng của một nút có thể mở rộng với phản hồi rung: 7 bước (có hình ảnh)
Ứng dụng của một nút có thể mở rộng với phản hồi rung: 7 bước (có hình ảnh)
Anonim
Ứng dụng của một nút có thể mở rộng với phản hồi rung
Ứng dụng của một nút có thể mở rộng với phản hồi rung
Ứng dụng của một nút có thể mở rộng với phản hồi rung
Ứng dụng của một nút có thể mở rộng với phản hồi rung

Trong hướng dẫn này, trước tiên chúng tôi sẽ chỉ cho bạn cách sử dụng Arduino Uno để điều khiển động cơ rung thông qua một nút mở rộng. Hầu hết các hướng dẫn về nút nhấn đều liên quan đến nút trên breadboard vật lý, trong khi trong hướng dẫn này, nút này đã được sửa đổi để được kết nối với breadboard thông qua cáp jumper. Nút này sẽ cho phép bạn kiểm soát cường độ và kiểu rung của động cơ. Sau đó, chúng tôi sẽ giới thiệu một nguyên mẫu có thể có của một công nghệ đeo được sử dụng thiết lập này. Thiết bị đeo này là một loại găng tay với các đầu ngón tay có thể mở rộng với các nút gắn ở cuối, được lập trình để cung cấp phản hồi rung độc đáo cho người đeo dựa trên nút cụ thể được nhấn.

Bước 1: Các thành phần cần thiết cho nút để thiết lập động cơ rung

Các thành phần cần thiết cho nút để thiết lập động cơ rung
Các thành phần cần thiết cho nút để thiết lập động cơ rung
  • Arduino Uno
  • Breadboard
  • Động cơ rung đồng xu
  • Nút Grove
  • Dây nhảy nam - nam (x10)
  • Dây nhảy 4 chân
  • Trình điều khiển động cơ Haptic
  • Đầu nối cạnh nam với nữ
  • Sắt hàn

Bước 2: Sơ đồ cho nút để thiết lập động cơ rung

Sơ đồ cho nút để thiết lập động cơ rung
Sơ đồ cho nút để thiết lập động cơ rung

Sơ đồ trước được tạo bằng Fritzing.org.

Bước 3: Thiết lập nút để thiết lập động cơ rung

Bước 1: Hàn đầu nối cạnh vào trình điều khiển động cơ rung. Hàn các dây của máy rung đồng xu vào các đầu cuối của trình điều khiển động cơ rung.

Bước 2: Kết nối cáp jumper 4 chân vào nút bấm.

Bước 3: Sử dụng một trong các dây jumper, kết nối chân GRD trên Arduino thành một hàng trên breadboard.

Bước 4: Sử dụng một dây jumper khác, kết nối chân Volt 3.3 trên Arduino với một hàng khác trên breadboard.

Bước 5: Bây giờ chúng ta sẽ kết nối trình điều khiển động cơ rung với Arduino. Sử dụng dây nhảy thứ ba, kết nối chân GND trên trình điều khiển động cơ rung với cùng hàng trên bảng mạch điện như chân GRD từ Arduino. Làm tương tự với một dây khác cho VCC (volt) trên trình điều khiển động cơ rung, tới hàng volt của bảng mạch.

Bước 6: Sử dụng thêm một sợi dây khác để kết nối chân SDA trên trình điều khiển động cơ rung với chân SDA trực tiếp trên Arduino. Một lần nữa, làm tương tự với các chân SCL trên cả hai. Ngoài ra, hãy làm theo cách tiếp cận tương tự như bước 5 và kết nối các chân SDA và SCL trên Arduino với các hàng của riêng chúng trên breadboard thông qua dây jumper. Sau đó, chạy một dây từ hàng mà chân SDA được kết nối trên bảng mạch điện đến chân SDA trên trình điều khiển động cơ. Thực hiện tương tự đối với hàng SCL trên breadboard với chân SCL trên trình điều khiển động cơ.

Bước 7: Bây giờ chúng ta sẽ kết thúc bằng cách kết nối nút với trình điều khiển động cơ rung và Arduino. Sử dụng một dây jumper khác để kết nối GRD từ dây jumper 4 pin được kết nối với nút ngắt vào cùng một hàng với các dây GRD khác trên breadboard. Làm tương tự với vôn một lần nữa (VCC).

Bước 8: Kết nối một bản ghi cuối cùng từ SIG trên nút breakout với một chân trên Arduino (đối với mục đích của mã của chúng tôi, chúng tôi đã sử dụng chân 7).

Bước 9: Cắm Arduino và tải mã lên, và xem nó hoạt động!

Bước 4: Mã

Nút-Rung-Động cơ.c

/ * Mã phỏng theo https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 * /
#bao gồm// Thư viện trình điều khiển động cơ SparkFun Haptic
#bao gồm// Thư viện I2C
SFE_HMD_DRV2605L HMD; // Tạo đối tượng trình điều khiển động cơ xúc giác
nút int = 7; // chọn chân đầu vào 7 cho nút bấm
int button_val = 0; // biến để đọc trạng thái pin
voidsetup ()
{
/ * Khởi tạo đối tượng trình điều khiển động cơ Haptic * /
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Chế độ đầu vào kích hoạt nội bộ - Phải sử dụng hàm GO () để kích hoạt phát lại.
HMD. MotorSelect (0x36); // Động cơ ERM, Phanh 4x, Độ lợi vòng tua trung bình, Độ lợi EMF quay lại 1.365x
HMD. Library (2); // 1-5 & 7 cho động cơ ERM, 6 cho động cơ LRA
}
voidloop ()
{
/ * Khởi động động cơ rung * /
HMD.go ();
button_val = digitalRead (nút);
if (button_val == HIGH) {
/ * Kết quả này xuất ra để ghi lại rằng nút đã được nhấn, sử dụng để gỡ rối * /
Serial.println ("Đã nhấn nút.");
/ * Thư viện dạng sóng có 0-122 loại sóng khác nhau * /
HMD. Waveform (0, 69);}
khác{
/ * Nếu nút không được nhấn thì dừng động cơ rung * /
HMD.stop ();
}
}

xem rawButton-Vibration-Motor.c được lưu trữ với ❤ bởi GitHub

Bước 5: Video về nút để thiết lập động cơ rung

Image
Image

Bước 6: Nguyên mẫu của găng tay có thể mở rộng

Nguyên mẫu của găng tay có thể mở rộng
Nguyên mẫu của găng tay có thể mở rộng
Nguyên mẫu của găng tay có thể mở rộng
Nguyên mẫu của găng tay có thể mở rộng

Một ứng dụng có thể có của nút đối với động cơ rung là chiếc găng tay được hiển thị ở trên. Chúng tôi đã sửa đổi các vật liệu rẻ tiền dễ tiếp cận như ống tiêm để tạo ra các "đầu ngón tay" có thể mở rộng. Chúng tôi gắn các nút lùm cây vào cuối ống tiêm đã sửa đổi bằng cách sử dụng khóa dán, cắt các lỗ trên đầu ngón tay của găng tay và đặt từng ống tiêm qua các lỗ. 4 dây jumper của các nút được luồn qua ống tiêm và đủ dài để bạn có thể kéo dài ống tiêm ra hết chiều dài của chúng. Arduino và breadboard được gắn qua khóa dán vào đầu găng tay, cho phép dễ dàng kết nối dây của các nút thông qua một khe nhỏ trên đế của mỗi đầu ngón tay. Bộ điều khiển động cơ được gắn vào mặt dưới của găng tay bằng cách mở, để gắn động cơ rung vào mặt trong của găng tay. Khi người đeo đeo găng tay vào, động cơ rung nằm ở mặt dưới cổ tay của người đeo. Khi người đeo chạm vào một bề mặt và nhấn vào một trong các nút, một rung động phản hồi duy nhất được tạo ra thông qua động cơ.

Quá trình suy nghĩ đằng sau một chiếc găng tay như vậy sẽ cho phép ai đó đeo nó "chạm" vào những thứ nằm ngoài phạm vi của đầu ngón tay thông thường của họ và nhận được phản hồi rằng họ đang chạm vào những bề mặt này. Phản hồi rung thay đổi tùy thuộc vào ngón tay nào đang chạm vào bề mặt, do đó người dùng có thể biết ngón tay nào đang chạm vào bề mặt dựa trên kiểu rung.

Có nhiều cách để đưa nguyên mẫu đi xa hơn, chẳng hạn như làm cho các ngón tay có thể mở rộng hơn hoặc làm cho phản hồi thay đổi dựa trên loại bề mặt được chạm vào. Lý tưởng nhất, các ngón tay có thể mở rộng sẽ được tạo ra thông qua in 3D, để có các tùy chọn kính thiên văn tốt hơn. Một cảm biến nhiệt độ có thể được sử dụng thay cho các nút, để cho phép phản hồi về mức độ nóng của bề mặt mà người dùng đang chạm vào hoặc cảm biến độ ẩm cho các mục đích tương tự. Một cách để nhận biết "ngón tay" đã được kéo dài bao xa có thể được triển khai, để cho phép người dùng biết được khoảng cách mà họ đang chạm vào đối tượng. Đây chỉ là một số tùy chọn khả thi để đưa nguyên mẫu này đi xa hơn.

Găng tay này có thể được làm bằng các vật liệu phổ biến như một cách dễ dàng để mở rộng các giác quan của bạn và tạo ra phản hồi mà người dùng có thể cảm nhận và hiểu được.

Bước 7: Mã cho nhiều nút với đầu ra rung duy nhất

mutliple_buttons_to_vibmotor.ino

/ * Mã phỏng theo SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide * /
#bao gồm// Thư viện trình điều khiển động cơ SparkFun Haptic
#bao gồm// Thư viện I2C
SFE_HMD_DRV2605L HMD; // Tạo đối tượng trình điều khiển động cơ xúc giác
int button_middle = 7;
int button_index = 5; // chọn chân đầu vào cho nút bấm
int button_ring = 9;
int button_pinky = 3;
voidsetup ()
{
HMD.begin ();
Serial.begin (9600);
HMD. Mode (0); // Chế độ đầu vào kích hoạt nội bộ - Phải sử dụng hàm GO () để kích hoạt phát lại.
HMD. MotorSelect (0x36); // Động cơ ERM, Phanh 4x, Độ lợi vòng tua trung bình, Độ lợi EMF quay lại 1.365x
HMD. Library (2); // 1-5 & 7 cho động cơ ERM, 6 cho động cơ LRA
}
voidloop ()
{
HMD.go (); // khởi động động cơ rung
/ * Kiểm tra nút nào được nhấn và đầu ra dạng sóng 0-122 * /
if (digitalRead (button_middle) == HIGH) {
Serial.println ("Đã nhấn nút.");
HMD. Waveform (0, 112);}
elseif (digitalRead (button_index) == HIGH) {
HMD. Waveform (0, 20);
}
elseif (digitalRead (button_ring) == HIGH) {
HMD. Waveform (0, 80);
}
elseif (digitalRead (button_pinky) == HIGH) {
HMD. Waveform (0, 100);
}
/ * Nếu không có nút nào được nhấn thì dừng lại * /
khác{
HMD.stop ();
}
}

xem rawmutliple_buttons_to_vibmotor.ino được lưu trữ với ❤ bởi GitHub