フルフルレジェンドライダーエボルボトルをつくる

前回は食玩のコブラエボルボトルの中に色々詰め込んで、プログラミングなしでビルド/エボルドライバーとの連動発光を実現しました。食玩ライダーエボルボトルも同じやり方で発光改造はできそうでしたが、基本的に同じことを2回やるのが好きではないので、もう少し手の込んだものを作ってみることにしました。

th_legend_evol_34

というわけで、今回作ってみたのが『フルフルレジェンドライダーエボルボトル』です。随分名前が長いですが、読んで字の如くで、フルフルすることでレジェンドライダーに変身できるアイテムです。フルフルして変身するレジェンドライダーを選択した後は、キャップを回して選択を確定させる仕組みにしています。これ一本で変身アイテムとして完結させるため、連動アイテムはトラン/ネビュラスチームガンを想定しています。

発想としては、ライダーエボルボトルをエボルドライバーに装填したときに「ライダーシステム!」なんて叫ぶものだから、「そんな大層な名前のシステムならレジェンドライダーにだって変身できるだろう」というところからきています。前に作ったジーニアスフルボトルは各レジェンドライダーの必殺技は繰り出せても変身はできなかった(←正確には、やろうと思えばできたけど盛り込み過ぎになるのでやめた)ので、それを補完する位置付けの敵方派生アイテム、みたいなものです。

 

今回の工作は、『狭いエボルボトルの中にいかに部品を詰め込むか』が全てです。

th_legend_evol_5

なにせこれだけの部品を小さなボトルに詰め込まなくてはならないのです。ブレッドボードは実際には入れないし、ジーニアスフルボトルのときに比べれば部品は少ないですが、それでもどう見たってギリギリです。何も考えずに適当に半田付けしていこうものなら、一発アウト確実。ジーニアスフルボトルのときもスペース的にはかなりギリギリでしたが、今回はそれを上回る余裕のなさです。

当然、何よりまず、部品選びが重要になります。今回使用した具材は以下になります。

毎度おなじみ、Arduino Pro Miniです。ジーニアスフルボトルの改造で使用したものと同じです。サイズ的にはTrinketを使う方が省スペースなのですが、Trinketだと必要なGPIOピンの数がギリギリ足りませんでした。。。

毎度おなじみ、MP3プレイヤーです。これ以外の選択肢は今のところないかと思います。

電源もおそらく、パワーと省スペースを両立できるのはこれ一択だと思います。ご利用の際は充電器も忘れずに。自分は以下のモジュールを使用しています。

これら以外に必要なのは、できるだけ小型のスピーカーと、適当な3mm LED+抵抗器、電源ON/OFF用のスライドスイッチ、それからキャップの回転認識とスチームガンへの装填認識に必要なディテクタスイッチと、あと「フルフル」ギミック実現に必要な振動(傾斜)スイッチです。

 

いつもなら、ここからハードウェアの改造手順を先に紹介して、最後にソフトウェア(プログラム)の全文紹介をするのですが、今回は先にプログラムの紹介を済ませてしまいます。今回のプログラムはとても短いので。たった150行、ジーニアスフルボトルのときのおよそ1/4です。

#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

SoftwareSerial ss_mp3_player(2, 3); // RX, TX
#define LED_PIN    4
#define VIB_PIN    5
#define CAP_PIN    6
#define INSERT_PIN 7

#define BLINK_INTERVAL 200
#define RIDER_COUNTER_MAX 18
#define SOUND_OFFSET 18

DFRobotDFPlayerMini mp3_player;

uint8_t last_vib_state    = HIGH;
uint8_t vib_state         = HIGH;
uint8_t last_cap_state    = HIGH;
uint8_t cap_state         = HIGH;
uint8_t last_insert_state = HIGH;
uint8_t insert_state      = HIGH;
uint8_t rider_counter     = 0;
boolean is_ready_change   = true;
boolean is_lighting       = true;
unsigned long last_blink_time = 0;
unsigned long now = 0;

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
  pinMode(VIB_PIN, INPUT_PULLUP);
  pinMode(CAP_PIN, INPUT_PULLUP);
  pinMode(INSERT_PIN, INPUT_PULLUP);

  // ---------- MP3プレイヤーセットアップ ----------
  ss_mp3_player.begin(9600);
  if (!mp3_player.begin(ss_mp3_player)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin music_player:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("mp3_player online."));
  mp3_player.setTimeOut(500); //Set serial communictaion time out 500ms
  mp3_player.volume(27);  //Set volume value (0~30).

  // ---------- 起動エフェクト ----------
  digitalWrite(LED_PIN, HIGH);
  mp3_player.playMp3Folder(37); // 「ライダーシステム」
  delay(1800);
  digitalWrite(LED_PIN, LOW);
}

void loop() {
  // ---------- ボトルを振ったときの処理 ----------
  vib_state = digitalRead(VIB_PIN);
  if(last_vib_state == HIGH && vib_state == LOW){
    if(digitalRead(CAP_PIN) == LOW){
      if(digitalRead(INSERT_PIN) == LOW){
        // キャップがロックされて、スチームガンに装填されている状態で振られたとき
        if(is_ready_change){
          digitalWrite(LED_PIN, HIGH);
          mp3_player.playMp3Folder(rider_counter + SOUND_OFFSET); // 「エボリューション」+ライダー名+変身音
          delay(10000);
          is_ready_change = false;
        }else{
          mp3_player.playMp3Folder(38); // 銃撃音
          for(int i; i<2; i++){
            digitalWrite(LED_PIN, LOW);
            delay(100);
            digitalWrite(LED_PIN, HIGH);
            delay(100);
          }
          delay(1600);
        }
      }else{
        // キャップがロックされて、スチームガンに装填されていない状態で振られたとき
        ;
      }
    }else{
      if(digitalRead(INSERT_PIN) == LOW){
        // キャップがロックされず、スチームガンに装填されている状態で振られたとき
        ;
      }else{
        // キャップがロックされず、スチームガンに装填されていない状態で振られたとき
        rider_counter++;
        if(rider_counter > RIDER_COUNTER_MAX){
          rider_counter = 1;
        }
        mp3_player.playMp3Folder(rider_counter); // 振る音+ボトル名
        for(int i; i<2; i++){
          digitalWrite(LED_PIN, HIGH);
          delay(100);
          digitalWrite(LED_PIN, LOW);
          delay(100);
        }
        delay(1600);
      }
    }
  }
  last_vib_state = last_vib_state; 

  // ---------- キャップを回したときの処理 ----------
  cap_state = digitalRead(CAP_PIN);
  if(last_cap_state == HIGH && cap_state == LOW){
    digitalWrite(LED_PIN, HIGH);
    mp3_player.playMp3Folder(39); // ロック音
    delay(2000);
  }else if(last_cap_state == LOW && cap_state == HIGH){
    digitalWrite(LED_PIN, LOW);
    mp3_player.playMp3Folder(40); // ロック解除音
    delay(2000);
  }
  last_cap_state = cap_state;

  // ---------- スチームガンに装填したときの処理 ----------
  insert_state = digitalRead(INSERT_PIN);
  if(last_insert_state == HIGH && insert_state == LOW){
    if(rider_counter > 0){
      digitalWrite(LED_PIN, HIGH);
      mp3_player.playMp3Folder(41); // 装填音+「ライダーシステム」+待機音
      delay(3500);

    }
  }else if(last_insert_state == LOW && insert_state == HIGH){
    if(rider_counter > 0){
      digitalWrite(LED_PIN, LOW);
      mp3_player.playMp3Folder(42); // ボトル解除音
      delay(2000);
    }
    is_ready_change = true;
  }
  last_insert_state = insert_state;

  // ---------- 変身待機中の発光処理 ----------
  if(digitalRead(INSERT_PIN) == LOW && is_ready_change){
    now = millis();
    if(now - last_blink_time >= BLINK_INTERVAL){
      if(is_lighting){
        digitalWrite(LED_PIN, LOW);
      }else{
        digitalWrite(LED_PIN, HIGH);
      }
      is_lighting = !is_lighting;
      last_blink_time = now;
    }
  } 

  delay(10);
}

基本的には、振動スイッチが震えたときに「別のどのスイッチが押されているか」で挙動を変えているだけです。何も押されていない状態で震えればライダー選択、キャップのスイッチと装填認識のスイッチが両方押されているときに震えれば変身音再生、といった具合です。こういう仕組みにしておくと、トラン/ネビュラスチームガン側は無改造で変身遊びができるようになります。

 

それでは、ハードウェアの改造手順の紹介に入ります。

th_legend_evol_1

とにもかくにも分解しないと始まらない。。。のですが、今回はもう、本当にネジが固かった。誇張なしに、諦める寸前でギリギリ回ってくれた感じです。結局最後まで回せなかったネジもあったのですが、幸い、外せなくても問題ないところだったので大丈夫でした。

th_legend_evol_2

とりあえず、一番加工しやすそうなこの部分から。穴を貫通させて、

th_legend_evol_3

フロントパーツを外して、前から3mmLEDを通すと、

th_legend_evol_4

なんか良い感じにハマってくれました。

 

今回はとにかくスペースが足りないので、少しでもモノが入りそうなところにはどんどん押し込んでいきます。

th_legend_evol_8

認識ピンのプレート部分。まずここの縁を少し削って、振動スイッチを埋め込みました。

th_legend_evol_10

次に、上の方にディテクタスイッチを埋め込みます。これは、ボトルの装填認識用です。

th_legend_evol_11

ちょっと見にくいですが、こんな感じでトラン/ネビュラスチームガンに装填すると、スイッチが押し込まれた状態になります。

th_legend_evol_12

認識ピンのプレート部分に埋め込んだ部品からの配線をボトルの内側に通すため、ボトルの裏面に大きく開口部を設けます。

th_legend_evol_13

そしてここに電源用のスライドスイッチをはめ込みます。

th_legend_evol_14

認識ピンのプレートパーツをはめ込んで内側から見てみると、こんな感じ。なんとか収まってくれていますが、これに配線をした後も収まってくれているかどうかは未知数。

th_legend_evol_16

次にキャップの回転を認識するためのディテクタスイッチをはめこむための溝を作ります。

th_legend_evol_15

こんな感じでスイッチを設置すれば、キャップが回転したときだけスイッチが押されるハズです。

th_legend_evol_17

元々のスイッチの形状だと半回転ごとにスイッチが押されてしまうことになるので、内側の片方の面パーツを削っておきます。

th_legend_evol_18

さらに、キャップのラベルが正面を向いているときにスイッチがずっと押されている状態にしたいので、残した面パーツ側にプラ板を重ねて厚みを持たせます。

 

ここまではまあ、順調と言えば順調です。何せまだ配線をしていないので。ここからが本当の地獄だ。。。

 

th_legend_evol_35

 

今回の配線はこんな感じです。この程度であっても実際にやるとなるとなかなかに大変です。

 

th_legend_evol_19

これが、

th_legend_evol_20

こうなって。。。

th_legend_evol_21

こうなって。。。

th_legend_evol_23

こう。

さらっと書いてますが、とにかく一個間違えて半田付けしてしまうとやり直すのが大変なので、頭の中で都度最適解を考えながら半田付けをする、ということを繰り返していました。多分配線だけでトータル5時間ぐらいかかった気がします。

 

さて、とにもかくにも配線は済んだので、後はパーツが全部中に収まってくれるのを祈るのみ。。。

 

th_legend_evol_25

 

 

いの。。。

 

th_legend_evol_27

 

ギリギリ収まりきりませんでした。ネジを締め込むと無理やり閉めれないことはないのですが、そうすると配線が甘いせいかなんなのか、音が鳴らなくなってしまうという。。。ちょっと悔しいですが、やり直す気力もないので、ここで手打ちとしました。まあ、普通に遊べるし良いかなと。

 

th_legend_evol_28

というわけで、フルフルレジェンドライダーエボルボトル、とりあえず完成です。動作については、この記事トップの動画をご確認くださいませ。

 

th_legend_evol_34

発光が結構良い感じで気に入っています。

 

th_legend_evol_31

トランスチームガンに装填したところ。この状態で銃口を上に向けると、ボトルの振動(傾斜)スイッチが反応して変身音が発動する、という仕組みです。そのため、トランスチームガン側は電源を入れておく必要がありません。というか、入れてしまうとトランスチームガン側の音声と重複してしまってワケのわからないことになります。

動画では銃口を上に傾けるときに一緒にトリガーを引いていますが、あの操作に電子回路的な意味はありません。ああすることで、「トリガーを引くことで変身している」という気分が味わえるというだけです。

 

th_legend_evol_36

ということで、フルフルレジェンドライダーエボルボトルでした。これが、私のビルド関連の最後の工作になります。

最後ということで、記念(?)に自分が手を加えたビルドのアイテムを全部並べて写真を撮ってみました。大から小、ピンからキリまで全部並べてみましたが、結構色々やったなあ。。。

これだけ色々なことができたのは、とにもかくにも素材が、『仮面ライダービルド』という番組が良かったからに他ならないと思います。科学を扱うというテーマも、自分に合っていたのだと思います。この一年、本当に楽しませてもらいました。製作してくださったスタッフの方々にお礼申し上げます。ありがとうございました。

次回作の『仮面ライダージオウ』ですが、これはもう、バンダイ様も相当気合が入っているようで、玩具はすごく出来が良さげですし、そもそもレジェンドライダーが題材なので、自分があれこれカスタマイズしてどうこうする必要がそもそもなさそうです。というわけで、『ジオウ』については、とりあえずただのいち視聴者として、長男と一緒に観て楽しもうかなと思っています。ワクワク。

 

 

 

 

 

。。。あ、すみません。一個完全に忘れていました。やっつけ仕事でこんなんも作ってました。現物も写真も残っていないので動画だけ。

 

しょうがない、思いついてしまったんですもの。