Tartalomjegyzék:

Walabot FX - Gitár -effektus vezérlés: 28 lépés (képekkel)
Walabot FX - Gitár -effektus vezérlés: 28 lépés (képekkel)

Videó: Walabot FX - Gitár -effektus vezérlés: 28 lépés (képekkel)

Videó: Walabot FX - Gitár -effektus vezérlés: 28 lépés (képekkel)
Videó: Walabot FX- Guitar Effect Control. Full Demo 2024, Július
Anonim
Walabot FX - gitár effekt vezérlés
Walabot FX - gitár effekt vezérlés

Irányítsd kedvenc gitárhatásodat, csak fantasztikus gitárpózokat!

Lépés: Amire szüksége lesz

Hardver alkatrészek

Walabot - Walabot

Raspberry Pi - Raspberry Pi 3 B modell

Sunfounder LCD1602

SunFounder PCA9685 16 csatornás 12 bites PWM szervo meghajtó az Arduino és a Raspberry Pi számára

Szervó (általános) Nincs link

9 V-os elemcsipesz

4xAA elemtartó

AA elemek

Jumper vezetékek (általános)

DPDT reteszelő lábkapcsoló

Korg SDD3000-PDL

Szoftver operációs rendszerek, alkalmazások és online szolgáltatások

Autodesk Fusion360 -

Blynk -

Eszközök stb

3d nyomtató

Forrasztópáka

2. lépés: Absztrakt

Getting Started
Getting Started

Milyen lenne a zenei kifejezés szabályozása a gitár 3D -s térben való elhelyezésén kívül? Nos, írjunk be valamit, és megtudjuk!

3. lépés: Az alapötlet

Azt akartam, hogy valós időben vezérelhessem a 3 hatás paramétert, ezt a gitárom elhelyezésével akartam megtenni. Tehát egy dolog világos volt, szükségem lesz néhány dologra.

  • Érzékelő, amely képes látni a 3D teret
  • Szervók a gombok forgatásához
  • LCD kijelző
  • I2C szervo meghajtó
  • A Raspberry Pi
  • A Python tanulásához

4. lépés: Walabot

Szeretnél látni a falakon? Érzékel tárgyakat a 3D térben? Értelmes, ha a szoba túloldaláról lélegzik? Nos, szerencséje van!

A Walabot teljesen új módja annak, hogy érzékelje a körülötte lévő teret kis teljesítményű radar használatával.

Ez volt a kulcsfontosságú része ennek a projektnek, képes voltam 3D-s térben felvenni az objektumok carteasan (X-Y-Z) koodinátumait, és azokat szervo pozíciókba leképezni, megváltoztatva a gitárhatás hangját, valós időben, anélkül, hogy megérinteném a pedált.

Győzelem.

További információ a Walabot -ról itt található

5. lépés: Első lépések

Először is szüksége lesz egy számítógépre a Walabot meghajtásához, ehhez a projekthez egy Raspberry Pi 3 -at használok (itt RPI -re hivatkozva) a beépített WiFi és az általános extra átvitel miatt

Vettem egy 16 GB -os SD -kártyát, előtelepített NOOBS -szal, hogy a dolgok szépek és egyszerűek legyenek, és úgy döntöttem, hogy a Raspian -t telepítem választott Linux operációs rendszerként

(ha nem ismeri a Raspian telepítését, szánjon rá egy kis időt, és olvassa el ezt)

Rendben, miután elindította a Raspiant az RPi -n, néhány konfigurációs lépést meg kell tennie, hogy előkészítse a dolgokat a projektünkhöz

6. lépés: A Raspberry Pi beállítása - 1

Először győződjön meg arról, hogy a legújabb Kernel verziót futtatja, és ellenőrizze a frissítéseket egy parancshéj megnyitásával és beírásával

sudo apt-get update

sudo apt-get dist-upgrade

(a sudo hozzáadása biztosítja, hogy adminisztrátori jogosultságokkal rendelkezzen, pl. a dolgok működni fognak)

Ennek eltartása eltarthat egy ideig, ezért menjen el, és igyon egy finom teát.

7. lépés: A Raspberry Pi beállítása - 2

Telepítenie kell a Walabot SDK -t az RPi -hez. Az RPi webböngészőből nyissa meg a https://www.walabot.com/gettingstarted oldalt, és töltse le a Raspberry Pi telepítőcsomagot.

Parancshéjból:

cd letöltések

sudo dpkg -I walabotSDK_RasbPi.deb

8. lépés: A Raspberry Pi beállítása - 3

El kell kezdenünk az RPi konfigurálását az i2c busz használatához. Egy parancshéjból:

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

ha ez megtörtént, akkor a következőket kell hozzáadnia a modulok fájljához

Parancshéjból:

sudo nano /etc /modules

add hozzá ezt a 2 karakterláncot külön sorokhoz:

i2c-dev

i2c-bcm2708

9. lépés: A Raspberry Pi beállítása - 4

A Walabot elég sok áramot fogyaszt, és a GPIO -kat is használjuk a dolgok vezérléséhez, ezért ezeket be kell állítanunk

Parancshéjból:

sudo nano /boot/config.txt

írja be a fájl sorába a következő sorokat:

safe_mode_gpio = 4

max_usb_current = 1

Az RPi kiváló eszköz a készítők számára, de korlátozott a Walabot számára küldhető áramerősségben. Ezért adunk 1 Amp maximális áramot a szabványosabb 500 mA helyett

10. lépés: Python

Miért pont Python? Nos, mivel szuper könnyű kódolni, gyorsan futni, és rengeteg jó python példa áll rendelkezésre! még soha nem használtam, és hamarosan működésbe lépett. Most az RPi be van állítva arra, amit akarunk, a következő lépés a Python beállítása, hogy hozzáférjen a Walabot API, LCD Servo interfészekhez

11. lépés: A Walabot esetében

Parancshéjból

Sudo pip telepítés “/usr/share/walabot/python/WalabotAPI-1.0.21.zip”

12. lépés: A szervo interfészhez

Parancshéjból

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

cd ~

git klón

cd Adafruit_Python_PCA9685

sudo python setup.py install

Miért kell szervo meghajtót használni? Nos, egy RPi miatt néhány okból.

1. A szervó által felvett áram nagyon magas lehet, és ez a szám annál nagyobb lesz, minél több szervóval rendelkezik (természetesen). Ha RPi -ről hajtja a szervo -közvetlen rendszert, fennáll annak a veszélye, hogy felrobbantja a tápegységet

2. A szervó helyzetét szabályozó PWM (impulzusszélesség -moduláció) időzítése nagyon fontos. Mivel az RPi nem használ valós idejű operációs rendszert (lehetnek megszakítások és hasonlók), az időzítések nem pontosak, és idegesen rángathatják a szervókat. A dedikált meghajtó lehetővé teszi a pontos vezérlést, de lehetővé teszi akár 16 szervó hozzáadását is, így ez nagyszerű a bővítéshez.

13. lépés: Az LCD -hez

Blynk
Blynk

nyissa meg RPi webböngészőjét

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

Letöltés

github.com/daveyclk/SunFounder_SensorKit_…

Parancshéjból:

sudo mkdir/usr/share/sunfounder

A grafikus felfedező segítségével másolja ki a python mappát a zip fájlból az új sunfounder mappába

Az LCD -t arra használják, hogy megkérdezze a felhasználót arról, hogy pontosan mi történik. A konfigurációs folyamat bemutatása az egyes szervóra leképezett x, y és z értékekig

14. lépés: Blynk

Blynk
Blynk
Blynk
Blynk

A Blynk egy ragyogó IoT -szolgáltatás, amely lehetővé teszi, hogy egyéni alkalmazást hozzon létre a dolgok irányításához. Tökéletes megoldásnak tűnt, ha a Walabot távirányítóját adom, hogy valóban tárcsázzam a beállításokat …

Egy probléma. A Blynk jelenleg nem támogatott a Python platformon, bugger. De ne félj! találtam egy szép kis munkát, amely lehetővé teszi a távirányítást és a távoli paraméterbevitelt! ez egy kicsit vagány

