【備忘録】Teraterm Ver.5系 デバッグモード使えない

皆さんは、Teraterm(テラターム)というターミナルソフトをご存じだろうか?

今回は、プログラムの開発環境をWindowsOSを10から11にしたというタイミング起きた備忘録となります。

数あるターミナルソフトのなかでもteratermを使ってします。

マイコンなどのシリアル通信につかったり、Linuxのサーバーなどにリモートログインする際などでも重宝するのですが、特にUART通信する際の動作確認に使っていたります。

アスキーコードはもちろんですが、HEXやバイナリでのデバッグモードも実装されており大変重宝しております。

おなじみのArduino IDEにもシリアルモニタはあるのですが、バイナリやHEXモードがないのと通信のためだけにIDEを立ち上げるまでもない場合は、Teratermにお願いしています。

さてさて、何が備忘なのかというと、2024年5月現在、Teratermは、Ver.5版が最新です。

今まではVer.4系を使っていたのですが、OSを11にしたついでなので、Ver.5系にUpdateしました。厳密なVerは、5.2です。

が!

ここで問題が出ます。

前述のデバッグモードにバグあり、TERATERM.INIを編集しDebug=onにしてもShift+ESCで切り替わらないのです。

原因不明で当初かなり困りましたが、検証のためVer.4系もインストールしたところ、Win11でも問題なくデバッグモードが動作するので、明らかにWin11+Ver.5系の問題と判明しました。

恐らく、早かれ遅かれ重要な機能なのですぐバグFixはされると思いますが、備忘録として載せておきます。

ものしり図鑑 タッチペン 電源スライドスイッチの故障における考察

(過去のスタッフブログ記事からの転記となります。)

故障の多い、アンパンマン おしゃべりものしり図鑑のタッチペンにある、電源用のスライドスイッチの故障原因に関する考察記事となります。

交換した電源スイッチを分解してみると、電極の所々が黒く変色しております。局所的ではなく、3極全てにおいてみられます。実は、分解前に接点復活剤をスプレーしているので、異物や錆などがあれば少し擦れて取れているかもしれません。

黒く黒変

因みに、以前同じスイッチを分解し接点を研磨して復活できるか試したことがあるのですが、このスライド側のバネの間に耐水ペーパーを挟んで擦ったところ、バネが開いてしまい接触ができなくなってしまいました。頑張ってピンセットで戻そうとしたらバネが折れてしまいました。

電源スイッチのオーバホールはやめて交換した方がよさそうですね。

さて、話を電源スライドスイッチの故障に戻します。

このものしり図鑑のタッチペンだけが、なんでこうも接触不良が多いのか?

他のドクター様方々も悩んでおられると思います。

アンパンマンのタッチペンは、他のシリーズもあるのに、なんでこのものしり図鑑シリーズのタッチペンだけにこんなにも故障が多いのか?

回路的には、以下の図のようになっております。電源のON/OFFの制御方式は、どのシリーズのタッチペンも負極側で制御しております。タッチペンの保管時は、電源をOFFにしているだろうから、電子回路の負極は、コンデンサー用のディスチャージ抵抗に常時つながっております。一方、電池の負極は、電源スイッチ内の端子に付いたままです。他のシリーズのタッチペンも負極側で電源を制御しており、大きな仕様の差はありません。

以前の修理時は、スイッチの導通が、ON側だけ接触不良を起こしていた経験があります。その時は、分解していなかったのですが、ON側とOFF側で何か故障の原因となる有意差があったようです。

錆(さび)犯人説を考えてみました。

この電極の金属は、分解した際に少し調べてみたのですが、ネオジム磁石にも引っ付きませんので、恐らく材料は、銅と推測されます。

また、スイッチの製品仕様によると、Ag Platedとあるので、銅に銀メッキされているようです。銀なので、イオン化傾向の低い金属を利用した防食処理ですね。これも磁石には引っ付きません。

保管時は、電池が挿入したままになるので、浮いた電極には、電池の自然放電で電子がよりリッチになっていると予想されます。

こちらの論文では、負極側に腐食が出やすいと示されておりました。おもちゃ修理で負極のバネがやたら腐食する理由のひとつがこれではないでしょうか。

さて、一般論として、金属の腐食の反応式から、金属に錆が出るには、電子と水と空気が必要なのです。ですが、このスイッチには、防食のため銀メッキが施されております。

ご依頼者様にお聞きすると、1年程使っていると、この接触不良が頻発してきたとのことです。従って、機械的な導通用のバネが、スライドを繰り返しているうちに銀メッキが局所的に剥がれてしまい、銅が露出してしまったと思われます。

雰囲気内には、どの端子にも同様に水分と空気が触れるのですが、露出した銅が、より空気や水分に曝露されている電極の方がより腐食が進行しそうですね。

また、それを局所的に加速させそうな理由の一つが、電池ボックスの負極に常時つながっていたので、電子がよりリッチに供給されていたためかもしれません。

