Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Aangepaste DAW-bedieningsbox voor Roland E-drum racks

Onderdelen en benodigdheden

  • Arduino Micro Pro
  • Drukknoppen (normaal open)
  • 3D-geprinte klem en behuizing

Benodigde tools en machines

  • 3D-printer (generiek)

Apps en online diensten

  • Arduino IDE

Over dit project

Het was ongemakkelijk om mijn laptop met DAW (in mijn geval Cubase) te bedienen tijdens het opnemen van een drumtrack. Ik wilde een afleidingsvrije methode om essentiële commando's zoals start/stop/opnemen te triggeren zonder mijn drumstokken los te laten. Commerciële oplossingen waren te duur of niet praktisch (bijv. onmogelijk te monteren op mijn rack). Dus bouwde ik deze DIY knoppenbox op basis van de bekende Arduino Micro Pro. Hij kan gemonteerd worden op standaard 38mm buizen die Roland racks gebruiken.

Instructies

  1. 3D-printen: Print de 2 rack-klemdelen en de behuizing. PLA werkt, maar PETG is stabieler. Monteer de klem met een M4x40 bout als as tussen de 2 delen, vastdraaien maar zodanig dat het nog kan draaien. Gebruik een M6-vleugelbout en moer als vastzetter. Bevestig het bovenste klemdeel aan de behuizing met 2x M3x4 bouten en moeren.
  2. Frontpaneel: Je hebt meerdere keuzes. Je kunt je eigen variant ontwerpen afhankelijk van je knoppen. Gebruik een van de beschikbare frontpaneel-sjablonen in STL (voor 3D-printer) of SVG (voor CNC). (Ik maakte het paneel op mijn DIY CNC-machine vanwege het gegraveerde ontwerp, maar 3D-print werkt ook prima.)
  3. Knoppen monteren: Zet de knoppen in het frontpaneel en soldeer ze aan de juiste Arduino-pinnen (zie toewijzing hieronder). Ik gebruikte een apart printplaatje voor meer ruimte, maar dat is niet verplicht. Gebruik de 4 gaten in de hoeken om de printplaat vast te maken. Sluit het frontpaneel af met 2 M3-bouten.
  4. Arduino programmeren: Elke Micro Pro werkt, maar let op: het moet de Arduino Micro PRO zijn (niet de standaard Arduino Micro!) vanwege de ingebouwde USB. Een Micro Pro kan een USB-toetsenbord emuleren en dus elke toetsaanslag triggeren, zelfs functietoetsen en numpad-toetsen. Micro Pro's komen van verschillende bronnen, dus je moet misschien je code aanpassen afhankelijk van de meegeleverde bibliotheken. Ik gebruikte digitale pinnen 2-8 geïnitialiseerd als interne pull-ups. De aangesloten drukknoppen (normaal open) trekken de pinnen naar GND wat gedetecteerd wordt en de geprogrammeerde actie (geëmuleerde toetsaanslag) triggert.

Voor mijn DAW (Cubase) gebruikte ik deze configuratie:

PoortKnopToetsCubase-functie
2McMetronoom Aan/Uit
3L[Num] 1Naar Linker Locator
4>>[Num] +Vooruit
5<<[Num] -Achteruit
6PSPATIEAfspelen/Stoppen
7BbBegin
8R[Num] *Opnemen

Dit is eenvoudig aan te passen in de code. Gebruik mijn code als voorbeeld.

Veel plezier!

Code

/* ROLAND RACK BUTTON BOX 
Note: Dit is voor de Arduino Pro Micro! 
Emuleert een toetsenbord om toetsen op een verbonden PC voor een DAW (hier: Steinberg Cubase) in te drukken.
Optioneel: gebruikt geëmuleerde UART COM-poort via USB (voor debugging) en LEDs (RX en TX LED) op Micro-board.

TOETSEN: config voor Cubase: https://steinberg.help/cubase_elements_le_ai/v9/de/cubase_nuendo/topics/key_commands/key_commands_default_c.html

Toewijzing:
Arduino Micro Poort -> Schakelaar op Button Box -> Geëmuleerde Toets op Toetsenbord -> Functie in Cubase
------------------------------------------
2  M  c          Metronoom Aan
3  L  [Num] 1    Naar Linker Locator
4  >> [Num] +    Vooruit
5  << [Num] -    Achteruit
6  P  SPATIE     Afspelen/Stoppen
7  B  b          Begin
8  R  [Num] *    Opnemen

mac70 13.01.2021 
*/

#define DEBUG_OUTPUT 0 // als 1, extra seriële monitor output voor debugging
#include <Keyboard.h>

// NUMPAD-toetscodes: https://forum.arduino.cc/index.php?topic=659117.0
#define KEYPAD_1 225
#define KEYPAD_PLUS 223
#define KEYPAD_MINUS 222
#define KEYPAD_ASTERIX 221

int RXLED = 17; // RX LED heeft gedefinieerde Arduino-pin

void setup() {
  // Knoppen aangesloten op digitale input-pinnen
  // (knop normaal open, bij activering -> pin verbonden met GND)
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(RXLED, OUTPUT);
  digitalWrite(RXLED, HIGH); // RX LED UIT
  Keyboard.begin(); // start toetsenbord-emulatie
  Serial.begin(9600);
  Serial.println("");
  if (DEBUG_OUTPUT == 1) Serial.println("Button Box Serial Monitor");
}

void loop() {
  Keyboard.releaseAll();
  digitalWrite(RXLED, HIGH); // RX LED UIT
  delay(50);

  // Knoppen verwerken
  if (digitalRead(2) == 0) { // M
    if (DEBUG_OUTPUT == 1) Serial.println("Button M");
    digitalWrite(RXLED, LOW); // LED aan voor activiteit
    Keyboard.press('c');
    delay(5);
    Keyboard.releaseAll();
    while(digitalRead(2) == 0); // wacht op loslaten
  }
  if (digitalRead(3) == 0) { // L
    if (DEBUG_OUTPUT == 1) Serial.println("Button L");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_1);
    delay(5);
    Keyboard.releaseAll();
    while(digitalRead(3) == 0);
  }
  if (digitalRead(4) == 0) { // >>
    if (DEBUG_OUTPUT == 1) Serial.println("Button >>");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_PLUS);
    while(digitalRead(4) == 0); // wacht op loslaten... herhaling door PC triggert toets opnieuw!
    Keyboard.releaseAll();
  }
  if (digitalRead(5) == 0) { // <<
    if (DEBUG_OUTPUT == 1) Serial.println("Button <<");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_MINUS);
    while(digitalRead(5) == 0);
    Keyboard.releaseAll();
  }
  if (digitalRead(6) == 0) { // PLAY/STOP
    if (DEBUG_OUTPUT == 1) Serial.println("Button PLAY/STOP");
    digitalWrite(RXLED, LOW);
    Keyboard.press(' ');
    delay(5);
    Keyboard.releaseAll();
    while(digitalRead(6) == 0);
  }
  if (digitalRead(7) == 0) { // BACK TO START
    if (DEBUG_OUTPUT == 1) Serial.println("Button BACK");
    digitalWrite(RXLED, LOW);
    Keyboard.press('b');
    delay(5);
    Keyboard.releaseAll();
    while(digitalRead(7) == 0);
  }
  if (digitalRead(8) == 0) { // REC
    if (DEBUG_OUTPUT == 1) Serial.println("Button REC");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_ASTERIX);
    delay(5);
    Keyboard.releaseAll();
    while(digitalRead(8) == 0);
  }
}

3D-bestanden

Link naar mijn 3D-bestanden op Thingiverse: CAD-bestand op Thingiverse

Productieproces

  1. 5 Bewezen Verpakkingshacks om Verzendschade te Voorkomen
  2. SIGHT: Slimme Bril die Blinden Sterker Maakt
  3. Bouw een Beweging-gestuurde AWS IoT-knop met Raspberry Pi, PIR-sensor en MQTT
  4. DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
  5. Hekuma's Nieuwe Spuitgietautomatisering Verbetert Medische Pipette Tip Productie
  6. Geoptimaliseerde layout- en routeringsrichtlijnen voor box build assembly
  7. Belangrijke Factoren bij het Uitbesteden van Box Build Assemblage-services
  8. Essentiële richtlijnen voor succesvolle Box Build-assemblage
  9. Maatwerk shipping containers: op maat gemaakte oplossingen voor automfabrikanten & leveranciers
  10. Advantech lanceert ARK-1220: compacte fan-loze DIN-rail PC voor slimme productie
  11. EKF SRS-1201-BLUBRICK: robuuste wand-mount box voor CompactPCI Serial CPU's in spoorweg, automotive en industriële omgevingen