Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Komputer Kontrol Menakjubkan Menggunakan Gerakan Tangan Dan Arduino

Komponen dan persediaan

Arduino UNO
× 1
Sensor Ultrasonik - HC-SR04 (Generik)
× 2
Kabel jumper (generik)
× 1

Aplikasi dan layanan online

Arduino IDE
Python IDLE
Perpustakaan PySerial
Perpustakaan Pyautogui

Tentang proyek ini

Dalam proyek ini, kita akan mempelajari cara membuat laptop atau komputer yang dikendalikan gerakan. Ini didasarkan pada penggunaan kombinasi Arduino dan Python.

Alih-alih menggunakan keyboard, mouse, atau joystick, kita dapat menggunakan gerakan tangan untuk mengontrol fungsi tertentu dari komputer seperti memutar/menjeda video, bergerak ke kiri/kanan dalam tayangan slide foto, menggulir ke atas/bawah di halaman web dan banyak lagi. lagi. Inilah mengapa saya memutuskan untuk mengontrol VLC Media Player sebagai proyek gerakan tangan.

Ide di balik proyek ini cukup mudah dengan menggunakan dua Sensor Ultrasonik (HC-SR04) dengan Arduino. Kami akan menempatkan dua sensor di bagian atas layar laptop dan menghitung jarak antara tangan dan sensor. Mengandalkan informasi dari Arduino yang dikirim ke Python melalui port serial, informasi ini kemudian akan dibaca oleh Python yang berjalan di komputer untuk melakukan tindakan tertentu.

Komponen perangkat keras:

  • Arduino
  • Dua Sensor Ultrasonik (HC-SR04)
  • Beberapa kabel

Aplikasi perangkat lunak:

  • IDE Arduino
  • Python IDLE
  • PySerial library (Kami akan gunakan untuk berkomunikasi dengan port serial).
  • Perpustakaan PyAutogui (Kami akan menggunakannya untuk melakukan tindakan).

Jadi saya berasumsi bahwa Anda telah menginstal pustaka Python dan PySerial dan telah berhasil melakukan beberapa proyek dasar. Jika tidak, jangan khawatir; Saya menyarankan Anda untuk mengikuti tutorial saya sebelumnya (Pemrograman Arduino Menggunakan Python). Juga jika Anda ingin mengenal Sensor Ultrasonik, Anda dapat melihatnya (di sini).

Langkah 1:Tonton Video untuk Detail Lebih Lanjut

Langkah 2:Tujuan Gerakan Tangan

Berikut ini adalah 5 perintah gerakan tangan yang telah saya programkan untuk tujuan demonstrasi.

  • Gerakan tangan pertama: Ini memungkinkan kita untuk 'Memutar/Menjeda' VLC dengan menempatkan kedua tangan di depan Sensor Ultrasonik kanan/kiri pada jarak jauh tertentu.
  • Gestur kedua: Ini memungkinkan kita untuk 'Mundur' video dengan meletakkan tangan di depan sensor kiri pada jarak jauh tertentu.
  • Gestur ketiga: Ini memungkinkan kita untuk 'Meneruskan' video dengan meletakkan tangan di depan sensor kanan pada jarak jauh tertentu.
  • Gerakan keempat: Ini memungkinkan kita untuk 'Meningkatkan Volume' video dengan meletakkan tangan di depan sensor kiri pada jarak jauh tertentu dan menjauh dari Sensor.
  • Gestur kelima: Ini memungkinkan kita untuk 'Mengurangi Volume' video dengan meletakkan tangan di depan sensor kiri pada jarak jauh tertentu dan mendekati sensor.

Langkah 3:Skema

Skemanya cukup sederhana, Anda cukup mengikuti petunjuk di bawah ini. Jadi setiap sensor memiliki 4 pin:

  • Vcc - pin ini terhubung ke 5V+.
  • Trig - Anda perlu menentukan pin ini di program Anda.
  • Echo - pin ini sama dengan Trig, Anda juga perlu mendefinisikannya.
  • GND - pin ini terhubung ke ground.

Langkah 4:Pemrograman Python

1. Instal Python IDLE

Anda dapat melewati langkah ini jika Anda telah menginstal Python IDLE di komputer Anda. Jika ya, lanjutkan ke langkah 2, atau lihat petunjuk berikut.

  • Buka situs web python dan unduh (di sini).
  • Setelah selesai, Anda melanjutkan ke penginstalan dengan mempertahankan direktori tempat python diinstal secara default.

CATATAN:Meskipun komputer Anda beroperasi pada 64-bit, Anda dapat menggunakan Python 32-bit itu sendiri karena kurangnya kompatibilitas dengan perpustakaan Arduino.

2. Instal pustaka PySerial

PySerial adalah modul Python API yang digunakan untuk membaca dan menulis data serial ke Arduino atau Mikrokontroler lainnya. Untuk menginstal di Windows, cukup kunjungi Halaman Download PySerial dan ikuti langkah-langkah di bawah ini:

  • Unduh PySerial dari tautan di atas.
  • Instal dengan menjaga pengaturan sebagai default Anda harus yakin bahwa Pyserial bekerja dengan benar. Untuk melakukan ini; Anda mengetik:
impor serial 

Jika Anda belum menghadapi kesalahan apa pun, Anda baik-baik saja. Jika tidak, saya menyarankan Anda untuk memeriksa instalasi dan ekstensi Python IDLE Anda.

3. Instal pustaka PyAutogui

Tujuan dari PyAutoGUI adalah untuk menyediakan modul Python lintas platform untuk otomatisasi GUI bagi manusia. API dirancang sesederhana mungkin dengan default yang masuk akal. Ikuti langkah-langkah di bawah untuk menginstal pyautogui untuk Windows. (Untuk mengikuti langkah-langkah ini, Anda seharusnya sudah menginstal Python IDLE.)

Jika Anda menggunakan platform lain, saya menyarankan Anda untuk melihatnya di sini.

  • Buka Perintah Windows
  • Ketik perintah berikut
cd C:\Python27 
  • Kemudian Anda mengetik:
python –m pip install –upgrade pip 
  • Perintah terakhir adalah:
python –m pip install pyautogui 

CATATAN:Untuk memastikan bahwa pyautogui berfungsi dengan benar, cukup ketik:

impor pyautogui 

Jika Anda belum menghadapi kesalahan apa pun, Anda baik-baik saja.

Langkah 5:Kode Arduino

Untuk memulai koneksi dengan Arduino dari Python, pertama-tama kita harus mencari tahu Port COM mana yang digunakan Arduino. Tugas ini hanya dibuat oleh lingkungan pemrograman Ardunio seperti yang saya sebutkan pada gambar di atas.

const int trigger1 =2; //Pin pemicu dari Sesnorconst ke-1 int echo1 =3; //Echo pin dari 1st Sesnorconst int trigger2 =4; //Pin trigger dari 2nd Sesnorconst int echo2 =5;//Echo pin dari 2nd Sesnorlong time_taken;int dist,distL,distR;void setup() {Serial.begin(9600); pinMode(pemicu1, OUTPUT); pinMode(echo1, INPUT); pinMode(pemicu2, OUTPUT); pinMode(echo2, INPUT); }/*###Fungsi untuk menghitung jarak###*/void count_distance(int trigger, int echo){digitalWrite(trigger, LOW);delayMicroseconds(2);digitalWrite(trigger, HIGH);delayMicroseconds(10);digitalWrite (pemicu, RENDAH);time_taken =pulseIn(echo, HIGH);dist=time_taken*0.034/2;if (dist>60)dist =60;}void loop() { //infinite loopycalculate_distance(trigger1,echo1);distL =jarak; //mendapatkan jarak kiri sensorcalculate_distance(trigger2,echo2);distR =dist; //mendapatkan jarak sensor kanan//Mode Jeda -Holdif ((distL>40 &&distR>40) &&(distL <60 &&distR<60)) //Deteksi kedua tangan{Serial.println("Play/Pause"); delay (500);}calculate_distance(trigger1,echo1);distL =dist;calculate_distance(trigger2,echo2);distR =dist;//Mode Kontrol//Kunci Kiri - Mode Kontrolif (distL>=13 &&distL<=17) { penundaan(100); //Waktu Tahan Tangan menghitung_jarak(trigger1,echo1); distL =jarak; if (distL>=13 &&distL<=17) { Serial.println("Kiri Terkunci"); while(distL<=40) { hitung_jarak(trigger1,echo1); distL =jarak; if (distL<10) //Tekan tangan di {Serial.println ("Volume Meningkat"); delay (300);} if (distL>20) //Hand ditarik keluar {Serial.println ("Volume Dikurangi"); delay (300);} } }}//Kunci Kanan - Mode Kontrolif (distR>=13 &&distR<=17){ delay(100); //Waktu Tahan Tangan menghitung_jarak(trigger2,echo2); distR =jarak; if (distR>=13 &&distR<=17) { Serial.println("Kanan Terkunci"); while(distR<=40) { hitung_jarak(trigger2,echo2); distR =jarak; if (distR<10) //Tangan kanan didorong masuk {Serial.println ("Mundur"); delay (300);} if (distR>20) //Tangan kanan ditarik keluar {Serial.println("Maju"); penundaan (300);} }}}penundaan (200);} 

Jika Anda membaca kode Arduino, Anda akan mengamati 5 perintah yang mengontrol fungsi keyboard tertentu untuk mencapai tugas yang diperlukan.

Unduh arduino_pythogui.ino

arduino_pythogui.ino

Langkah 6:Kode Python

Pertama, kita membutuhkan program sederhana untuk mendapatkan data pengiriman Python melalui port serial.

