INHOUDSOPGAWE:

Walabot FX - Guitar Effect Control: 28 stappe (met foto's)
Walabot FX - Guitar Effect Control: 28 stappe (met foto's)

Video: Walabot FX - Guitar Effect Control: 28 stappe (met foto's)

Video: Walabot FX - Guitar Effect Control: 28 stappe (met foto's)
Video: Walabot FX- Guitar Effect Control. Full Demo 2024, Julie
Anonim
Walabot FX - kitaar -effekbeheer
Walabot FX - kitaar -effekbeheer

Beheer u gunsteling kitaar -effek met niks anders as ongelooflike kitaarposes nie!

Stap 1: Dinge wat u benodig

Hardeware komponente

Walabot - Walabot

Raspberry Pi - Raspberry Pi 3 Model B

Sunfounder LCD1602

SunFounder PCA9685 16-kanaals 12-bits PWM-servostuurprogramma vir Arduino en Raspberry Pi

Servo (generies) Geen skakel nie

9V-batteryklem

4xAA batteryhouer

AA -batterye

Springdrade (generies)

DPDT-voetskakelaar vir vergrendeling van aksie

Korg SDD3000-PDL

Sagteware -bedryfstelsels, programme en aanlyndienste

Autodesk Fusion360 -

Blynk -

Gereedskap ens

3D -drukker

Soldeerbout

Stap 2: Abstract

Getting Started
Getting Started

Hoe sou dit wees om die musikale uitdrukking te beheer met slegs die posisie van u kitaar in 3D -ruimte? Wel, laat ons iets prototipeer en uitvind!

Stap 3: Die basiese idee

Ek wou die 3 -effekparameter in reële tyd kon beheer; ek wou dit doen met behulp van hoe ek my kitaar posisioneer. Een ding was dus duidelik: ek het 'n paar dinge nodig.

  • 'N Sensor wat 3D -ruimte kan sien
  • Servo's om die knoppe te draai
  • 'N LCD -skerm
  • 'N I2C Servo -bestuurder
  • 'N Framboos Pi
  • Om Python te leer

Stap 4: Walabot

Wil u deur mure kyk? Sinvolle voorwerpe in 3D -ruimte? Gevoel as u asemhaal uit die kamer? Wel, jy het geluk!

Die Walabot is 'n heel nuwe manier om die ruimte rondom u te sien met behulp van radar met lae krag.

Dit sou die sleutel tot hierdie projek wees; ek sou die carteasan (XY-Z) koördinate van voorwerpe in die 3D-ruimte kon neem, en dit kon karteer na servoposisies wat verander hoe 'n kitaar-effek klink, in reële tyd, sonder om aan die pedaal te raak.

Wen.

Meer inligting oor die Walabot kan hier gevind word

Stap 5: Aan die gang

Eerstens het u 'n rekenaar nodig om die Walabot te bestuur; vir hierdie projek gebruik ek 'n Raspberry Pi 3 (hierna verwys na by RPi) as gevolg van die ingeboude WiFi en algemene ekstra oomph

Ek het 'n 16 GB SD -kaart gekoop met NOOBS vooraf geïnstalleer om dinge mooi en eenvoudig te hou, en het gekies om Raspian as my Linux -bedryfstelsel van keuse te installeer

(as u nie vertroud is met die installering van Raspian nie, neem 'n rukkie om dit bietjie te lees)

OK, sodra u Raspian op u RPi begin gebruik het, is daar 'n paar konfigurasiestappe wat u moet neem om dinge vir ons projek gereed te kry

Stap 6: Die opstel van die Raspberry Pi - 1

Maak eers seker dat u die nuutste Kernel -weergawe gebruik en kyk na opdaterings deur 'n opdragskulp oop te maak en te tik

sudo apt-get update

sudo apt-get dist-upgrade

(sudo word bygevoeg om te verseker dat u administratiewe voorregte het, bv. dinge werk)

Dit kan 'n rukkie neem om te voltooi, so gaan drink 'n lekker koppie tee.

Stap 7: Die opstel van die Raspberry Pi - 2

U moet die Walabot SDK vir RPi installeer. Gaan na u RPi -webblaaier na https://www.walabot.com/gettingstarted en laai die Raspberry Pi Installer Package af.

Vanuit 'n opdrag dop:

cd aflaai

sudo dpkg -I walabotSDK_RasbPi.deb

Stap 8: Die opstel van die Raspberry Pi - 3

Ons moet begin om die RPi op te stel om die i2c -bus te gebruik.

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

sodra dit gedoen is, moet u die volgende by die modules lêer voeg

Vanuit 'n opdrag dop:

sudo nano /etc /modules

voeg hierdie 2 snare op aparte lyne by:

i2c-dev

i2c-bcm2708

Stap 9: Die opstel van die Raspberry Pi - 4

Die Walabot trek 'n redelike stroom, en ons sal ook GPIO's gebruik om dinge te beheer, sodat ons dit moet opstel

Vanuit 'n opdrag dop:

sudo nano /boot/config.txt

voeg die volgende reëls aan die einde van die lêer by:

safe_mode_gpio = 4

max_usb_current = 1

Die RPi is 'n uitstekende hulpmiddel vir makers, maar dit is beperk in die stroom wat dit na die Walabot kan stuur. Daarom voeg ons 'n maksimum stroom van 1 ampère toe eerder as die meer standaard 500mA

Stap 10: Python

Waarom Python? Aangesien dit baie maklik is om te kodeer, vinnig aan die gang is en daar is baie goeie luislang voorbeelde beskikbaar! Ek het dit nog nooit gebruik nie en was binnekort aan die gang. Nou is die RPi gekonfigureer vir wat ons wil hê; die volgende stap is om Python op te stel om toegang te hê tot die Walabot API, LCD Servo -koppelvlakke

Stap 11: Vir die Walabot

Van 'n opdrag dop

Sudo pip installeer “/usr/share/walabot/python/WalabotAPI-1.0.21.zip”

Stap 12: Vir die Servo -koppelvlak

Van 'n opdrag dop

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

cd ~

git -kloon

cd Adafruit_Python_PCA9685

sudo python setup.py installeer

Waarom moet ons 'n servobestuurder gebruik? Om 'n RPi 'n paar redes.

1. Die stroom wat deur 'n servo getrek word, kan baie hoog wees, en die getal word groter hoe meer servo's u het (natuurlik). As u die servo directky van 'n RPi ry, loop u die risiko om die kragtoevoer te blaas

2. Die tydsberekening van die PWM (Pulse Width Modulation) wat die servos se posisie beheer, is baie belangrik. Aangesien die RPi nie 'n intydse bedryfstelsel gebruik nie (daar kan onderbrekings wees), is die tydsberekening nie akkuraat nie en kan die servo's senuweeagtig ruk. 'N Toegewyde bestuurder laat akkurate beheer toe, maar kan ook tot 16 servo's byvoeg, so dit is ideaal vir uitbreiding.

Stap 13: Vir die LCD

Blynk
Blynk

maak u RPi -blaaier oop

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

Aflaai

github.com/daveyclk/SunFounder_SensorKit_…

Vanuit 'n opdrag dop:

sudo mkdir/usr/share/sunfounder

Gebruik die grafiese verkenner om die python -gids uit die zip -lêer te kopieer na die nuwe sunfounder -lêergids

Die LCD word gebruik om die gebruiker te vra wat presies aan die gang is. Toon die konfigurasieproses tot die x-, y- en z -waardes wat op elke servo gekarteer word

Stap 14: Blynk

Blynk
Blynk
Blynk
Blynk

Blynk is 'n briljante IoT -diens waarmee u 'n pasgemaakte app kan skep om u goed te beheer. Dit het gelyk asof dit die perfekte oplossing was om vir my 'n afstandsbediening van die walabot te gee om die instellings regtig in te skakel …

Een probleem. Blynk word tans nie op die Python -platform ondersteun nie, bugger. Maar moenie vrees nie! ek kon 'n goeie werk vind wat afstandbeheer en parameterinvoer op afstand moontlik maak! dit is 'n bietjie hacky

Die eerste stap is om die Blynk -app van u gunsteling appwinkel af te laai

Tweedens, teken aan vir 'n rekening

Sodra dit klaar is, maak die app oop en begin 'n nuwe projek, en kies Raspberry Pi 3 as die hardeware.

Die app gee u 'n toegangsteken (u benodig dit om u kode in te voer)

Sodra jy dit gedoen het. u moet die app instel soos op die beelde getoon word. Dit is hoe dit met die walabot sal koppel.

Stap 15: Konfigureer die Blynk -app

Die opstel van die Blynk -app
Die opstel van die Blynk -app
Die opstel van die Blynk -app
Die opstel van die Blynk -app
Die opstel van die Blynk -app
Die opstel van die Blynk -app

Stap 16: U kan hierdie QR -kode met die Blynk -app gebruik om my projek te kloon om u tyd te bespaar

U kan hierdie QR -kode met die Blynk -app gebruik om my projek te kloon om u tyd te bespaar
U kan hierdie QR -kode met die Blynk -app gebruik om my projek te kloon om u tyd te bespaar

OK Noudat die app opgestel is, kan ons Python en die RPi instel om daarmee oor die internet te praat. towerkuns

Stap 17: hardloop Blynk met die Raspberry Pi en gebruik die Blynk HTTPS vir Python

Eerstens moet u die Blynk HTTPS -omhulsel vir Python installeer

Vanuit 'n opdrag dop:

sudo git kloon

sudo pip installeer blynkapi

Tweedens moet u die Blynk -diens op die RPi installeer

Vanuit 'n opdrag dop:

git -kloon

cd blynk-biblioteek/linux

maak alles skoon

om die blynk -diens uit te voer

sudo./blynk --token = YourAuthToken

Om te verseker dat die Blynk -diens by die aanvang werk, moet u die /etc/rc.local verander

deur te doen

sudo nano /etc/rc.local

voeg dit aan die einde by

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

(Ek het 'n hantering van my /etc/rc.local -lêer in die kode -afdeling vir verwysing ingesluit)

Om te toets dat dit werk, tik eenvoudig

sudo /etc/rc.local begin

Die Blynk -diens behoort nou te wees

Stap 18: outomatiese uitvoering van die script

Noudat dit alles opgestel en gekonfigureer is, en ons die python -kode gereed het. ons kan dinge outomaties laat loop sodat ons die sleutelbord en monitors kan laat vaar

Daar is 'n paar dinge om te doen

Skep 'n nuwe scriptlêer om die Python -program uit te voer

sudo nano kitaareffek.sh

voeg hierdie reëls by

#!/bin/sh

python /home/pi/GuitarEffectCLI.py

maak seker dat u dit stoor

Vervolgens moet ons die script toestemming gee om deur te tik

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

En laastens moet ons hierdie skrif by die /etc/rc.local -lêer voeg waarmee ons vroeër gesukkel het.

Sudo nano /etc/rc.local

Voeg by

/home/pi/guitareffect.sh &

Maak seker dat u die '&' insluit, waardeur die Python -script op die agtergrond kan werk

Reg! Dit is al die konfigurasie en sagteware wat gesorteer is; daarna is dit tyd om die hardeware op te dra

Stap 19: Die hardeware

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

Eerste Breadboard prototipe

Stap 20: Omhulselontwerp

Omhulselontwerp
Omhulselontwerp
Omhulselontwerp
Omhulselontwerp

Die omhulsel is ontwerp en weergegee in die ongelooflike Fusion360

Stap 21: Guts Shots

Darmskote
Darmskote
Guts Shots
Guts Shots
Darmskote
Darmskote

Stap 22: Finale samestellingskote

Finale byeenkomsskote
Finale byeenkomsskote
Finale byeenkomsskote
Finale byeenkomsskote
Finale byeenkomsskote
Finale byeenkomsskote

Stap 23: Om die Walabot aan die staander vas te maak

Om die Walabot aan die staander vas te maak
Om die Walabot aan die staander vas te maak

Gebruik die selfklevende metaalskyf wat by die walabot kom, om dit reg te maak

Stap 24: Hardeware STL -lêers vir 3D -druk

Stap 25: Skema's vir die bedrading van die saak

Stap 26: Kode

Gebruik die aangehegte Python -script vir u projek

vanaf _future_ invoer afdrukfunksie vanaf sys invoerplatform vanaf ons invoerstelsel vanaf blynkapi invoer Blynk invoer WalabotAPI invoer tyd invoer RPi. GPIO as GPIO

#stel GPIO op met bord nommering

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

#blynk auth -token

auth_token = "your_auth_token_here"

# Voer die PCA9685 -module in vir servobestuur.

voer Adafruit_PCA9685 in

#voer LCD -module vanaf die plek in

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

# Begin die PCA9685 met die standaardadres (0x40).

pwm = Adafruit_PCA9685. PCA9685 ()

# blynk -voorwerpe

standaard = 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")

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

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

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

def LCDsetup ():

LCD1602.init (0x27, 1) # init (slawe -adres, agtergrondlig)

def numMap (x, in_min, in_max, out_min, out_max): "" "gebruik vir die kartering van die walabot -lesings na servoposisie" "" return int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + buite_min)

# gebruik dit om die rou data af te rond tot die toegewysde waarde

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

#onttrek die getal uit die teruggekeerde blynk -string

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

# Stel die frekwensie op 60Hz, goed vir servo's.

pwm.set_pwm_freq (60)

# Stel standaard min en maksimum servopulslengtes in

SERVO_MIN = 175 # Min polslengte uit 4096 SERVO_MAX = 575 # Max polslengte uit 4096

# walabot standaardwaardes

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

DREMPEL = 1

# veranderlikes vir blynk -skakel

op = "[u'1 ']"

klas Walabot:

def _init _ (self):

self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = Valse self.isTargets = Onwaar

def blynkConfig (self):

load_defaults = defaults.get_val () if str (load_defaults) == on: 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) druk ("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val () R_MAX = numberExtract (R_MAX) druk ("R max =", R_MAX)

R_MIN = Rmin.get_val ()

R_MIN = getalExtract (R_MIN) druk ("R Min =", R_MIN)

R_RES = Rres.get_val ()

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

THETA_MAX = ThetaMax.get_val ()

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

PHI_MAX = PhiMax.get_val ()

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

THRESHOLD = Drempel.get_val ()

THRESHOLD = numberExtract (THRESHOLD) druk ("Threshold =", THRESHOLD)

anders: # as niks uit die blynk -app nie, laai standaard SERVO_MIN = 175 # Min polslengte uit 4096 SERVO_MAX = 575 # Max polslengte uit 4096

# walabot standaardwaardes

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

DREMPEL = 1

def connect (self): probeer: self.wlbt. ConnectAny () self.isConnected = True self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_MTI) self.wlbt. SetDyn. SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD) behalwe self.wlbt. WalabotError as err: as err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' verhoog fout

def start (self):

self.wlbt. Start ()

def kalibreer (self):

self.wlbt. StartCalibration ()

def get_targets (self):

self.wlbt. Trigger () terugkeer self.wlbt. GetSensorTargets ()

def stop (self):

self.wlbt. Stop ()

ontkoppel (self):

self.wlbt. Diskoppel ()

def main ():

flag = True check = "" LCDsetup () terwyl vlag: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Effect Control') time.sleep (2) LCD1602.write (0, 0, 'Druk Start om') LCD1602.write (0, 1, 'begin') time.sleep (2) if (str (check) == on): flag = Valse anders: check = start_button.get_val () # kyk of die startknoppie blynk druk as (GPIO.input (18) == 0): #kyk na voetschakelvlag = Onwaar

LCD1602.write (0, 0, "OK! Laat ons dit doen")

LCD1602.write (0, 1, '') wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear () indien nie wlbt.isConnected: LCD1602.write (0, 0, 'Not Connected') anders: LCD1602.write (0, 0, 'Connected') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'Calibrating …..') time.sleep (3) LCD1602. skryf (0, 0, 'Begin Walabot')

appcheck = start_button.app_status () flag = True # reset vlag vir hoofprogram

terwyl vlag: # gebruik om effektief in werking te tree (effektief)

if (appcheck == True): if (str (check)! = on): if (GPIO.input (18)! = 0): #check footswitch flag = Valse anders: check = start_button.get_val () #kontroleer vir begin knoppie druk op appcheck = start_button.app_status ()

anders:

if (GPIO.input (18)! = 0): #kontroleer voetswitch vlag = Onwaar

xval = 0

yval = 0 zval = 0 gemiddelde = 2 vertragingstyd = 0

teikens = wlbt.get_targets ()

as len (teikens)> 0:

vir j in reeks (gemiddeld):

teikens = wlbt.get_targets ()

as len (teikens)> 0: druk (len (teikens)) teikens = teikens [0]

print (str (goals.xPosCm))

xval += int (goals.xPosCm) yval += int (goals.yPosCm) zval += int (goals.zPosCm) time.sleep (delayTime) anders: druk ("geen teikens") xval = xval/gemiddelde

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

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

yval = yval/gemiddelde

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

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

zval = zval/gemiddelde

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

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

anders:

druk ("geen teikens") LCD1602.write (0, 0, "Sluit af") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()

as _naam_ == '_hoof_':

terwyl True: main ()

vir die kitaareffek.sh

#!/bin/sh

cd /huis /pi

sudo python GuitarEffectCLI.py

'N Afskrif van die plaaslike RC -lêer vir verwysing

#!/bin/sh -e # # rc.local # # Hierdie script word uitgevoer aan die einde van elke multi -gebruiker -vlak. # Maak seker dat die skrif 'suksesvol' of 'n ander # waarde by fout "0" verlaat. # # Om hierdie script in of uit te skakel, verander net die uitvoering # bisse. # # Hierdie skrip doen standaard niks.

# Druk die IP -adres af

_IP = $ (gasheernaam -I) || waar as ["$ _IP"]; druk dan "My IP -adres is %s / n" "$ _IP" fi

./blynk-library/linux/blynk --token = "u teken gaan hierheen" &

slaap 10 sudo /home/pi/guitareffect.sh en verlaat 0

Stap 27: Github -bewaarplekke om te gebruik

Gebruik dit vir die Sunfounder LCD

github.com/daveyclk/SunFounder_SensorKit_f…

Gebruik dit vir die servobestuurder

github.com/daveyclk/Adafruit_Python_PCA968…

Gebruik dit vir die Blynk Python HTTPS Wrapper

github.com/daveyclk/blynkapi

Stap 28: Gevolgtrekking

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

Dit was 'n skerp leerkurwe, maar dit was die moeite werd.

My wegneemetes is

  • Ek moes Python leer.. blyk dat dit 'n aas is
  • Koppel die Python op die Raspberry Pi met die Blynk IoT -diens. Dit word nie amptelik ondersteun nie, so daar is 'n paar beperkings op die funksies daarvan. Werk nog steeds uitstekend!
  • Dit blyk dat die Walabot ideaal is vir musikale uitdrukking. Ek het dit op 'n Korg SDD3000 gebruik, maar u kan enige effek gebruik wat u wil

Gaan self. Dit is nie beperk tot kitaar -effekte nie; ek kan met enige instrument met enige effek gebruik word.

Framboos Pi -wedstryd 2017
Framboos Pi -wedstryd 2017
Framboos Pi -wedstryd 2017
Framboos Pi -wedstryd 2017

Naaswenner in die Raspberry Pi -wedstryd 2017

Aanbeveel: