LoginSignup
3
1

More than 1 year has passed since last update.

ArduinoからカラオケDAMを操作する方法 (赤外線)

Last updated at Posted at 2020-10-29

カラオケDAMを赤外線で操作したい

カラオケを自分で選曲ツールを作って操作したいと思ったことはありませんか。
今回は、実際にカラオケリモコン「DAM-RM50」を購入し仕様を解析した結果を書いていきます。

image.png

「LIVEDAM STADIUM」など現行の機種でも使える方法なので、ぜひみなさんもArduinoでカラオケをお楽しみください!!

選曲はデンモクの方がよいという方も、演奏中止や予約取消などのコマンドを赤外線で送信してみませんか。リモコン画面を出したり、取り消し確認画面を操作したりする手間をスキップできるので、一発で操作できて大変便利です。

コマンド送信のための下準備

赤外線LEDとArduinoさえ用意すればコマンドを送信できます。

赤外線LEDは、波長が950nm(940nm)のものを選んでください。最初、850nmのものを使っていた所、反応しなくて悩んでいました。リモコン用の赤外線LEDといえばNEC、MITSUBISHI、SONYなどのフォーマットに関わらず、基本は950nmのものが主流のようです。秋月電子なら、この辺のものを購入してください。

コマンド一覧と仕様例

DAMのリモコンは、NECフォーマットを利用しています。

NECのフォーマットでは最初の16ビットにメーカーコード、次の8ビットにデータ、最後の8ビットにデータを2進数で反転させた合計32ビットのデータが入ります。

DAMでは、選曲などの長いデータのときも、この32ビットのデータを複数回送ることで表現しているようです。

フォーマットについて知りたい方は、こちらのサイトがとても参考になります。
http://elm-chan.org/docs/ir_format.html

また、このサンプルではArduino用のライブラリIRremoteを利用して送信を行なっています。
https://github.com/z3t0/Arduino-IRremote

カラオケ選曲に関するコマンド

メーカーコード: 0x8BB4 (最初の16ビットに固定)

各種キーコード:

1つ目にキーコード、2つ目にメーカーコードと反転データを追加した32ビットの完全な送信データを記載しています。

予約転送開始 - 0x10 0x8BB410EF
予約転送終了 - 0x90 0x8BB4906F

0 0x0C 0x8BB40CF3
1 0x8C 0x8BB48C73
2 0x4C 0x8BB44CB3
3 0xCC 0x8BB4CC33
4 0x2C 0x8BB42CD3
5 0xAC 0x8BB4AC53
6 0x6C 0x8BB46C93
7 0xEC 0x8BB4EC13
8 0x1C 0x8BB41CE3
9 0x9C 0x8BB49C63
A 0x5C 0x8BB45CA3
B 0xDC 0x8BB4DC23

選曲番号3712-40の曲を予約するには、次のようにします。

#include <IRremote.h>
IRsend irsend;

void setup()
{
  irsend.sendNEC(0x8BB410EF,32); // 予約転送開始
  delay(100);
  irsend.sendNEC(0x8BB4CC33,32); // 3
  delay(100);
  irsend.sendNEC(0x8BB4EC13,32); // 7
  delay(100);
  irsend.sendNEC(0x8BB48C73,32); // 1
  delay(100);
  irsend.sendNEC(0x8BB44CB3,32); // 2
  delay(100);
  irsend.sendNEC(0x8BB42CD3,32); // 4
  delay(100);
  irsend.sendNEC(0x8BB40CF3,32); // 0
  delay(100);
  irsend.sendNEC(0x8BB4906F,32); // 予約転送終了
  delay(1000);
}

void loop() {

}

各種操作用コマンド

単発操作

スタート/やり直し 0x80 0x8BB4807F
予約確認 0x50 0x8BB450AF
予約取消 0xE0 0x8BB4E01F
演奏中止 0x00 0x8BB400FF

割り込み 0xC0 0x8BB4C03F
採点 0xF8 0x8BB4F807
あと回し 0xF4 0x8BB4F40B

ガイドメロディ 0xB0 0x8BB4B04F
ワイプ 0x30 0x8BB430CF
ルビ 0x60 0x8BB4609F
バックコーラス 0x0B 0x8BB40BF4
予約した曲名を隠す 0xA4 0x8BB4A45B

効果音1 0x7C 0x8BB47C83
効果音2 0xFC 0x8BB4FC03
効果音3 0x05 0x8BB405FA

キー上げる 0x20 0x8BB420DF
キー下げる 0x4A 0x8BB4A05F
テンポ下げる 0x84 0x8BB4847B
テンポ上げる 0x04 0x8BB404FB

カラオケ音量下げる 0xB5 0x8BB4B54A
カラオケ音量上げる 0xF5 0x8BB4F50A

DAMボタン 0xB8 0x8BB4B847

一時停止 0xD8 0x8BB4D827

選曲のときと同様に、sendNECコマンドで送信できます。

例えば演奏中止の場合は、irsend.sendNEC(0x8BB4CC33,32);でOKです。

連続操作

押している間ずっと効果を発揮するコマンドです。

早戻し 0x58 0x8BB458A7
早送り 0x38 0x8BB438C7

sendNECStandardを使うことで、sRepeatsの分だけ繰り返すことができます。

uint16_t sAddress = 0x8BB4;
uint8_t sCommand = 0x38;
uint8_t sRepeats = 0;
irsend.sendNECStandard(sAddress, sCommand, sRepeats);

まとめ

DAMは赤外線で簡単にコマンドを送信できます。Arduinoと赤外線LEDのみで簡単にできますので、みなさんもぜひ試してみてください!


2021年06月21日追記

普段行かないカラオケ店に行ったら、デンモクが赤外線モードになっており、偶然持っていたArduinoと赤外線受信モジュールで調査しました。

カラオケ選曲に関するコマンド

メーカーコード: 0x2DD1 (最初の16ビットに固定)

各種キーコード:

予約転送開始 - 0x08
予約転送終了 - 0x09
割り込み予約 - 0x03 (0x08の直前に送信)

0 0x30
1 0x31
2 0x32
3 0x33
4 0x34
5 0x25
6 0x36
8 0x38
9 0x39

- 0x3C

その他キーは近日更新します!

3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1