import serial #Serial diimpor untuk komunikasi Serial waktu impor #Diperlukan untuk menggunakan fungsi penundaanimport pyautogui #Diperlukan untuk melakukan tindakanArduinoSerial =serial.Serial('com15',9600) #Buat objek port Serial bernama arduinoSerialDatatime.sleep(2 ) #tunggu selama 2 detik hingga komunikasi terjalin saat 1:masuk =str (ArduinoSerial.readline()) #baca data serial dan cetak sebagai baris cetak masuk jika 'Putar/Jeda' masuk:pyautogui.typewrite([ 'spasi'], 0.2) jika 'Putar balik' saat masuk:pyautogui.hotkey('ctrl', 'kiri') jika 'Teruskan' saat masuk:pyautogui.hotkey('ctrl', 'kanan') jika 'Peningkatan Volume' di masuk:pyautogui.hotkey('ctrl', 'turun') jika 'Volume Berkurang' masuk:pyautogui.hotkey('ctrl', 'naik') masuk =""; 

Kode

  • Cuplikan kode #5
  • Cuplikan kode #6
Cuplikan kode #5Teks biasa
const int trigger1 =2; //Pin pemicu dari Sesnorconst ke-1 int echo1 =3; //Echo pin dari 1st Sesnorconst int trigger2 =4; //Pin trigger dari 2nd Sesnorconst int echo2 =5;//Echo pin dari 2nd Sesnorlong time_taken;int dist,distL,distR;void setup() {Serial.begin(9600); pinMode(pemicu1, OUTPUT); pinMode(echo1, INPUT); pinMode(pemicu2, OUTPUT); pinMode(echo2, INPUT); }/*###Fungsi untuk menghitung jarak###*/void count_distance(int trigger, int echo){digitalWrite(trigger, LOW);delayMicroseconds(2);digitalWrite(trigger, HIGH);delayMicroseconds(10);digitalWrite (pemicu, RENDAH);time_taken =pulseIn(echo, HIGH);dist=time_taken*0.034/2;if (dist>60)dist =60;}void loop() { //infinite loopycalculate_distance(trigger1,echo1);distL =jarak; //mendapatkan jarak kiri sensorcalculate_distance(trigger2,echo2);distR =dist; //mendapatkan jarak sensor kanan//Mode Jeda -Holdif ((distL>40 &&distR>40) &&(distL <60 &&distR<60)) //Deteksi kedua tangan{Serial.println("Play/Pause"); delay (500);}calculate_distance(trigger1,echo1);distL =dist;calculate_distance(trigger2,echo2);distR =dist;//Mode Kontrol//Kunci Kiri - Mode Kontrolif (distL>=13 &&distL<=17) { penundaan(100); //Waktu Tahan Tangan menghitung_jarak(trigger1,echo1); distL =jarak; if (distL>=13 &&distL<=17) { Serial.println("Kiri Terkunci"); while(distL<=40) { hitung_jarak(trigger1,echo1); distL =jarak; if (distL<10) //Tekan tangan di {Serial.println ("Volume Meningkat"); delay (300);} if (distL>20) //Hand ditarik keluar {Serial.println ("Volume Dikurangi"); delay (300);} } }}//Kunci Kanan - Mode Kontrolif (distR>=13 &&distR<=17){ delay(100); //Waktu Tahan Tangan menghitung_jarak(trigger2,echo2); distR =jarak; if (distR>=13 &&distR<=17) { Serial.println("Kanan Terkunci"); while(distR<=40) { hitung_jarak(trigger2,echo2); distR =jarak; if (distR<10) //Tangan kanan didorong masuk {Serial.println ("Mundur"); delay (300);} if (distR>20) //Tangan kanan ditarik keluar {Serial.println("Maju"); penundaan (300);} }}}penundaan (200);}
Cuplikan kode #6Teks biasa
import serial #Serial diimpor untuk komunikasi Serial waktu impor #Diperlukan untuk menggunakan fungsi penundaanimport pyautogui #Diperlukan untuk melakukan tindakanArduinoSerial =serial.Serial('com15',9600) #Buat objek port Serial bernama arduinoSerialDatatime.sleep(2) #wait selama 2 detik agar komunikasi terjalin saat 1:masuk =str (ArduinoSerial.readline()) #baca data serial dan cetak sebagai baris cetak masuk jika 'Putar/Jeda' masuk:pyautogui.typewrite(['spasi' ], 0.2) jika 'Mundur' saat masuk:pyautogui.hotkey('ctrl', 'kiri') jika 'Teruskan' saat masuk:pyautogui.hotkey('ctrl', 'kanan') jika 'Peningkatan Volume' saat masuk:pyautogui.hotkey('ctrl', 'down') jika 'Volume Turun' masuk:pyautogui.hotkey('ctrl', 'naik') masuk ="";

Proses manufaktur

  1. Membuat Monitor Ambilight Menggunakan Arduino
  2. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  3. Voltmeter DIY Menggunakan Arduino dan Smartphone
  4. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  5. Pengukuran Frekuensi dan Siklus Tugas Menggunakan Arduino
  6. Kontrol Arduino Rover menggunakan Firmata dan Pengontrol Xbox One
  7. Sensor Gerakan Pistol Air
  8. Mengontrol Kecerahan LED Menggunakan Bolt dan Arduino
  9. Lengan Robot Sederhana dan Cerdas Menggunakan Arduino
  10. Kontrol Penuh TV Anda Menggunakan Alexa dan Arduino IoT Cloud