MENU

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

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

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

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

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

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

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

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

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

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

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

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

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

SoftwareSerial ss_mp3_player(2, 3); // RX, TX(Arduino側のRX=2, TX=3)
DFRobotDFPlayerMini mp3_player;

#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

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;
bool is_ready_change      = true;
bool 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)) {
    Serial.println(F("Unable to begin mp3_player:"));
    Serial.println(F("1. Please recheck the connection!"));
    Serial.println(F("2. Please insert the SD card!"));
    while (true) { delay(100); }
  }

  Serial.println(F("mp3_player online."));
  mp3_player.setTimeOut(500);
  mp3_player.volume(27); // 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) {
    // 振動センサがHIGH->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 = 0; 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 = 0; i < 2; i++) {
          digitalWrite(LED_PIN, HIGH); delay(100);
          digitalWrite(LED_PIN, LOW);  delay(100);
        }
        delay(1600);
      }
    }
  }

  last_vib_state = 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) {
      digitalWrite(LED_PIN, is_lighting ? LOW : HIGH);
      is_lighting = !is_lighting;
      last_blink_time = now;
    }
  }

  delay(10);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

これが、

こうなって。。。

こうなって。。。

こう。

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

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

いの。。。

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

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

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

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

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

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

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

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

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

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

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

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

  • […] 前回作成・ご紹介したカイザフォンXですが、ありがたいことに好意的に受け止めてくれた方が多く、Twitterでいいねを3,500件ほど、YouTubeの動画再生回数で21万回ほどを記録しました。ありがとうございます。何より嬉しかったのは、カイザフォンXが呼び水になる形で、過去に作ったスマブラガシャット、ジーニアスフルボトル、フルフルレジェンドライダーエボルボトルなどを再評価してくださる方々がたくさんいたことです。結果として、YouTubeのチャンネル登録者数が一気に2倍近くまで増えて、一万人近くまで来ました。「一応こいつの動向はチェックしておくか」と思ってくださる方が一万人近くいるというのは、一般人の自分からすれば中々に恐れ多いことです、ありがとうございます。 […]

目次