- Prasyarat:
- Konsep di balik proyek:
- Diagram Sirkuit:
- Memprogram Arduino Anda:
- Memprogram Python Anda:
- Gesture Controlled Computer sedang Beraksi:
Baru-baru ini Laptop atau komputer yang dikendalikan Gerakan menjadi sangat terkenal. Teknik ini disebut gerakan Leap yang memungkinkan kita untuk mengontrol fungsi tertentu pada komputer / Laptop kita hanya dengan melambaikan tangan di depannya. Sangat keren dan menyenangkan untuk melakukannya, tetapi harga laptop ini sangat tinggi. Jadi dalam proyek ini mari kita coba membangun Laptop / Komputer kontrol Gerakan kita sendiri dengan menggabungkan Kekuatan Arduino dan Python.
Kami akan menggunakan dua sensor Ultrasonik untuk menentukan posisi tangan kami dan mengontrol pemutar media (VLC) berdasarkan posisinya. Saya telah menggunakan ini untuk demonstrasi, tetapi setelah Anda memahami proyeknya, Anda dapat melakukan apa saja hanya dengan mengubah beberapa baris kode dan mengontrol aplikasi favorit Anda dengan cara favorit Anda.
Prasyarat:
Kami telah membahas beberapa proyek yang menggabungkan Arduino dengan Python. Jadi saya berasumsi bahwa Anda telah menginstal Python dan pustaka serialnya dan telah berhasil mencoba beberapa proyek dasar seperti LED yang berkedip. Jika tidak, jangan khawatir Anda dapat kembali ke tutorial Pengendalian Led Arduino-Python ini dan memahaminya. Jadi pastikan Anda telah menginstal pustaka Python dan pyserial sebelum melanjutkan.
Konsep di balik proyek:
Konsep di balik proyek ini sangat sederhana. Kami akan menempatkan dua sensor Ultrasonic (AS) di atas monitor kami dan akan membaca jarak antara monitor dan tangan kami menggunakan Arduino, berdasarkan nilai jarak ini kami akan melakukan tindakan tertentu. Untuk melakukan tindakan di komputer kami, kami menggunakan pustaka pyautogui Python. Perintah dari Arduino dikirim ke komputer melalui port serial (USB). Data ini kemudian akan dibaca oleh python yang berjalan di komputer dan berdasarkan data yang sudah dibaca akan dilakukan tindakan.
Diagram Sirkuit:
Untuk mengontrol PC dengan Hand Gestures, cukup hubungkan kedua sensor Ultrasonic dengan Arduino. Kita tahu sensor AS bekerja dengan 5V dan karenanya mereka didukung oleh pengatur tegangan Arduino on board. Arduino dapat dihubungkan ke PC / Laptop untuk menyalakan modul dan juga untuk komunikasi Serial. Setelah koneksi selesai, letakkan di monitor Anda seperti yang ditunjukkan di bawah ini. Saya telah menggunakan selotip sisi ganda untuk menempelkannya di monitor saya, tetapi Anda dapat menggunakan kreativitas Anda sendiri. Setelah mengamankannya di suatu tempat kita bisa melanjutkan dengan Programming.
Memprogram Arduino Anda:
Arduino harus diprogram untuk membaca jarak tangan dari sensor AS. Program lengkap diberikan di akhir halaman ini; tepat di bawah ini saya sudah memberikan penjelasan untuk program tersebut. Jika Anda baru mengenal sensor Ultrasonik, cukup lakukan Pengukuran Jarak Berbasis Sensor Arduino & Ultrasonik.
Dengan membaca nilai jarak kita dapat sampai pada tindakan tertentu untuk dikendalikan dengan gerak tubuh, misalnya pada program ini saya telah memprogram 5 tindakan sebagai demo.
Tindakan 1: Ketika kedua tangan ditempatkan di depan sensor pada jarak jauh tertentu, maka video di pemutar VLC harus Putar / Jeda.
Tindakan 2: Ketika tangan kanan ditempatkan di depan sensor pada jarak jauh tertentu maka video harus Maju Cepat satu langkah.
Tindakan 3: Ketika tangan kiri ditempatkan di depan sensor pada jarak jauh tertentu maka video harus Mundur satu langkah.
Tindakan 4: Ketika tangan kanan ditempatkan di depan sensor pada jarak dekat tertentu dan kemudian jika digerakkan ke arah sensor, video harus maju cepat dan jika dipindahkan video harus Mundur.
Tindakan 5: Ketika tangan kiri diletakkan di depan sensor pada jarak dekat tertentu dan kemudian jika digerakkan ke arah sensor, volume video akan meningkat dan jika dipindahkan, volume akan menurun.
Mari kita lihat bagaimana program ditulis untuk melakukan tindakan di atas. Jadi, seperti semua program, kita mulai dengan mendefinisikan pin I / O seperti yang ditunjukkan di bawah ini. Kedua sensor AS terhubung ke pin Digital 2,3,4 dan 5 dan didukung oleh pin + 5V. Pin pemicu adalah pin output dan pin Echo adalah pin input.
Komunikasi serial antara Arduino dan python berlangsung pada baud rate 9600.
const int trigger1 = 2; // Pin pemicu dari 1st Sesnor const int echo1 = 3; // Pin echo dari 1st Sesnor const int trigger2 = 4; // Pin pemicu dari Sesnor ke-2 const int echo2 = 5; // Pin gema dari pengaturan Sesnor ke-2 void () {Serial.begin (9600); pinMode (trigger1, OUTPUT); pinMode (echo1, INPUT); pinMode (trigger2, OUTPUT); pinMode (echo2, INPUT); }
Kita perlu menghitung jarak antara Sensor dan tangan setiap kali sebelum menyimpulkan tindakan apa pun. Jadi kita harus melakukannya berkali-kali, yang artinya kode ini harus digunakan sebagai fungsi. Kami telah menulis sebuah fungsi bernama hitung_distance () yang akan mengembalikan jarak antara sensor dan tangan.
/ * ### Berfungsi untuk menghitung jarak ### * / void count_distance (int trigger, int echo) {digitalWrite (trigger, LOW); delayMicroseconds (2); digitalWrite (pemicu, TINGGI); delayMicroseconds (10); digitalWrite (trigger, LOW); time_taken = pulseIn (echo, HIGH); dist = waktu_diambil * 0,034 / 2; jika (dist> 50) dist = 50; }
Di dalam loop utama kami, kami memeriksa nilai jarak dan melakukan tindakan yang disebutkan di atas. Sebelumnya kami menggunakan dua variabel distL dan distR yang diperbarui dengan nilai jarak saat ini.
menghitung jarak (trigger1, echo1); distL = dist; // dapatkan jarak dari sensor kiri count_distance (trigger2, echo2); distR = dist; // dapatkan jarak dari sensor yang benar
Karena kita mengetahui jarak antara kedua sensor, sekarang kita dapat membandingkannya dengan nilai yang telah ditentukan dan sampai pada tindakan tertentu. Misal jika kedua tangan diletakkan pada jarak 40 mc maka kita putar / jeda video tersebut. Di sini kata "Putar / Jeda" akan dikirim melalui port serial
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Deteksi kedua tangan {Serial.println ("Play / Pause"); penundaan (500);}
Jika tangan kanan saja ditempatkan sebelum modul maka kami mempercepat video satu langkah dan jika tangan kiri kami mundur satu langkah. Berdasarkan aksinya, di sini kata "Mundur" atau "Maju" akan dikirim melalui port serial
if ((distL> 40 && distL <50) && (distR == 50)) // Deteksi Tangan Kiri {Serial.println ("Rewind"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Deteksi Tangan Kanan {Serial.println ("Forward"); penundaan (500);}
Kontrol rinci musuh volume dan trek kami menggunakan metodologi yang berbeda untuk mencegah pemicu palsu. Untuk mengontrol volume kita harus menempatkan sekitar tangan kiri. Pada jarak 15 cm, maka Anda dapat memindahkannya ke arah sensor untuk mengurangi volume, menjauh dari sensor untuk menambah volume. Kode yang sama ditunjukkan di bawah ini. Berdasarkan tindakannya, di sini kata "Vup" atau "Vdown" akan dikirim melalui port serial
// Kunci Kiri - Mode Kontrol if (distL> = 13 && distL <= 17) {delay (100); // Hand Hold Time count_distance (trigger1, echo1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Left Locked"); while (distL <= 40) {count_distance (trigger1, echo1); distL = dist; if (distL <10) // Tangan didorong ke dalam {Serial.println ("Vup"); delay (300);} if (distL> 20) // Hand mengeluarkan {Serial.println ("Vdown"); tunda (300);}}}}
Kita juga dapat menggunakan metode yang sama untuk sensor sisi kanan, untuk mengontrol trek video. Yaitu jika kita menggerakkan tangan kanan ke arah sensor maka film akan maju cepat dan jika Anda menjauhkannya dari sensor itu akan memundurkan film. Berdasarkan aksinya, di sini kata "Mundur" atau "Maju" akan dikirim melalui port serial
Anda sekarang dapat membaca kode lengkap untuk PC yang dikendalikan gerakan ini yang diberikan di akhir halaman dan mencoba mengecilkannya secara keseluruhan dan kemudian menyalinnya ke Arduino IDE Anda.
Memprogram Python Anda:
Program python untuk proyek ini sangat sederhana. Kami hanya perlu menjalin komunikasi serial dengan Arduino melalui baud rate yang benar dan kemudian melakukan beberapa tindakan keyboard dasar. Langkah pertama dengan python adalah menginstal modul p yautogui . Pastikan Anda mengikuti langkah ini karena program tidak akan bekerja tanpa modul pyautogui.
Menginstal modul pyautogui untuk windows:
Ikuti langkah-langkah di bawah ini untuk menginstal pyautogui untuk windows. Jika Anda menggunakan platform lain, langkah-langkahnya juga kurang lebih sama. Pastikan komputer / Laptop Anda terhubung ke internet dan lanjutkan dengan langkah-langkah di bawah ini
Langkah 1: Buka Windows Command prompt dan ubah direktori ke folder tempat Anda menginstal python. Secara default perintahnya harus
cd C: \ Python27
Langkah 2: Di dalam direktori python Anda gunakan perintah python –m pip install –upgrade pip untuk mengupgrade pip Anda. Pip adalah alat di python yang membantu kita menginstal modul python dengan mudah. Setelah modul ini ditingkatkan (seperti yang ditunjukkan pada gambar di bawah) lanjutkan ke langkah berikutnya.
python –m pip install –upgrade pip
Langkah 3: Gunakan perintah “ python –m pip install pyautogui ” untuk menginstal modul pyautogui. Setelah proses berhasil, Anda akan melihat layar seperti di bawah ini.
python –m pip install –upgrade pip
Sekarang modul pyautogui dan modul pyserial (diinstal pada tutorial sebelumnya) berhasil diinstal dengan python, kita dapat melanjutkan dengan program python. The kode python lengkap diberikan pada akhir tutorial tapi penjelasan untuk hal yang sama adalah sebagai berikut.
Mari kita impor ketiga modul yang diperlukan untuk proyek ini. Mereka adalah pyautogui, python serial dan waktu.
impor serial #Serial diimpor untuk komunikasi Serial waktu impor # Diperlukan untuk menggunakan fungsi penundaan impor pyautogui
Selanjutnya kita buat koneksi dengan Arduino melalui COM port. Di komputer saya, Arduino terhubung ke COM 18. Gunakan pengelola perangkat untuk menemukan port COM mana Arduino Anda terhubung dan perbaiki baris berikut.
ArduinoSerial = serial.Serial ('com18', 9600) #Create Objek port serial bernama arduinoSerialData time.sleep (2) # tunggu selama 2 detik hingga komunikasi terbentuk
Di dalam loop sementara yang tak terbatas, kami berulang kali mendengarkan port COM dan membandingkan kata-kata kunci dengan karya yang telah ditentang sebelumnya dan membuat penekanan papan tombol yang sesuai.
sementara 1: masuk = str (ArduinoSerial.readline ()) #membaca data serial dan mencetaknya sebagai garis cetak masuk jika 'Putar / Jeda' di masuk: pyautogui.typewrite (, 0.2) jika 'Putar balik' di masuk: pyautogui. hotkey ('ctrl', 'left') jika 'Teruskan' masuk: pyautogui.hotkey ('ctrl', 'right') jika 'Vup' masuk: pyautogui.hotkey ('ctrl', 'down') if ' Vdown 'masuk: pyautogui.hotkey (' ctrl ',' up ')
Seperti yang Anda lihat, untuk menekan tombol, kita hanya perlu menggunakan perintah "pyautogui.typewrite (, 0.2)" yang akan menekan ruang tombol selama 0.2sec. Jika Anda membutuhkan tombol pintas seperti ctrl + S maka Anda dapat menggunakan perintah tombol pintas “pyautogui.hotkey ('ctrl', 's')”.
Saya telah menggunakan kombinasi ini karena mereka bekerja pada pemutar media VLC Anda dapat men-tweaknya dengan cara apa pun yang Anda suka untuk membuat aplikasi Anda sendiri untuk mengontrol apa pun di komputer dengan gerakan.
Gesture Controlled Computer sedang Beraksi:
Buat koneksi seperti yang ditentukan di atas dan unggah kode Arduino di papan Arduino Anda. Kemudian gunakan script python di bawah ini dan luncurkan program di laptop / komputer Anda.
Sekarang Anda dapat memutar film apa pun di komputer Anda menggunakan pemutar media VLC dan menggunakan tangan Anda untuk mengontrol film seperti yang ditunjukkan pada video yang diberikan di bawah ini.
Semoga Anda memahami proyek ini dan menikmati bermain dengannya. Ini hanya demo dan Anda dapat menggunakan kreativitas Anda untuk membangun lebih banyak hal keren yang dikendalikan oleh gerakan ini. Beri tahu saya jika ini berguna dan apa yang akan Anda buat menggunakan ini di bagian komentar dan saya akan senang mengetahuinya.