しかし、この”ものしり図鑑のペンだけ”に出るというメカニズムを説明するには説得力がありません。

このような使い方は、他のタッチペンも同様に起きて当然です。

例のひとりブレストをやります。

  1. 過去の修理事例では、ON側、つまり電池ボックスの負極側につながっている端子側でのみ導通不良があった。
  2. 別の修理事例では、電源のスライドスイッチのON/OFFの導通には、問題がなかったが、スイッチのノブを噛ませるカバーの滑りが悪くなってON位置まで正常に移動できなくなっていた。
  3. 今回の事例では、銅の錆のような黒変は、3つの電極の全てに広がっているようだ。
  4. スイッチの仕様書によると電極の表面は、防食のため銀メッキされている。
  5. 回路的な電源の制御方式や乾電池の電圧は、他のタッチペンと同じ仕様である。
  6. 電源スイッチも他のタッチペンと同じ形式だ。
  7. スイッチのノブカバーのスライド不良で電源が入らないという不具合は、ネットの他の修理記事でも見たことがあった。

そこで、ものしり図鑑特有のメカニカルな問題の犯人説も踏まえ考えました。

まず、銀メッキは、イオン化傾向から腐食耐性がありますが、ON/OFFの切り替えで容易に削れて取れてしまうように思います。温泉地などでもなければ、Ag自体の変化はしないだろうから、黒変した部分は、メッキが削れて露出した銅が酸化した酸化銅と考えた方が良いだろう。最終的な接触不良の犯人は、この酸化銅として正しいと思われます。。

ですが、ものしり図鑑だけが、故障しやすい理由は、ノブカバーのスライド不良事例からも、恐らくものしり図鑑のタッチペンの構造的な問題が要因である可能性が高そうです。

構造図

図の通り、ノブのカバーの滑りが悪い場合、自ずとスイッチ本体側のノブを回転させるような方向に力が掛かります。スライドする内部の電極が新しいうちは、バネの応力も効いているので、少し位開いても接触は保たれます。

しかし、そのような使い方が、数か月続くとどうでしょう。先の1年くらいで接触不良が発生してきたということからも、次第に電極を挟んでいた内部のバネが、物理的に開いてきたのではないでしょうか?

内部のバネ

ある程度の開きによって、接触不良となる場合が頻発します。これは、研磨するために紙やすりを挟んだ時の接触不良で実証ずみでした。開きが小さいうちは、ON/OFFの繰り返しで何とか電源ONはできるレベルで、さらに開くともうON/OFFの繰り返しでは、改善しません。

さて、ここからが、核心です。

① スライドスイッチのノブカバーのズレから、ON/OFFの接触が悪く、そのままの状態でON/OFFの操作を1年くらい続けていた。

② スイッチ内部のバネが、開き始めてきたが、バネの応力で辛うじて接続していたが、応力をもってしても、接触を保てないようになってきます。

ここから、腐食の発生につなげます。

このようにスライドする内部バネに開きがでると、こちらのスイッチメーカーのご使用の注意にある(5)の③の※印にヒントがありました。

スイッチの接点は、切換が行われることによって接点表面が摺られ新しい面による接触安定が保たれる構造

なるほど、バネが開くと接点表面が擦れなくなり、接触不良の原因になるのですね。その理由は、バネの開きによって、水分、空気と触れ合う面積が大きくなり、腐食を誘発し、かつ接点の移動で擦れ合うことがなくなり腐食も広がるという可能性を考えました。

接点の腐食は、他のタッチペンでも発生するが、ものしり図鑑の電源スライドスイッチのバネのような大きな開きにはならないから、ON/OFFの繰り返してで少々発生した腐食も擦れて接触を保っていたという点です。

③ ON/OFFの繰り返しで、擦れて剥がれた銀メッキの部分に、水分と空気がより触れ合う時間が多くなり、曝露した銅が腐食し始めます。

④ さらに、その状態でしばらく保管するため、さらに腐食が進行して最終的に完全な接触不良を起こしたという流れです。

まだ不良解析数が少ないため、私の考察は予想の範囲を超えませんが、ものしり図鑑のタッチペンの電源スライドスイッチが、特に故障しやすい原因を予想してみました。

メーカー様の故障解析でも、恐らくこのような不良解析を行い、製造に部品選定の見直しなどをしているかもしれませんね。

何かのご参考になれば。

無線機のバッテリー交換

最近、PSVitaの修理の依頼可否の質問がありました。

PCVitaの内蔵バッテリーを自身で交換したく分解したが、バッテリーのコネクタを基板から剥がしてしまったそうです。既に数台過去に同じようなことをしていたそうです。

『工事の変更』のため、技適の再認証を受けていない場合は、電波法違反です。


電波法の規定に基づき、“1年以下の懲役又は100万円以下の罰金”の罪に問われます。 更に、重要な無線局に妨害を与えると、“5年以下の懲役又は250万円以下の罰金”に処せられることになります。 軽い気持ちで始めると、大変なことになります。

電波法抜粋 – 東海総合通信局

