Cara Membuat Kontrol Gerakan Tangan Berbasis Arduino di Komputer Anda?

Hand Gesture Control bukanlah hal baru. Kami telah melihat banyak robot yang dikendalikan oleh gerakan tangan. Teknologi bergerak sangat cepat sehingga apa pun yang kita pikirkan sudah ada di pasar. Proyek yang sangat menarik adalah mengontrol Komputer Pribadi atau Laptop Anda menggunakan papan Mikrokontroler kecil yang disebut Arduino Uno. Dengan menggunakan An Arduino kita dapat melakukan beberapa fungsi sederhana hanya dengan melambaikan tangan daripada menggunakan mouse atau keyboard. Fungsi-fungsi ini termasuk Geser gambar, Gulir ke atas dan ke bawah di halaman, beralih di antara tab browser web, memutar atau menjeda video, beralih di antara aplikasi desktop, dll.

Bagaimana Melakukan Operasi Berbeda Pada PC Menggunakan Gerakan Tangan?

Sekarang karena kita mengetahui abstrak proyek, mari kita lanjutkan dan kumpulkan informasi yang berbeda untuk mulai bekerja. Pertama-tama kita akan membuat daftar komponen, kemudian mempelajarinya secara singkat, kemudian merakit semua komponen tersebut untuk membuat sistem kerja.

Langkah 1: Mengumpulkan Komponen

Pendekatan terbaik untuk memulai proyek apa pun adalah dengan membuat daftar komponen dan melalui studi singkat tentang komponen ini karena tidak ada yang mau bertahan di tengah-tengah proyek hanya karena ada komponen yang hilang. Daftar komponen yang akan kita gunakan dalam proyek ini diberikan di bawah ini:

Langkah 2: Mempelajari Komponen

Karena kami memiliki daftar lengkap semua komponen. Mari kita lanjutkan dan pelajari singkat tentang cara kerja semua komponen.

Arduino Nano adalah papan mikrokontroler yang melakukan berbagai operasi di sirkuit yang berbeda. Ini membutuhkan Kode C. yang memberi tahu dewan tugas apa yang harus dilakukan dan bagaimana. Ini memiliki 13 pin I / O digital yang berarti kita dapat mengoperasikan 13 perangkat yang berbeda. Arduino Nano memiliki fungsi yang persis sama dengan Arduino Uno tetapi dalam ukuran yang cukup kecil. Mikrokontroler pada papan Arduino Nano adalah ATmega328p.Jika Anda ingin mengontrol lebih dari 13 perangkat, gunakan Arduino Mega.

Papan HC-SR04 merupakan sensor ultrasonik yang digunakan untuk mengetahui jarak antara dua benda. Ini terdiri dari pemancar dan penerima. Pemancar mengubah sinyal listrik menjadi sinyal ultrasonik dan penerima mengubah sinyal ultrasonik kembali menjadi sinyal listrik. Ketika pemancar mengirimkan gelombang ultrasonik, itu memantulkan setelah bertabrakan dengan objek tertentu. Jarak dihitung dengan menggunakan waktu, yang dibutuhkan sinyal ultrasonik untuk pergi dari pemancar dan kembali ke penerima.

Langkah 3: Merakit Komponen

Sekarang seperti yang kita ketahui cara kerja utama dari komponen yang akan kita gunakan. Mari kita mulai merakit komponen untuk membuat produk kerja akhir.

  1. Hubungkan Vcc dan pin ground dari kedua sensor ultrasonik ke 5V dan ground papan Arduino Nano. Pin trig dan echo dari sensor ultrasonik pertama dihubungkan masing-masing ke pin11 dan pin10 dari Arduino Nano. Pin trig dan echo dari sensor ultrasonik kedua masing-masing terhubung ke pin6 dan pin5 dari Arduino nano.
  2. Pasang papan nano Arduino ke bagian belakang selotip layar laptop. Kedua sensor ultrasonik akan dipasang di kedua sudut atas laptop.

Langkah 4: Memulai Arduino

Jika Anda belum terbiasa dengan Arduino IDE, jangan khawatir karena prosedur langkah demi langkah untuk mengatur dan menggunakan Arduino IDE dengan papan mikrokontroler dijelaskan di bawah ini.

  1. Unduh versi terbaru Arduino IDE dari Arduino.
  2. Hubungkan papan Arduino Nano Anda ke laptop Anda dan buka panel kontrol. Kemudian, klik Perangkat keras dan Suara. Sekarang, klik Perangkat dan Printer.Di sini, temukan port tempat papan mikrokontroler Anda terhubung. Dalam kasus saya itu COM14tetapi berbeda di komputer yang berbeda.
  3. Klik pada menu Alat dan atur papan ke Arduino Nano dari menu tarik-turun.
  4. Di menu Alat yang sama, setel port ke nomor port yang Anda amati sebelumnya di Perangkat dan Printer.
  5. Di menu Alat yang sama, Setel Prosesor ke ATmega328P (Old Bootloader).
  6. Unduh kode yang terlampir di bawah ini dan tempelkan ke Arduino IDE Anda. Klik pada unggah tombol untuk membakar kode pada papan mikrokontroler Anda.

