Daftar Isi:

Walabot FX - Kontrol Efek Gitar: 28 Langkah (dengan Gambar)
Walabot FX - Kontrol Efek Gitar: 28 Langkah (dengan Gambar)

Video: Walabot FX - Kontrol Efek Gitar: 28 Langkah (dengan Gambar)

Video: Walabot FX - Kontrol Efek Gitar: 28 Langkah (dengan Gambar)
Video: Alexa Cloaking Device: Using Walabot for Special Effects 2024, November
Anonim
Walabot FX - Kontrol Efek Gitar
Walabot FX - Kontrol Efek Gitar

Kontrol efek gitar favorit Anda hanya menggunakan pose gitar yang mengagumkan!

Langkah 1: Hal yang Anda Butuhkan

Komponen Perangkat Keras

Walabot - Walabot

Raspberry Pi - Raspberry Pi 3 Model B

Sunfounder LCD1602

SunFounder PCA9685 16 Channel 12 Bit PWM Servo Driver untuk Arduino dan Raspberry Pi

Servo (generik) Tidak ada tautan

Klip Baterai 9V

Tempat baterai 4xAA

Baterai AA

Kabel jumper (generik)

DPDT Latching Action Foot Switch

Korg SDD3000-PDL

OS Perangkat Lunak, Aplikasi, dan Layanan Online

Autodesk Fusion360 -

Blynk -

Alat dll

Pencetak 3D

Solder Besi

Langkah 2: Abstrak

Getting Started
Getting Started

Bagaimana rasanya mengontrol ekspresi musik hanya dengan menggunakan posisi gitar Anda dalam ruang 3D? Baiklah, mari kita membuat prototipe sesuatu dan mencari tahu!

Langkah 3: Ide Dasar

Saya ingin dapat mengontrol 3 parameter efek secara real time, saya ingin melakukan ini menggunakan bagaimana saya memposisikan gitar saya. Jadi satu hal yang jelas, saya akan membutuhkan beberapa hal.

  • Sebuah sensor yang mampu melihat ruang 3D
  • Servo untuk memutar kenop
  • Sebuah layar LCD
  • Pengemudi Servo I2C
  • Pi Raspberry
  • Untuk belajar Python

Langkah 4: Walabot

Ingin melihat menembus dinding? Merasakan objek dalam ruang 3D? Masuk akal jika Anda bernapas dari seberang ruangan? Nah, Anda beruntung!

Walabot adalah cara baru untuk merasakan ruang di sekitar Anda menggunakan radar berdaya rendah.

Ini akan menjadi kunci untuk proyek ini, saya akan dapat mengambil koordinat carteasan (X-Y-Z) objek dalam ruang 3D, dan memetakannya ke posisi servo mengubah bagaimana efek gitar terdengar, secara real time, tanpa menyentuh pedal.

Menang.

Informasi lebih lanjut tentang Walabot dapat ditemukan di sini

Langkah 5: Memulai

Hal pertama yang pertama, Anda akan memerlukan komputer untuk menggerakkan Walabot, untuk proyek ini saya menggunakan Raspberry Pi 3 (di sini disebut di RPi) karena WiFi bawaan dan keuletan ekstra umum

Saya membeli kartu SD 16GB dengan NOOBS yang sudah diinstal sebelumnya untuk menjaga semuanya tetap bagus dan sederhana, dan memilih untuk menginstal Raspian sebagai OS Linux pilihan saya

(jika Anda tidak terbiasa dengan cara menginstal Raspian, harap luangkan waktu untuk membaca sedikit tentang ini)

OK, setelah Anda menjalankan Raspian di RPi Anda, ada beberapa langkah konfigurasi yang harus diambil untuk menyiapkan segala sesuatunya untuk proyek kami

Langkah 6: Menyiapkan Raspberry Pi - 1

Pertama, pastikan Anda menjalankan versi Kernel terbaru dan periksa pembaruan dengan membuka shell perintah dan mengetik

sudo apt-get update

sudo apt-get dist-upgrade

(Sudo ditambahkan untuk memastikan Anda memiliki hak administratif, mis. barang akan berfungsi)

