かっぱの覚え書き

とりあえずなんかメモ書きとか

【劇中再現】ゼロワンドライバー起動音切り替え改造

劇中と玩具の仕様が違うなんて今までだってあったのですけどあらかさまに玩具の仕様ガン無視はやめて欲しいのですよ。ってか劇中でゼロツードライバーとか鳴らすなよ。
そんなわけで再現するとしてぱっと思いついたのが
1、中身を全部作り変える
2、起動音をかき消すくらいの大音量で被せる

1は物凄い大変なので却下。2はうるせえ。

まあゼロツーユニット持ってないし別にいいかーって感じだったんですけどふっと思いついたのが
起動音鳴らしている時にスピーカーの配線切って別の音声鳴らして終わったらまた繋ぎ直せば起動音だけ変更できるんじゃないか?

そのアイディアから今回の改造に至ったわけです。

今回の主要部品は少ないです。3つです。

attiny85
https://akizukidenshi.com/catalog/g/gI-09573/

リレー3V
https://akizukidenshi.com/catalog/g/gP-01347/

dfplaye rmini
https://akizukidenshi.com/catalog/g/gM-12544/

あとは1kΩ抵抗一本と8ピンのICソケットとmicrosdカードと配線ですね。


リレーというのは簡単に言うと配線の間に噛ませてリレーに電流を流すと繋いだり切ったりしてくれる部品です。電流を流すタイミング、時間をattiny85で制御するわけです。


まずはゼロワンドライバーを開けて基板まで辿り着きます。
f:id:une-lettre-arrive:20200913134213j:plain
f:id:une-lettre-arrive:20200913134256j:plain

スピーカーがややこしいのですが左の配線を延長。基板部には新しい配線を取り付ける。右に一本配線を追加する。これはdfplayer miniとスピーカーを共通にするためです。

回路図はこちらです。
f:id:une-lettre-arrive:20200913134033j:plain


仕様としてはユニットを付けた時に押されるスイッチを検知するとリレーに電流が流れ基板側の音声カット。代わりにdfplayer mini
の音声が流れる。4秒後電流を切って基板の配線が繋がるとやってる事は物凄く単純です。

変更スイッチの配線はここに取り付けてください。左に一本付けるだけで大丈夫です。
f:id:une-lettre-arrive:20200913143034j:plain


起動音ですがmicrosdカードに01というフォルダを作りその中に鳴らしたい音声の名前を001.mp3にして入れておいてください。

テストしながらだったので配線は長いままだし端子は切り取ってないですがゼロワンドライバーに空きスペースが多かったのでなんとか入りました。
f:id:une-lettre-arrive:20200913134118j:plain

こちらはYou Tube動画、Twitter動画です


【劇中再現】ゼロワンドライバー起動音切り替え【ゼロツードライバー】

音声を変えれば絶滅ドライバー、エデンドライバーにも対応出来ます。

1つ注意点ですが実際は基板の起動音を完全に消せたわけではありません。消すつもりで作ったのですが基板の音量が凄く小さくなりDFplayer miniの音量で被せている感じです。多分同じスピーカーを使っているので完全に電流を遮断出来ないんじゃないかなと思ってます。それでも目的は達成してるので完成としました。

最後はスケッチを載せます。
最後まで読んで頂いてありがとうございました。



  1. #include <SoftwareSerial.h>
  2. SoftwareSerial mySerial(1,0); // TX
  3. #include <avr/sleep.h>//スリープを使えるようにする
  4. #include <avr/interrupt.h>//割込みが使えるようにする
  5. #define change_pin 1//変更スイッチ
  6. #define relay_pin 2//リレースイッチ
  7. int folder=1,file;//MP3用変数
  8. int start_voice;
  9. void setup() {
  10.   mySerial.begin (9600);
  11.   pinMode(relay_pin, OUTPUT); //リレースイッチ
  12.   pinMode(change_pin,INPUT_PULLUP); //変更スイッチ
  13.   set_sleep_mode(SLEEP_MODE_PWR_DOWN); //スリープモード設定
  14. }
  15.  
  16. void loop() {
  17. if (digitalRead(change_pin) == LOW){
  18.   if(start_voice == 0){
  19.     digitalWrite(relay_pin,HIGH);//リレーオン スピーカーオフ
  20.     delay(1000);//
  21.     file=1;mp3();//スタート音声
  22.     delay(4000);//4秒スピーカーオフ
  23.     digitalWrite(relay_pin,LOW);//リレーオフ スピーカーオン
  24.     start_voice=1;
  25.   }
  26. }
  27.     sleep_mode();//スリープ動作
  28. }
  29. //-------------------------------------------MP3再生-------------------------------------------
  30. void mp3()
  31. {
  32.   //ファイル指定再生
  33.   unsigned char mp3[8] = {0x7E,0xFF,0x06,0x0F,(byte)0,folder,file,0xEF};
  34.    mySerial.write(mp3,8);
  35.   delay(10);
  36. }
  37. //---------------------------------------------------------------------------------------------