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

PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Dalam proyek ini, kita akan belajar cara membangun laptop atau komputer dengan kontrol geser. Ini didasarkan pada penggunaan kombinasi Arduino dan Python.

Alih-alih menggunakan keyboard, mouse atau joystick, kita dapat menggunakan gerakan tangan untuk mengontrol beberapa fungsi komputer seperti memutar/jeda video, geser kiri/kanan dalam slideshow foto, gulir atas/bawah di halaman web dan banyak lagi. Itulah sebabnya 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 atas layar laptop dan menghitung jarak antara tangan dan sensor. Menghitung informasi dari Arduino yang dikirim ke Python melalui port serial, informasi ini kemudian akan dibaca oleh Python yang berjalan pada komputer untuk melakukan tindakan tertentu.

Komponen Hardware:

Aplikasi Perangkat Lunak:

Jadi saya asumsikan Anda telah menginstal Python dan perpustakaan PySerial dan telah berhasil melakukan beberapa proyek dasar. Jika tidak, jangan khawatir; saya menyarankan Anda untuk mengikuti tutorial saya sebelumnya (Memprogram Arduino Menggunakan Python). Juga jika Anda ingin mengenal Sensor Ultrasonik Anda dapat melihat (di sini).

Langkah 1: Tonton Video untuk Detail Lebih Lanjut

Langkah 2: Tujuan Gerakan Tangan

Berikut adalah 5 perintah gerakan tangan yang saya program untuk tujuan demonstrasi.

Langkah 3: Skematik

PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan
PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan
PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan

Skematik cukup sederhana, Anda hanya perlu mengikuti instruksi di bawah ini. Jadi setiap sensor memiliki 4 pin:

Langkah 4: Memprogram Python

PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan
PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan
PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan

1. Instal Python IDLE

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

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

2. Instal Perpustakaan PySerial

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

import serial 

Jika Anda tidak mengalami kesalahan, Anda siap. Jika tidak, saya menyarankan Anda untuk memeriksa instalasi dan ekstensi Python IDLE Anda.

3. Instal Perpustakaan PyAutogui

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

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

cd C:\Python27 
python –m pip install –upgrade pip 
python –m pip install pyautogui 

CATATAH: Untuk yakin bahwa pyautogui bekerja dengan benar cukup ketikkan:

import pyautogui 

Jika Anda tidak mengalami kesalahan, Anda siap.

Langkah 5: Kode Arduino

PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan

Untuk memulai koneksi dengan Arduino dari Python, kita terlebih dahulu harus mengetahui port COM mana tempat Arduino berada. Tugas ini dilakukan dengan mudah oleh lingkungan pemrograman Arduino seperti yang saya catat di gambar di atas.

const int trigger1 = 2; //Trigger pin of 1st Sesnor const int echo1 = 3; //Echo pin of 1st Sesnor const int trigger2 = 4; //Trigger pin of 2nd Sesnor const int echo2 = 5;//Echo pin of 2nd Sesnor long time_taken; int dist,distL,distR; void setup() { Serial.begin(9600); pinMode(trigger1, OUTPUT); pinMode(echo1, INPUT); pinMode(trigger2, OUTPUT); pinMode(echo2, INPUT); } /*###Function to calculate distance###*/ void calculate_distance(int trigger, int echo) { digitalWrite(trigger, LOW); delayMicroseconds(2); digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); time_taken = pulseIn(echo, HIGH); dist= time_taken*0.034/2; if (dist>60) dist = 60; } void loop() { //infinite loopy calculate_distance(trigger1,echo1); distL =dist; //get distance of left sensor calculate_distance(trigger2,echo2); distR =dist; //get distance of right sensor //Pause Modes -Hold if ((distL >40 && distR>40) && (distL <60 && distR<60)) //Detect both hands {Serial.println("Play/Pause"); delay (500);} calculate_distance(trigger1,echo1); distL =dist; calculate_distance(trigger2,echo2); distR =dist; //Control Modes //Lock Left - Control Mode if (distL>=13 && distL<=17) { delay(100); //Hand Hold Time calculate_distance(trigger1,echo1); distL =dist; if (distL>=13 && distL<=17) { Serial.println("Left Locked"); while(distL<=40) { calculate_distance(trigger1,echo1); distL =dist; if (distL<10) //Hand pushed in {Serial.println ("Volume Increased"); delay (300);} if (distL>20) //Hand pulled out {Serial.println ("Volume Decreased"); delay (300);} } } } //Lock Right - Control Mode if (distR>=13 && distR<=17) { delay(100); //Hand Hold Time calculate_distance(trigger2,echo2); distR =dist; if (distR>=13 && distR<=17) { Serial.println("Right Locked"); while(distR<=40) { calculate_distance(trigger2,echo2); distR =dist; if (distR<10) //Right hand pushed in {Serial.println ("Rewind"); delay (300);} if (distR>20) //Right hand pulled out {Serial.println ("Forward"); delay (300);} } } } delay(200); } 

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

arduino_pythogui.ino Unduh

arduino_pythogui.ino

Langkah 6: Kode Python

PC Kendali Geser dengan Arduino dan Python – Operasi Tanpa Tangan

Pertama, kita perlu program sederhana untuk membuat Python mengirim data melalui port serial.

import serial #Serial imported for Serial communication import time #Required to use delay functions import pyautogui #Required to to perform actions ArduinoSerial = serial.Serial('com15',9600) #Create Serial port object called arduinoSerialData time.sleep(2) #wait for 2 seconds for the communication to get established while 1: incoming = str (ArduinoSerial.readline()) #read the serial data and print it as line print incoming if 'Play/Pause' in incoming: pyautogui.typewrite(['space'], 0.2) if 'Rewind' in incoming: pyautogui.hotkey('ctrl', 'left') if 'Forward' in incoming: pyautogui.hotkey('ctrl', 'right') if 'Volume Incresaed' in incoming: pyautogui.hotkey('ctrl', 'down') if 'Volume Decreased' in incoming: pyautogui.hotkey('ctrl', 'up') incoming = ""; 

Kode

Cuplikan Kode #5Plain text
const int trigger1 = 2; //Trigger pin of 1st Sesnor const int echo1 = 3; //Echo pin of 1st Sesnor const int trigger2 = 4; //Trigger pin of 2nd Sesnor const int echo2 = 5;//Echo pin of 2nd Sesnor long time_taken; int dist,distL,distR; void setup() { Serial.begin(9600); pinMode(trigger1, OUTPUT); pinMode(echo1, INPUT); pinMode(trigger2, OUTPUT); pinMode(echo2, INPUT); } /*###Function to calculate distance###*/ void calculate_distance(int trigger, int echo) { digitalWrite(trigger, LOW); delayMicroseconds(2); digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); time_taken = pulseIn(echo, HIGH); dist= time_taken*0.034/2; if (dist>60) dist = 60; } void loop() { //infinite loopy calculate_distance(trigger1,echo1); distL =dist; //get distance of left sensor calculate_distance(trigger2,echo2); distR =dist; //get distance of right sensor //Pause Modes -Hold if ((distL >40 && distR>40) && (distL <60 && distR<60)) //Detect both hands {Serial.println("Play/Pause"); delay (500);} calculate_distance(trigger1,echo1); distL =dist; calculate_distance(trigger2,echo2); distR =dist; //Control Modes //Lock Left - Control Mode if (distL>=13 && distL<=17) { delay(100); //Hand Hold Time calculate_distance(trigger1,echo1); distL =dist; if (distL>=13 && distL<=17) { Serial.println("Left Locked"); while(distL<=40) { calculate_distance(trigger1,echo1); distL =dist; if (distL<10) //Hand pushed in {Serial.println ("Volume Increased"); delay (300);} if (distL>20) //Hand pulled out {Serial.println ("Volume Decreased"); delay (300);} } } } //Lock Right - Control Mode if (distR>=13 && distR<=17) { delay(100); //Hand Hold Time calculate_distance(trigger2,echo2); distR =dist; if (distR>=13 && distR<=17) { Serial.println("Right Locked"); while(distR<=40) { calculate_distance(trigger2,echo2); distR =dist; if (distR<10) //Right hand pushed in {Serial.println ("Rewind"); delay (300);} if (distR>20) //Right hand pulled out {Serial.println ("Forward"); delay (300);} } } } delay(200); } 
Cuplikan Kode #6Plain text
import serial #Serial imported for Serial communication import time #Required to use delay functions import pyautogui #Required to to perform actions ArduinoSerial = serial.Serial('com15',9600) #Create Serial port object called arduinoSerialData time.sleep(2) #wait for 2 seconds for the communication to get established while 1: incoming = str (ArduinoSerial.readline()) #read the serial data and print it as line print incoming if 'Play/Pause' in incoming: pyautogui.typewrite(['space'], 0.2) if 'Rewind' in incoming: pyautogui.hotkey('ctrl', 'left') if 'Forward' in incoming: pyautogui.hotkey('ctrl', 'right') if 'Volume Incresaed' in incoming: pyautogui.hotkey('ctrl', 'down') if 'Volume Decreased' in incoming: pyautogui.hotkey('ctrl', 'up') incoming = ""; 

Proses manufaktur

  1. Buat Sistem Ambilight Monitor Menakjubkan dengan Arduino
  2. Membuat Remote Android Universal dengan Arduino, 1Sheeld & Kontrol IR
  3. Buat Voltmeter Cerdas dengan Arduino & Smartphone – Proyek DIY Mudah
  4. Kontrol Robotik Arm Custom Secara Jarak Jauh melalui IoT
  5. Pengukuran Frekuensi & Siklus Kerja Akurat dengan Arduino UNO
  6. Kendalikan Rover Arduino dengan Mulus menggunakan Firmata dan Gamepad Xbox One
  7. Senapan Air Cerdas Tergerak Gerakan dengan Arduino Nano
  8. Pengendalian Kecerahan LED Lancar Menggunakan Bolt IoT dan Arduino UNO
  9. Buat Lengan Robotik Arduino Pintar: Tutorial DIY Mudah
  10. Kendalikan TV Anda dengan Alexa melalui Arduino IoT Cloud – Panduan Langkah demi Langkah