Az első lépés a Blynk alkalmazás letöltése a kedvenc alkalmazásboltjából

Másodszor, regisztráljon egy fiókra

Ha ez megtörtént, nyissa meg az alkalmazást, és indítson el egy új projektet, és válassza a Raspberry Pi 3 hardvert.

Az alkalmazás kioszt egy hozzáférési tokent (erre szüksége lesz a kód beírásához)

Miután ezt megtette. be kell állítania az alkalmazást a képeken látható módon. Így fog kapcsolódni a walabothoz.

15. lépés: A Blynk alkalmazás konfigurálása

A Blynk alkalmazás konfigurálása
A Blynk alkalmazás konfigurálása
A Blynk alkalmazás konfigurálása
A Blynk alkalmazás konfigurálása
A Blynk alkalmazás konfigurálása
A Blynk alkalmazás konfigurálása

16. lépés: Ezt a QR -kódot használhatja a Blynk alkalmazással a projektem klónozásához, így időt takaríthat meg

Ezzel a QR -kóddal a Blynk alkalmazással klónozhatja a projektemet, így időt takaríthat meg
Ezzel a QR -kóddal a Blynk alkalmazással klónozhatja a projektemet, így időt takaríthat meg

OK Most, hogy minden alkalmazás be van állítva, beállíthatjuk, hogy a Python és az RPi úgy beszéljen vele az interneten keresztül. varázslat

17. lépés: Blynk futtatása a Raspberry Pi -vel és a Blynk HTTPS használata Python számára

Először telepítenie kell a Blynk HTTPS csomagolóeszközt a Python számára

Parancshéjból:

sudo git klón

sudo pip install blynkapi

Másodszor, telepítenie kell a Blynk szolgáltatást az RPi -re

Parancshéjból:

git klón

cd blynk-library/linux

tisztíts meg mindent

hogy futtassa a blynk szolgáltatást

sudo./blynk --token = YourAuthToken

Annak érdekében, hogy a Blynk szolgáltatás indításkor fusson, módosítani kell az /etc/rc.local fájlt

csinálva

sudo nano /etc/rc.local

ezt add hozzá a végén

./blynk-library/linux/blynk --token = az én jelképem &

(referenciaként a /etc/rc.local fájlom fájlját a kódrészbe helyeztem)

A teszteléshez egyszerűen írja be

sudo /etc/rc.local start

A Blynk szolgáltatásnak most futnia kell

18. lépés: A szkript automatikus futtatása

Most, hogy mindez beállítva és konfigurálva, és készen állunk a python -kódra. beállíthatjuk, hogy a dolgok automatikusan fussanak, így elhagyhatjuk a billentyűzetet és a monitorokat

Van néhány tennivaló

Hozzon létre egy új parancsfájlt a Python program elfogyásához

sudo nano gitárhatás.sh

add hozzá ezeket a sorokat

#!/bin/sh

python /home/pi/GuitarEffectCLI.py

mindenképpen mentse el

Ezután engedélyt kell adnunk a szkriptnek a gépeléshez

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

És végül hozzá kell adnunk ezt a szkriptet az /etc/rc.local fájlhoz, amelyet korábban bonyolítottunk.

Sudo nano /etc/rc.local

Hozzáadás

/home/pi/guitareffect.sh &

feltétlenül írja be a "&" -t, ez lehetővé teszi a Python Script futtatását a háttérben

Jobb! Ennyi a konfiguráció és a szoftver rendezése, legközelebb itt az ideje a hardver bekötésére

19. lépés: A hardver

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

Az első Breadboard prototípus

20. lépés: A ház tervezése

A ház tervezése
A ház tervezése
A ház tervezése
A ház tervezése

A házat a fantasztikus Fusion360 -ban tervezték és készítették

21. lépés: Guts Shots

Guts Shots
Guts Shots
Guts Shots
Guts Shots
Guts Shots
Guts Shots

22. lépés: Végső szerelési felvételek