ゲーム機に限らず、スマホなどのタブレット端末でも最近の機種は自身でバッテリー交換できなくなっています。

交換に起因する事故が多くなっているような記事をみたことが原因のようですね。

スマートフォンについて総務省の登録修理事業者の業者制度があるので、その業者にお願いすれば電波法違反にならずにバッテリーを交換できます。

ですが、今回のゲーム機についてとなります。

巷には、知ってか知らずにかバッテリーなどの交換や修理で分解する記事やYouTube動画を拝見します。

もちろんですが、分解や修理自体は何ら違法ではありません。

勘違いする方が多いのですが、もう一度書きます。

分解や修理自体は何ら違法ではありません。

その後が問題なのです。

いわゆる技術マークが付いた商品(無線機)を分解など行った場合、その時点時点で『変更の工事』になり技適の除去をしなければ違法になります。

スマホの場合ですが、他の無線機も同様でこちらで詳しく説明がなされています。

私が幼少の時分は、TVのCMでよく違法電波のCMを目にしていました。

高出力の無線機を搭載したトラックや、アマチュア無線の方によって、自宅のTVに映りが悪くなりというやつです。

CM内でもそのような場合は、速やかに通報せよとあったのを覚えています。

相談のされた方も、『たかがゲーム機でそこまで』という返答でしたが、インターネットで聞きかじった浅はかな知識で分解してしまったのでしょうね。

インターネットの偽情報

ごらんの皆さん、インターネットの偽情報やそれによって自身が誤った認識をしてしまう危険性をご存じでしょうか?

エコーチェンバー現象とも呼ばれています。

自分の学生時分は、インターネットもまだ黎明期で商用化もされておらず、研究室のワークステーションのUNIX端末からメールやネットニュースやブラウズをしていました。

もちろんですが、インターネットに掲載されていた情報は、まだ黎明期ということもまた一部の政府機関や軍事関係、また大学の研究の一環として利用していることが多く情報の信憑性を問うという事態は多くありませんでした。

ですが、海のものとも山のものとも知れない代物なので、共通認識で『インターネットの情報はちゃんと確認する』です。

ですが、その後90年代後半に商用化され、一気にパソコンの普及や現在に至ってはスマホなどのモバイル端末の普及で、『インターネットの情報は怪しいことが多くなった』と感じています。

当医院もYouTubeチャンネルをもっておりますが、YouTubeの世界は、広告収入を稼ぐために『集客のための偽情報』をTOPがに貼りアクセス数を稼いでいる方を拝見します。

チャンネルオーナーは、すぐ偽情報で報告されてしまい、削除対象になるのですが、その間に閲覧した人々が誤認識してしまいます。

※なんか、何か魔法う使いのような二人のキャラクターが、話題の掛け合いで解析をする動画なんて最悪ですよね。

皆さんは、注意されてはいると思いますが、特に検索で入力したキーワードは、集約されそのキーワードに沿った情報が、その方のおすすめに集まります。

似た現象を『エコーチェンバー現象』と呼ばれており、偽情報が正しいかのように、さらに流布してしまう『偽情報の拡散』に寄与してしまいます。

収益化のために集客化にやっきになっている方は、この傾向が高いです。

閲覧する方は、まさしく『鵜呑み』にはしないと思いますが、他の情報源やご自身の考えと照らし合わせて総合的に判断すべきです。

ワクチン問題や環境エコなど、情報発信している自身の誤った認識を単に述べているだけなのに、正しいかのように話したり掲載したりするもんだから、鵜呑みする民は信じちゃうんですよね。

お昼のTVワイドショーも、嘘じゃないけど、もう信じちゃいかんレベルですし。

一昔前のヤフー知恵袋やヤフコメなんかもその傾向が強く、ヤフコメ民と揶揄もされるしまいです。

あなたのその情報は本当に正しいですか?

一部の意見に過ぎないことをあたかも総意のように流布していませんか?

一部の情報としては認識して、正しい情報なのかどうかは、その他の情報も総合的に判断していきたいですよね。

因みに、デジタルデトックスって知っていますか?

デジタル端末は、便利な一面もありますが、SNSなど精神的な悪影響な一面もあるのでストレス軽減しないといけないね。

おもちゃドクターの要件

当医院のホームページをご覧の皆さんは、恐らくおもちゃドクターとして診療にあたっておられる方がおられるかと思います。

先日、所属している協会の案内に、おもちゃ修理に関するクレームの紹介があった。

※ここでその詳細についてコメントするつもりではありません。

このようなクレームは、めずらしいことではなく定期的に協会側に入ってくるそうです。

独立したまったく協会とは無関係なおもちゃ病院のクレームまで協会に入ってくるそうです。

診療にあたったおもちゃ病院に対して直接クレームを申し入れたが、怒りが収まらず協会にも申し入れたのでしょうか。余程の恨みがあったのでしょうか。

実は、当、宅配おもちゃ病院にも、地域のおもちゃ病院に依頼をしたが、修理不可能というか故障した場所以外が壊されてしまったという相談があります。また、修理をお願いしたが、どうみても破損が激しく損傷が広がって返却されたという悲しい相談があり、そのような事情を鑑みて当医院にてあらためて修理を受け付けすたという案件もあります。※因みに案件数も少なくないです。

私も、以前所属していた、おもちゃ病院で他のドクターが依頼者様とのトラブルが起きたという経験があります。

さて、ここで、本題のおもちゃ修理に関する技術的なスキル以外に必要な要件があると思います。

インターネットで修理のスキル自体のないドクターに診断されたクレーム記事を拝見します。

まぁ、何とも説明責任を果たしていない残念で仕方がない事故が起きています。

そのような場合、依頼者様は、堂々とクレームを申し入れてください。

あらためて、病院スタッフに必要なスキルですが、

  • 依頼者のレベルに合わせた会話のできるヒアリングスキルが必要。
  • お客様対応窓口などの”言葉使い”のできるスキルが必要。
  • 進捗管理やトラブル対応などの経験が必要。
  • 安全管理。

時々拝見しますが、ドクター募集の要件に、『おもちゃドクターには何の経験やスキルもいらない』なんて絶対”ない”です。

誤診、判断ミス、作業ミス、あやまって壊してしまったときは、正直/正確にお伝えし謝罪する。瑕疵など場合によっては、賠償をし誠意対応をする。

皆さん、これできますか?

このようなことができてやっと、おもちゃドクターではないのでしょうか。自分はそう思います。

依頼者を目の前にして工具を使用して作業をするのですから、何の経験もスキルもいらないなんて、もう一度書きます、そんなことないです。

おもちゃドクターとは人間だから、ミスなく万能なんてないんだから、ミスをしたら謝罪します。

そのミスが、通常作業上起こりうる事象であれば、その旨説明すればと思います。

そのような説明でも納得できず、損害賠償を請求されるようであれば、受付時の了承事項などで対応すべきと思います。

恐らく、いきなり『壊しても文句いわんでくれ』などと、お客様対応の経験のない方が対応してしまうと、火に油を注ぐ事態になります。

悲しいかな、壊れたおもちゃを診て、言う必要のないことまで言ってしまうドクターがおられました。

お孫さん程のママやパパさんに説教に近いことを言ってしまうのです。

  • 保管方法や使い方が悪いと説教をし出す。
  • 依頼者自身で修理をしてしまったことを叱責する。
  • 取り扱い説明書を読んでいないなどの遊び方を知らないことではだめだよと言ってしまう。

また、最近気づくこともあります。

  • 昭和世代では通じた冗談が通じない。
  • セクハラを容認するような言葉を言ってしまう。
  • なぜか、メーカー批判をする。修理できなかったのは、自分の技量不足ではなく、おもちゃの設計にあったという。

このようなトラブルの頻度は多くはないのでしょうが、活動の姿勢という意味合いで記事にしました。


クリスマス スノードーム スノーイングファイバーツリー改造

ちょうど一年前ですが、スノーイングファイバーツリーという商品の修理依頼を受けました。

いわゆるスノードームの類でスチロール製の粒を雪に模しファンでドーム内を下部からツリーの頂上へ拭き上げ雪を降らすという代物です。クリスマスキャロルをメロディとして鳴らし、クリスマスのキャラクター達が底面に溜まった雪粒を中央に掻いて拭き上げの吸い込み口に落とし込みます。

当時の依頼者の方は毎年クリスマスの時期にご使用になられていたそうですが、サンタやトナカイの回転がせず雪が降らなくなったり、クリスマスのメロディも鳴らなくなったそうで、各所修理を行いました。

無事、修理も完了しましいた。その際の動作状況の動画がこちらです。

動作状況

実は、この修理時に『なんて素敵なのだろう』と自分も欲しくなってしまいました。

既に販売から数十年経過し同じ商品は、中古でも入手は困難です。もちろんですが、新商品としても販売はされていないようです。

そんなことを考えつつ1年が経過した時にちょうどフリマサイトで似た商品が出品されておりました。

完全に同一の商品ではなく、メロディも故障して鳴らないという故障品だったのですが入手し同じように修理と改造をしようと考えた次第です。

今回はこの新規に入手したクリスマススノードームの修理改造に関する記事になります。

やることは、以下の通りです。

  • メロディ以外の機能は大丈夫か?
  • メロディが鳴らない原因は何であるか?修理できるか?
  • 電子オルゴール化できるか?
  • その他の箇所は問題なく可動するか?

等々です。

早速開封し調べてみるとメロディが鳴っていなかった原因は直ぐ判明しスピーカーの故障でした。また、その他の機構部も稼働できていますのでメンテナンスのみで再び同じように動作できます。

が!

スピーカーが玩具用の小さいスピーカーで音質が悪いです。

また、実装されたメロディも簡素な8bit諧調のよくあるヤツです。

この256諧調のメロディは好きになれません。

256諧調メロディ

ファミコンのBGMですね。

ボスキャラが現れそうです。

ということで、今回も前回と同じように和音の電子オルゴール化します。

最終的にはこのようになります。

完成の姿

なんて素敵なんでしょう。癒されますね。

インプリの詳細は以下のようになります。

ものまねハムちゃんとバズライトイヤー

こんな遊びをしてみました。

インタラクティブ版のバズライトイヤーですが、掛け合いの相手がいないので、ものまねハムちゃんに相手をしてもらいました。

案外正確にオウム返ししてくれますね。

ものまねハムちゃんとバズライトイヤー

ワンボードMP3プレーヤーをATtinyのタッチセンスでコマンド発行できればこんなのもできます。乾電池2個で実現できるというのは便利ですね。


DFPlayer ATtiny13a用環境のライブラリ更新

※旧スタッフブログから移設転記記事となります。

スタッフブログにて、ATtiny13aにて、振動センサーを利用した1時間のお休みタイマー付きのDFPlayer Miniの再生環境を紹介しました。記事は、こちら。

利用をしている、Nerd Ralph氏によるシリアル環境のBug fixと各種アップデートを兼ねて新たにGit HUBにライブラリ picoUARTとしてを公開されました。 Git HUBのライブラリのダウンロードは、こちら。

そこで、DFPlayer miniで構築しているライブラリもそれに合わせて更新をします。今回は、その紹介記事となります。 ライブラリのツリー構成は、以下のようになります。

では、次にそれぞれの変更内容を紹介します。

(旧)DFPlayer_Mini_Mp3.cpp → tiny-DFPlayer_Mini.cppへファイル名変更

“DFPlayer_Mini_Mp3″を”tiny-DFPlayer_Mini”としました。また、#includeしているシリアル通信用のライブラリを変更し、シリアル通信用の関数TxByteをputxに修正します。その他は、そのままです。

DFPlayer_Mini_Mp3.h → tiny-DFPlayer_Mini.hへファイル名変更

ヘッダファイルは、ファイル名のみの変更となります。

pu_config.h

pu_configは、ボーレートとTXピンとRXピンの設定をします。

4行目にボーレートを設定します。

また、8行目にTXに使用するPORTBのBit番号と9行目にRXに使用するPORTBのBit番号を記載します。

ここで注意ですが、書式は、B,0のような書式となります。

最後にATtiny13aでインクルードしていたライブラリ名も”DFPlayer_Mini_ATtiny13a.h” →”tiny-DFPlayer_Mini.h”に変更しておきます。

以上が、ライブラリの更新内容の説明となります。シリアルプリントも使えるようになったのでかなりうれしい更新となります。

ATtiny13aによるSleep タイマー付き DFPlayer mini 再生環境の構築

※旧スタッフブログから移設転記記事となります。

ATtiny13aによるSleep タイマー付き DFPlayer mini 再生環境の構築  

■概要

まず、概要からご説明します。

SNOOPY & FRIENDS DIORAMAという、加藤工芸社製のジオラマ電子オルゴールの修理依頼がありました。

過去に1度修理を行った経験がありますが、残念ながら、COBの制御ICの故障で元の状態には修理できませんでした。記事は、こちら。

そこで、DFPlayer miniというMP3/WAVプレーヤーを換装内蔵して代わりに演奏をしようという修理をいろいろ検討しておりました。詳しい作業内容は、こちらを参照ください。

さて、今回は、その修理記事を参照された方から、お手元にある同じジオラマ 2台も同じように光らなくなり音楽も演奏しなくなったとのことで修理して欲しいとの依頼がありました。詳しい作業内容は、こちらを参照ください。

2台のどちらも、制御ICの故障で交換もできませんでしたので、初回と同様にDFPlayer miniでの換装をご提案したのですが、お気に入りのスヌーピーの音楽が聴けないのなら、換装は不要とのことでした。

さて、今回のスタッフブログは、実は、その修理に際し、旧来のDFPLyer miniの再生環境をバージョンアップ検討をしていたので、実際のインプリはできませんでしたが、最新のATtiny13aによるDFPLyer miniの再生環境についてご紹介します。 検討の経緯を時系列にすると、以下のような順序です。

  1. 初回は、作業時間の関係でATtiny85による単なるSDカードに保存されている音楽ファイルを再生するといったものであった。こちらを参照。
  2. 制御ICをより廉価なATtiny13aに移殖し、曲のスキップ機能をSW-420の振動センサーで実装。こちらを参照。
  3. 追加機能にタイマーによるSleep機能の追加とSleep時の消費電力低減の効果向上。←今回のご紹介記事内容。

さて、今回のバージョンアップとは、どのような内容かをご紹介します。

制御ICは、ATtiny13aのままで、振動センサーもSW-420のままとなりますが、タイマー機能とそれに伴う、タイマー切れ時のSleep機能を追加しました。

このSleep機能とは、当初も検討をしていたのですが、長らく宿題にしていた検案でした。

それは、なぜか?

まず、タイマー機能は、SNOOPY & FRIENDS DIORAMAをご覧になられたことのある方は、ご存知かもしれませんが、しばらく演奏を楽しむジオラマですので、うっかりウトウトと居眠りや眠ってしまった場合、乾電池が減ってしまいます。

ジオラマの取説には、タイマー機能は、見つからなかったのですが、恐らくですが、曲が一巡すると止まるのだと信じています。

取説には、その旨の記載が無く、永遠ループ再生は、仕様的にあり得ないですからね。

ATtinyで換装した場合も、一巡したら演奏停止させてもいいのですが、繰り返し演奏中に、スキップコマンドを発行し、次の曲を演奏すると、その曲の演奏の終了と共に繰り返し演奏モードが解除され、そこで止まってしまう事態に遭遇しました。

さて、困りましたが、であればということで、タイマー機能を実装してしまおうと考えたまででした。

停止時は、Stopコマンドの発行同様に待機状態なので、そのままでは、消費電力も抑えることができません。

そこで、タイマーで停止した際、ジオラマ全体をSleepさせ乾電池の消費を抑えることにしました。

タイマー機能ですが、最終スキップコマンドから1時間の演奏でDFPlayerとSW-420の電源を落とし、ATtimy13aもSleepするという流れです。

では、機能方針が決まりました。それぞれの項目についてさらに検討します。 では、回路の検討とプログラムの検討に項目を分けます。

■回路検討

後述のタイマーなどプログラムが完成したという前提で回路を検討します。 では、Sleep時の消費電力削減について検討します。

機能追加前のDFPlayer mini再生環境のブロック図です。

ブロックは、大きく分けて、ATtiny13a, SW-420, DFPlayer miniの3ブロックです。

最初に、DFPlayer miniの消費電力についてです。

平時の再生時は致し方ないですが、前述のとおりタイマー切れ後は、やはりSleepしてもらうのですが、このDFPlayer miniは、Sleepコマンドを発行して止めても約15mA流れっぱなしです。※実測は、12mA@Vcc = 4.5V 程でした。

うーん、Sleepしてても結構流れており、電池が消耗します。こちらのマニュアルの5.2 の注意点の5にもっと消費電力を落としたければ、ユーザで電源を制御しろとあります。

そこで、ATtinyでDFPleyerとSW-420の電源をSleep後にスイッチングして完全に切ろうと思います。回路を検討します。

SNOOPY&FRIENDS DIORAMAの回路図を解析すると、LEDの点滅モジュールの起動管理をCOBのICが担っており、S8050を負極電源のスイッチングに使用しておりました。ベース抵抗は、300Ωが付いておりましたが、同様にATtiny13aでもトランジスタのスイッチングで電源管理を行います。

IC電流のMax値も考え、スイッチングトランジスタとしては、まずはS8050の使用の前提でベース制御をATtiny13aのポートで行います。

検討回路でベース抵抗の適正値を計算します。

S8050のVBE(sat) = 1.2Vです。hfeは、使用するDランク品で 160-300です。飽和域にて温度変化も考慮し、hfe minの1/2程度の80でも安定してスイッチングできるようにします。

ATtiny13aのGPIOのVOH/IOHは、マージンを考慮し3.5V, 20mAとします。

IB = (3.5 – VBE(sat))/ベース抵抗 R = (3.5 -1.2) / R = 2.3 / R hfe = 80として計算します。

DFPlayer miniの動作時の電流を計測すると、100mA程度流れます。

ですが、モノラルアンプも搭載しており、スピーカーも鳴らしますし、何より起動時や瞬時の過大電流も流せるように設計しないと、瞬停による誤停止(ビーと鳴る)します。

これは、DFPlayer自身が瞬停した場合もそうですが、ATtiny13aの瞬停による再起動とコマンドの再発行による誤動作も含まれます。

安定して動作するためには、(2.3/R) * 80 > 500mA 以上は欲しいです。計算すると、R = 368Ωですので、300Ωとして確認計算します。※なんか、モータードライバ並みです。

IB = 2.3/300 = 7.6mA ・・・IOH規定以内です。

hfe = 80でなら、IC = 613mAとなります。イケそうです。

ここで、前提としていたS8050のICの定格(500mA)を超えますので、SS8050(IC = 1.5A)を選びます。 ※因みに、当初起動電流の読みを誤り、IC = 200mA程度で検討していたのですが、やはり起動できませんでした。

さて、話を負極電源のスイッチングに戻します。以下の回路を検討します。※注意、電源パスコンは、適宜挿入ください。

ATtiny13aは、旧来回路時は、振動検知の割り込み以外は、パワーダウンしてもらっていましたが、タイマー機能を追加するので、常にカウンターとして機能してもらい、振動検知時のスキップコマンド発行と電源制御を別途追加します。

ATtiny13aのポートから起動初期に制御信号を出してスイッチングトランジスタをONにしますが、負極での電源制御は、結局NGでした。

図中の緑の点線の経路にSleep時にGNDのパスが形成されトランジスタをOFFにしてもTXライン経由で電流が流れてやはり12mA程度流れっぱなしになります。

Sleep後にTXを抜くと0mAとなります。ということで、負極ではなく、正極にスイッチングトランジスタを挿入します。

これで無事SleepにDFPlayerとSW-420の電源断を制御できるようになりました。

回路図の電源スライドスイッチは、実際は、おもちゃの電源スイッチに置き換わります。 ですが、注意が必要です。

回路図にも記載している通り、SNOOPY&FRIENDS DIORAMAの電池ボックスは、単三の乾電池3本が制約となります。

SS8050のVCE(sat) = 0.5V(max)なので、電源の4.5V – 0.5V = 4.0Vが、計算上は供給電源になります。

回路を組み電圧を計測したところ、VCE(sat) = 0.5Vですが、実測はDFPlayer miniは、3.6Vで可動していました。

本回路には、振動センサーやAttiny13aもぶら下がっているので、どこらかしこで電流が食われ電圧の降下が起きているようです。

乾電池で動作確認をしていると、電源が約4.0Vを切ったあたりで、DFPlayer mini向けの電圧が足りなくなく、例の”ブー”っというノイズで力尽きます。

DFPlayer miniのマニュアルによると、4.2Vでの動作が推奨されており、安定動作のためには、他の改善策が必要という感じです。

Sleep機能をバイポーラトランジスタで実装設計する場合、VCE分の電圧降下が生じます。

このVCE分の電圧降下は、電源のパスコンの挿入位置や容量にも影響しますので、実装方法とパスコンと電源回路はセットで検討しないといけません。 補足として、DFPlayerの推奨電圧で動作させるためには、その分の電源電圧を上げる必要もあります。

DFPlayerは、食いしん坊なので、演奏時の急峻な電圧降下で自身がハングアップしてしまう事態も考えると、根本的な電源回路の設計が必要です。

今回の検討時にもATtinyの電源とその他の電源分離も試行しました。

電池ボックスの電源は、DFPlayerとSW-420に供給し、ATtiny13aには、大容量の電解コンデンサを設置しショットキーバリアダイオードで分離するといった、分離回路によくある回路構成です。ですが、先の電源である電池ボックスの単三乾電池3本の制約もあり、ダイオードのVf分の引き算とSS8050のVCE分をそれぞれ差し引くと、既に3.0Vを切ってしまいDFPlayerでの実装が不可能であることがわかります。

これも今後の宿題としたいと思います。 最後に、一応念のためですが、電源スライドスイッチの620Ωの抵抗ですが、ATtiny13a用の220uFのディスチャージ用で、これがないとSleep後に電源を入れ直してもATtiny13aが、220uFの電流でSleepしたままになるのを防ぐためです。 さて、これで回路の構成は、一旦Fixとします。

次にプログラムの検討について紹介します。

■プログラム検討

機能追加前のプログラムはこちら紹介しているのですが、新たに機能追加してことでATtiny13aのFlashの容量をオーバーしてしまいました。

開発環境は、Arduino IDEにATtiny13aのマイコン設定をしてArduinoとして開発をしていたのですが、やはりオーバーヘッドが大きくなるので、今回は、全て非ArduinoとしてArduinoのライブラリは、使用しないことにしました。

タイマー機能は、Timer0のオーバーフロー割込みの回数をカウントして、規定回数で割込みを発生させ、Sleepさせることにしていましたが、ここで思わぬトラップにハマりました。

ISR(TIM0_OVF_vect) {…}が、自分の環境では使用できませんでした。 いろいろ調べてみたのですが、Arduino IDE環境にbitDuino13を適用して使用すると、delay系のライブラリ内で既にISR(TIM0_OVF_vect){…}が使用されており、どうもそのせいで使用不可のようだと勝手に自己完結しています。

確認したファイルは、…\Arduino15\packages\bitDuino13\hardware\avr\1.0.1\cores\arduino配下のwiring_time.cを参照すると、確かに適用されていますが、真偽は定かではありません。※事由をご存知の方は、教えて頂けると助かります。

さて、さて仕方ないので、OCR0A = 255 としてCOMPAの割り込みを使用することでTimer0のオーバーフローと同じ動作をさせています。 規定回数の割り込み発生をカウントしたら、DFPlayer miniをsleepさせて、電源を落として自身がSleep(パワーダウンモード)します。スキップ時は、規定回数のカウントは、初期化します。 以上が、今回検討した内容の紹介になります。


DFPlayer mini + ATtiny13a 再生環境構築

※旧スタッフブログからの移設転記記事となります。

DFPlayer miniというMP3/WAV形式の音楽ファイルを再生できるブレイクアウトボードがあります。2WのモノラルアンプとマイクロSDカードスロットとMP3およびWAV形式ファイルのデコードも1ボードで完結でき、数百円で購入できるという魅力があります。

さて、このモジュールをおもちゃ修理に利用できないかと思案していたのですが、先のブログ記事であるおやすみホームシアター再生化計画というおもちゃの再生に利用しており、一応の環境は構築できておりました。

しかし、おもちゃ修理に利用するには、さらなるコストダウンとダウンサイズが求められます。

スヌーピーのジオラマの修理では、ATtiny85というマイコンをソースコードの流用性から適用しましたが、機能自体は、ATtiny13aというマイコンでも十分実装可能で、購入コストも1/3にできる利点があります。

また、当修理で見送った振動による曲スキップの機能も今回合わせて実装をおこなったので、その詳細について紹介をさせていただきます。

回路図(電源パスコンは、適宜挿入ください。)

DFPlayer mini自体は、この基板にて外付け分圧の抵抗とプッシュスイッチにて再生環境は完結できるのですが、以下のデメリットがあります。

  • 音量がデフォルトの最大値で再生される
  • 利用できるイコライザーや音響の設定ができない
  • ランダム再生やトラックを指定した再生ができない

そのためデータシートにも記載があるように、シリアルのコマンドが多種用意されており、外付けのMCUにてコマンド送出することで多彩な再生ができるようになります。

単純なシリアルのコマンドですので、ATtiny13aのような低価格のマイコンでも十分にその機能を実装できます。

さて、前述のトラックのスキップ機能を実装するにあたり、以下のような考察を行いました。

スヌーピーのジオラマの修理にて、回路解析した振動によるトラックのスキップ機能は、記載の回路図のとおり、圧電スピーカーによる振動をダーリントン構成のトランジスタで増幅し検知するという内容です。

当該の修理でも、その回路を用いてトラックのスキップ機能の検証を行ったのですが、DFPlayerからの再生音をモロに圧電スピーカーが拾ってしまって、感度を最低にしても再生音楽を振動としてとらえてしまい機能の実装を断念しました。

そこで、今回は、SW-420という振動センサーモジュールを搭載しました。

平時は、sleepでMCUには眠っていただき、少しですがマイコン分の消費電力をいくらか低減しようと試み、信号の検知は、ATtiny13aの外部ピンの割り込み処理でWake upすることにしました。

SW-420の仕様を整理すると、振動センサーの検知信号をLM393にて増幅します。

検知感度は、可変抵抗にて作動側に印加し閾値を持つようにしております。動作電圧は、3.3V~5VとArduinoやATtinyと共用可能です。

さて、SW-420は、アクティブハイで感度に応じたパルスを出力するのですが、ATtiny13aのINT0割り込みですが、パワーダウンモードからの起動割り込みは、レベル検知での割込みのみと制約があります。データシート Table 7-1 参照。

また、その際、Level 0 つまりLOWレベル検知というのも制約になります。データシート 9.2章、9.3章 参照。

9.2 External Interrupts より抜粋
9.3.1 MCUCR – MCU Control Register より抜粋

そのため、回路図中にてSW-420 が出力するHiパルスを反転するため2SC1815にて反転回路を挿入しております。センサーからのバッファー的な役目も担っておりますので、この回路構成の方が、安定して検知できていると思います。プログラムの処理としては、

  1. PORTB TXピンの設定
  2. イコライザー設定→音量設定→リピート再生コマンドの送出
  3. 割り込み許可
  4. スリープ

割り込みにて起きたら、指定ベクターにて、

  1. 割り込み不許可
  2. トラックスキップコマンドの発行

となります。

振動を検知すると、LOWパルスを発行しATtiny13aをsleepから起こしトラックのスキップコマンドを発行し、またすぐsleep します。

DFPlayerは、そのまま再生を続けるため、回路的には分離して考えることができます。

■ブレッドボード & 安定化電源版 8Ω 0.5W スピーカー (※音量 小さめなので音量を上げてお聞きください。)

■ユニバーサル基板 & 乾電池(4.5V)版 8Ω 8W スピーカー


一応、自作のライブラリもあるのですが、流れを紹介するため、ソースコードは以下のような感じです。

まだ改良の余地は、残っておりますが、Flashの領域を既に90%程を消費しておりますので、ここらあたりが落とし所かと思います。


さて、最後にですが、他のブログ等で拝見すると、動作中に”ビー”っと鳴ってしまい、動作できないなどの症状を目にします。

どんな機器でもそうですが、DFPLayerも、起動時やトラックの再生開始時に電圧降下を起します。

使用電源や電源回路が、それに耐えうるよう設計されていなければなりません。

回路設計の実務経験があればご存知かと思います。

実回路へのインプリ時に消費電力から、適切な電源の選定やパスコンの容量を決定し適宜挿入ください。 ※特に電源仕様の下限ぎりぎり&パスコン無しでは、曲の性質にもよるのでしょうが、だいたい動作しませんので、”ビー”っとなって困っているようでしたら、電源周りを確認したほうがいいです。 DFPlayer miniは、こちらで購入できます。

SW-420は、こちらで購入できます。

ソースコード中で使用されているライブラリをスタッフブログで公開しておりますので参照ください。