新型の構想だけを練る その6 完結

結局、作業しました(笑)

動画では、うまいこと動いている様に見えます。ちゃんと3端末の名称も親機に表示されてますし、小さいけど音も出ています。
しかし。結論から言いますと、この機材は公開(実用)に至るレベルに達しませんでした。ですので、もちろん販売やお分けもできません・・・・すいません。
理由としては
1:動作が安定しないこと
2:同着判断リスクが高いこと
3:精度(押してから点灯までの時間差)が甘いこと
4:音が小さいこと
があります。安全策に逃げると、機能が「海外製の買える機材」と同じになっちゃいますから、やりません。探して買ってください(笑)
以下、技術的検証をツラツラと。
端末とのコネクトに3芯(!)ステレオミニケーブルを使っています。前述の通り、端末内にはそれぞれArduinoProminiが入っていて、自機の名称(東方より来たりし三賢者)が組み込まれていて、第一に押された名称が本体LCDに表示されます。本体とはステレオケーブル1本(!)でつながっています。電源は本体ArduinoUNO経由5V USB です。
ロジックとしては、「端末の押し」「シリアルTXに自機名称を流す」「自ボタン点灯」「TXと割り込ピンを短絡しており、各端末(自端末)割り込み入力&ボタンロック」「親機RXよりシリアル入力、音発、LCDに表示」
つまり、親機は早押し判断をしていません。一番最初に流れた文字を表示するだけ。各端末が自ボタン点灯ORロック の判断をしています。
問題点の最も大きな原因は、シリアル通信。つまり「端末名を本体に表示」の部分です。これが単なる早押し端末だけの点灯であれば、入力だけなので楽勝ですが、前述の通り「買える機材」と同じになっちゃいますから。
原因の最たるものは、おそらく割り込み&シリアル通信の影響でしょう。loopのスピードが極端に落ちています。通信速度を上げると、文字抜けはもちろん、ボタンを押しても反応が悪く、かなり不安定になります。回避策として、通信スピードを900(!)まで下げていますが、それでもギリな感じ。正直、この速度では同着リスク(いわゆる精度)が低すぎて使い物になりません。なので、不特定多数への販売はできないというわけで。その他細かい原因の推理は多岐にわたりますが、音を本体から出していることや、ArduinoUNOのスペック不足が怪しい。MEGAにするとか、音ボックスを別に用意するとかすれば、大いに実用化のメドはつきそうですが、今の所そこまでする理由(顧客とかモチベーションとか)が無いので、ここでやめます。
また、シリアルの距離限界の問題もあります。それほど長くできるとは思えない・・・これは、テストもしません。
「買える機材」と同じにするなら、シリアルを諦めて、単なる「ピンへのOUT」にすればいいんです。本体側はピンOUTがあれば音を鳴らす(LCDに「オサレター」とでも表示)だけにすれば、この問題はおきません。もちろん、親機側ではどのボタンが押されたか判断はつかないので、端末の点滅だけが頼りになりますが。
音の小ささは、外部出力端子を作って、外部アンプで解決するつもりだったのですが、筐体が小さく作業が大変だったので止めました。ハンダ作業が思いのほか多く、端末一つ作るのもかなり苦労。感覚的には通常の端末の1.2倍くらいの工数。本体側も部品点数は少ないものの、ArduinoからのソケットをGNDや5Vを一旦外側に出さないと、ハンダ付けできないわけで・・・いろいろと無理して筐体に収めました。筐体を大きくしてシールド作るのも手ですが、そうなるとコストが高くなる。じゃ、端末と同じPromini使うっていうのも手か・・・・。とまあ、まだまだ検討する必要がでてきてしまして。
そんなこんなで、アイデア倒れ(というまではいかないか)なSSJ-003号機の開発顛末ということになりました。まあ、これも何か今後につなげられればと、蔵に入れておきます。
※ 実用レベルでないので、スケッチ(プログラム)の公開は停止しました。気が向いたら改善させるかもしれないし、諦めるかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です