Untuk mengunduh kodenya, klik di sini.

Langkah 5: Mengatur Gestur

Kami ingin menulis kode yang akan mendeteksi dan mengubah jarak menjadi perintah yang sesuai untuk melakukan tugas.

mari kita buat daftar dulu semua tugas yang ingin kita lakukan menggunakan isyarat. Berikut adalah daftar dari semua tugas tersebut.

  1. Beralih ke tab berikutnya atau tab sebelumnya di Browser Web.
  2. Gulir ke atas dan ke bawah di Halaman Web.
  3. Putar dan Jeda video di VLC Player.
  4. Naikkan dan turunkan volume.
  5. Beralih di antara dua tugas.

Kami sekarang akan mengatur isyarat untuk melakukan semua operasi ini.

  1. Gerakan 1: Letakkan tangan Anda di depan sensor ultrasonik kanan antara sekitar 15cm-30cm. Setelah beberapa saat, tarik tangan Anda. Ini akan menggulir ke bawah halaman web dan menurunkan volume.
  2. Gerakan 2: Letakkan tangan Anda di depan sensor ultrasonik kanan antara sekitar 15cm-30cm. Setelah beberapa saat, dorong tangan Anda ke arah sensor ultrasonik. Ini akan menggulir ke atas halaman web dan meningkatkan volume.
  3. Gerakan 3: Untuk pindah ke tab berikutnya, gesek tangan Anda di depan sensor ultrasonik kanan.
  4. Gerakan 4: Untuk pindah ke tab sebelumnya, gesek tangan Anda di depan sensor ultrasonik kiri. Ini juga akan memutar / menghentikan video Anda di pemutar VLC.
  5. Gerakan 5: Untuk beralih di antara dua tugas, gesek tangan Anda di kedua sensor.

Kami telah menulis kode dan membuat semua ketentuan berdasarkan gerakan di atas. Dan perlu dicatat bahwa kami menggunakan Google Chrome sebagai Web Browser kami dan VLC Media Player sebagai aplikasi media kami.

Langkah 6: Memahami Kode Arduino

Kami telah menulis kode yang mengubah 5 gerakan menjadi perintah digital. perintah ini dikirim ke port serial. Kami akan menulis program python untuk menafsirkan perintah ini dan melakukan beberapa fungsi keyboard untuk menyelesaikan berbagai tugas.

1. Di awal, semua pin diinisialisasi yang ingin kita hubungkan dengan sensor. Variabel yang berbeda juga diinisialisasi untuk menyimpan data untuk penghitungan waktu dan jarak.

const int trigPin1 = 11; // picu pin keluaran (sensor 1) const int echoPin1 = 10; // pin masukan gema (sensor 1) const int trigPin2 = 6; // picu pin keluaran (sensor 2) const int echoPin2 = 5; // echo input pin (sensor 2) // variabel yang digunakan untuk kalkulasi jarak durasi lama; int jarak1, jarak2; mengapung r; suhu panjang unsigned = 0; int temp1 = 0; int l = 0;

2. Kami telah menulis sebuah fungsi, void find_distance (void) untuk menghitung jarak kedua sensor ultrasonik. Sebaiknya jangan memicu kedua sensor ultrasonik secara bersamaan karena dapat menyebabkan gangguan. Fungsi ini akan mengembalikan jarak dalam cm.

void find_distance (void) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); durasi = pulseIn (echoPin1, HIGH, 5000); r = 3.4 * durasi / 2; // kalkulasi untuk mendapatkan pengukuran dalam cm menggunakan waktu yang dikembalikan oleh fungsi pulsein. jarak1 = r / 100.00; digitalWrite (trigPin2, LOW); delayMicroseconds (2); digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); durasi = pulseIn (echoPin2, HIGH, 5000); r = 3.4 * durasi / 2; jarak2 = r / 100.00; penundaan (100); }

3. batal penyiapan () adalah fungsi yang menginisialisasi semua pin untuk digunakan sebagai INPUT atau OUTPUT. Kecepatan Baud juga diatur dalam fungsi ini. Baud Rate adalah kecepatan komunikasi papan mikrokontroler dengan sensor yang terpasang.

batal penyiapan () {Serial.begin (9600); pinMode (trigPin1, OUTPUT); // inisialisasi pemicu dan pin gema dari kedua sensor sebagai input dan output: pinMode (echoPin1, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); penundaan (1000); }

4. void loop ()adalah fungsi yang berjalan berulang kali dalam satu perulangan. Dalam loop ini, kami menghitung jarak dalam banyak contoh dan menerapkan kondisi untuk mendeteksi isyarat.

void loop () {find_distance (); jika (jarak2 <= 35 && distance2> = 15) {temp = millis (); while (millis () <= (temp + 300)) find_distance (); jika (jarak2 <= 35 && jarak2> = 15) {temp = jarak2; sementara (jarak2 <= 50 || jarak2 == 0) {jarak_temukan (); if ((temp + 6)jarak2) {Serial.println ("naik"); }}} lain {Serial.println ("next"); }} lain jika (jarak1 <= 35 && jarak1> = 15) {temp = millis (); while (millis () <= (temp + 300)) {find_distance (); if (jarak2 <= 35 && distance2> = 15) {Serial.println ("ubah"); l = 1; istirahat; }} if (l == 0) {Serial.println ("sebelumnya"); sementara (jarak1 <= 35 && jarak1> = 15) jarak_temukan (); } l = 0; }}

Langkah 7: Pemrograman Python

Kami akan menginstal PyAutoGUIdan menjalankan berbagai perintah papan tombol hanya dengan membaca data serial yang masuk. Dengan program ini, kita dapat meniru banyak operasi mouse dan operasi keyboard seperti klik kiri atau kanan pada mouse atau penekanan tombol keyboard.

Pertama, kami akan menginstal PIP di windows kami. Ini adalah prosedur yang sederhana. Klik di sini untuk membuka panduan video untuk menginstal pip di komputer Anda. Setelah menginstal PIP di komputer kita, kita akan melanjutkan dan menginstal pyAutoGUI. Untuk melakukannya, ketik perintah berikut di prompt perintah

python -m pip instal pyautogui

Perintah ini akan menginstal puAutoGUI di komputer Anda. Jika semuanya berjalan dengan baik sampai sekarang, mari kita lanjutkan dan tulis program python untuk menjalankan perintah keyboard yang berbeda. Karena kami menerima 5 perintah berbeda dalam input serial oleh kode Arduino, kode Python dapat mengubah perintah ini menjadi perintah keyboard tertentu sebagai berikut.

  • Data: “next” —–> Tindakan: “Ctrl + PgDn”
  • Data: “sebelumnya” —–> Tindakan: “Ctrl + PgUp”
  • Data: “down” —–> Tindakan: “Panah Bawah”
  • Data: “up” —–> Tindakan: “Panah Atas”
  • Data: “ubah” —–> Tindakan: “Alt + Tab”

Python dapat digunakan untuk memprogram fileArduino, cukup dengan mengimpor pyfirmata, yang dapat menghubungkan Arduino dengan Python. Berikut adalah kode Python yang akan dibutuhkan untuk menjalankan proyek:

import serial # add Serial library untuk komunikasi serial import pyautogui # add pyautogui library untuk mengontrol mouse dan keyboard secara terprogram. Arduino_Serial = serial.Serial ('com12', 9600) # Inisialisasi serial dan Buat objek port Serial bernama Arduino_Serial sedangkan 1: incoming_data = str (Arduino_Serial.readline ()) # membaca data serial dan mencetaknya sebagai baris print incoming_data #print the data Serial yang masuk jika 'berikutnya' di data_masuk: # jika data yang masuk adalah 'berikutnya' pyautogui.hotkey ('ctrl', 'pgdn') # lakukan operasi "ctrl + pgdn" yang berpindah ke tab berikutnya jika 'sebelumnya' di data_masuk : # jika data yang masuk adalah 'sebelumnya' pyautogui.hotkey ('ctrl', 'pgup') # lakukan operasi "ctrl + pgup" yang berpindah ke tab sebelumnya jika 'down' pada data_masuk: # jika data yang masuk 'down' # pyautogui.press ('down') # melakukan operasi "panah bawah" yang menggulung halaman ke bawah pyautogui.scroll (-100) if 'up' in incoming_data: # if incoming dat a is 'up' # pyautogui.press ('up') # melakukan operasi "up arrow" yang menggulung halaman ke atas pyautogui.scroll (100) jika 'change' in incoming_data: # if data yang masuk adalah 'change' pyautogui.keyDown ('alt') # melakukan operasi "alt + tab" yang mengalihkan tab pyautogui.press ('tab') pyautogui.keyUp ('alt') incoming_data = ""; # membersihkan data

Itu adalah cara termudah untuk mengontrol PC Anda dengan menggunakan gerakan tangan. Ikuti semua langkah yang disebutkan di atas dan nikmati mengendalikan PC Anda dengan tangan Anda alih-alih keyboard dan mouse.

Facebook Twitter Google Plus Pinterest