TOPへ戻る


KATO E7系新幹線になごでんさんのMP3サウンドデコーダを付けてみた

なごでんさんが配布されているMP3サウンドデコーダをE7系新幹線に実装してそのポテンシャルを確認してみました。

ArduinoベースのDCC用SmileDecoderをベースにMP3再生チップとメモリーカードが実装され長時間MP3サウンドが
再生できるMP3サウンドでコーダになります。

運転方法もガラッと変わり、MP3で音を鳴らしてそれに合わせて運転させます。


KATO E7系新幹線へのMP3サウンドデコーダの取り付け


まずは0.1mm銅版から2mm×50mmの集電板を作ります。


写真の撮影を忘れましたが、集電板には凸凹を付けています。(切りっ放しだと接触が弱いみたいです)


位置を決めます。キューブスピーカの所は座席を2席ほど切り落としています。
配線はAWG30を使用します。


付きました。


キープアライブコンデンサが無いと停車中しか再生できなかったので、電解コンデンサを実装しました。
手持ちの25V220uFを実装


カバーがしまらなかったので、電解コンデンサをリードで延長。
電極はカプトンテープで絶縁しました。


完成です!
MP3サウンドでコーダを入れている車両にはSmileFunctionDecoderをまだ組み込んでいないので、
室内灯がありません。

MP3データの用意

音データは今回はyoutubeから色々取り込みました。走行音は、ちょっと良いものが無く妥協しています。



いろいろな素材の寄せ集めなので、音量を合わせるためにAudacityを使って編集しました。
良く分かっていないのですがとりあえず、録音レベルが-3を超えないように、



大きすぎる場合はゲインを−に。小さい場合はゲインを+に調整しました。

データは、以下のように用意しました。

0002.mp3 ドアが閉まります
0005.mp3 加速音
0006.mp3 減速音
0007.mp3 警笛
0009.mp3 ブレーキ音
0011.mp3 〜 0024.mp3 発車メロディ色々

発車メロディは以下の曲を組み込みました。

金沢 オリジナル曲
新高岡 オリジナル曲
富山 オリジナル曲
黒部宇奈月温泉 煌〜水の都から〜
糸魚川 春よ来い
上越妙高 夏は来ぬ
飯山 ふるさと
長野 信濃の国



スケッチの変更

現在リリースさているMP3V4cに以下の機能を実装しました。

1、F8を発車ベルに割り当てますが、押す度に違う曲を再生するように変更

bells変数追加
extern void notifyDccFunc( uint16_t Addr, FN_GROUP FuncGrp, uint8_t FuncState)
{
  static char bells = 11;   // aya add
  switch (FuncGrp)
  {
F8を押す度に再生する発車ベルを変更
      //      Function F08
      // 発車ベルいろいろ aya
      if  ((FuncState & FN_BIT_08) == 8)
      {
        if (fn_bit_f8 == 0 && gCV118_MP3_F8 != 0)
        {
          fn_bit_f8 = 1;

          mp3_set_volume (gCV58_MP3_Vol);
          delay (10);
          mp3_play (bells);
          bells++;
          if (bells >= 25)  // 発車ベルは0011.mp3〜0024.mp3まで
            bells=11;          
          
#if 0
          mp3_set_volume (gCV58_MP3_Vol);
          delay (10);
          mp3_play (8) ;
          if (gCV118_MP3_F8 == 2)
          {
            delay (10);
            mp3_single_loop (true);
          }
#endif
        }
      }

2、速度が10以下になったら、ブレーキ音のMP3を再生

speed_state 変数追加
extern void notifyDccSpeed( uint16_t Addr, uint8_t Speed, uint8_t ForwardDir, uint8_t MaxSpeed )
{
  static int speed_state = 0;
  uint16_t aSpeedRef = 0;

  //速度値の正規化(255を100%とする処理)
  if ( Speed >= 1)
  {
    aSpeedRef = ((Speed - 1) * 255) / MaxSpeed;
  }
  else
  {
    //緊急停止信号受信時の処理 //Nagoden comment 2016/06/11
    Serial.println("***** Emagency STOP **** ");
    aSpeedRef = 0;
    speed_state = 0;    
  }

  if ( Speed >= 10) // ブレーキ音発生イベント検出
    speed_state = 1;
  if ( Speed <= 9 && speed_state == 1){
    speed_state = 2;
    mp3_set_volume (gCV58_MP3_Vol);
    delay (10);
    mp3_play (9);   // ブレーキ音    
  }

※前進/後進切り替えの対応と9以下でブレーキ音再生はもうちょっとチューニングが必要
DCS50Kだとマスコン20メモリくらいで車両が停止するので、EM13のCV値の再考と加速の設定を
もうちょっと詰めないと運転しづらい(^^;

車両全体のファンクッションは以下のようになっています。

F0 ヘッドライト・テールライト・パンタスパークON/OFF F2 MP3:ドアが閉まります F3 室内灯ON/OFF
F4 車掌灯ON/OFF
F5 MP3:加速音
F6 MP3:減速音
F7 MP3:警笛
F8 MP3:発車ベル

動画



リンク

Smile Function Decoder
あやのぶろぐ
Smile Function Decoder 部品配布

名古屋電鉄
なごでんの日記
DesktopStation/DCC電子工作連合



2017/03/26 1版