Végső szerelési felvételek
Végső szerelési felvételek
Végső szerelési felvételek
Végső szerelési felvételek
Végső szerelési felvételek
Végső szerelési felvételek

23. lépés: A Walabot rögzítése az állványhoz

A Walabot rögzítése az állványhoz
A Walabot rögzítése az állványhoz

A rögzítéshez használja a walabothoz mellékelt öntapadó fémlemezt

24. lépés: Hardver STL fájlok 3D nyomtatáshoz

25. lépés: Vázlatok a dolog bekötéséhez

26. lépés: Kód

A projekthez használja a mellékelt Python -szkriptet

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

#állítsa be a GPIO -t a tábla számozásával

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

#blynk auth token

auth_token = "saját_auth_token_itt"

# Importálja a PCA9685 modult a szervo vezérléshez.

import Adafruit_PCA9685

#importálja az LCD modult a helyszínről

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

# Inicializálja a PCA9685 -öt az alapértelmezett címmel (0x40).

pwm = Adafruit_PCA9685. PCA9685 ()

# blynk objektum

alapértelmezett = 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")

Küszöb = Blynk (auth_token, pin = "V8")

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

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

def LCD beállítás ():

LCD1602.init (0x27, 1) # init (slave cím, háttérvilágítás)

def numMap (x, in_min, in_max, out_min, out_max): "" "a walabot leolvasásának szervo pozícióba való leképezésére használt" "" return int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

# ezt használja a nyers adatok felkerekítésére a hozzárendelt értékre

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

#kivonja a számot a visszaadott blynk karakterláncból

def szám Kivonat (val): val = str (val) return int (szűrő (str. digit, val))

# Állítsa a frekvenciát 60 Hz -re, jó szervókhoz.

pwm.set_pwm_freq (60)

# A minimális és maximális szervoimpulzus -hossza beállítása

SERVO_MIN = 175 # Minimális impulzushossz 4096 -ból SERVO_MAX = 575 # Maximális impulzushossz 4096 -ból

# walabot alapértelmezett érték

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

THRESHOLD = 1

# változó a blynk kapcsoláshoz

on = "[u'1 ']"

Walabot osztály:

def _init _ (saját):

self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = False self.isTargets = Hamis

def blynkConfig (önálló):

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) 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 = számKivonat (R_MIN) nyomtatás ("R Min =", R_MIN)

R_RES = Rres.get_val ()

R_RES = számKivonat (R_RES) nyomtatás ("R Res =", R_RES)

THETA_MAX = ThetaMax.get_val ()

THETA_MAX = számExtract (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 = Threshold.get_val ()

THRESHOLD = számExtract (THRESHOLD) nyomtatás ("Threshold =", THRESHOLD)

else: # ha semmi a blynk alkalmazásból, a betöltés alapértelmezett értékei SERVO_MIN = 175 # Minimális impulzushossz 4096 -ból SERVO_MAX = 575 # Maximális impulzushossz 4096 -ból

# walabot alapértelmezett érték

R_MAX = 60 R_MIN = 20 R_RES = 5

THETA_MAX = 20

THETA_RES = 5

PHI_MAX = 20

PHI_RES = 5

THRESHOLD = 1

def connect (self): try: self.wlbt. ConnectAny () self.isConnected = True self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_MTI) self.wlbt. FILTER_TYPE_MTI.html (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_MAX, THETA_RES) self.et.wlbt.html. SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD), kivéve self.wlbt. WalabotError as err: if err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' emelési hiba

def start (ön):

self.wlbt. Start ()

def kalibrálás (saját):

self.wlbt. StartCalibration ()

def get_targets (self):

self.wlbt. Trigger () return self.wlbt. GetSensorTargets ()

def stop (ön):

self.wlbt. Stop ()

def szétkapcsolás (ön):

self.wlbt. Disconnect ()

def main ():

flag = True check = "" LCDsetup () míg flag: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Effect Control') time.sleep (2) LCD1602.write (0, 0, 'Nyomja meg a Start gombot') LCD1602.write (0, 1, 'begin') time.sleep (2) if (str (check) == on): flag = False else: check = start_button.get_val () # ellenőrizze a blynk start gomb megnyomását, ha (GPIO.input (18) == 0): #check footswitch flag = Hamis

LCD1602.write (0, 0, "OK! Csináljuk")

LCD1602.write (0, 1, ) wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear () ha nem wlbt.isConnected: LCD1602.write (0, 0, 'Not Connected') else: LCD1602.write (0, 0, 'Connected') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'Calibrating…..') time.sleep (3)) LCD1602.write (0, 0, 'Walabot indítása')

appcheck = start_button.app_status () flag = True # reset flag for main prog

míg zászló: # készenléti állapotba helyezéshez (hatékonyan)

if (appcheck == True): if (str (check)! = on): if (GPIO.input (18)! = 0): #check footswitch flag = Hamis else: check = start_button.get_val () #check for start gomb nyomja meg az appcheck = start_button.app_status ()

más:

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

xval = 0

yval = 0 zval = 0 átlagos = 2 delayTime = 0

target = wlbt.get_targets ()

ha len (célpontok)> 0:

j tartományban (átlagos):

target = wlbt.get_targets ()

ha len (célok)> 0: print (len (célpontok)) célok = célok [0]

print (str (target.xPosCm))

xval += int (target.xPosCm) yval += int (target.yPosCm) zval += int (target.zPosCm) time.sleep (delayTime) else: print ("nincs cél") xval = xval/átlagos

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

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

yval = yval/átlagos

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

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

zval = zval/átlag

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

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

más:

nyomtatás ("nincs cél") LCD1602.write (0, 0, "Leállítás") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()

ha _name_ == '_main_':

míg igaz: main ()

a gitárhatáshoz.sh

#!/bin/sh

cd /home /pi

sudo python GuitarEffectCLI.py

Az RC helyi fájl másolata referenciaként

#!/bin/sh -e # # rc.local # # Ez a szkript minden többfelhasználós futási szint végén kerül végrehajtásra. # Győződjön meg arról, hogy a szkript sikeresen "0" lesz, vagy hiba esetén más # érték. # # A szkript engedélyezéséhez vagy letiltásához csak módosítsa a végrehajtási # biteket. # # Alapértelmezés szerint ez a szkript nem tesz semmit.

# Nyomtassa ki az IP -címet

_IP = $ (gazdagépnév -I) || igaz, ha ["$ _IP"]; majd printf "Az IP -címem %s / n" "$ _IP" fi

./blynk-library/linux/blynk --token = "a token ide megy" &

alvás 10 sudo /home/pi/guitareffect.sh & exit 0

27. lépés: Github tárolók használata

Használja ezt a Sunfounder LCD kijelzőhöz

github.com/daveyclk/SunFounder_SensorKit_f…

Használja ezt a szervo meghajtóhoz

github.com/daveyclk/Adafruit_Python_PCA968…

Használja ezt a Blynk Python HTTPS csomagolóhoz

github.com/daveyclk/blynkapi

28. lépés: Következtetés

Image
Image
Walabot FX- Guitar Effect Control. Full Demo
Walabot FX- Guitar Effect Control. Full Demo
Következtetés
Következtetés
Következtetés
Következtetés

Nos, ez meredek tanulási görbe volt, de annyira megérte.

Az elvihetőjeim azok

  • Meg kellett tanulnom a Python -ot..kiderül, hogy ász
  • Összekapcsolta a Python -t a Raspberry Pi -n a Blynk IoT szolgáltatással. Ez hivatalosan nem támogatott, ezért funkcióinak vannak bizonyos korlátai. Még mindig remekül működik!
  • Kiderült, hogy a Walabot kiválóan alkalmas zenei kifejezésre. Korg SDD3000 -en használtam, de bármilyen effektust használhatsz

Tegyen egy próbát maga. Ez nem korlátozódik a gitár effektekre, bármilyen hangszerrel használható, bármilyen hatással.

Raspberry Pi verseny 2017
Raspberry Pi verseny 2017
Raspberry Pi verseny 2017
Raspberry Pi verseny 2017

Második hely a Raspberry Pi versenyen 2017

Ajánlott: