2021年5月24日月曜日

Korg SQ-1のGate信号を拡張 GateEXの製作

Korg SQ-1のGate出力は2系統しかありません。自作のリズムマシンのKIK01と同期するためにGate信号を増やすモジュールを作りました。

ブロック図

SQ-1はSync信号が出ていますので、これを間引いてKIK01に入力するGate信号とします。シーケンスパターンの設定は簡単に8PのDIPスイッチで行います。ボタンを並べたりちゃんとしたユーザーインターフェースを作るのは骨の折れる仕事ですし、自作するよりもう1台SQ-1を購入して同期させたほうが安く済むかもしれません。

コントローラーとしてArduino Pro Miniを2個使用しました。

SQ-1のSync信号は5Vですが、Gate信号は10Vですので、間違ってSQ-1のGate出力をつないでも大丈夫なように入力に保護回路を入れています。

電源はArduino Pro Miniにもリニアレギュレータが載っていますが、あまり性能が良くないので別途7805を使った5V電源を載せています

回路図

外観

ケースはタカチPB-2です。最近このケースのサイズのバリエーションが増えたようですね。

背面の穴あけを左右逆に間違えてしまって、背面のパーツの配置は間に合わせです。

Korg SQ-1と接続

9V電源で、電源電流は35mA~38mA程度です。

Arduinoのスケッチ GateSequncer_01


//
// Gate Sequencer
//   Sync-in -> Gate sequence
//
// 2021.04.27
//

#include <MsTimer2.h>

#define PIN_SYNC_IN      (2)
#define PIN_GATE_OUT     (12)
#define PIN_GATE_LED     (11)
#define PIN_PULSE_WIDTH  (A0)

#define CNT_N            (8)

byte sequence[CNT_N] = {0};
int cnt = 0;
int pulseWidth = 20;

void gateOff()
{
  digitalWrite(PIN_GATE_OUT, LOW);
  digitalWrite(PIN_GATE_LED, LOW);
}

void step()
{
  digitalWrite(PIN_GATE_OUT, sequence[cnt]);
  digitalWrite(PIN_GATE_LED, sequence[cnt]);

  cnt++;
  if (cnt >= CNT_N) {
    cnt = 0;
  }

  MsTimer2::set(pulseWidth, gateOff);
  MsTimer2::start();
}

void setup() {
  pinMode(PIN_SYNC_IN, INPUT);
  pinMode(PIN_GATE_OUT, OUTPUT);
  pinMode(PIN_GATE_LED, OUTPUT);

  // DIP switch
  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(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(PIN_SYNC_IN), step, RISING);
}

void loop() {
  // Read DIP switch
  sequence[0] = !digitalRead(3);
  sequence[1] = !digitalRead(4);
  sequence[2] = !digitalRead(5);
  sequence[3] = !digitalRead(6);
  sequence[4] = !digitalRead(7);
  sequence[5] = !digitalRead(8);
  sequence[6] = !digitalRead(9);
  sequence[7] = !digitalRead(10);

  // Read pulse width
  pulseWidth = analogRead(PIN_PULSE_WIDTH) / 10;  // 0~102 ms
}

Sync信号の受信はハードウェア割り込みで行っています。出力Gate信号をオフにするタイミングを取るためにMsTimer2を利用しています。

Arduinoには2枚とも同じスケッチを書き込みます。

出力例

C1:Gate1 C2:Gate2

メモ:


電源の入れ方によって、2枚のArduinoのシーケンスの開始がずれる場合があります。RSTボタンを押して同時にリセットをかけると同期します。起動時に同期させる仕組みを入れたほうが良いと思います。

2021年5月13日木曜日

中華製サイコン XOSS G+を購入しました。

AliExpressでサイクルコンピューターのXOSS G+とケイデンスセンサーを購入しました。マウントと合わせて5,980円、到着まで16日でした。

XOSS Gという機種もありますが、こちらはセンサーが使えないようです。

到着物

XOSS G+

本体、マウント、マウント用ゴムシート、マウント用輪ゴム2本、USBマイクロケーブル、マニュアルです。マニュアルは日本語でも記載されています。

ケイデンスセンサー

本体、マウント用ゴムシート2種、マウント用輪ゴム大小2本ずつ、マニュアルです。こちらもマニュアルは日本語の記載があります。

マウント

質感はあまり良くなくチャチな感じですが、実用上問題ないと思います。

XOSS G+をハンドルに取付け

マウントのネジはアーレンキー3番です。最初取付けが甘く、走行中にマウントのネジが緩んで紛失してしまいましたが、ホームセンターで売っている六角穴付きボルト M4x15が代わりに使えました。


ケーデンスセンサーをクランクに取付け

平たい方のゴムシートを挟んで、小さい方の輪ゴムで止めました。

ケイデンスセンサーは電池を入れ直すとスピードセンサーに切り替わります。LEDが赤に点灯するとスピードセンサー、青に点灯するとケイデンスセンサーです。スピードはセンサーがなくてもGPSで測定可能です。

ケイデンスセンサーの近くでG+のボタンを両押しして設定画面に入るとセンサーが自動認識されG+のLCDの右下にアイコンが表示されます。

Stravaとの連携

スマホのアプリ(XOSS)で一度Stravaと連携する設定をすると、以降スマホとXOSS G+を同期すると自動的にStravaにもデータが送られるようになります。ワンアクションでStravaと同期するので便利ですね。

Stravaの画面

走行中のスピード、ケイデンス、温度、高度のデータが記録されています。