Ini mungkin memakan waktu cukup lama untuk diselesaikan, jadi pergilah dan nikmati secangkir teh yang enak.

Langkah 7: Menyiapkan Raspberry Pi - 2

Anda perlu menginstal Walabot SDK untuk RPi. Dari browser web RPi Anda, buka https://www.walabot.com/gettingstarted dan unduh Paket Pemasang Raspberry Pi.

Dari shell perintah:

unduhan cd

sudo dpkg -I walabotSDK_RasbPi.deb

Langkah 8: Menyiapkan Raspberry Pi - 3

Kita perlu mulai mengonfigurasi RPi untuk menggunakan bus i2c. Dari shell perintah:

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

setelah ini selesai, Anda harus menambahkan yang berikut ini ke file modul

Dari shell perintah:

sudo nano /etc/modules

tambahkan 2 string ini pada baris terpisah:

i2c-dev

i2c-bcm2708

Langkah 9: Menyiapkan Raspberry Pi - 4

Walabot menarik sedikit arus, dan kami juga akan menggunakan GPIO untuk mengontrol hal-hal sehingga kami perlu mengaturnya

Dari shell perintah:

sudo nano /boot/config.txt

tambahkan baris berikut di akhir file:

safe_mode_gpio=4

max_usb_current=1

RPi adalah alat yang sangat baik untuk pembuat, tetapi terbatas pada arus yang dapat dikirim ke Walabot. Oleh karena itu mengapa kami menambahkan arus maks 1Amp daripada 500mA yang lebih standar

Langkah 10: Python

Mengapa Python? baik, karena kodenya sangat mudah, cepat dijalankan dan ada banyak contoh python bagus yang tersedia! saya belum pernah menggunakannya sebelumnya dan segera aktif dan berjalan dalam waktu singkat. Sekarang RPi dikonfigurasi untuk apa yang kita inginkan, langkah selanjutnya adalah mengkonfigurasi Python untuk memiliki akses ke API Walabot, antarmuka LCD Servo

Langkah 11: Untuk Walabot

Dari shell perintah

Sudo pip install "/usr/share/walabot/python/WalabotAPI-1.0.21.zip"

Langkah 12: Untuk Antarmuka Servo

Dari shell perintah

sudo apt-get install git build-essential python-dev

cd ~

git clone

cd Adafruit_Python_PCA9685

sudo python setup.py install

Mengapa kita perlu menggunakan driver servo? Nah, untuk RPi beberapa alasan.

1. Arus yang ditarik oleh servo bisa sangat tinggi, dan jumlah itu semakin besar semakin banyak servo yang Anda miliki (tentu saja). Jika Anda mengemudikan servo secara langsung dari RPi, Anda berisiko merusak catu dayanya

2. Pengaturan waktu PWM (Pulse Width Modulation) yang mengontrol posisi servos sangat penting. Karena RPi tidak menggunakan OS waktu nyata (mungkin ada interupsi dan semacamnya), pengaturan waktu menjadi tidak akurat dan dapat membuat servos berkedut dengan gugup. Driver khusus memungkinkan kontrol yang akurat, tetapi juga memungkinkan hingga 16 servo ditambahkan, jadi ini bagus untuk ekspansi.

Langkah 13: Untuk LCD

Blynk
Blynk

buka browser web RPi Anda

www.sunfounder.com/learn/category/sensor-k…

unduh

github.com/daveyclk/SunFounder_SensorKit_…

Dari shell perintah:

sudo mkdir /usr/share/sunfounder

Menggunakan penjelajah grafis, salin folder python dari file zip ke folder sunfounder baru Anda

LCD digunakan untuk meminta pengguna tentang apa yang sebenarnya terjadi. Menampilkan proses konfigurasi hingga nilai x, y dan z yang dipetakan ke setiap servo

Langkah 14: Blynk

Blynk
Blynk
Blynk
Blynk

Blynk adalah layanan IoT brilian yang memungkinkan Anda membuat aplikasi khusus untuk mengontrol barang-barang Anda. Sepertinya solusi sempurna untuk memberi saya kendali jarak jauh walabot untuk benar-benar memutar pengaturan…

Satu masalah. Blynk saat ini tidak didukung pada platform Python, bugger. Tapi jangan takut! saya dapat menemukan pekerjaan kecil yang menyenangkan yang memungkinkan remote control dan input parameter jarak jauh! itu sedikit hacky

langkah pertama adalah mengunduh aplikasi Blynk dari toko aplikasi favorit Anda

Kedua, mendaftar untuk sebuah akun

Setelah selesai, buka aplikasi dan mulai proyek baru, pilih Raspberry Pi 3 sebagai perangkat keras.

Aplikasi akan mengalokasikan Anda sebuah token akses (Anda akan membutuhkan ini untuk memasukkan kode Anda)

Setelah Anda melakukan itu. Anda perlu mengatur aplikasi seperti yang ditunjukkan pada gambar. Ini adalah bagaimana ia akan berinteraksi dengan walabot.

Langkah 15: Mengonfigurasi Aplikasi Blynk

Mengonfigurasi Aplikasi Blynk
Mengonfigurasi Aplikasi Blynk
Mengonfigurasi Aplikasi Blynk
Mengonfigurasi Aplikasi Blynk
Mengonfigurasi Aplikasi Blynk
Mengonfigurasi Aplikasi Blynk

Langkah 16: Anda Dapat Menggunakan Kode QR Ini Dengan Aplikasi Blynk untuk Mengkloning Proyek Saya untuk Menghemat Waktu Anda

Anda Dapat Menggunakan Kode QR Ini Dengan Aplikasi Blynk untuk Mengkloning Proyek Saya untuk Menghemat Waktu Anda
Anda Dapat Menggunakan Kode QR Ini Dengan Aplikasi Blynk untuk Mengkloning Proyek Saya untuk Menghemat Waktu Anda

OK Sekarang setelah aplikasi siap, kita dapat mengonfigurasi Python dan RPi untuk berbicara dengannya melalui internet. Sihir

Langkah 17: Menjalankan Blynk Dengan Raspberry Pi dan Menggunakan Blynk HTTPS untuk Python

Pertama, Anda perlu menginstal pembungkus Blynk HTTPS untuk Python

Dari shell perintah:

sudo git clone

sudo pip install blynkapi

Kedua, Anda perlu menginstal Layanan Blynk di RPi

Dari shell perintah:

git clone

cd blynk-library/linux

bersihkan semua

untuk menjalankan layanan blynk

sudo./blynk --token=YourAuthToken

Untuk memastikan Layanan Blynk berjalan saat start up, Anda perlu memodifikasi /etc/rc.local

dengan melakukan

sudo nano /etc/rc.local

tambahkan ini di akhir

./blynk-library/linux/blynk --token=token saya &

(Saya telah menyertakan salinan file /etc/rc.local saya di bagian kode untuk referensi)

Untuk mengujinya berfungsi cukup ketik

sudo /etc/rc.local start

Layanan Blynk sekarang harus berjalan

Langkah 18: Menjalankan Skrip secara Otomatis

Sekarang ini semua sudah diatur dan dikonfigurasi, dan kami telah menyiapkan kode python. kita dapat mengatur berbagai hal agar berjalan otomatis sehingga kita dapat membuang keyboard dan monitor

Ada beberapa hal yang harus dilakukan

Buat file skrip baru untuk menjalankan Program Python

sudo nano guitareffect.sh

tambahkan baris ini

#!/bin/sh

python /home/pi/GuitarEffectCLI.py

pastikan untuk menyimpannya

Selanjutnya kita perlu memberikan izin skrip untuk dijalankan dengan mengetik

Sudo chmod +x /home/pi/guitareffect.sh

Dan terakhir, kita perlu menambahkan skrip ini ke file /etc/rc.local yang telah kita ubah sebelumnya.

Sudo nano /etc/rc.local

Menambahkan

/home/pi/guitareffect.sh &

pastikan untuk menyertakan "&" ini memungkinkan Skrip Python berjalan di latar belakang

Benar! Itu saja konfigurasi dan perangkat lunak yang diurutkan, selanjutnya saatnya memasang perangkat keras

Langkah 19: Perangkat Keras

Image
Image
Walabot guitar effects control proto1
Walabot guitar effects control proto1

Prototipe papan tempat memotong roti pertama

Langkah 20: Desain Kandang

Desain Kandang
Desain Kandang
Desain Kandang
Desain Kandang

Enklosur dirancang dan dirender dalam Fusion360 yang mengagumkan

Langkah 21: Tembakan Nyali

Tembakan Nyali
Tembakan Nyali
Tembakan Nyali
Tembakan Nyali
Tembakan Nyali
Tembakan Nyali

Langkah 22: Tembakan Perakitan Terakhir

Tembakan Perakitan Terakhir
Tembakan Perakitan Terakhir
Tembakan Perakitan Terakhir
Tembakan Perakitan Terakhir
Tembakan Perakitan Terakhir
Tembakan Perakitan Terakhir

Langkah 23: Untuk Memperbaiki Walabot ke Stand

Untuk Memperbaiki Walabot ke Stand
Untuk Memperbaiki Walabot ke Stand

Gunakan cakram logam berperekat yang disertakan dengan walabot untuk memasangnya di tempatnya

Langkah 24: File STL Perangkat Keras untuk Pencetakan 3D

Langkah 25: Skema untuk Menghubungkan Semuanya

Langkah 26: Kode

Gunakan skrip Python terlampir untuk proyek Anda

dari _future_ import print_functionfrom sys import platform dari os import system from blynkapi import Blynk import WalabotAPI import time import RPi. GPIO as GPIO

#setup GPIO menggunakan Board Numbering

GPIO.setmode(GPIO. BOARD) GPIO.setup(18, GPIO. IN, pull_up_down = GPIO. PUD_UP)

#token autentikasi blynk

auth_token = "anda_auth_token_sini"

# Impor modul PCA9685 untuk kontrol servo.

impor Adafruit_PCA9685

#impor modul LCD dari lokasi

dari imp import load_source LCD1602 = load_source('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')

# Inisialisasi PCA9685 menggunakan alamat default (0x40).

pwm = Adafruit_PCA9685. PCA9685()

# objek blynk

default = Blynk(auth_token, pin = "V9") start_button = Blynk(auth_token, pin = "V3") Rmax = Blynk(auth_token, pin = "V0") Rmin = Blynk(auth_token, pin = "V1") Rres = Blynk(auth_token, pin = "V2")

ThetaMax = Blynk(auth_token, pin = "V4")

ThetaRes = Blynk(auth_token, pin = "V5")

PhiMax = Blynk(auth_token, pin = "V6")

PhiRes = Blynk(auth_token, pin = "V7")

Ambang = Blynk(auth_token, pin = "V8")

ServoMin = Blynk(auth_token, pin = "V10")

ServoMax = Blynk(auth_token, pin = "V11")

def LCDsetup():

LCD1602.init (0x27, 1) # init(alamat slave, lampu latar)

def numMap(x, in_min, in_max, out_min, out_max): """ digunakan untuk memetakan pembacaan walabot ke posisi servo """ return int((x- in_min) * (out_max - out_min) / (in_max - in_min) + keluar_min)

# gunakan ini untuk mengumpulkan data mentah ke nilai yang ditetapkan

def myRound(x, base=2): kembalikan int(base * round(float(x)/base))

#mengekstrak angka dari string blynk yang dikembalikan

def numberExtract(val): val = str(val) return int(filter(str.isdigit, val))

# Atur frekuensi ke 60hz, bagus untuk servos.

pwm.set_pwm_freq(60)

# Konfigurasikan default panjang pulsa servo min dan maks

SERVO_MIN = 175 # Panjang pulsa min dari 4096 SERVO_MAX = 575 # Panjang pulsa maks dari 4096

# nilai default walabot

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

ambang = 1

# variabel untuk blynk switching

pada = "[u'1']"

kelas Walabot:

def _init_(sendiri):

self.wlbt = WalabotAPI self.wlbt. Init() self.wlbt. SetSettingsFolder() self.isConnected = Salah self.isTargets = Salah

def blynkConfig(sendiri):

load_defaults = defaults.get_val() if str(load_defaults) == pada: SERVO_MAX = ServoMax.get_val() SERVO_MAX = numberExtract(SERVO_MAX) print("Servo Max =", SERVO_MAX)

SERVO_MIN = ServoMin.get_val()

SERVO_MIN = numberExtract(SERVO_MIN) print("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val() R_MAX = numberExtract(R_MAX) print("R max =", R_MAX)

R_MIN = Rmin.get_val()

R_MIN = angkaExtract(R_MIN) print("R Min =", R_MIN)

R_RES = Rres.get_val()

R_RES = numberExtract(R_RES) print("R Res =", R_RES)

THETA_MAX = ThetaMax.get_val()

THETA_MAX = numberExtract(THETA_MAX) print("Theta Max =", THETA_MAX) THETA_RES = ThetaRes.get_val() THETA_RES = numberExtract(THETA_RES) print("Theta Res =", THETA_RES)

PHI_MAX = PhiMax.get_val()

PHI_MAX = numberExtract(PHI_MAX) print("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val() PHI_RES = numberExtract(PHI_RES) print("Phi Res =", PHI_RES)

THRESHOLD = Ambang.get_val()

THRESHOLD = numberExtract(THRESHOLD) print("Ambang =", THRESHOLD)

lain: # jika tidak ada dari aplikasi blynk, muat default SERVO_MIN = 175 # Panjang pulsa min dari 4096 SERVO_MAX = 575 # Panjang pulsa maks dari 4096

# nilai default walabot

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

ambang = 1

def connect(self): coba: self.wlbt. ConnectAny() self.isConnected = True self.wlbt. SetProfile(self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter(self.wlbt. FILTER_TYPE_MTI) self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter(self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta(-THETA_MAX, THETA_MAX, THETA_RES) self.wlbt. SetArenaPhi(-PHI_MAX, PHI_RES) self.wlbt. SetArenaPhi(-PHI_MAX, PHI_RES) SetArenaR(R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold(THRESHOLD) kecuali self.wlbt. WalabotError as err: if err.code != 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' raise err

def mulai (sendiri):

diri.wlbt. Mulai()

def kalibrasi (sendiri):

self.wlbt. StartCalibration()

def get_targets(mandiri):

self.wlbt. Trigger() mengembalikan self.wlbt. GetSensorTargets()

def berhenti (sendiri):

diri.wlbt. Stop()

def putuskan (sendiri):

self.wlbt. Disconnect()

def utama():

flag = True check = "" LCDsetup() while flag: LCD1602.write(0, 0, 'Guitar ') LCD1602.write(0, 1, 'Effect Control') time.sleep(2) LCD1602.write(0, 0, 'Tekan Mulai untuk ') LCD1602.write(0, 1, 'begin ') time.sleep(2) if (str(check) == on): flag = False else: check = start_button.get_val() # periksa blynk start button tekan if (GPIO.input(18) == 0): #check footswitch flag = False

LCD1602.write(0, 0, "Oke! Ayo Lakukan")

LCD1602.write(0, 1, ' ') wlbt = Walabot() wlbt.blynkConfig() wlbt.connect() LCD1602.clear() jika tidak wlbt.isConnected: LCD1602.write(0, 0, 'Not Connected ') lain: LCD1602.write(0, 0, 'Connected ') time.sleep(2) wlbt.start() wlbt.calibrate() LCD1602.write(0, 0, 'Calibrating…..') time.sleep(3) LCD1602.write(0, 0, 'Memulai Walabot')

appcheck = start_button.app_status() flag = True # reset flag untuk prog utama

while flag: # digunakan untuk membuat efek standby (efektif)

if (appcheck == True): if (str(check) != on): if (GPIO.input(18) != 0): #check footswitch flag = False else: check = start_button.get_val() #check for tombol mulai tekan appcheck = start_button.app_status()

lain:

if (GPIO.input(18) != 0): #check footswitch flag = False

xval = 0

yval = 0 zval = 0 rata-rata = 2 delayTime = 0

target = wlbt.get_targets()

jika len(target) > 0:

untuk j dalam rentang (rata-rata):

target = wlbt.get_targets()

jika len(target) > 0: print(len(target)) target = target[0]

print(str(target.xPosCm))

xval += int(targets.xPosCm) yval += int(targets.yPosCm) zval += int(targets.zPosCm) time.sleep(delayTime) else: print("tidak ada target") xval = xval/rata-rata

xval = numMap(xval, -60, 60, SERVO_MIN, SERVO_MAX)

xval = myRound(xval) jika xval SERVO_MAX: xval = SERVO_MAX LCD1602.write(0, 0, 'x=' + str(xval) + ' ') pwm.set_pwm(0, 0, xval)

yval = yval/rata-rata

yval = numMap(yval, -60, 60, SERVO_MIN, SERVO_MAX)

yval = myRound(yval) jika yval SERVO_MAX: yval = SERVO_MAX LCD1602.write(0, 1, 'y=' + str(yval)) pwm.set_pwm(1, 0, yval)

zval = zval/rata-rata

zval = numMap(zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)

zval = myRound(zval) jika zval SERVO_MAX: zval = SERVO_MAX LCD1602.write(8, 1, 'z=' + str(zval)) pwm.set_pwm(2, 0, zval)

lain:

print("tidak ada target") LCD1602.write(0, 0, "Shutting Down") LCD1602.write(0, 1, 'The Walabot ') time.sleep(3) wlbt.stop() wlbt.disconnect()

jika _name_ == '_main_':

sementara Benar: utama()

untuk guitareffect.sh

#!/bin/sh

cd /home/pi

sudo python GuitarEffectCLI.py

Salinan file lokal RC untuk referensi

#!/bin/sh -e# # rc.local # # Skrip ini dijalankan di akhir setiap runlevel multiuser. # Pastikan skrip akan "keluar 0" jika berhasil atau nilai # lainnya saat kesalahan. # # Untuk mengaktifkan atau menonaktifkan skrip ini, ubah saja eksekusi # bit. # # Secara default skrip ini tidak melakukan apa-apa.

# Cetak alamat IP

_IP=$(nama host -I) || benar jika ["$_IP"]; lalu printf "Alamat IP saya adalah %s\n" "$_IP" fi

./blynk-library/linux/blynk --token="token Anda ada di sini" &

tidur 10 Sudo /home/pi/guitareffect.sh & keluar 0

Langkah 27: Repositori Github untuk Digunakan

Gunakan ini untuk LCD Sunfounder

github.com/daveyclk/SunFounder_SensorKit_f…

Gunakan ini untuk driver servo

github.com/daveyclk/Adafruit_Python_PCA968…

Gunakan ini untuk Blynk Python HTTPS Wrapper

github.com/daveyclk/blynkapi

Langkah 28: Kesimpulan

Image
Image
Walabot FX- Guitar Effect Control. Full Demo
Walabot FX- Guitar Effect Control. Full Demo
Kesimpulan
Kesimpulan
Kesimpulan
Kesimpulan

Yah ini telah menjadi kurva belajar yang curam, tetapi sangat berharga.

take away saya adalah

  • Saya harus belajar Python..ternyata ace
  • Menghubungkan Python pada Raspberry Pi dengan layanan Blynk IoT. Ini tidak didukung secara resmi sehingga ada beberapa batasan untuk fungsinya. Masih berfungsi dengan baik!
  • Ternyata Walabot sangat bagus untuk ekspresi musik. Saya menggunakannya pada Korg SDD3000, tetapi Anda dapat menggunakan efek apa pun yang Anda suka

Silakan pergi sendiri. Ini tidak terbatas pada efek gitar, saya dapat digunakan dengan instrumen apa pun dengan efek apa pun.

Kontes Raspberry Pi 2017
Kontes Raspberry Pi 2017
Kontes Raspberry Pi 2017
Kontes Raspberry Pi 2017

Runner Up di Raspberry Pi Contest 2017

Direkomendasikan: