地域のおもちゃ病院で診察した案件をご紹介します。
大山のぶ代さんのお声で発声するドラえもんのおみくじです。
四次元ポケットの当たりを押すとランダムでおみくじが引けます。
頭にチャックがあるので、お財布と思いきや、どら焼きでした。
リバーシブルなんですね。
元祖 ドラえもん本舗のドラヤキですね。
依頼者様より症状をお聞きすると、おなかのボタンを押すとおみくじの音声が流れるんだけど、小さいということです。
耳をそばだてて聞くとかすかに大山さんのお声が聞こえます。
この手のおもちゃに多い音源モジュールの電池容量低下で音量が低下したのでしょう。
モジュールは内蔵されているので、ボタン電池切れでおしまいという商品ですね。
現在のエコ志向からは考えられない商品なのでしょうけど、当時としては普通だったのかもしれません。
さて、底面の縫い合わせを開いてモジュールの状態を確認します。
一応、依頼者様に電池を交換する旨をお伝えしましたが、どうせなら外付けの電池ボックス式か以後の電池交換が容易になるようにチャック式にしましょうかと相談したのですが、元通りでというご希望でした。
モジュールがみえました。
LR44でしょうかね、3つで4.5Vです。
電源ボタン等もないので、普段はスリープしていてボタンの押下でランダムにおみくじの音声を流すというシンプルな構成です。
液漏れし始めていますが、致命的ではありませんでした。
おや、大山ドラえもんであれば、昭和か平成の商品なので、10年以上は経過すしていると推測されますが、液漏れで粉々していそうですが、きれいです。
ボタンの接点も研磨しきれいにしておきます。
モジュールの動作も問題ないですね。
やはり電池の容量低下で音量が下がります。
ではでは、ささっと縫い合わせて修理完了です。
問題ありませんね。
余談ですが、実は返却は翌月になるので、その間の電池消費を考え、返却直後に電池を挿入して返却しようかとも考えたのですが、要らぬ心配でした。
スリープ時の待機電流は、0.2uAです。
例えば、マクセルさんのLR44のカタログ値は、1.5V 110mAhです。
ざっと計算すると、スリープ状態でも数年単位は持つので、ささっと組み立てました。
ここで合点がいきました。
既に数十年は経過してあろう製品が、致命的液漏れもなく現存していたのでは、このスリープ時の消費電流もあったように感じます。
また、少し遊んでみました。
せっかく音源が手に入ったので、MP3モジュールとATtinyでタッチセンスでランダム再生させてみました。
開発環境が、Arduino IDEを基本にしているため、ATtinyのAVRマイコンを得意としています。もちろんですが、他も大丈夫ですが、手持ちの在庫が多くダブついている、ATtiny85でインプリしています。
タッチセンスのライブラリも交換されており、MP3プレーヤーのライブラリも充実しているので、サクッとできてしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#include <Arduino.h> #include "DYPlayerArduino.h" #include <CapacitiveSensor.h> // #include <SoftwareSerial.h> #include <avr/io.h> // PB0 Uart out // PB1 Touch sense in // PB2 Pulse out // PB3 LED out // PB4 Uart in // // RST .--+ VCC // LED out PB3 + + PB2 Pulse out <--- 1M ohm -+ // Uart in PB4 + + PB1 Touch sense <------------+ // GND +--+ PB0 Uart out // Compile option clock : internal 1MHz #define OSC_CAL 141 // Calibrated OSC value #define THRESHOLD 1 // Touch sense threshold #define SERIAL_TX 0 #define SERIAL_RX 4 SoftwareSerial mySerial(SERIAL_RX, SERIAL_TX); // Serial pin RX:PB4, TX:PB0 DY::Player player(&mySerial); CapacitiveSensor cs = CapacitiveSensor(2, 1); // uint8_t send_buf[4] = { 0xaa, 0x06, 0x00, 0xb0 }; // dy_mp3_next uint8_t file = 0; void setup() { mySerial.begin(9600); OSCCAL = OSC_CAL; // Set OSC CAL value cs.set_CS_AutocaL_Millis(0xFFFFFFFF); pinMode(0, OUTPUT); // Uart output pinMode(1, INPUT); // ADC input pinMode(2, OUTPUT); // Pulse output pinMode(3, OUTPUT); // LED output pinMode(4, INPUT); // Uart input randomSeed(analogRead(1)); // randum seed in PB1 } void loop() { long total = cs.capacitiveSensor(30); if(total >= THRESHOLD) { // file++; //debug file = random(4); // Generate random number min = 0 <-> max = 3 // player.playSpecified(file); // debug mySerial.println(file); // debug digitalWrite(3, HIGH); player.playSpecified(file + 1); // Random play specified file // player.next(); // for ( uint8_t i = 0; i < 4; i++ ) { // mySerial.write(send_buf[i]); // Play next command // } delay(3000); // Wait 3sec } else { digitalWrite(3, LOW); } // mySerial.println(total); // debug } |
おみくじなので、ランダム数の種をタッチするポートにしています。